| 指标 | 数值 |
|---|---|
| 涉及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 [手动创建成长档案]
| 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.java → AssessmentOrderService.java
数据实体: AssessmentOrder (assessment_orders表)
状态流转: pending → paid / cancelled / refunded
关键发现: 支付成功后通过 confirmAppointmentByOrder() 自动确认关联预约
| 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.java → AssessmentAppointmentService.java
数据实体: AssessmentAppointment (assessment_appointments表)
状态流转: 0(待确认) → 1(已确认) → 2(已完成) / 3(已取消) / 4(未到)
| 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.java → GrowthRecordService.java
数据实体: GrowthRecord (growth_records表)
字段关系: assessmentId 关联 DanAssessmentResult.id
| 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.java → AssessmentService.java
| 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.java → AssessmentService.recordResult()
数据实体: DanAssessmentResult (dan_assessment_results表),含孩子快照字段(身高/体重/学校/年级等)
| 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.java → AssessmentPermissionService.java
权限控制: 仅teacher角色可查看,含层级权限校验
| ID | 测试场景 | 方法 | 路径 | 优先级 | 实现状态 | 测试状态 |
|---|---|---|---|---|---|---|
| API-096 | 创建成长方案 | — | ❌ 无API | P1 | ❌ 未实现 | ❌ 无 |
说明:
GrowthPlan 已定义 (childId, teacherId, assessmentId, planTitle, planContent, targetDanLevel, durationMonths, status)GrowthPlanService.createPlan() 已实现GrowthPlanServiceInterface 含 generatePlan / getPlanByChildId / updatePlan / evaluateProgressAssessmentAppointment
├─ childId ───────────────┐
├─ guideId ───────────────┤
└─ packageId ─────────────┤
│
AssessmentOrder │
├─ childId ───────────────┤
├─ guideId ───────────────┤
├─ packageId ─────────────┤
├─ orderNo ───────────────┤
└─ status ────────────────┤
│
DanAssessmentResult │
├─ childId ◄──────────────┘
├─ teacherId (= guideId)
├─ appointmentId ─────────┐
├─ danLevel/overallScore │
├─ 孩子快照字段(28个) │
└─ growthSuggestions ─────┤
│
GrowthRecord │
├─ childId ◄──────────────┘
├─ assessmentId ◄─────────┘
├─ danLevel (from DanResult)
├─ overallScore
└─ growthSuggestions
│
GrowthPlan │
├─ childId ◄──────────────┘
├─ teacherId
└─ assessmentId ◄─────────┘
描述: 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 — 复盘描述: AssessmentOrderController.createOrder() 和 AssessmentAppointmentController.createAppointment() 中都调用了 orderService.createOrder(),两份逻辑相同但使用场景不同,容易导致行为不一致。
影响: 维护成本增加,一处修改另一处可能遗漏。
建议: 统一订单创建入口,预约创建时只做预约逻辑,订单统一由 AssessmentOrderController 管理。
描述: 支付成功后自动确认预约时,仅按 userId + guideId + packageId + status=0 匹配。如果同家长对同规划师有多个同套餐的待确认预约,会错误地匹配到最早创建的而非最新创建的。
代码: AssessmentAppointmentService.confirmAppointmentByOrder() 第80-95行
建议: 通过 orderNo 或 appointmentId 显式关联,而非模糊匹配。
描述: AssessmentOrder 实体定义 status 含 refunded,但Controller和Service均未实现退款流程。cancelOrder 方法存在但Controller未暴露。
描述: AssessmentAppointment 实体同时有 teacherId 和 guideId 字段,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 验证方式: 源代码静态分析