docs: 更新项目文档,完善需求和技术细节

This commit is contained in:
ylweng
2025-09-01 02:35:41 +08:00
parent e1647902e2
commit ad20888cd4
57 changed files with 961 additions and 156 deletions

151
README.md
View File

@@ -1,57 +1,124 @@
# 爱鉴花项目
## 🌸 项目概述
爱鉴花是一款创新的AI植物识别微信小程序集植物识别、花卉商城、配送服务、园艺知识于一体为用户提供全方位的花卉相关服务。
## 项目概述
## 🏗️ 项目组成
- **微信小程序 (uni-app)**: 用户端应用,提供拍照识别、购物、配送等功能
- **后端接口 (Node.js)**: RESTful API服务支持所有业务功能
- **后台管理系统 (Vue3)**: 管理后台,用于数据管理和统计分析
- **官方网站 (HTML5 Bootstrap)**: 公司展示网站,提供品牌宣传和产品介绍
爱鉴花是一个集花卉识别、电商交易、社区交流于一体的综合性平台,包含微信小程序、管理后台、官方网站等多个端。
## ✨ 核心功能
- **AI植物识别**: 拍照或上传图片,智能识别植物种类
- **花卉商城**: 丰富的花卉商品,支持在线购买
- **配送服务**: 同城配送,实时订单跟踪
- **园艺知识**: 专业的植物养护指南和工具推荐
- **用户中心**: 个人信息管理、订单历史、收藏功能
## 目录结构
## 🚀 快速开始
```
爱鉴花项目/
├── backend/ # 后端服务目录 (Node.js + Express)
├── admin-system/ # 管理后台目录 (Vue3)
├── website/ # 官网目录 (HTML5 + Bootstrap)
├── mini_program/ # 微信小程序矩阵目录 (uni-app)
├── docs/ # 文档目录
├── test/ # 测试文件目录
├── scripts/ # 执行脚本目录
└── README.md # 项目说明
```
## 模块说明
### 后端服务 (backend)
- 基于Node.js和Express框架开发
- 提供RESTful API接口
- 支持用户认证、商品管理、订单处理、花卉识别等功能
- 开发环境使用SQLite生产环境使用MySQL
### 管理后台 (admin-system)
- 基于Vue3开发的管理系统
- 提供用户管理、商品管理、订单管理、数据统计等功能
- 支持权限控制和数据可视化
### 官方网站 (website)
- 基于HTML5和Bootstrap开发的响应式网站
- 包含公司介绍、产品展示、新闻动态、联系方式等模块
- 支持多设备适配和SEO优化
### 微信小程序矩阵 (mini_program)
- 基于uni-app开发的微信小程序矩阵
- 提供花卉识别、商品浏览、在线购买、社区交流等功能
- 支持微信支付和用户授权登录
### 文档目录 (docs)
- 包含需求文档、设计文档、API文档、部署指南等完整文档
- 提供项目开发、部署和维护的全套说明
### 测试文件目录 (test)
- 包含单元测试、集成测试、端到端测试等测试文件
- 支持自动化测试和持续集成
### 执行脚本目录 (scripts)
- 包含项目部署、数据库初始化、环境配置等执行脚本
- 提供一键式部署和运维支持
## 开发环境
### 环境要求
- Node.js 14.0.0+
- Node.js 16+
- MySQL 5.7+
- Redis
- 微信开发者工具
### 开发步骤
1. 克隆项目到本地
2. 按照各子项目的README配置开发环境
3. 配置数据库连接信息
4. 安装依赖并启动服务
### 快速开始
## 📁 项目结构
```
爱鉴花项目/
├── mini_program/ # 微信小程序
├── backend/ # 后端服务
├── admin_website/ # 后台管理系统
├── official_website/ # 官方网站
├── 需求文档.md # 产品需求文档
├── 详细设计.md # 技术设计文档
├── 项目总览.md # 项目总体信息
├── 部署指南.md # 部署操作指南
└── README.md # 项目说明文档
1. 克隆项目
```bash
git clone <repository-url>
cd aijianhua
```
## 📄 相关文档
- [需求文档](./需求文档.md) - 产品功能需求说明
- [详细设计](./详细设计.md) - 技术架构和设计细节
- [项目总览](./项目总览.md) - 项目总体信息和计划
- [部署指南](./部署指南.md) - 系统部署和运维指南
- [数据库设计](./数据库设计文档.md) - 数据库表结构和设计
- [贡献指南](./CONTRIBUTING.md) - 开发规范和贡献流程
- [变更日志](./CHANGELOG.md) - 版本更新记录
2. 安装依赖
```bash
# 后端服务
cd backend && npm install
## 🤝 参与贡献
欢迎提交Issue和Pull Request来完善这个项目。
# 管理后台
cd admin-system && npm install
# 微信小程序
cd mini_program && npm install
```
3. 配置环境变量
```bash
# 复制环境变量示例文件
cp backend/.env.example backend/.env
cp admin-system/.env.example admin-system/.env.development
```
4. 启动服务
```bash
# 启动后端服务
cd backend && npm run dev
# 启动管理后台
cd admin-system && npm run serve
# 启动官方网站
cd website && python3 -m http.server 8080
```
## 文档资源
详细文档请查看 [docs目录](./docs/)
- [需求文档](./docs/需求文档.md)
- [数据库设计](./docs/数据库设计文档.md)
- [API接口文档](./docs/API接口文档.md)
- [部署指南](./docs/部署指南.md)
- [开发计划](./docs/开发计划.md)
## 贡献指南
请参考 [CONTRIBUTING.md](./docs/CONTRIBUTING.md) 文档了解如何参与项目开发。
## 许可证
本项目采用 MIT 许可证,详见 [LICENSE](./docs/LICENSE.md) 文件。
## 联系方式
- 项目邮箱: aijianhua@example.com
- 问题反馈: GitHub Issues
- 开发者微信群: 请联系项目管理员

View File

@@ -1,29 +0,0 @@
# 爱鉴花后端服务
## 项目介绍
这是爱鉴花项目的后端服务基于Node.js开发。
## 技术栈
- Node.js
- Express.js
- SQLite开发环境
- MySQL生产环境
- Redis
## 文件结构
- controllers: 控制器
- models: 数据模型
- routes: 路由
- middleware: 中间件
- utils: 工具函数
- config: 配置文件
## 开发说明
请确保安装了Node.js环境并使用npm管理依赖。
## 文档
- [开发计划](./开发计划.md)
- [功能模块](./功能模块.md)
- [数据库设计](../数据库设计文档.md)
- [API接口文档](./API接口文档.md)

View File

@@ -7,7 +7,7 @@
"start": "node app.js",
"dev": "NODE_ENV=development PORT=3200 nodemon app.js",
"prod": "NODE_ENV=production node app.js",
"db:init": "node scripts/initDatabase.js",
"db:init": "node ../scripts/backend/initDatabase.js",
"test": "jest",
"docs": "node scripts/generateDocs.js"
},

View File

@@ -1,33 +0,0 @@
# 爱鉴花后端开发计划
## 第一阶段基础框架搭建1-2周
- 项目初始化
- 数据库设计
- 基础模块开发
- API接口设计
## 第二阶段核心功能开发3-6周
- 植物识别服务集成
- 用户管理模块
- 商品管理模块
- 订单管理模块
## 第三阶段支付和统计功能开发7-10周
- 支付接口集成
- 数据统计模块
- 日志系统
## 第四阶段性能优化和安全加固11-12周
- 性能优化
- 安全加固
- 压力测试
## 第五阶段测试和部署13-14周
- 功能测试
- 集成测试
- 部署上线
## 第六阶段监控和维护15-16周
- 系统监控
- 故障处理
- 持续优化

View File

@@ -198,6 +198,210 @@ Authorization: Bearer <token>
**请求格式**: `multipart/form-data`
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| image | file | 是 | 植物图片文件 |
| user_id | integer | 否 | 用户ID记录识别历史 |
**响应示例**:
```json
{
"code": 200,
"message": "识别成功",
"data": {
"identification_id": 1,
"plant_name": "玫瑰花",
"scientific_name": "Rosa rugosa",
"family": "蔷薇科",
"confidence": 0.92,
"care_tips": "喜阳光,需要充足水分",
"related_products": [
{
"id": 1,
"name": "玫瑰花束",
"price": 29.9,
"image": "/uploads/products/rose.jpg"
}
],
"created_at": "2024-01-15T10:30:00Z"
}
}
```
### 获取识别历史
**GET** `/identifications/history`
**查询参数**:
| 参数名 | 类型 | 说明 |
|--------|------|------|
| user_id | integer | 用户ID |
| page | integer | 页码默认1 |
| limit | integer | 每页数量默认10 |
**响应示例**:
```json
{
"code": 200,
"message": "获取成功",
"data": {
"identifications": [
{
"id": 1,
"plant_name": "玫瑰花",
"image_url": "/uploads/identifications/rose_123.jpg",
"confidence": 0.92,
"created_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 15,
"pages": 2
}
}
}
```
## 推广奖励接口
### 生成推广链接
**POST** `/promotions/generate-link`
**请求头**:
```
Authorization: Bearer <token>
```
**响应示例**:
```json
{
"code": 200,
"message": "生成成功",
"data": {
"promotion_link": "https://aijianhua.com/register?ref=ABC123",
"qr_code_url": "/uploads/qrcodes/ABC123.png",
"expires_at": "2024-02-15T10:30:00Z"
}
}
```
### 获取推广数据
**GET** `/promotions/stats`
**查询参数**:
| 参数名 | 类型 | 说明 |
|--------|------|------|
| start_date | string | 开始日期YYYY-MM-DD |
| end_date | string | 结束日期YYYY-MM-DD |
**响应示例**:
```json
{
"code": 200,
"message": "获取成功",
"data": {
"total_referrals": 50,
"successful_orders": 25,
"pending_rewards": 250.00,
"withdrawn_rewards": 500.00,
"available_balance": 250.00,
"daily_stats": [
{
"date": "2024-01-15",
"referrals": 5,
"orders": 3,
"rewards": 30.00
}
]
}
}
```
### 申请提现
**POST** `/promotions/withdraw`
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| amount | number | 是 | 提现金额≥50元 |
| bank_account | string | 是 | 银行账号 |
| bank_name | string | 是 | 银行名称 |
**响应示例**:
```json
{
"code": 200,
"message": "提现申请已提交",
"data": {
"withdrawal_id": 1,
"amount": 100.00,
"status": "pending",
"estimated_arrival": "2024-01-16T10:30:00Z"
}
}
```
### 获取提现记录
**GET** `/promotions/withdrawals`
**查询参数**:
| 参数名 | 类型 | 说明 |
|--------|------|------|
| page | integer | 页码默认1 |
| limit | integer | 每页数量默认10 |
| status | string | 状态pending/completed/rejected |
**响应示例**:
```json
{
"code": 200,
"message": "获取成功",
"data": {
"withdrawals": [
{
"id": 1,
"amount": 100.00,
"status": "completed",
"bank_account": "****1234",
"bank_name": "中国银行",
"created_at": "2024-01-15T10:30:00Z",
"completed_at": "2024-01-16T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 5,
"pages": 1
}
}
}
```
## 错误码规范
| 错误码 | 错误信息 | 说明 |
|--------|----------|------|
| 200 | 成功 | 请求成功 |
| 201 | 创建成功 | 资源创建成功 |
| 400 | 参数错误 | 请求参数验证失败 |
| 401 | 未授权 | 需要登录认证 |
| 403 | 禁止访问 | 权限不足 |
| 404 | 资源不存在 | 请求的资源不存在 |
| 409 | 资源冲突 | 资源已存在或状态冲突 |
| 500 | 服务器内部错误 | 服务器内部处理错误 |
| 1001 | 识别失败 | 植物识别处理失败 |
| 1002 | 图片格式不支持 | 上传的图片格式不支持 |
| 2001 | 推广奖励不足 | 可提现余额不足50元 |
| 2002 | 提现频率限制 | 24小时内只能提现一次 |
| 3001 | 库存不足 | 商品库存不足 |
| 3002 | 订单状态异常 | 订单状态不允许此操作 |
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
@@ -234,18 +438,7 @@ Authorization: Bearer <token>
**GET** `/identifications`
## 错误码说明
| 错误码 | 说明 |
|--------|------|
| 200 | 成功 |
| 201 | 创建成功 |
| 400 | 参数错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 409 | 资源冲突 |
| 500 | 服务器内部错误 |
## 安全要求
@@ -257,5 +450,5 @@ Authorization: Bearer <token>
## 版本历史
- v1.0.0 (2024-01-01): 初始版本发布
- v1.0.0 (2024-03-15): 初始版本发布
- 包含用户认证、商品管理、订单管理、花卉识别等核心功能

View File

@@ -5,7 +5,7 @@
## 🎯 开发流程
### 1. 环境准备
- 确保已安装 Node.js 14.0.0+
- 确保已安装 Node.js 16.0.0+
- 安装 Git 版本控制工具
- 配置开发工具HBuilderX、VSCode等

View File

@@ -175,13 +175,13 @@
1. **`backend/config/database.js`** - 数据库连接配置
2. **`backend/.env.example`** - 环境变量配置模板
3. **`backend/utils/dbConnector.js`** - 数据库连接工具类
4. **`backend/scripts/initDatabase.js`** - 数据库初始化脚本
4. **`scripts/backend/initDatabase.js`** - 数据库初始化脚本
5. **`backend/package.json`** - 项目依赖管理
配置支持多环境自动切换,通过 `NODE_ENV` 环境变量区分开发和生产环境。
#### 数据库管理脚本命令:
- `npm run db:init` - 初始化数据库连接验证
- `npm run db:init` - 初始化数据库连接验证(脚本位于 `/scripts/backend/` 目录)
- `npm run db:check` - 只检查数据库连接状态
- `npm run db:migrate` - 执行数据库迁移(预留)
- `npm run db:seed` - 填充初始数据(预留)

28
docs/README.md Normal file
View File

@@ -0,0 +1,28 @@
# 爱鉴花项目文档中心
## 项目介绍
这是爱鉴花项目的完整文档中心包含所有技术文档、API说明和部署指南。
## 技术栈
- Node.js
- Express.js
- SQLite开发环境
- MySQL生产环境
- Redis
## 文档结构
- 需求文档: 项目业务需求和功能说明
- 设计文档: 系统架构、数据库设计和详细设计
- API文档: 前后端接口规范和说明
- 部署指南: 环境配置和部署流程
- 开发计划: 项目开发进度和任务安排
## 开发说明
请确保安装了Node.js环境并使用npm管理依赖。
## 文档
- [开发计划](./开发计划.md)
- [功能模块](./功能模块.md)
- [数据库设计](./数据库设计文档.md)
- [API接口文档](./API接口文档.md)

View File

@@ -76,7 +76,7 @@ npm run db:check
| 命令 | 描述 |
|------|------|
| `npm run db:init` | 完整数据库初始化验证 |
| `npm run db:init` | 完整数据库初始化验证(脚本位于 `/scripts/backend/` 目录) |
| `npm run db:check` | 只检查数据库连接状态 |
| `npm run db:migrate` | 执行数据库迁移(预留) |
| `npm run db:seed` | 填充初始数据(预留) |

View File

@@ -255,16 +255,22 @@
## 错误码说明
| 错误码 | 说明 |
|--------|------|
| 200 | 成功 |
| 201 | 创建成功 |
| 400 | 参数错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 409 | 资源冲突 |
| 500 | 服务器内部错误 |
| 错误码 | 错误信息 | 说明 |
|--------|----------|------|
| 200 | 成功 | 请求成功 |
| 201 | 创建成功 | 资源创建成功 |
| 400 | 参数错误 | 请求参数验证失败 |
| 401 | 未授权 | 需要登录认证 |
| 403 | 禁止访问 | 权限不足 |
| 404 | 资源不存在 | 请求的资源不存在 |
| 409 | 资源冲突 | 资源已存在或状态冲突 |
| 500 | 服务器内部错误 | 服务器内部处理错误 |
| 1001 | 识别失败 | 植物识别处理失败 |
| 1002 | 图片格式不支持 | 上传的图片格式不支持 |
| 2001 | 推广奖励不足 | 可提现余额不足50元 |
| 2002 | 提现频率限制 | 24小时内只能提现一次 |
| 3001 | 库存不足 | 商品库存不足 |
| 3002 | 订单状态异常 | 订单状态不允许此操作 |
## 安全要求
@@ -276,4 +282,4 @@
---
*文档版本: 1.0.0*
*最后更新: 2024-01-01*
*最后更新: 2024-03-15*

194
docs/开发计划.md Normal file
View File

@@ -0,0 +1,194 @@
# 爱鉴花小程序 - 开发计划
## 版本历史
| 版本 | 日期 | 作者 | 描述 |
|------|------|------|------|
| v1.0 | 2024-01-15 | 项目经理 | 初始版本 |
## 1. 项目里程碑
### 里程碑1MVP版本上线4周
- **目标**:核心功能可用,支持植物识别和基础购物
- **交付物**小程序v1.0上线后台管理系统v1.0
- **关键指标**日活1000+识别准确率85%+
### 里程碑2推广功能完善8周
- **目标**:完整的推广奖励体系,支付功能
- **交付物**推广中心v1.0,微信支付集成
- **关键指标**月GMV 10万+推广转化率20%+
### 里程碑3商业化运营12周
- **目标**:稳定运营,数据驱动优化
- **交付物**:数据统计平台,运营后台
- **关键指标**日活1万+月GMV 50万+
## 2. 详细开发计划
### 第一阶段基础框架搭建2周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 技术选型和环境搭建 | 架构师 | 3人日 | P0 | 无 |
| 数据库设计和建表 | 后端工程师 | 5人日 | P0 | 技术选型 |
| 用户服务基础框架 | 后端工程师 | 4人日 | P0 | 数据库设计 |
| 商品服务基础框架 | 后端工程师 | 4人日 | P0 | 数据库设计 |
| API网关和路由配置 | 后端工程师 | 3人日 | P0 | 服务框架 |
| 小程序基础框架搭建 | 前端工程师 | 5人日 | P0 | 无 |
**本阶段产出**
- 完整的开发环境
- 数据库Schema v1.0
- 基础服务框架
- 小程序基础页面
### 第二阶段核心功能开发4周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 用户注册登录功能 | 后端工程师 | 5人日 | P0 | 用户服务框架 |
| 植物识别API集成 | 后端工程师 | 8人日 | P0 | 无 |
| 商品管理和展示 | 后端工程师 | 6人日 | P0 | 商品服务框架 |
| 购物车和订单功能 | 后端工程师 | 8人日 | P0 | 用户+商品服务 |
| 小程序首页和识别页 | 前端工程师 | 10人日 | P0 | 基础框架 |
| 商品详情和购物流程 | 前端工程师 | 12人日 | P0 | 首页完成 |
| 用户中心页面 | 前端工程师 | 6人日 | P1 | 登录功能 |
**本阶段产出**
- 完整的植物识别功能
- 基础电商交易流程
- 小程序核心页面
- API接口v1.0
### 第三阶段推广奖励功能3周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 推广链接生成服务 | 后端工程师 | 5人日 | P0 | 用户服务 |
| 推广数据统计 | 后端工程师 | 6人日 | P0 | 订单服务 |
| 奖励计算和发放 | 后端工程师 | 8人日 | P0 | 推广统计 |
| 提现申请和处理 | 后端工程师 | 6人日 | P1 | 奖励计算 |
| 推广中心页面 | 前端工程师 | 8人日 | P0 | 用户中心 |
| 提现页面和流程 | 前端工程师 | 6人日 | P1 | 推广中心 |
**本阶段产出**
- 完整的推广奖励体系
- 提现处理流程
- 推广数据统计
- 小程序推广相关页面
### 第四阶段支付和运营功能3周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 微信支付集成 | 后端工程师 | 8人日 | P0 | 订单服务 |
| 支付回调处理 | 后端工程师 | 4人日 | P0 | 支付集成 |
| 订单状态管理 | 后端工程师 | 5人日 | P0 | 支付回调 |
| 数据统计服务 | 后端工程师 | 8人日 | P1 | 所有服务 |
| 支付页面和流程 | 前端工程师 | 6人日 | P0 | 订单页面 |
| 数据统计页面 | 前端工程师 | 8人日 | P1 | 数据服务 |
**本阶段产出**
- 完整的支付流程
- 订单状态管理系统
- 基础数据统计功能
- 支付相关页面
### 第五阶段测试和优化2周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 单元测试编写 | 测试工程师 | 10人日 | P0 | 功能开发完成 |
| 集成测试 | 测试工程师 | 8人日 | P0 | 单元测试 |
| 性能测试和优化 | 后端工程师 | 6人日 | P1 | 集成测试 |
| 安全漏洞扫描 | 安全工程师 | 4人日 | P1 | 代码完成 |
| 用户体验优化 | 前端工程师 | 6人日 | P1 | 测试反馈 |
**本阶段产出**
- 测试报告和Bug修复
- 性能优化方案
- 安全评估报告
- 用户体验改进
### 第六阶段部署上线1周
| 任务 | 负责人 | 工时 | 优先级 | 依赖 |
|------|--------|------|--------|------|
| 生产环境部署 | DevOps工程师 | 3人日 | P0 | 测试通过 |
| 域名和SSL配置 | DevOps工程师 | 2人日 | P0 | 部署完成 |
| 监控告警设置 | DevOps工程师 | 3人日 | P1 | 部署完成 |
| 数据迁移和验证 | 后端工程师 | 4人日 | P0 | 生产环境 |
| 小程序提交审核 | 前端工程师 | 2人日 | P0 | 生产环境 |
**本阶段产出**
- 生产环境正式运行
- 小程序上线发布
- 监控告警系统
- 运维文档
### 第七阶段:运营维护(持续)
| 任务 | 负责人 | 频率 | 优先级 |
|------|--------|------|--------|
| 系统监控和告警处理 | DevOps工程师 | 7×24 | P0 |
| Bug修复和功能优化 | 全团队 | 按需 | P1 |
| 数据分析和业务优化 | 产品经理 | 每周 | P1 |
| 用户反馈收集处理 | 运营团队 | 每日 | P2 |
## 3. 资源分配
### 3.1 团队组成
| 角色 | 人数 | 主要职责 |
|------|------|--------|
| 产品经理 | 1 | 需求分析,产品规划 |
| 架构师 | 1 | 技术架构,技术选型 |
| 后端工程师 | 2 | 服务开发API实现 |
| 前端工程师 | 2 | 小程序开发,页面实现 |
| 测试工程师 | 1 | 测试用例,质量保证 |
| DevOps工程师 | 1 | 部署运维,监控告警 |
### 3.2 工时估算
| 阶段 | 后端工时 | 前端工时 | 总工时 | 周期 |
|------|---------|---------|--------|------|
| 基础框架 | 19人日 | 5人日 | 24人日 | 2周 |
| 核心功能 | 27人日 | 28人日 | 55人日 | 4周 |
| 推广功能 | 25人日 | 14人日 | 39人日 | 3周 |
| 支付运营 | 25人日 | 14人日 | 39人日 | 3周 |
| 测试优化 | 6人日 | 6人日 | 22人日 | 2周 |
| 部署上线 | 4人日 | 2人日 | 11人日 | 1周 |
| **总计** | **106人日** | **69人日** | **190人日** | **15周** |
## 4. 风险分析
### 4.1 技术风险
| 风险点 | 影响程度 | 应对措施 |
|--------|----------|----------|
| 植物识别准确率低 | 高 | 多模型对比,人工审核备用方案 |
| 高并发性能问题 | 中 | 压力测试,缓存优化,弹性扩容 |
| 支付接口稳定性 | 高 | 备用支付渠道,异常重试机制 |
### 4.2 业务风险
| 风险点 | 影响程度 | 应对措施 |
|--------|----------|----------|
| 用户增长不及预期 | 中 | 加强推广,优化用户体验 |
| 商品供应链问题 | 高 | 多供应商合作,库存预警 |
| 竞争加剧 | 中 | 差异化功能,快速迭代 |
### 4.3 管理风险
| 风险点 | 影响程度 | 应对措施 |
|--------|----------|----------|
| 人员变动 | 中 | 文档规范化,代码审查 |
| 需求变更 | 中 | 敏捷开发,优先级管理 |
| 进度延迟 | 中 | 里程碑跟踪,风险预警 |
## 5. 质量保证
### 5.1 代码质量
- 代码规范检查ESLint, Prettier
- 单元测试覆盖率 > 80%
- Code Review流程
- 自动化CI/CD流水线
### 5.2 测试策略
- 单元测试:核心业务逻辑
- 集成测试:服务间调用
- 性能测试:并发压力测试
- 安全测试:漏洞扫描
### 5.3 监控指标
- 系统可用性99.9%
- API响应时间< 2秒
- 错误率< 0.1%
- 业务指标监控日活订单量GMV

View File

@@ -1,7 +1,7 @@
# 爱鉴花项目数据库设计文档
## 1. 数据库概述
本项目使用MySQL 8.0作为主数据库,存储用户、商品、订单、识别记录等核心业务数据。
本项目使用MySQL 8.0+作为主数据库,存储用户、商品、订单、识别记录等核心业务数据。
## 2. 数据库表结构
@@ -12,7 +12,7 @@
| username | varchar(50) | 用户名 | 唯一索引 |
| email | varchar(100) | 邮箱 | 唯一索引 |
| phone | varchar(20) | 手机号 | 唯一索引 |
| password_hash | varchar(255) | 密码哈希 | 非空 |
| password | varchar(255) | 密码bcrypt加密 | 非空 |
| real_name | varchar(50) | 真实姓名 | 可空 |
| avatar_url | varchar(255) | 头像URL | 可空 |
| user_type | enum | 用户类型 | 非空 |
@@ -119,7 +119,7 @@
### 2024-03-15 更新
- 修复用户表缺少last_login字段的问题
- 密码字段从password_hash改为password使用bcrypt加密存储
- 密码字段使用password用bcrypt加密存储
- 增加数据库初始化脚本包含默认管理员账号admin/admin123
## 5. 数据库连接信息
@@ -140,5 +140,5 @@
- 时区设置: 东八区(+08:00
---
*本文档最后更新: 2024年1月*
*数据库版本: MySQL 8.0*
*本文档最后更新: 2024-03-15*
*数据库版本: MySQL 8.0+*

255
docs/系统架构文档.md Normal file
View File

@@ -0,0 +1,255 @@
# 爱鉴花小程序 - 系统架构文档
## 版本历史
| 版本 | 日期 | 作者 | 描述 |
|------|------|------|------|
| v1.0 | 2024-03-15 | 系统架构师 | 初始版本 |
## 1. 架构设计原则
### 1.1 设计原则
- **微服务架构**:模块化设计,服务解耦
- **高可用性**99.9%可用性目标
- **可扩展性**:支持水平扩展
- **安全性**:端到端数据加密
- **性能优化**:响应时间<2秒
### 1.2 技术选型理由
| 技术栈 | 选型理由 | 替代方案 |
|--------|----------|----------|
| Node.js + Express | 高性能I/O处理生态丰富 | Python Django, Java Spring Boot |
| MySQL 8.0+ | 事务支持完善生态成熟 | PostgreSQL, MongoDB |
| Redis Cluster | 高性能缓存分布式支持 | Memcached, Hazelcast |
| Vue.js 3 + Ant Design | 组件化开发企业级UI | React + AntD, Angular + Material |
| uni-app | 跨端开发成本效益高 | Taro, React Native |
## 2. 系统架构图
```mermaid
graph TB
subgraph "客户端层"
A[微信小程序] --> B[后台管理系统]
A --> C[官网系统]
end
subgraph "接入层"
D[API网关 - Nginx] --> E[负载均衡]
end
subgraph "应用服务层"
F[用户服务] --> G[认证服务]
H[商品服务] --> I[订单服务]
J[识别服务] --> K[支付服务]
L[推广服务] --> M[统计服务]
end
subgraph "数据层"
N[MySQL 8.0+] --> O[主从复制]
P[Redis Cluster] --> Q[分布式缓存]
R[腾讯云COS] --> S[文件存储]
end
E --> F
E --> H
E --> J
E --> L
F --> N
H --> N
J --> N
L --> N
F --> P
H --> P
J --> P
```
## 3. 微服务架构设计
### 3.1 服务划分
| 服务名称 | 职责 | 技术栈 | 部署方式 |
|----------|------|--------|----------|
| 用户服务 | 用户管理权限控制 | Node.js + Express | 独立部署 |
| 商品服务 | 商品管理库存管理 | Node.js + Express | 独立部署 |
| 订单服务 | 订单处理支付集成 | Node.js + Express | 独立部署 |
| 识别服务 | 植物识别AI集成 | Node.js + TensorFlow.js | 独立部署 |
| 推广服务 | 推广奖励计算 | Node.js + Express | 独立部署 |
| 网关服务 | API路由认证 | Nginx + Lua | 独立部署 |
### 3.2 服务通信机制
- **同步调用**RESTful APIHTTP/HTTPS
- **异步消息**Redis Pub/Sub预留RabbitMQ集成
- **服务发现**Consul/Nacos预留
- **配置中心**Apollo预留
## 4. 数据库设计
### 4.1 数据库架构
```mermaid
erDiagram
USERS ||--o{ ORDERS : "创建"
USERS ||--o{ IDENTIFICATIONS : "发起"
USERS ||--o{ PROMOTIONS : "参与"
PRODUCTS ||--o{ ORDER_ITEMS : "包含"
CATEGORIES ||--o{ PRODUCTS : "分类"
ORDERS ||--o{ ORDER_ITEMS : "包含"
ORDERS ||--o{ PAYMENTS : "关联"
USERS {
bigint id PK
varchar username
varchar password_hash
varchar phone
varchar email
enum user_type
datetime created_at
datetime updated_at
}
PRODUCTS {
bigint id PK
varchar name
text description
decimal price
int stock
bigint category_id FK
varchar image_url
}
```
### 4.2 关键表结构
**用户表 (users)**
```sql
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
phone VARCHAR(20) NOT NULL UNIQUE,
email VARCHAR(100),
user_type ENUM('consumer', 'gardener', 'merchant', 'creator') DEFAULT 'consumer',
avatar_url VARCHAR(255),
real_name VARCHAR(50),
promotion_balance DECIMAL(10,2) DEFAULT 0.00,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_phone (phone),
INDEX idx_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
**推广记录表 (promotion_records)**
```sql
CREATE TABLE promotion_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
promoter_id BIGINT NOT NULL,
referred_id BIGINT NOT NULL,
reward_amount DECIMAL(10,2) DEFAULT 0.00,
reward_type ENUM('registration', 'first_order') NOT NULL,
status ENUM('pending', 'completed', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
FOREIGN KEY (promoter_id) REFERENCES users(id),
FOREIGN KEY (referred_id) REFERENCES users(id),
INDEX idx_promoter (promoter_id),
INDEX idx_referred (referred_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
## 5. 部署架构
### 5.1 生产环境部署
```mermaid
graph LR
subgraph "负载均衡层"
A[阿里云SLB] --> B[Nginx集群]
end
subgraph "应用服务器集群"
C[用户服务 2台] --> D[MySQL主从]
E[商品服务 2台] --> D
F[订单服务 2台] --> D
G[识别服务 2台] --> D
end
subgraph "缓存层"
H[Redis哨兵模式] --> I[3节点集群]
end
subgraph "存储层"
J[腾讯云COS] --> K[CDN加速]
L[MySQL主库] --> M[MySQL从库]
end
B --> C
B --> E
B --> F
B --> G
C --> H
E --> H
F --> H
G --> H
```
### 5.2 监控告警体系
- **应用监控**Prometheus + Grafana
- **日志收集**ELK Stack
- **链路追踪**Jaeger
- **告警通知**钉钉/邮件/SMS
## 6. 安全架构
### 6.1 安全防护措施
- **网络层**VPC隔离安全组规则
- **应用层**JWT认证RBAC权限控制
- **数据层**字段级加密SQL注入防护
- **传输层**HTTPS加密TLS 1.3
### 6.2 敏感数据处理
- 密码bcrypt加密存储
- 手机号AES加密存储
- 支付信息PCI DSS合规处理
- 日志数据脱敏处理
## 7. 性能优化策略
### 7.1 数据库优化
- 索引优化覆盖索引联合索引
- 查询优化避免SELECT *分页查询
- 连接池最大200连接超时30秒
### 7.2 缓存策略
- **Redis缓存**热点数据缓存TTL设置
- **本地缓存**Node.js内存缓存
- **CDN加速**静态资源加速
### 7.3 异步处理
- 耗时操作异步化
- 消息队列削峰填谷
- 批量处理优化
## 8. 容灾备份方案
### 8.1 数据备份
- **每日全量备份**mysqldump + binlog
- **实时增量备份**MySQL主从复制
- **异地备份**OSS冷备存储
### 8.2 故障恢复
- **数据库故障**主从切换30分钟恢复
- **服务故障**健康检查自动重启
- **网络故障**多可用区部署
## 9. 扩展性设计
### 9.1 水平扩展
- 无状态服务支持弹性伸缩
- 数据库分库分表方案
- 缓存集群扩展
### 9.2 功能扩展
- 插件化架构设计
- API版本管理
- 灰度发布机制

View File

@@ -61,7 +61,7 @@
- **收货地址表 (addresses)**: 地址ID、用户ID、收货人、手机号、详细地址、是否默认
### 4.2 数据库技术选型
- **主数据库**: MySQL 5.7+,支持事务和复杂查询
- **主数据库**: MySQL 8.0+,支持事务和复杂查询
- **缓存数据库**: Redis用于会话管理、热点数据缓存
- **字符编码**: UTF8MB4支持emoji表情
- **连接池**: 最大连接数20最小连接数5超时时间60秒

View File

@@ -87,6 +87,8 @@ npm run db:check
npm run db:init
```
**注意**: 数据库初始化脚本已移动到 `/scripts/backend/` 目录,执行时会自动调用正确路径。
## 🏗️ 构建部署
### 1. 后端服务部署
@@ -365,5 +367,5 @@ pm2 restart aijianhua-backend --update-env
- **业务监控**: Grafana
---
*最后更新: 2024-01-15*
*最后更新: 2024-03-15*
*文档版本: v1.0*

View File

@@ -94,6 +94,7 @@
- **资源优化**: 图片压缩WebP格式支持CSS/JS文件合并压缩
- **缓存策略**: 浏览器缓存优化CDN加速部署
- **响应时间**: 用户操作响应时间 ≤ 100ms
- **技术栈版本**: Node.js 16.0.0+, MySQL 8.0+, Redis 6.0+, Vue.js 3.0+
### 5.2 可用性要求
- **浏览器兼容性**: 支持 Chrome、Firefox、Safari、Edge 等主流浏览器

View File

@@ -8,6 +8,8 @@
2. **后端接口 (Node.js)** - 提供RESTful API服务包括植物识别、用户管理、商品管理、订单管理等
3. **后台管理系统 (Vue3)** - 管理后台,用于用户管理、商品管理、订单管理、数据统计等
4. **官方网站 (HTML5 Bootstrap)** - 公司展示网站,提供产品介绍、公司信息、联系方式等
5. **项目文档 (docs)** - 包含需求文档、设计文档、API文档、部署指南等
6. **测试目录 (test)** - 包含单元测试、集成测试、端到端测试等测试文件
## 技术架构
- **前端技术栈**: uni-app、Vue3、Element Plus、Bootstrap
@@ -38,14 +40,14 @@
- [开发计划](./backend/开发计划.md)
### 后台管理系统
- [README](./admin_website/README.md)
- [功能模块](./admin_website/功能模块.md)
- [开发计划](./admin_website/开发计划.md)
- [README](./admin-system/README.md)
- [功能模块](./admin-system/功能模块.md)
- [开发计划](./admin-system/开发计划.md)
### 官方网站
- [README](./official_website/README.md)
- [功能模块](./official_website/功能模块.md)
- [开发计划](./official_website/开发计划.md)
- [README](./website/README.md)
- [功能模块](./website/功能模块.md)
- [开发计划](./website/开发计划.md)
## 开发时间安排
整个项目预计需要16周完成分为以下阶段

View File

@@ -3,10 +3,13 @@
## 项目结构
```
爱鉴花项目
├── mini_program (微信小程序)
├── backend (后端服务)
├── admin_website (后台管理系统)
├── official_website (官方网站)
├── mini_program (微信小程序矩阵目录)
├── backend (后端服务目录)
├── admin-system (管理后台目录)
├── website (官网目录)
├── docs (文档目录)
├── test (测试文件目录)
├── scripts (执行脚本目录)
├── 需求文档.md
├── 详细设计.md
├── 项目总览.md
@@ -21,7 +24,7 @@
### 微信小程序 (uni-app)
1. **开发工具**: 安装 HBuilderX (推荐) 或 VSCode + uni-app 插件
2. **环境要求**: Node.js 14+npm 或 yarn 包管理器
2. **环境要求**: Node.js 16+npm 或 yarn 包管理器
3. **开发步骤**:
- 导入 mini_program 文件夹到开发工具
- 运行 `npm install` 安装依赖
@@ -29,18 +32,18 @@
- 运行开发服务器进行调试
### 后端服务 (Node.js)
1. **环境要求**: Node.js 14+MySQL 5.7+生产环境SQLite开发环境Redis
1. **环境要求**: Node.js 16+MySQL 8.0+生产环境SQLite开发环境Redis
2. **开发步骤**:
- 导入 backend 文件夹
- 运行 `npm install` 安装依赖
- 复制 `.env.example``.env` 并配置数据库连接
- 运行 `npm run db:init` 初始化数据库默认使用SQLite
- 运行 `npm run db:init` 初始化数据库默认使用SQLite,脚本位于 `/scripts/backend/` 目录
- 运行 `npm start` 启动服务(开发环境使用 `npm run dev`
### 后台管理系统 (Vue3)
1. **环境要求**: Node.js 14+npm 或 yarn
1. **环境要求**: Node.js 16+npm 或 yarn
2. **开发步骤**:
- 导入 admin_website 文件夹
- 导入 admin-system 文件夹
- 运行 `npm install` 安装依赖
- 配置后端API地址环境变量或配置文件
- 运行 `npm run serve` 启动开发服务器

View File

@@ -13,12 +13,22 @@ start .
cd ..
rem 打开后台管理系统项目
cd admin_website
cd admin-system
start .
cd ..
rem 打开官网项目
cd official_website
cd website
start .
cd ..
rem 打开文档目录
cd docs
start .
cd ..
rem 打开测试目录
cd test
start .
cd ..

106
test/README.md Normal file
View File

@@ -0,0 +1,106 @@
# 测试目录说明
## 目录结构
```
test/
├── unit/ # 单元测试
├── integration/ # 集成测试
├── e2e/ # 端到端测试
└── README.md # 测试说明文档
```
## 测试类型说明
### 单元测试 (unit)
- 针对单个函数、模块或类的测试
- 使用 Jest 或 Mocha + Chai 框架
- 测试文件命名规范:`[filename].test.js``[filename].spec.js`
- 覆盖率要求:≥ 80%
### 集成测试 (integration)
- 测试多个模块之间的交互
- 包括API接口测试、数据库操作测试等
- 使用 Supertest 进行HTTP接口测试
- 使用 Jest 或 Mocha 框架
### 端到端测试 (e2e)
- 完整的用户流程测试
- 使用 Cypress 或 Playwright 框架
- 模拟真实用户操作场景
- 包括UI交互测试和业务流程测试
## 测试框架配置
### 后端测试配置
```javascript
// jest.config.js (backend)
module.exports = {
testEnvironment: 'node',
testMatch: ['**/test/**/*.test.js'],
collectCoverageFrom: ['src/**/*.js'],
coverageDirectory: 'coverage',
};
```
### 前端测试配置
```javascript
// jest.config.js (frontend)
module.exports = {
testEnvironment: 'jsdom',
testMatch: ['**/test/**/*.test.js'],
moduleNameMapping: {
'^@/(.*)$': '<rootDir>/src/$1',
},
};
```
## 运行测试
### 运行所有测试
```bash
npm test
```
### 运行单元测试
```bash
npm run test:unit
```
### 运行集成测试
```bash
npm run test:integration
```
### 运行端到端测试
```bash
npm run test:e2e
```
### 生成测试覆盖率报告
```bash
npm run test:coverage
```
## 测试最佳实践
1. **测试命名**: 使用描述性的测试名称,说明测试场景和预期结果
2. **测试隔离**: 每个测试应该独立运行,不依赖其他测试的状态
3. **断言明确**: 使用明确的断言语句,避免模糊的测试验证
4. **错误处理**: 测试应该验证错误情况和边界条件
5. **性能考虑**: 测试运行时间应该合理,避免过长的测试套件
## 持续集成
测试应该集成到CI/CD流程中
- 每次提交触发测试运行
- 测试失败阻止部署
- 生成测试覆盖率报告
- 集成代码质量检查工具
## 相关文档
- [Jest 官方文档](https://jestjs.io/)
- [Cypress 官方文档](https://docs.cypress.io/)
- [Supertest 官方文档](https://github.com/visionmedia/supertest)
- [测试驱动开发(TDD)指南](./docs/TDD_GUIDE.md)