vending-machine/.kiro/specs/vending-machine-app/tasks.md
2026-04-03 06:07:13 +08:00

11 KiB
Raw Blame History

实现计划:贩卖机配套移动端 App

概述

本实现计划将设计文档拆分为可执行的编码任务。项目包含三个子系统:.NET 10 后端 API、UniApp 移动端、EleAdmin + Vue 3 管理后台。任务按模块递进,每个模块完成后进行检查点验证。

任务

  • 1. 后端项目初始化与基础架构

    • 1.1 创建 .NET 10 ASP.NET Core Web API 项目结构

      • 创建解决方案和项目API、Domain、Infrastructure、Application 分层)
      • 配置 SQL Server 连接字符串和 Entity Framework Core
      • 配置 Redis 连接
      • 添加 Swagger/OpenAPI 文档
      • 需求: 全局
    • 1.2 创建数据库实体和 DbContext

      • 根据设计文档数据模型创建所有 Entity 类User、MembershipProduct、PointRecord、CouponTemplate、UserCoupon、Banner、HomeEntry、ContentConfig、VendingPaymentRecord、PointsConfig
      • 创建 AppDbContext 并配置实体映射关系
      • 创建初始数据库迁移
      • 需求: 全局
    • 1.3 实现通用基础设施

      • 实现统一 API 响应格式ApiResponse
      • 实现全局异常处理中间件
      • 实现 JWT 认证中间件
      • 实现多语言请求头解析Accept-Language
      • 需求: 全局
  • 2. 用户认证模块

    • 2.1 实现用户服务和控制器

      • 实现 UserService发送验证码、登录、获取用户信息、登出、注销
      • 实现 UserController 的所有端点
      • 实现手机号区号验证逻辑
      • 实现默认昵称生成("用户" + 6位随机数字
      • 需求: 1.1, 1.2, 1.3, 1.5, 1.6, 1.7, 1.8
    • 2.2 编写用户认证属性测试

      • Property 1: 默认昵称格式
      • Property 2: 协议未勾选阻止登录
      • 验证: 需求 1.4, 1.6
    • 2.3 编写用户认证单元测试

      • 测试登录成功/失败流程
      • 测试注销账号流程
      • 测试验证码发送逻辑
      • 需求: 1.1, 1.3, 1.7
  • 3. 检查点 - 用户认证模块

    • 确保所有测试通过,如有问题请向用户确认。
  • 4. 会员与支付模块

    • 4.1 实现会员服务和控制器

      • 实现 MembershipService获取会员信息、获取商品列表、购买会员、购买订阅、验证订阅状态
      • 实现 MembershipController 的所有端点
      • 实现会员到期后积分保留/清空逻辑3个月规则
      • 实现 Google Pay / Apple Pay 支付凭证验证逻辑
      • 需求: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 8.1, 8.2, 8.3, 8.5, 8.6
    • 4.2 编写会员与支付属性测试

      • Property 7: 会员页按钮状态取决于会员类型
      • Property 8: 平台与支付方式映射
      • Property 9: 积分保留与清空规则
      • Property 17: 支付错误处理
      • 验证: 需求 4.2, 4.3, 4.4, 4.5, 4.7, 4.8, 8.4
  • 5. 积分模块

    • 5.1 实现积分服务和控制器

      • 实现 PointsService获取余额、获取记录、赠送积分、消费积分转换
      • 实现 PointsController 的所有端点
      • 实现积分转换计算逻辑(金额 * 转换比)
      • 实现赠送积分事务逻辑(扣减发送方、增加接收方,保证原子性)
      • 需求: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7
    • 5.2 编写积分模块属性测试

      • Property 10: 积分转换计算
      • Property 11: 积分记录渲染完整性
      • Property 12: 赠送积分守恒
      • 验证: 需求 5.1, 5.4, 5.5, 5.6, 5.7
  • 6. 优惠券模块

    • 6.1 实现优惠券服务和控制器

      • 实现 CouponService获取可兑换列表、兑换优惠券、获取用户优惠券、获取印花列表、兑换印花
      • 实现 CouponController 的所有端点
      • 实现兑换逻辑(积分检查、库存检查、下架检查)
      • 实现印花兑换逻辑会员检查、每人限兑1次
      • 实现优惠券状态自动更新(过期检测)
      • 需求: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6
    • 6.2 编写优惠券模块属性测试

      • Property 13: 优惠券兑换正确性
      • Property 14: 优惠券状态分类与标识
      • Property 15: 印花兑换权限取决于会员状态
      • Property 16: 印花兑换幂等性
      • 验证: 需求 6.2, 6.3, 6.6, 6.7, 7.3, 7.4, 7.5, 7.6
  • 7. 检查点 - 核心业务模块

    • 确保所有测试通过,如有问题请向用户确认。
  • 8. 贩卖机对接模块

    • 8.1 实现贩卖机对接服务和控制器

      • 实现 VendingMachineService二维码生成与验证、用户信息查询、用户锁定/解锁、支付回调处理)
      • 实现 VendingMachineController 的所有端点
      • 实现动态二维码生成(包含会员 ID、token、过期时间使用 Redis 存储
      • 实现用户锁定机制Redis 分布式锁)
      • 实现支付回调处理(积分发放、优惠券核销、解除锁定)
      • 实现优惠券排序逻辑(按到期时间升序、抵扣金额降序)
      • 需求: 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7
    • 8.2 编写贩卖机对接属性测试

      • Property 18: 会员二维码时效性
      • Property 19: 用户锁定机制
      • Property 20: 优惠券排序优先级
      • Property 21: 支付结束解除锁定
      • 验证: 需求 9.1, 9.2, 9.3, 9.4, 9.6, 9.7
  • 9. 内容配置模块

    • 9.1 实现内容配置服务和控制器
      • 实现 ContentService获取 Banner、入口图片、使用说明、协议内容等
      • 实现 ContentController 的所有端点
      • 根据请求语言返回对应语言版本的内容
      • 需求: 3.1, 3.2, 3.7, 3.8, 10.2, 10.4
  • 10. 检查点 - 后端 API 完成

    • 确保所有测试通过,如有问题请向用户确认。
  • 11. 管理后台 - 项目初始化

    • 11.1 创建 EleAdmin + Vue 3 管理后台项目
      • 基于 EleAdmin 模板初始化项目
      • 配置路由、权限管理、API 基础封装
      • 配置与后端 Admin API 的对接
      • 需求: 11全局
  • 12. 管理后台 - 内容管理页面

    • 12.1 实现 Banner 管理页面

      • Banner 列表展示、新增、编辑、删除
      • 支持拖拽排序
      • 支持多语言图片上传
      • 需求: 11.1
    • 12.2 实现入口图片管理页面

      • 首页各功能入口图片的配置和多语言图片上传
      • 需求: 11.8
    • 12.3 实现内容编辑页面

      • 用户协议、隐私政策、优惠券使用说明的多语言富文本编辑
      • 需求: 11.7
  • 13. 管理后台 - 业务管理页面

    • 13.1 实现优惠券管理页面

      • 优惠券列表、创建、编辑表单(名称、类型、门槛、折扣、积分、到期时间)
      • 上下架操作
      • 多语言名称配置
      • 需求: 11.2
    • 13.2 实现节日印花管理页面

      • 印花优惠券列表、创建、编辑
      • Banner 图配置
      • 需求: 11.3
    • 13.3 实现会员商品管理页面

      • 会员商品列表、价格编辑、时长配置
      • 宣传图上传
      • Google/Apple 商品 ID 配置
      • 需求: 11.5
    • 13.4 实现积分配置页面

      • 金额与积分转换比配置表单
      • 需求: 11.4
    • 13.5 实现用户管理页面

      • 用户列表(搜索、分页)
      • 用户详情(会员状态、积分、优惠券)
      • 需求: 11.6
  • 14. 检查点 - 管理后台完成

    • 确保所有测试通过,如有问题请向用户确认。
  • 15. UniApp 移动端 - 项目初始化

    • 15.1 创建 UniApp + Vue 3 + TypeScript 项目

      • 初始化 UniApp 项目,配置 TypeScript
      • 配置 Pinia 状态管理
      • 配置 vue-i18n 多语言zh-CN、zh-TW、en
      • 封装 API 请求层统一请求拦截、Token 管理、错误处理)
      • 配置页面路由pages.json
      • 需求: 2.1, 全局
    • 15.2 编写多语言属性测试

      • Property 3: i18n 翻译完整性
      • 验证: 需求 2.1, 2.3
  • 16. UniApp 移动端 - 登录与用户模块

    • 16.1 实现登录页

      • 手机号输入、区号选择器、验证码输入
      • 协议勾选检查
      • 调用后端登录接口Token 存储
      • 需求: 1.1, 1.2, 1.3, 1.4
    • 16.2 实现我的页

      • 未登录/已登录状态展示
      • 积分展示、功能入口(我的积分、我的优惠券、切换语言、用户协议、隐私政策、关于)
      • 赠送积分弹窗
      • 退出登录弹窗
      • 需求: 1.5, 1.6, 1.8, 5.3, 5.6, 5.7, 6.5, 10.1
    • 16.3 实现关于页

      • LOGO、版本号展示
      • 注销账号弹窗和流程
      • 需求: 1.7, 10.3
    • 16.4 实现语言切换功能

      • 多语言选择列表弹窗
      • 切换后刷新所有界面文字
      • 需求: 2.2, 2.3
  • 17. UniApp 移动端 - 首页模块

    • 17.1 实现首页

      • Banner 轮播组件(支持内部/外部跳转)
      • 功能入口图片(成为会员、节日印花、会员二维码)
      • 会员二维码弹窗(动态二维码生成与展示)
      • 优惠券使用说明弹窗
      • 可兑换优惠券列表和兑换弹窗
      • 需求: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 6.1, 6.2, 6.3, 6.4
    • 17.2 编写首页相关属性测试

      • Property 4: Banner 跳转路由正确性
      • Property 5: 二维码入口行为取决于会员状态
      • Property 6: 优惠券列表渲染完整性
      • 验证: 需求 3.2, 3.5, 3.6, 3.8
  • 18. UniApp 移动端 - 会员与支付模块

    • 18.1 实现会员页
      • 会员宣传长图展示
      • 单月会员/订阅会员购买按钮(根据会员状态动态显示)
      • Google Pay / Apple Pay 支付调用封装
      • 支付成功后页面刷新
      • 需求: 4.1, 4.2, 4.3, 4.6, 4.7, 4.8, 8.1, 8.2, 8.3, 8.4, 8.6
  • 19. UniApp 移动端 - 积分与优惠券模块

    • 19.1 实现我的积分页

      • 获取记录/使用记录标签切换
      • 积分记录列表展示(来源、时间、数量)
      • 需求: 5.3, 5.4, 5.5
    • 19.2 实现我的优惠券页

      • 可使用/已使用/已过期标签切换
      • 优惠券卡片组件(状态标识图标)
      • 需求: 6.5, 6.6, 6.7
    • 19.3 实现节日印花页

      • Banner 图展示
      • 印花优惠券列表
      • 兑换逻辑(会员检查、已兑换状态)
      • 需求: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6
  • 20. UniApp 移动端 - 协议与内容页面

    • 20.1 实现用户协议页和隐私政策页
      • 从后端获取多语言内容并展示
      • 需求: 10.2
  • 21. 检查点 - UniApp 移动端完成

    • 确保所有测试通过,如有问题请向用户确认。
  • 22. 集成与联调

    • 22.1 前后端接口联调

      • UniApp 移动端与后端 API 全流程联调
      • 管理后台与后端 Admin API 联调
      • 需求: 全局
    • 22.2 编写集成测试

      • 测试完整的用户注册-登录-购买会员-获取积分-兑换优惠券流程
      • 测试贩卖机扫码-锁定-支付回调-解锁完整流程
      • 需求: 全局
  • 23. 最终检查点

    • 确保所有测试通过,如有问题请向用户确认。

备注

  • 所有测试任务均为必选,确保代码质量
  • 每个任务引用了具体的需求编号以确保可追溯性
  • 检查点用于阶段性验证,确保增量开发的正确性
  • 属性测试验证通用正确性属性,单元测试验证具体示例和边界情况
  • 后端使用 xUnit + FsCheck 进行测试,前端使用 Vitest + fast-check 进行测试