第11组 · 阶段性评审 - sebestp/coursewise GitHub Wiki

第11组 · 阶段性评审

项目名称:在线购物系统 | 组长:王嘉慧 | 组员:王嘉慧、彭燕、唐红沁、王兴艳、张耀文

组工作简报

第1次(2026-10-08)

  • 项目总体计划:项目计划周期16周,共7个评审节点/迭代周期:第1次 W4、第2次 W6、第3次 W8、第4次 W10、第5次 W12、第6次 W14、第7次 W16;整体分三阶段:阶段一 W1~W6 基线 MVP 开发与交付,阶段二 W7~W12 领域能力和功能升级,阶段三 W13~W16 挑战功能、质量提升和最终验收。
  • 当前进度:25%(依据:约 4 周 / 总 16 周;已完成项目立项、需求与架构设计以及部分核心功能开发;基线功能完整联调、测试、部署和交付安排在 W5~W6,并在第2次阶段性评审中确认。)
  • 当前迭代期:W1~W6(基线 MVP 开发阶段;内部迭代一 W1~W2,迭代二 W3~W4,迭代三 W5~W6;第1次阶段性评审主要检查前两个迭代期 W1~W4 的完成情况)
  • 迭代目标:完成一个可运行、可演示、可测试和可部署的 MVP 系统,包括:1. 完成需求、计划和架构设计;2. 完成买家端和卖家端核心功能;3. 完成商品发布、购买意向排队、口令管理和交易处理流程;4. 完成数据库、后端 API 和前端页面联调;5. 完成基础单元测试、功能测试和 CI 配置;6. 完成 Docker 部署和运行文档。W1~W4 重点完成设计和核心功能开发,W5~W6 重点完成联调、测试、部署和基线交付。
  • 任务与成果物:彭燕:需求分析:通过向机器人提问澄清需求规则,梳理交流方法、主要矛盾点及解决过程(提交意向不冻结商品、交易失败作废/重新排队二选一、失败后口令码立即失效、恢复在售状态区分、交易中禁止手动解冻等),形成需求分析总结文档;彭燕:后端 REST API 全量实现:Controller 层(buyer/admin 分包 7 个控制器)+ Service 层 5 个实现类,共 19 个接口,覆盖买家浏览/意向/口令码自助与卖家认证/发布/队列/交易/历史;彭燕:后端审查问题修复:交易尝试表、商品状态事件流、口令码 HMAC 索引、部署密钥强制注入四项机制落地;彭燕:缺陷闭环:修复缺陷库,并补充对应单元测试;彭燕:后端评审成果说明撰写:分层架构、端到端流程、并发保障、修复机制流程图,限制待办;王嘉慧:R1-01 基线功能需求定义与验收场景:定义 B-001 ~ B-009 九项基线功能需求,明确每项需求的触发条件、前置约束、预期结果与验收标准;王嘉慧:R1-02 用例描述与状态机设计:编写买家 7 个 + 卖家 12 个用例的完整描述(参与者、前置条件、基本流、备选流);设计商品 4 状态(ONLINE / RESTORED_ONLINE / FROZEN / SOLD)与意向 6 状态(QUEUING / IN_TRANSACTION / SUCCESS / FAILED / CANCELLED / UNSOLD)状态机,定义合法流转路径与约束条件;王嘉慧:R1-03 非功能需求与范围排除清单:定义非功能需求 5 项(NF-001 Docker 部署 / NF-002 CI 流水线 / NF-003 单测覆盖率≥70% / NF-004 UI 冒烟测试 / NF-005 性能压测);编写范围排除清单 9 项,明确买家账号体系、购物车、在线支付、物流跟踪等不纳入本期功能;王嘉慧:R1-04 项目立项与技术选型决策记录:编写项目立项信息(组号、成员、周期);记录 D1 ~ D8 八项技术选型决策(Java 17 / Spring Boot 3 / React 18 / MySQL 8 / Docker / GitHub Actions 等),每项决策含候选方案、对比分析与最终选择理由;王嘉慧:R1-05 迭代计划与子系统分工制定:制定 3 阶段 16 周迭代计划与 7 个评审节点;定义 R1 ~ R5 五个子系统的职责边界与交付物;编排 W1 ~ W6 详细周计划;制定考核策略;王嘉慧:R1-06 数据模型与并发控制设计:设计 5 张核心表(seller / product / purchase_intent / trade_attempt / product_status_event)的数据模型与 ER 图;设计 active_flag 生成列唯一索引与 queue_seq 队列机制;定义三层并发控制(状态机校验 → SELECT FOR UPDATE 行锁 → 唯一索引兜底)与 6 条核心不变量;王嘉慧:R1-07 REST API 接口设计与安全部署方案:设计 19 个 REST 端点(buyer / admin 分包)的 URL、请求方法、参数与响应契约;设计安全方案(Spring Security + JWT / BCrypt / HMAC-SHA256 口令索引 / 文件上传魔数校验);设计 Docker Compose 三容器部署方案(Nginx + Spring Boot + MySQL)与扩展点预留;王兴艳:买家端页面与意向流程:实现商品展示、状态提示、意向提交、口令查询、信息修改和意向撤销,覆盖 B-001~B-007 的前端功能;王兴艳:卖家后台页面与管理流程:实现登录、修改密码、商品发布、当前商品管理、冻结/解冻、意向队列、交易处理及历史记录,覆盖 S-001~S-012 的前端功能;王兴艳:前端主页面显示测试与自动化测试:查看浏览器端界面显示细则、编写 Playwright 核心流程测试;王兴艳:前端评审成果说明撰写;唐红沁:搭建 GitHub Actions CI/CD 流水线(后端测试+前端构建+Docker校验),已全绿合并至 main;唐红沁:本地环境搭建与验证:配置 JDK 17、MySQL、环境变量,成功启动后端并跑通 47 个 JUnit 单元测试;唐红沁:使用 Postman 完成核心业务闭环黑盒测试(发布->意向->冻结->成交->下架),10次请求全部通过;唐红沁:执行 API 异常流与边界值测试(401未登录、400非法手机号/姓名、404无商品、500错误方法);唐红沁:执行状态机非法流转测试,验证重复发布 409、未冻结直接成交 409 等约束,确保状态流转严密;唐红沁:发现并登记 2 个真实后端缺陷(BUG-005 错误方法返回500、BUG-006 姓名超长未拦截),已指派给 R2;唐红沁:编写部署运行手册(Runbook),记录本地启动前置环境变量、数据库重置及常见问题排查;唐红沁:建立 AI 使用记录与个人工作日志,形成完整的证据链;张耀文:R5-01 五表实现与需求基线核对:核对 seller、product、purchase_intent、trade_attempt、product_status_event 五张表的 SQL、JPA 实体与业务用途,识别旧三表说明与当前实现的差异,形成与源码一致的数据库说明;张耀文:R5-02 数据库 ER 图与关联模型整理:绘制可维护的 Mermaid ER 图,说明商品与购买意向、意向与交易尝试、商品与状态事件及交易尝试与事件的关联,明确当前状态与历次交易记录的存储边界;张耀文:R5-03 五表数据字典与索引约束文档:逐表整理字段类型、可空性、业务含义及生成列,说明外键、唯一索引、CHECK、队列查询索引与历史查询索引;明确 queue_seq 与实时位次的区别,以及事务、行锁和数据库约束的配合关系;张耀文:R5-04 建库、升级与回退操作说明:编写 MySQL 版本、utf8mb4、空库初始化和环境变量配置说明,整理既有 V2/V3 迁移的适用条件、停写备份、迁移前后核对及失败回退步骤,说明 DDL 隐式提交和旧历史不可恢复的边界;张耀文:R5-05 独立数据库自动验证脚本:编写 Python 标准库验证脚本,自动创建隔离的 MySQL 测试容器和专用数据库,生成迁移夹具、启动 Java 后端、执行 SQL/HTTP 断言并清理测试资源,形成可供后续回归复用的验证入口;张耀文:R5-06 数据库约束异常写入验证:在独立 MySQL 8.0.46 环境执行 7 类非法写入:第二件活跃商品、非正价格、第二条交易中意向、重复队列序号、非法商品外键、重复未结束交易尝试、结束但缺少结果,核实均被相应数据库约束拒绝;张耀文:R5-07 V2/V3 迁移与旧数据保留验证:基于隔离旧库夹具验证 V2 的交易中前置拦截、升级后中文/联系方式/状态/原时间保留与序号回填、重复执行拒绝;验证 V3 对不完整旧结果的拦截及核实结果后的约束升级;张耀文:R5-08 排队、递补与口令生命周期联调验证:通过真实 HTTP 请求完成甲/乙/丙排队、交易失败重排、自动递补、原码查询修改、买家撤销、失败作废与商品成交检查;对照数据库核实首次时间和口令凭证保留、位次变化及终态口令失效;张耀文:R5-09 交易历史与重启持久化验证:核实成交后保留 3 条意向、3 次交易尝试(2 次失败、1 次成功)和 7 个状态事件;比较应用重启前后的完整后台记录,并验证保留数据卷重启 MySQL 后四类业务记录行数仍为 1/3/3/7;张耀文:R5-10 R5-DB-001 重排口令缺陷修复:依据课程第11组 9 月 28 日需求澄清发现 REQUEUE 清空口令的偏差,经确认修改范围后修正 PurchaseIntent.requeue,使重排保留 token_hash、token_lookup 与首次提交时间,终态继续使口令失效,并登记 R5-DB-001;张耀文:R5-11 重排与终态回归测试补充:调整实体和服务层重排断言,增加 CANCELLED、FAILED、SUCCESS、UNSOLD 四类终态清空两个口令字段的回归检查;在 Java 17 下执行全量 50 项 JUnit 测试及 Maven 打包,失败、错误、跳过均为 0;张耀文:R5-12 数据库验证报告与证据整理:编写数据库验证报告,汇总 24 项实际检查结果、执行环境、复现命令、字段快照、后台历史响应、JUnit计数与结果报告图,明确数据库/HTTP、应用重启和容器重启各自的验证范围;张耀文:R5-13 交易与历史记录接口说明:编写交易与记录接口说明,整理队列、开始交易、成功/失败确认及历史查询契约,说明 tradeAttemptId、防重复提交、REQUEUE/DISCARD、时间字段、队列位次和历史完整性标识,为前后端联调提供依据;张耀文:R5-14 README 软件介绍与使用入口完善:重写 README 的功能介绍和交易流程,补齐买家/卖家能力、Docker 快速开始、本地开发、环境要求、技术栈、项目结构、测试命令与文档入口,并修正数据库初始化章节链接;张耀文:R5-15 运行手册配置与升级说明完善:在 R4 已有运行手册基础上补充环境变量含义与必填条件、Compose和本地启动的读取方式、初始化账号及口令索引密钥管理、数据卷保留、V2/V3升级核对和数据库验证入口,完善可执行的运行指导

组员

⚠️ **GitHub.com Fallback** ⚠️