需求测试代码匹配度分析报告.md 6.2 KB

需求、测试与代码匹配度分析报告

项目: 艾灸椅智能穴位定位系统 报告版本: v1.0.0 分析时间: 2026-06-02 代码版本: master分支 (commit: 24ceb2b) 代码分支: jiapu_aijiuyi Git仓库: http://git.iwintrue.com/liaoxg/ajy.git


一、需求文档清单

文档 路径 说明
智能穴位定位系统设计文档.md 需求工作区/需求设计文档/ 核心功能设计文档(62KB, 1400+行)
研年艾灸椅APP需求文档_v2.md 需求工作区/需求设计文档/ APP端需求(93KB)
穴位定位算法设计.md 需求工作区/需求材料/design-docs/ 算法详细设计(1101行)
智能穴位定位系统测试用例.md 需求工作区/需求设计文档/ 172个测试用例定义
艾灸椅功能定义-最新.xlsx 需求工作区/需求材料/ 功能定义表
技术文档.md code/ 技术文档(33KB)

二、需求覆盖状态

模块 需求用例 实现状态 测试覆盖
用户管理 44用例 ✅ 完成 116%
穴位管理 22用例 ✅ 完成 105%
方案管理 34用例 ✅ 完成 103%
设备管理 19用例 ✅ 完成 100%
系统管理 11用例 ✅ 完成 118%
核心算法 20用例 ✅ 完成 95%
合计 172用例 全部实现 92%

三、已识别缺口

3.1 功能缺口

功能 需求来源 代码状态 影响
微信登录 APP需求文档v2 仅预留字段(行320-343) 阻塞
Apple登录 APP需求文档v2 仅预留字段(行320-343) 阻塞
短信验证码模板 内部定义 TODO(行70) 阻塞
专家端小程序对接 设计文档(行164) 接口预留 待确认

3.2 Schema冲突(严重)

UserProfile Entity vs app_user Table

冲突类型 Entity字段 DB列名 说明
TYPE MISMATCH gender: Integer gender: VARCHAR Entity用1/2,DB用'male'/'female'
TYPE MISMATCH bodyHeight: BigDecimal body_length: DECIMAL 命名不匹配
IN ENTITY ONLY userId, userType, provinceCode, cityCode, districtCode, address, spineLength, height, weight, acupointTableId (13个) - DB无对应列

Acupoint Entity vs acupoint Table

冲突类型 Entity字段 DB列名 说明
IN ENTITY ONLY userId, acupointId, excelSerialNo, singleDouble, bodyPart, bodyRegion, locationDescription, relativePosition, indications, productSymptoms, acupointMethod, productAcupoint, effects, locationType, longitudeOffset, lateralOffset, normalizedY, yReferenceTerm, parseStatus, parseConfidence, parseMessage, fingerWidthType, gender (25个) - DB无对应列
IN DB ONLY - absolute_x, absolute_y, absolute_z, source 无Entity对应

Plan Entity vs scheme Table

冲突类型 Entity字段 DB列名 说明
TYPE MISMATCH status: Integer status: ENUM Entity用(0草稿/1发布/2下架),DB用(draft/published/archived)
命名不一致 modeType vs mode, effectType vs efficacy_type, applicableGender vs target_gender - 9处命名差异

四、API一致性

结论: ✅ 前后端API完全匹配

类别 数量
前端API调用 ~96个
后端Endpoint ~96个
匹配率 100%

后端独有接口 (均为正常设计):

  • AppAuthController: 3个 (App端接口)
  • AppProfileController: 2个 (App端接口)
  • ArticleViewController: 1个 (公开页面)

五、测试覆盖分析

5.1 测试覆盖统计

测试类型 文件数 覆盖率
后端单元测试 2个 (仅工具类) 0% of Services
E2E测试 7个specs, 159用例 ~43% of Services (6/14)

5.2 无测试覆盖的服务(8个)

服务 风险等级 文件路径
SimulationServiceImpl 🚨 CRITICAL code/backend/src/main/java/com/aijiuyi/admin/service/impl/
MoxibustionTechniqueServiceImpl 🚨 CRITICAL code/backend/src/main/java/com/aijiuyi/admin/service/impl/
UserAcupointServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/
UserCategoryServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/
ContentArticleServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/
SysUserServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/
UserPlanServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/
UserDeviceServiceImpl ⚠️ HIGH code/backend/src/main/java/com/aijiuyi/admin/service/impl/

六、问题优先级

优先级 问题 建议操作
P0 UserProfile.gender类型不匹配(Integer vs VARCHAR) 统一为String或Enum
P0 Plan.status枚举值不同(Integer vs ENUM) 统一状态定义
P1 8个Service无单元测试 补充测试,尤其SimulationServiceImpl
P2 第三方登录未实现 与需求方确认是否必需
P3 Entity字段多于DB列 补充DDL或删除冗余字段

七、待确认事项

  1. spine_length/height/weight - 这三个字段在Entity中存在但DB无列,是否需要补充DDL?
  2. 微信/Apple登录 - 需求文档定义了,是否需要当前版本实现?
  3. SimulationServiceImpl - 核心模拟推送服务,是否需要补充单元测试?
  4. 实际使用的数据库初始化脚本是 init.sql 还是 data.sql?

八、建议

立即行动

  1. 修复 UserProfile.gender 和 Plan.status 类型冲突
  2. 补充 UserProfile 缺失的数据库列(spine_length等)

短期行动

  1. 为 SimulationServiceImpl 和 MoxibustionTechniqueServiceImpl 补充单元测试
  2. 确认第三方登录需求范围

长期行动

  1. 为所有 Service 层添加单元测试
  2. 建立 Schema 同步机制,确保 Entity 与 DB 一致
  3. 清理冗余的预留字段

版本历史

版本 日期 说明
v1.0.0 2026-06-02 初始版本:需求-测试-代码匹配度全面分析