test-report-growth-assessment.md 11 KB

成长档案与测评模块测试报告

测试概览

指标 数值
涉及Controller 6
涉及Service 7
总API数 18
后端测试用例 0
Web测试用例 0
测试覆盖度 0%

验证范围

验证日期: 2026-05-15

验证完整业务流:

家长购买并申请 → 选择规划师 → 预约时间 → 完成建档 → 成长方案
规划师直接创建

流程验证

流程一: 家长申请 → 支付 → 建档 (标准流程)

Step 1: POST /api/assessment/appointment/create  [家长创建预约+订单]
Step 2: POST /api/assessment/order/pay           [家长支付,自动确认预约]
Step 3: POST /api/assessment/appointment/confirm/{id}  [规划师确认预约]
Step 4: POST /api/guide/record/create             [规划师录入测评结果]
Step 5: POST /api/growth/external/sync            [同步DAN结果→成长档案]

流程二: 规划师直接创建 (非预约模式)

Step 1: POST /api/guide/assessment/family/enable  [规划师为家庭启用测评]
Step 2: POST /api/guide/record/create             [规划师直接录入测评结果]
Step 3: POST /api/growth/record/create            [手动创建成长档案]

API接口清单

1. 测评订单 (API-070 ~ API-073)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-070 家长创建评估订单 POST /api/assessment/order/create P0 ✅ 已实现 ❌ 未测试
API-071 获取订单详情 POST /api/assessment/order/detail P0 ✅ 已实现 ❌ 未测试
API-072 我的订单列表 POST /api/assessment/order/my-orders P0 ✅ 已实现 ❌ 未测试
API-073 支付订单(微信/支付宝) POST /api/assessment/order/pay P0 ✅ 已实现 ❌ 未测试

代码路径: AssessmentOrderController.javaAssessmentOrderService.java 数据实体: AssessmentOrder (assessment_orders表) 状态流转: pendingpaid / cancelled / refunded 关键发现: 支付成功后通过 confirmAppointmentByOrder() 自动确认关联预约

2. 测评预约 (API-074 ~ API-078)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-074 创建评估预约(含订单) POST /api/assessment/appointment/create P0 ✅ 已实现 ❌ 未测试
API-075 规划师确认预约 POST /api/assessment/appointment/confirm/{id} P0 ✅ 已实现 ❌ 未测试
API-076 取消预约 POST /api/assessment/appointment/cancel/{id} P1 ✅ 已实现 ❌ 未测试
API-077 家长获取预约列表 POST /api/assessment/appointment/my-list P0 ✅ 已实现 ❌ 未测试
API-078 规划师获取预约列表 POST /api/assessment/appointment/guide-list P0 ✅ 已实现 ❌ 未测试

代码路径: AssessmentAppointmentController.javaAssessmentAppointmentService.java 数据实体: AssessmentAppointment (assessment_appointments表) 状态流转: 0(待确认) → 1(已确认) → 2(已完成) / 3(已取消) / 4(未到)

3. 成长档案 (API-079 ~ API-084)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-079 创建成长档案 POST /api/growth/record/create P0 ✅ 已实现 ❌ 未测试
API-080 获取家长的档案列表 POST /api/growth/record/list P0 ✅ 已实现 ❌ 未测试
API-081 获取指定孩子档案 POST /api/growth/record/child/{childId} P0 ✅ 已实现 ❌ 未测试
API-082 获取档案详情 POST /api/growth/record/{id} P1 ✅ 已实现 ❌ 未测试
API-083 删除成长档案 POST /api/growth/record/{id}/delete P1 ✅ 已实现 ❌ 未测试
API-084 外部系统同步测评结果 POST /api/growth/external/sync P0 ✅ 已实现 ❌ 未测试

代码路径: GrowthRecordController.javaGrowthRecordService.java 数据实体: GrowthRecord (growth_records表) 字段关系: assessmentId 关联 DanAssessmentResult.id

4. 规划师测评管理 (API-085 ~ API-089)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-085 获取可用测评资料 POST /api/guide/assessment/materials P0 ✅ 已实现 ❌ 未测试
API-086 为家庭启用测评 POST /api/guide/assessment/family/enable P0 ✅ 已实现 ❌ 未测试
API-087 关闭家庭测评 DELETE /api/guide/assessment/family/{familyId} P1 ✅ 已实现 ❌ 未测试
API-088 获取所有家庭测评配置 POST /api/guide/assessment/families P0 ✅ 已实现 ❌ 未测试
API-089 获取指定家庭测评配置 POST /api/guide/assessment/family/{familyId} P1 ✅ 已实现 ❌ 未测试

代码路径: GuideAssessmentController.javaAssessmentService.java

5. 规划师录入测评结果 (API-090 ~ API-092)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-090 录入测评结果(含孩子快照) POST /api/guide/record/create P0 ✅ 已实现 ❌ 未测试
API-091 查询我的测评记录列表 POST /api/guide/record/my-records P0 ✅ 已实现 ❌ 未测试
API-092 获取测评记录详情 POST /api/guide/record/detail/{id} P1 ✅ 已实现 ❌ 未测试

