日期: 2026-06-24
分支: cfclub
最新提交: 0e6ea3b → 本次 9e321c3(角色测试增强+报告已推送)→ 本次变更待提交
| 项目 | 状态 |
|---|---|
| 代码同步 (git pull --rebase) | ✅ 完成 |
| 设计-代码匹配度分析 | ✅ 完成 |
| 缺失测试用例补充 | ✅ 完成 |
| 编译验证 (BUILD SUCCESS) | ✅ 完成 |
| PdfParseServiceTest (10/10 通过) | ✅ 完成 |
| 测试报告推送远程 | 🔄 进行中 |
git pull --rebase 拉取的远程新提交:
0e6ea3b feat: 营养推荐相关实体和mappers (#178)
dd002f3 fix: Login.vue 品牌升级 (#177)
PdfParseService.java 新建(食物解析服务)
FamilyMemberVO.java 重构(字段变更:memberType→capabilityRole,移除danLevel)
schema.sql 新增表
后端新增 PdfParseService.java + FamilyMemberVO.java 重构 → 触发测试覆盖需求。
文件: cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java:672
问题: FamilyMemberVO 重构后无 danLevel 字段,调用 vo.setDanLevel() 导致编译失败。
修复: 删除 vo.setDanLevel(c.getDanLevel()) 行。
文件: cfc-backend/src/test/java/com/etotem/cfc/service/PdfParseServiceTest.java
背景: PdfParseService.parseText() 解析 PDF 文本为结构化报告,文本格式为"关键词\n值"逐行格式。
| 测试方法 | 测试内容 | 结果 |
|---|---|---|
parseText_emptyText_returnsEmptyResult |
空文本返回空对象 | ✅ |
parseText_withAbstractScore_parsesCorrectly |
摘要分数:健康总分/菌群健康 | ✅ |
parseText_withReportInfo_parsesCorrectly |
报告信息:编号/日期/姓名/肠道年龄/肠型 | ✅ |
parseText_withDiseaseRisk_parsesCorrectly |
疾病风险:慢病控制/营养均衡 | ✅ |
parseText_withGutMicrobiome_parsesCorrectly |
肠道菌群:平衡/多样性/有益菌/有害菌/核心菌属 | ✅ |
parseText_withMetricsScore_parsesCorrectly |
指标评分:各维度 Integer | ✅ |
parseText_withIngredientSuitability_parsesCorrectly |
食材适宜度 | ✅ |
parseText_withAllSections_combinesResults |
多 section 合并 | ✅ |
parseText_withSpecialCharacters_handlesGracefully |
特殊字符(数字/长名称/边界值) | ✅ |
10/10 测试通过,BUILD SUCCESS
注意:PdfParseService 无 Spring 依赖,直接 new PdfParseService() 实例化,不触发 MySQL 连接,不受连接数限制。
| 测试方法 | 测试角色 | 预期结果 |
|---|---|---|
createWish_ByTeacher |
teacher | 成功 |
createWish_ByAdmin |
admin | 成功 |
| 测试方法 | 测试角色 | 预期结果 |
|---|---|---|
guideBindFamily_ChildDenied |
child | code=500 |
guideBindFamily_AdminDenied |
admin | code=500 |
7 个 teacher-only 方法 × 3 种非 teacher 角色 (parent/child/admin) = 21 条角色拒绝断言。
ROLE_PARENT / ROLE_CHILD / ROLE_TEACHER / ROLE_ADMIN + assertSuccess() / assertRoleDenied()
mvn test-compile
[INFO] BUILD SUCCESS
[INFO] Compiling 37 source files (新增 PdfParseServiceTest)
MySQL 连接数限制:HikariCP 13 个连接限额,13 个测试类同时运行会阻塞。
现状:
Too many connections 阻塞(基础设施限制)| 优先级 | 项目 | 说明 |
|---|---|---|
| 🟡 中 | vendorType=planner 迁移 | 代码仍用 role=teacher |
| 🟢 低 | GuideRecordController 测试 | 有 @RequestAttribute("role") 但无测试类 |
| 文件 | 操作 | 说明 |
|---|---|---|
cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java |
修改 | 删除 setDanLevel 编译错误 |
cfc-backend/src/test/java/com/etotem/cfc/service/PdfParseServiceTest.java |
新增 | 10 个测试方法 |
cfc-backend/src/test/java/com/etotem/cfc/controller/WishControllerTest.java |
修改 | 新增 teacher/admin 测试(前期) |
cfc-backend/src/test/java/com/etotem/cfc/controller/FamilyControllerTest.java |
修改 | 新增 child/admin 拒绝测试(前期) |
cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java |
新增 | 角色常量(前期) |
cfc-backend/src/test/java/com/etotem/cfc/controller/GuideFamilyTaskControllerTest.java |
已存在 | 角色拒绝测试(前期) |