diff --git a/README.md b/README.md index 7bdfaa8..ce335ab 100644 --- a/README.md +++ b/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 +cd aijianhua ``` -## 📄 相关文档 -- [需求文档](./需求文档.md) - 产品功能需求说明 -- [详细设计](./详细设计.md) - 技术架构和设计细节 -- [项目总览](./项目总览.md) - 项目总体信息和计划 -- [部署指南](./部署指南.md) - 系统部署和运维指南 -- [数据库设计](./数据库设计文档.md) - 数据库表结构和设计 -- [贡献指南](./CONTRIBUTING.md) - 开发规范和贡献流程 -- [变更日志](./CHANGELOG.md) - 版本更新记录 +2. 安装依赖 +```bash +# 后端服务 +cd backend && npm install -## 🤝 参与贡献 -欢迎提交Issue和Pull Request来完善这个项目。 \ No newline at end of file +# 管理后台 +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 +- 开发者微信群: 请联系项目管理员 \ No newline at end of file diff --git a/admin_website/.env.development b/admin-system/.env.development similarity index 100% rename from admin_website/.env.development rename to admin-system/.env.development diff --git a/admin_website/README.md b/admin-system/README.md similarity index 100% rename from admin_website/README.md rename to admin-system/README.md diff --git a/admin_website/package-lock.json b/admin-system/package-lock.json similarity index 100% rename from admin_website/package-lock.json rename to admin-system/package-lock.json diff --git a/admin_website/package.json b/admin-system/package.json similarity index 100% rename from admin_website/package.json rename to admin-system/package.json diff --git a/admin_website/src/App.vue b/admin-system/src/App.vue similarity index 100% rename from admin_website/src/App.vue rename to admin-system/src/App.vue diff --git a/admin_website/src/layouts/MainLayout.vue b/admin-system/src/layouts/MainLayout.vue similarity index 100% rename from admin_website/src/layouts/MainLayout.vue rename to admin-system/src/layouts/MainLayout.vue diff --git a/admin_website/src/main.js b/admin-system/src/main.js similarity index 100% rename from admin_website/src/main.js rename to admin-system/src/main.js diff --git a/admin_website/src/router/index.js b/admin-system/src/router/index.js similarity index 100% rename from admin_website/src/router/index.js rename to admin-system/src/router/index.js diff --git a/admin_website/src/store/index.js b/admin-system/src/store/index.js similarity index 100% rename from admin_website/src/store/index.js rename to admin-system/src/store/index.js diff --git a/admin_website/src/utils/api.js b/admin-system/src/utils/api.js similarity index 100% rename from admin_website/src/utils/api.js rename to admin-system/src/utils/api.js diff --git a/admin_website/src/views/Dashboard.vue b/admin-system/src/views/Dashboard.vue similarity index 100% rename from admin_website/src/views/Dashboard.vue rename to admin-system/src/views/Dashboard.vue diff --git a/admin_website/src/views/Login.vue b/admin-system/src/views/Login.vue similarity index 100% rename from admin_website/src/views/Login.vue rename to admin-system/src/views/Login.vue diff --git a/admin_website/src/views/Orders.vue b/admin-system/src/views/Orders.vue similarity index 100% rename from admin_website/src/views/Orders.vue rename to admin-system/src/views/Orders.vue diff --git a/admin_website/src/views/Products.vue b/admin-system/src/views/Products.vue similarity index 100% rename from admin_website/src/views/Products.vue rename to admin-system/src/views/Products.vue diff --git a/admin_website/src/views/Settings.vue b/admin-system/src/views/Settings.vue similarity index 100% rename from admin_website/src/views/Settings.vue rename to admin-system/src/views/Settings.vue diff --git a/admin_website/src/views/Statistics.vue b/admin-system/src/views/Statistics.vue similarity index 100% rename from admin_website/src/views/Statistics.vue rename to admin-system/src/views/Statistics.vue diff --git a/admin_website/src/views/Users.vue b/admin-system/src/views/Users.vue similarity index 100% rename from admin_website/src/views/Users.vue rename to admin-system/src/views/Users.vue diff --git a/admin_website/vue.config.js b/admin-system/vue.config.js similarity index 100% rename from admin_website/vue.config.js rename to admin-system/vue.config.js diff --git a/admin_website/功能模块.md b/admin-system/功能模块.md similarity index 100% rename from admin_website/功能模块.md rename to admin-system/功能模块.md diff --git a/admin_website/开发计划.md b/admin-system/开发计划.md similarity index 100% rename from admin_website/开发计划.md rename to admin-system/开发计划.md diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index 3f7ae02..0000000 --- a/backend/README.md +++ /dev/null @@ -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) \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index de38fcb..a9b324a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -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" }, diff --git a/backend/开发计划.md b/backend/开发计划.md deleted file mode 100644 index 22875f5..0000000 --- a/backend/开发计划.md +++ /dev/null @@ -1,33 +0,0 @@ -# 爱鉴花后端开发计划 - -## 第一阶段:基础框架搭建(1-2周) -- 项目初始化 -- 数据库设计 -- 基础模块开发 -- API接口设计 - -## 第二阶段:核心功能开发(3-6周) -- 植物识别服务集成 -- 用户管理模块 -- 商品管理模块 -- 订单管理模块 - -## 第三阶段:支付和统计功能开发(7-10周) -- 支付接口集成 -- 数据统计模块 -- 日志系统 - -## 第四阶段:性能优化和安全加固(11-12周) -- 性能优化 -- 安全加固 -- 压力测试 - -## 第五阶段:测试和部署(13-14周) -- 功能测试 -- 集成测试 -- 部署上线 - -## 第六阶段:监控和维护(15-16周) -- 系统监控 -- 故障处理 -- 持续优化 \ No newline at end of file diff --git a/backend/API接口文档.md b/docs/API接口文档.md similarity index 51% rename from backend/API接口文档.md rename to docs/API接口文档.md index 3cd9835..a45dc7a 100644 --- a/backend/API接口文档.md +++ b/docs/API接口文档.md @@ -198,6 +198,210 @@ Authorization: Bearer **请求格式**: `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 +``` + +**响应示例**: +```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 **GET** `/identifications` -## 错误码说明 -| 错误码 | 说明 | -|--------|------| -| 200 | 成功 | -| 201 | 创建成功 | -| 400 | 参数错误 | -| 401 | 未授权 | -| 403 | 禁止访问 | -| 404 | 资源不存在 | -| 409 | 资源冲突 | -| 500 | 服务器内部错误 | ## 安全要求 @@ -257,5 +450,5 @@ Authorization: Bearer ## 版本历史 -- v1.0.0 (2024-01-01): 初始版本发布 +- v1.0.0 (2024-03-15): 初始版本发布 - 包含用户认证、商品管理、订单管理、花卉识别等核心功能 \ No newline at end of file diff --git a/CHANGELOG.md b/docs/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to docs/CHANGELOG.md diff --git a/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 98% rename from CONTRIBUTING.md rename to docs/CONTRIBUTING.md index 3509ea3..ce8109c 100644 --- a/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -5,7 +5,7 @@ ## 🎯 开发流程 ### 1. 环境准备 -- 确保已安装 Node.js 14.0.0+ +- 确保已安装 Node.js 16.0.0+ - 安装 Git 版本控制工具 - 配置开发工具(HBuilderX、VSCode等) diff --git a/PRD_爱鉴花小程序.md b/docs/PRD_爱鉴花小程序.md similarity index 98% rename from PRD_爱鉴花小程序.md rename to docs/PRD_爱鉴花小程序.md index 80a1041..b58bc1c 100644 --- a/PRD_爱鉴花小程序.md +++ b/docs/PRD_爱鉴花小程序.md @@ -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` - 填充初始数据(预留) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..da3f835 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,28 @@ +# 爱鉴花项目文档中心 + +## 项目介绍 +这是爱鉴花项目的完整文档中心,包含所有技术文档、API说明和部署指南。 + +## 技术栈 +- Node.js +- Express.js +- SQLite(开发环境) +- MySQL(生产环境) +- Redis + +## 文档结构 +- 需求文档: 项目业务需求和功能说明 +- 设计文档: 系统架构、数据库设计和详细设计 +- API文档: 前后端接口规范和说明 +- 部署指南: 环境配置和部署流程 +- 开发计划: 项目开发进度和任务安排 + +## 开发说明 +请确保安装了Node.js环境,并使用npm管理依赖。 + +## 文档 + +- [开发计划](./开发计划.md) +- [功能模块](./功能模块.md) +- [数据库设计](./数据库设计文档.md) +- [API接口文档](./API接口文档.md) \ No newline at end of file diff --git a/backend/README_DATABASE.md b/docs/README_DATABASE.md similarity index 96% rename from backend/README_DATABASE.md rename to docs/README_DATABASE.md index 90ec6c0..d701506 100644 --- a/backend/README_DATABASE.md +++ b/docs/README_DATABASE.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` | 填充初始数据(预留) | diff --git a/backend/功能模块.md b/docs/功能模块.md similarity index 100% rename from backend/功能模块.md rename to docs/功能模块.md diff --git a/backend/后台管理系统API文档.md b/docs/后台管理系统API文档.md similarity index 85% rename from backend/后台管理系统API文档.md rename to docs/后台管理系统API文档.md index 0b8b28e..0203c06 100644 --- a/backend/后台管理系统API文档.md +++ b/docs/后台管理系统API文档.md @@ -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* \ No newline at end of file +*最后更新: 2024-03-15* \ No newline at end of file diff --git a/docs/开发计划.md b/docs/开发计划.md new file mode 100644 index 0000000..883bcea --- /dev/null +++ b/docs/开发计划.md @@ -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 \ No newline at end of file diff --git a/数据库设计文档.md b/docs/数据库设计文档.md similarity index 93% rename from 数据库设计文档.md rename to docs/数据库设计文档.md index 0aa0b52..329038f 100644 --- a/数据库设计文档.md +++ b/docs/数据库设计文档.md @@ -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* \ No newline at end of file +*本文档最后更新: 2024-03-15* +*数据库版本: MySQL 8.0+* \ No newline at end of file diff --git a/docs/系统架构文档.md b/docs/系统架构文档.md new file mode 100644 index 0000000..94d6f77 --- /dev/null +++ b/docs/系统架构文档.md @@ -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版本管理 +- 灰度发布机制 \ No newline at end of file diff --git a/详细设计.md b/docs/详细设计.md similarity index 98% rename from 详细设计.md rename to docs/详细设计.md index 74d3309..0b3f604 100644 --- a/详细设计.md +++ b/docs/详细设计.md @@ -61,7 +61,7 @@ - **收货地址表 (addresses)**: 地址ID、用户ID、收货人、手机号、详细地址、是否默认 ### 4.2 数据库技术选型 -- **主数据库**: MySQL 5.7+,支持事务和复杂查询 +- **主数据库**: MySQL 8.0+,支持事务和复杂查询 - **缓存数据库**: Redis,用于会话管理、热点数据缓存 - **字符编码**: UTF8MB4,支持emoji表情 - **连接池**: 最大连接数20,最小连接数5,超时时间60秒 diff --git a/部署指南.md b/docs/部署指南.md similarity index 97% rename from 部署指南.md rename to docs/部署指南.md index 281cd2c..3aa3b2a 100644 --- a/部署指南.md +++ b/docs/部署指南.md @@ -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* \ No newline at end of file diff --git a/需求文档.md b/docs/需求文档.md similarity index 98% rename from 需求文档.md rename to docs/需求文档.md index 4f81036..5c8ceb7 100644 --- a/需求文档.md +++ b/docs/需求文档.md @@ -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 等主流浏览器 diff --git a/项目总览.md b/docs/项目总览.md similarity index 80% rename from 项目总览.md rename to docs/项目总览.md index 39fc76d..770c01a 100644 --- a/项目总览.md +++ b/docs/项目总览.md @@ -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周完成,分为以下阶段: diff --git a/项目说明.md b/docs/项目说明.md similarity index 77% rename from 项目说明.md rename to docs/项目说明.md index 6cd305a..e389d40 100644 --- a/项目说明.md +++ b/docs/项目说明.md @@ -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` 启动开发服务器 diff --git a/backend/scripts/initDatabase.js b/scripts/backend/initDatabase.js similarity index 100% rename from backend/scripts/initDatabase.js rename to scripts/backend/initDatabase.js diff --git a/backend/scripts/initSQLite.js b/scripts/backend/initSQLite.js similarity index 100% rename from backend/scripts/initSQLite.js rename to scripts/backend/initSQLite.js diff --git a/start_project.bat b/start_project.bat index 58ab806..ee1fa79 100644 --- a/start_project.bat +++ b/start_project.bat @@ -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 .. diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..eb80b76 --- /dev/null +++ b/test/README.md @@ -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: { + '^@/(.*)$': '/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) \ No newline at end of file diff --git a/official_website/README.md b/website/README.md similarity index 100% rename from official_website/README.md rename to website/README.md diff --git a/official_website/about.html b/website/about.html similarity index 100% rename from official_website/about.html rename to website/about.html diff --git a/official_website/contact.html b/website/contact.html similarity index 100% rename from official_website/contact.html rename to website/contact.html diff --git a/official_website/css/style.css b/website/css/style.css similarity index 100% rename from official_website/css/style.css rename to website/css/style.css diff --git a/official_website/image-requirements.md b/website/image-requirements.md similarity index 100% rename from official_website/image-requirements.md rename to website/image-requirements.md diff --git a/official_website/index.html b/website/index.html similarity index 100% rename from official_website/index.html rename to website/index.html diff --git a/official_website/js/main.js b/website/js/main.js similarity index 100% rename from official_website/js/main.js rename to website/js/main.js diff --git a/official_website/news.html b/website/news.html similarity index 100% rename from official_website/news.html rename to website/news.html diff --git a/official_website/products.html b/website/products.html similarity index 100% rename from official_website/products.html rename to website/products.html diff --git a/official_website/robots.txt b/website/robots.txt similarity index 100% rename from official_website/robots.txt rename to website/robots.txt diff --git a/official_website/sitemap.xml b/website/sitemap.xml similarity index 100% rename from official_website/sitemap.xml rename to website/sitemap.xml diff --git a/official_website/功能模块.md b/website/功能模块.md similarity index 100% rename from official_website/功能模块.md rename to website/功能模块.md diff --git a/official_website/开发计划.md b/website/开发计划.md similarity index 100% rename from official_website/开发计划.md rename to website/开发计划.md