代码路径: GuideRecordController.javaAssessmentService.recordResult() 数据实体: DanAssessmentResult (dan_assessment_results表),含孩子快照字段(身高/体重/学校/年级等)

6. 测评报告查询 (API-093 ~ API-095)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-093 获取测评报告详情 POST /api/assessment/result/{id} P0 ✅ 已实现 ❌ 未测试
API-094 获取我的测评报告列表 POST /api/assessment/my-results P0 ✅ 已实现 ❌ 未测试
API-095 获取下级规划师的报告 POST /api/assessment/child-results P1 ✅ 已实现 ❌ 未测试

代码路径: AssessmentController.javaAssessmentPermissionService.java 权限控制: 仅teacher角色可查看,含层级权限校验

7. 成长方案 (API-096)

ID 测试场景 方法 路径 优先级 实现状态 测试状态
API-096 创建成长方案 ❌ 无API P1 ❌ 未实现 ❌ 无

说明:

  • 实体 GrowthPlan 已定义 (childId, teacherId, assessmentId, planTitle, planContent, durationMonths, status)
  • 服务 GrowthPlanService.createPlan() 已实现
  • 接口定义 GrowthPlanServiceInterface 含 generatePlan / getPlanByChildId / updatePlan / evaluateProgress
  • 但没有Controller暴露任何HTTP端点,客户端无法调用

数据流核心关系

AssessmentAppointment
  ├─ childId ───────────────┐
  ├─ guideId ───────────────┤
  └─ packageId ─────────────┤
                            │
AssessmentOrder             │
  ├─ childId ───────────────┤
  ├─ guideId ───────────────┤
  ├─ packageId ─────────────┤
  ├─ orderNo ───────────────┤
  └─ status ────────────────┤
                            │
DanAssessmentResult         │
  ├─ childId ◄──────────────┘
  ├─ teacherId (= guideId)
  ├─ appointmentId ─────────┐
  ├─ overallScore           │
  ├─ 孩子快照字段(28个)     │
  └─ growthSuggestions ─────┤
                            │
GrowthRecord                │
  ├─ childId ◄──────────────┘
  ├─ assessmentId ◄─────────┘
  ├─ overallScore
  └─ growthSuggestions
                            │
GrowthPlan                  │
  ├─ childId ◄──────────────┘
  ├─ teacherId
  └─ assessmentId ◄─────────┘

架构问题

问题1: GrowthPlan 无API端点 (严重)

描述: GrowthPlan 实体和 GrowthPlanService.createPlan() 已完成,但没有任何Controller。客户端无法通过HTTP创建或查询成长方案。

影响: 成长方案流程断裂,家长和规划师端均无法使用。 建议: 新建 GrowthPlanController,暴露以下端点:

  • POST /api/growth/plan/create — 基于测评结果创建方案
  • POST /api/growth/plan/child/{childId} — 获取孩子当前方案
  • POST /api/growth/plan/{id}/update — 更新方案
  • POST /api/growth/plan/{id}/review — 复盘

问题2: 订单创建逻辑重复 (中)

描述: AssessmentOrderController.createOrder()AssessmentAppointmentController.createAppointment() 中都调用了 orderService.createOrder(),两份逻辑相同但使用场景不同,容易导致行为不一致。

影响: 维护成本增加,一处修改另一处可能遗漏。 建议: 统一订单创建入口,预约创建时只做预约逻辑,订单统一由 AssessmentOrderController 管理。

问题3: confirmAppointmentByOrder 匹配逻辑不可靠 (中)

描述: 支付成功后自动确认预约时,仅按 userId + guideId + packageId + status=0 匹配。如果同家长对同规划师有多个同套餐的待确认预约,会错误地匹配到最早创建的而非最新创建的。

代码: AssessmentAppointmentService.confirmAppointmentByOrder() 第80-95行 建议: 通过 orderNoappointmentId 显式关联,而非模糊匹配。

问题4: 测评订单不支持退款/取消 (低)

描述: AssessmentOrder 实体定义 statusrefunded,但Controller和Service均未实现退款流程。cancelOrder 方法存在但Controller未暴露。

问题5: teacherId 与 guideId 冗余 (低)

描述: AssessmentAppointment 实体同时有 teacherIdguideId 字段,createAppointment() 中两者设为相同值。建议统一为一个字段。

测试覆盖总结

模块 API数 测试覆盖 覆盖率
测评订单 4 0 0%
测评预约 5 0 0%
成长档案 6 0 0%
规划师测评管理 5 0 0%
规划师录入结果 3 0 0%
测评报告查询 3 0 0%
成长方案 (1) 0 0% (无API)
合计 26 0 0%

测试账号

角色 说明
家长 创建预约、支付订单、查看成长档案
成长规划师 确认预约、录入测评结果、管理家庭测评配置、查看报告
管理员 管理测评资料积分配置

说明

本报告覆盖 docs/成长档案测评模块需求规格文档 中定义的完整业务流程。所有API均已实现后端逻辑,但后端单元测试和Web API测试均为零覆盖。GrowthPlan 成长方案模块虽然有实体和服务层代码,但目前暂无REST API对外开放。

报告生成时间: 2026-05-15 验证方式: 源代码静态分析