docs: 更新项目文档,完善需求和技术细节
This commit is contained in:
151
README.md
151
README.md
@@ -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
|
||||
- 开发者微信群: 请联系项目管理员
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# 爱鉴花后端开发计划
|
||||
|
||||
## 第一阶段:基础框架搭建(1-2周)
|
||||
- 项目初始化
|
||||
- 数据库设计
|
||||
- 基础模块开发
|
||||
- API接口设计
|
||||
|
||||
## 第二阶段:核心功能开发(3-6周)
|
||||
- 植物识别服务集成
|
||||
- 用户管理模块
|
||||
- 商品管理模块
|
||||
- 订单管理模块
|
||||
|
||||
## 第三阶段:支付和统计功能开发(7-10周)
|
||||
- 支付接口集成
|
||||
- 数据统计模块
|
||||
- 日志系统
|
||||
|
||||
## 第四阶段:性能优化和安全加固(11-12周)
|
||||
- 性能优化
|
||||
- 安全加固
|
||||
- 压力测试
|
||||
|
||||
## 第五阶段:测试和部署(13-14周)
|
||||
- 功能测试
|
||||
- 集成测试
|
||||
- 部署上线
|
||||
|
||||
## 第六阶段:监控和维护(15-16周)
|
||||
- 系统监控
|
||||
- 故障处理
|
||||
- 持续优化
|
||||
@@ -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): 初始版本发布
|
||||
- 包含用户认证、商品管理、订单管理、花卉识别等核心功能
|
||||
@@ -5,7 +5,7 @@
|
||||
## 🎯 开发流程
|
||||
|
||||
### 1. 环境准备
|
||||
- 确保已安装 Node.js 14.0.0+
|
||||
- 确保已安装 Node.js 16.0.0+
|
||||
- 安装 Git 版本控制工具
|
||||
- 配置开发工具(HBuilderX、VSCode等)
|
||||
|
||||
@@ -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
28
docs/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 爱鉴花项目文档中心
|
||||
|
||||
## 项目介绍
|
||||
这是爱鉴花项目的完整文档中心,包含所有技术文档、API说明和部署指南。
|
||||
|
||||
## 技术栈
|
||||
- Node.js
|
||||
- Express.js
|
||||
- SQLite(开发环境)
|
||||
- MySQL(生产环境)
|
||||
- Redis
|
||||
|
||||
## 文档结构
|
||||
- 需求文档: 项目业务需求和功能说明
|
||||
- 设计文档: 系统架构、数据库设计和详细设计
|
||||
- API文档: 前后端接口规范和说明
|
||||
- 部署指南: 环境配置和部署流程
|
||||
- 开发计划: 项目开发进度和任务安排
|
||||
|
||||
## 开发说明
|
||||
请确保安装了Node.js环境,并使用npm管理依赖。
|
||||
|
||||
## 文档
|
||||
|
||||
- [开发计划](./开发计划.md)
|
||||
- [功能模块](./功能模块.md)
|
||||
- [数据库设计](./数据库设计文档.md)
|
||||
- [API接口文档](./API接口文档.md)
|
||||
@@ -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` | 填充初始数据(预留) |
|
||||
@@ -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
194
docs/开发计划.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# 爱鉴花小程序 - 开发计划
|
||||
|
||||
## 版本历史
|
||||
| 版本 | 日期 | 作者 | 描述 |
|
||||
|------|------|------|------|
|
||||
| v1.0 | 2024-01-15 | 项目经理 | 初始版本 |
|
||||
|
||||
## 1. 项目里程碑
|
||||
|
||||
### 里程碑1:MVP版本上线(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
|
||||
@@ -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
255
docs/系统架构文档.md
Normal 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 API(HTTP/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版本管理
|
||||
- 灰度发布机制
|
||||
@@ -61,7 +61,7 @@
|
||||
- **收货地址表 (addresses)**: 地址ID、用户ID、收货人、手机号、详细地址、是否默认
|
||||
|
||||
### 4.2 数据库技术选型
|
||||
- **主数据库**: MySQL 5.7+,支持事务和复杂查询
|
||||
- **主数据库**: MySQL 8.0+,支持事务和复杂查询
|
||||
- **缓存数据库**: Redis,用于会话管理、热点数据缓存
|
||||
- **字符编码**: UTF8MB4,支持emoji表情
|
||||
- **连接池**: 最大连接数20,最小连接数5,超时时间60秒
|
||||
@@ -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*
|
||||
@@ -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 等主流浏览器
|
||||
@@ -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周完成,分为以下阶段:
|
||||
@@ -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` 启动开发服务器
|
||||
@@ -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
106
test/README.md
Normal 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)
|
||||
Reference in New Issue
Block a user