Files
aijianhua/docs/PRD_爱鉴花小程序.md

13 KiB
Raw Blame History

爱鉴花小程序 - 产品需求文档

版本历史

版本 日期 作者 描述
v1.0 2024-01-15 产品经理 初始版本

1. 项目概述

1.1 项目背景

"爱鉴花"是一款集植物识别、鲜花配送、植物商城、园艺花卉于一体的综合性小程序,旨在为用户提供一站式的植物相关服务。

1.2 项目目标

  • 打造国内领先的植物识别+电商平台
  • 为用户提供准确的植物识别服务
  • 构建完整的植物相关商品供应链
  • 建立园艺爱好者社区

1.3 成功标准

  • 3个月内实现日活用户10,000+
  • 植物识别准确率达到90%以上
  • 月GMV达到50万元
  • 用户满意度评分4.5/5.0

2. 用户角色与用例

2.1 用户角色

  1. 普通消费者:购买鲜花、盆栽的普通用户
  2. 园艺爱好者:对植物种植有浓厚兴趣的用户
  3. 花店商家:入驻平台的鲜花零售商
  4. 内容创作者分享园艺知识的KOL

2.2 核心用例

  • 植物识别查询
  • 鲜花在线订购
  • 园艺商品购买
  • 知识内容学习
  • 社区交流互动

3. 功能需求

3.1 植物识别模块

用户故事:作为用户,我想要通过拍照识别植物,以便了解植物信息和养护方法

验收标准

  • Given 用户打开小程序
  • When 用户点击"拍照识别"按钮
  • Then 系统调用摄像头并允许用户拍照
  • When 用户拍摄植物照片
  • Then 系统在3秒内返回识别结果
  • And 显示植物名称、科属、养护方法等信息
  • And 准确率不低于85%

3.2 电商交易模块

用户故事:作为消费者,我想要在线购买鲜花并配送到家,以便表达情感或装饰家居

验收标准

  • Given 用户浏览商品列表
  • When 用户选择商品加入购物车
  • Then 系统实时计算总价和配送费
  • When 用户提交订单
  • Then 系统生成订单并支持微信支付
  • And 订单状态实时更新
  • And 支持同城2小时配送

3.3 植物商城模块

用户故事:作为园艺爱好者,我想要购买各种植物盆栽和园艺工具,以便打造自己的花园

验收标准

  • Given 用户进入商城页面
  • When 用户按品类筛选商品
  • Then 系统显示相关商品列表
  • When 用户查看商品详情
  • Then 显示商品规格、养护说明、用户评价
  • And 支持收藏和分享功能

3.4 内容社区模块

用户故事:作为内容创作者,我想要分享园艺知识,以便帮助其他用户并建立个人影响力

验收标准

  • Given 用户登录账号
  • When 用户发布园艺教程
  • Then 系统支持图文混排编辑
  • And 内容自动保存草稿
  • And 发布后显示在社区首页

3.5 用户推广奖励模块

用户故事:作为用户,我想要通过推广小程序获得奖励,以便赚取额外收入和优惠

验收标准

  • Given 用户完成实名认证
  • When 用户进入推广中心
  • Then 系统生成专属推广二维码和链接
  • When 新用户通过推广链接注册
  • Then 推广人获得10元现金奖励
  • And 新用户获得5元新人优惠券
  • When 被推广用户完成首单消费
  • Then 推广人获得订单金额10%的额外奖励

用户故事:作为推广员,我想要查看我的推广业绩和收益,以便了解推广效果

验收标准

  • Given 用户登录账号
  • When 用户查看推广数据
  • Then 系统显示累计推广人数、成功订单数
  • And 显示可提现余额和已提现金额
  • And 支持按时间筛选统计数据

用户故事:作为推广员,我想要提现我的推广收益,以便将奖励转化为实际收入

验收标准

  • Given 用户有可提现余额
  • When 用户申请提现
  • Then 系统验证提现金额≥50元
  • And 提现申请提交后24小时内到账
  • And 提现记录可追溯查询

4. 非功能需求

4.1 性能需求

  • 页面加载时间:< 2秒
  • 识别响应时间:< 3秒
  • 订单处理延迟:< 1秒

4.2 安全需求

  • 用户数据加密存储
  • 支付接口符合PCI DSS标准
  • 防止SQL注入和XSS攻击

4.3 可靠性需求

  • 系统可用性99.9%
  • 数据备份:每日自动备份
  • 故障恢复30分钟内恢复

5. 原型说明

5.1 主要界面

  1. 首页:搜索栏、植物识别入口、热门商品推荐
  2. 识别页面:摄像头界面、拍照按钮、图库选择
  3. 商城页面:商品分类、商品列表、筛选排序
  4. 我的页面:订单管理、收藏夹、设置

5.2 交互流程

  • 识别流程:首页 → 拍照 → 识别结果 → 相关商品推荐
  • 购买流程:商品详情 → 加入购物车 → 填写地址 → 支付 → 订单跟踪

6. 技术架构

6.1 客户端层

  • 微信小程序基于uni-app开发提供用户端功能
  • 后台管理系统基于Vue.js 3 + Ant Design开发提供管理功能
  • 官网系统基于HTML5 + Bootstrap开发提供企业宣传功能

6.2 接入层

  • API网关基于Nginx + Node.js提供统一的API接入和路由分发

6.3 后端技术栈

  • API服务Node.js + Express.js + TypeScript + RESTful API
  • 数据库MySQL 8.0 主数据库
    • 测试环境192.168.0.240:3306 (用户名: root, 密码: aiot$Aiot123, 数据库: ajhdata)
    • 生产环境129.211.213.226:9527 (用户名: root, 密码: aiotAiot123!, 数据库: ajhdata)
    • 连接池配置最大连接数200最小连接数20超时时间30秒
    • 字符编码UTF8MB4支持emoji表情
    • 时区设置:东八区(+08:00
  • 缓存系统Redis Cluster 分布式缓存 + Node.js内置本地缓存
  • 消息队列暂不开启预留RabbitMQ集成能力
  • 文件存储腾讯云对象存储COS
  • 实时通信WebSocket用于大屏数据推送和实时通知
  • API文档Swagger

6.4 数据库配置文件结构

项目已创建以下数据库相关配置文件:

  1. backend/config/database.js - 数据库连接配置
  2. backend/.env.example - 环境变量配置模板
  3. backend/utils/dbConnector.js - 数据库连接工具类
  4. scripts/backend/initDatabase.js - 数据库初始化脚本
  5. backend/package.json - 项目依赖管理

配置支持多环境自动切换,通过 NODE_ENV 环境变量区分开发和生产环境。

数据库管理脚本命令:

  • npm run db:init - 初始化数据库连接验证(脚本位于 /scripts/backend/ 目录)
  • npm run db:check - 只检查数据库连接状态
  • npm run db:migrate - 执行数据库迁移(预留)
  • npm run db:seed - 填充初始数据(预留)

6.4 前端技术栈

  • 小程序框架uni-app
  • 开发语言JavaScript/TypeScript
  • UI框架WeUI
  • 状态管理Redux
  • 构建工具Webpack
  • 包管理npm/yarn

6.5 官网技术栈

  • 核心技术HTML5 + Bootstrap
  • 开发语言JavaScript
  • 构建工具Webpack
  • 包管理npm/yarn

6.6 第三方服务集成

  • 微信支付接口
  • 腾讯地图LBS服务
  • 物流配送API
  • 内容安全审核机制
  • 植物识别AI服务

7. 项目里程碑

7.1 第一阶段1个月

  • 基础框架搭建
  • 植物识别功能开发
  • 用户系统实现

7.2 第二阶段2个月

  • 电商功能完整实现
  • 支付系统集成
  • 内容社区搭建

7.3 第三阶段1个月

  • 性能优化
  • 商家入驻功能
  • 正式上线运营

8. 风险与应对

8.1 技术风险

  • 植物识别准确率不足 → 接入多个识别API备用
  • 高并发处理能力 → 使用负载均衡和缓存
  • 数据库性能瓶颈 → 单MySQL数据库优化方案详见附录C
  • 第三方服务不可用 → 降级策略和备用方案

8.2 运营风险

  • 商品供应链不稳定 → 建立多供应商体系
  • 用户增长缓慢 → 设计裂变营销活动
  • 推广奖励成本控制 → 设置提现门槛和奖励上限
  • 推广作弊风险 → 建立反作弊监控系统

9. API接口规范

9.1 通用规范

  • 采用RESTful API设计风格
  • 请求和响应格式为JSON
  • 使用HTTPS加密传输
  • 接口版本控制:/api/v1/

9.2 认证授权

  • JWT Token认证机制
  • Token有效期7天
  • 接口权限分级控制

9.3 响应格式

{
  "code": 200,
  "message": "成功",
  "data": {},
  "timestamp": 1640995200000
}

9.4 错误码规范

  • 200: 成功
  • 400: 参数错误
  • 401: 未授权
  • 403: 禁止访问
  • 404: 资源不存在
  • 500: 服务器错误

10. 数据字典

10.1 核心数据表

  • users: 用户表用户ID、手机号、密码、推广码等
  • plants: 植物信息表植物ID、名称、科属、养护方法等
  • products: 商品表商品ID、名称、价格、库存等
  • orders: 订单表订单ID、用户ID、金额、状态等
  • promotions: 推广记录表推广人ID、被推广人ID、奖励金额等

10.2 重要字段说明

  • 用户ID: 雪花算法生成
  • 订单号: 时间戳+随机数
  • 金额字段: 单位分存储
  • 时间字段: Unix时间戳

11. 测试策略

11.1 测试类型

  • 单元测试: 代码逻辑测试
  • 集成测试: 接口联调测试
  • 性能测试: 压力负载测试
  • 安全测试: 漏洞扫描测试

11.2 测试环境

  • 测试数据库: 192.168.0.240:3306/ajhdata_test
  • 测试域名: test.aijianhua.com
  • 测试账号: 预置测试用户数据

11.3 自动化测试

  • Jest单元测试框架
  • Postman接口测试
  • JMeter性能测试
  • SonarQube代码质量检测

12. 部署方案

12.1 环境划分

  • 开发环境: 内网访问,用于日常开发
  • 测试环境: 外网可访问,用于测试验证
  • 预发布环境: 生产环境镜像,用于最终测试
  • 生产环境: 正式线上环境

12.2 部署流程

  1. 代码提交到Git仓库
  2. 自动触发CI/CD流水线
  3. 执行自动化测试
  4. 构建Docker镜像
  5. 部署到对应环境
  6. 健康检查和服务发现

12.3 监控告警

  • 应用性能监控(APM)
  • 错误日志监控
  • 业务指标监控
  • 短信/邮件告警机制

13. 运维管理

13.1 日志管理

  • 访问日志记录
  • 错误日志收集
  • 日志分级存储
  • 日志查询分析

13.2 数据备份

  • 每日全量备份
  • 实时增量备份
  • 异地灾备方案
  • 备份恢复演练

13.3 安全运维

  • 定期安全扫描
  • 漏洞修复流程
  • 访问权限控制
  • 操作审计日志

本文档将持续更新,请关注最新版本

附录

附录A: 项目成员及职责

  • 产品经理: 需求分析和产品设计
  • 前端开发: 小程序和后台管理系统开发
  • 后端开发: API服务和数据库开发
  • 测试工程师: 质量保证和测试验证
  • 运维工程师: 系统部署和运维保障

附录B: 相关文档链接

附录C: 数据库性能优化方案

C.1 单MySQL数据库架构

架构设计

应用服务器 → MySQL数据库读写合一

配置优化

  1. 连接池配置

    • 最大连接数: 200
    • 最小连接数: 20
    • 连接超时时间: 30秒
    • 最大空闲时间: 300秒
  2. 性能调优

    • 调整InnoDB缓冲池大小
    • 优化查询缓存配置
    • 合理设置线程缓存
    • 配置适当的日志文件大小

C.2 分库分表方案

分库策略

  • 垂直分库: 按业务模块拆分

    • 用户库: users, addresses, identifications
    • 商品库: products, categories, inventories
    • 订单库: orders, order_items, payments
    • 推广库: promotions, rewards
  • 水平分库: 按数据量拆分

    • 用户数据: 按用户ID范围分库
    • 订单数据: 按时间范围分库
    • 识别记录: 按用户ID哈希分库

分表策略

  • 用户表: 按用户ID取模分表1024张表
  • 订单表: 按创建时间分表(每月一张表)
  • 识别记录表: 按用户ID和日期分表
  • 商品表: 按分类ID分表

分片键选择

  • 用户相关表: user_id
  • 订单相关表: order_id + create_time
  • 商品相关表: product_id + category_id
  • 识别记录: user_id + identify_time

C.3 实施路线图

第一阶段(立即实施)

  • 优化现有SQL查询性能
  • 添加合适的数据库索引
  • 调整数据库连接池配置
  • 配置数据库性能监控

第二阶段3个月后

  • 根据业务增长评估分库分表需求
  • 准备数据迁移方案
  • 优化数据库硬件配置(如需要)

第三阶段6个月后

  • 根据实际数据量决定是否实施分库分表
  • 如需要,实施垂直分库按业务模块拆分
  • 完善数据备份和容灾方案

C.4 监控和运维

性能监控指标

  • 数据库连接数和使用率
  • 查询响应时间P95、P99
  • 主从复制延迟时间
  • 慢查询数量和详情
  • 锁等待和死锁情况

告警机制

  • 数据库连接池耗尽告警
  • 主从复制延迟超过阈值告警
  • 慢查询数量激增告警
  • 磁盘空间不足告警

备份恢复

  • 每日全量备份 + 实时增量备份
  • 跨机房灾备方案
  • 定期恢复演练
  • 备份数据加密存储

C.5 预期效果

  • 读写性能: 提升2-3倍通过查询优化和索引
  • 并发能力: 支持200+并发连接
  • 数据容量: 支持TB级数据存储
  • 可用性: 99.5%的可用性保障
  • 扩展性: 支持后续按需扩展架构