|
|
@@ -42,7 +42,7 @@
|
|
|
- 修改:`cfc-backend/src/main/java/com/etotem/cfc/service/HealthPlanService.java`
|
|
|
- 修改:`cfc-backend/src/main/java/com/etotem/cfc/service/impl/HealthPlanServiceImpl.java`
|
|
|
|
|
|
-- [ ] **步骤 1:编写失败的测试**
|
|
|
+- [x] **步骤 1:编写失败的测试**
|
|
|
|
|
|
创建 `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanDeleteCascadeTest.java`(测试风格对齐同目录 `HealthPlanReviewGuardTest.java`:Mockito + 反射注入字段,无 Spring 上下文):
|
|
|
|
|
|
@@ -177,14 +177,14 @@ class HealthPlanDeleteCascadeTest {
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 2:运行测试确认失败**
|
|
|
+- [x] **步骤 2:运行测试确认失败**
|
|
|
|
|
|
运行:`cd cfc-backend && /tmp/apache-maven-3.8.6/bin/mvn test -DskipTests=false -Dtest=HealthPlanDeleteCascadeTest -q`
|
|
|
预期:**编译失败**(`deletePlanCascade` 方法不存在),错误 `cannot find symbol: method deletePlanCascade`。失败原因正确(接口未声明)。
|
|
|
|
|
|
> ⚠️ 环境注意:项目 pom 默认 `skipTests=true`,`mvn test` 只编译不执行;必须显式 `-DskipTests=false` 才真正运行测试。本机 mvn 不在 PATH,用 `/tmp/apache-maven-3.8.6/bin/mvn`。
|
|
|
|
|
|
-- [ ] **步骤 3:在 Service 接口声明方法**
|
|
|
+- [x] **步骤 3:在 Service 接口声明方法**
|
|
|
|
|
|
在 `cfc-backend/src/main/java/com/etotem/cfc/service/HealthPlanService.java` 末尾(`generateFromSelfCheck` 声明之后、类闭合括号之前)追加:
|
|
|
|
|
|
@@ -204,7 +204,7 @@ class HealthPlanDeleteCascadeTest {
|
|
|
|
|
|
确认接口头部已有 `java.util.Map` 导入(第 8 行 `import java.util.Map;` 已存在,无需新增)。
|
|
|
|
|
|
-- [ ] **步骤 4:编写最少实现代码**
|
|
|
+- [x] **步骤 4:编写最少实现代码**
|
|
|
|
|
|
在 `cfc-backend/src/main/java/com/etotem/cfc/service/impl/HealthPlanServiceImpl.java` 的 `getPlanTasks` 方法之后(第 201 行 `}` 之后)插入实现:
|
|
|
|
|
|
@@ -263,12 +263,12 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
依赖核对:`QueryWrapper`(第 3 行已导入)、`Task`/`HealthPlan`/`List`/`HashMap`/`HashMap`(第 2、7-31 行已导入)、`log`(`@Slf4j`)均已就绪,无需其他新增。
|
|
|
|
|
|
-- [ ] **步骤 5:运行测试确认通过**
|
|
|
+- [x] **步骤 5:运行测试确认通过**
|
|
|
|
|
|
运行:`cd cfc-backend && /tmp/apache-maven-3.8.6/bin/mvn test -DskipTests=false -Dtest=HealthPlanDeleteCascadeTest -q`
|
|
|
预期:**BUILD SUCCESS**,5 个测试全部 PASS(级联删除含 wrapper 语义顺序验证、无任务方案、IDOR 拒绝、方案不存在、管理端跳过校验)。
|
|
|
|
|
|
-- [ ] **步骤 6:Commit**
|
|
|
+- [x] **步骤 6:Commit**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-backend
|
|
|
@@ -286,7 +286,7 @@ git commit -m "feat(health-plan): 方案级联删除 Service 层(含每日实
|
|
|
- 修改:`cfc-backend/src/main/java/com/etotem/cfc/controller/HealthPlanController.java`
|
|
|
- 修改:`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminHealthPlanController.java`
|
|
|
|
|
|
-- [ ] **步骤 1:用户端删除端点**
|
|
|
+- [x] **步骤 1:用户端删除端点**
|
|
|
|
|
|
在 `cfc-backend/src/main/java/com/etotem/cfc/controller/HealthPlanController.java` 的 `planTasks` 方法之后(第 158 行 `}` 之后、"获取可用规划师列表"注释之前)插入:
|
|
|
|
|
|
@@ -309,7 +309,7 @@ git commit -m "feat(health-plan): 方案级联删除 Service 层(含每日实
|
|
|
|
|
|
校验:`Map`(第 15 行 `import java.util.Map;`)、`ParamUtils`(第 16 行)、`@PostMapping`(第 11 行通配导入)均已导入;路由 `/delete` 与现有 12 条路由无冲突(已查重)。
|
|
|
|
|
|
-- [ ] **步骤 2:管理端删除端点**
|
|
|
+- [x] **步骤 2:管理端删除端点**
|
|
|
|
|
|
在 `cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminHealthPlanController.java` 的 `detail` 方法之后(第 61 行 `}` 之后)插入:
|
|
|
|
|
|
@@ -333,12 +333,12 @@ git commit -m "feat(health-plan): 方案级联删除 Service 层(含每日实
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 3:编译验证**
|
|
|
+- [x] **步骤 3:编译验证**
|
|
|
|
|
|
运行:`cd cfc-backend && /tmp/apache-maven-3.8.6/bin/mvn clean compile -q`
|
|
|
预期:**BUILD SUCCESS**,无编译错误。
|
|
|
|
|
|
-- [ ] **步骤 4:Commit**
|
|
|
+- [x] **步骤 4:Commit**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-backend
|
|
|
@@ -354,7 +354,7 @@ git commit -m "feat(health-plan): 新增方案删除接口(用户端 + 管理
|
|
|
**文件:**
|
|
|
- 修改:`docs/superpowers/api/API_REFERENCE.md`
|
|
|
|
|
|
-- [ ] **步骤 1:追加 4.49 节**
|
|
|
+- [x] **步骤 1:追加 4.49 节**
|
|
|
|
|
|
在 `docs/superpowers/api/API_REFERENCE.md` 第 1670-1672 行(`*文档更新:2026-10-09(指标统一层新增...)*` 与 `*文档最后更新:2026-10-04*` 之间)插入:
|
|
|
|
|
|
@@ -379,7 +379,7 @@ git commit -m "feat(health-plan): 新增方案删除接口(用户端 + 管理
|
|
|
---
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 2:Commit**
|
|
|
+- [x] **步骤 2:Commit**
|
|
|
|
|
|
```bash
|
|
|
git add docs/superpowers/api/API_REFERENCE.md
|
|
|
@@ -394,7 +394,7 @@ git commit -m "docs(api): 健康方案删除接口记录(4.49)"
|
|
|
- 修改:`cfc-frontend/utils/api.js`
|
|
|
- 修改:`cfc-frontend/pages/health/plan-list.vue`
|
|
|
|
|
|
-- [ ] **步骤 1:API 封装**
|
|
|
+- [x] **步骤 1:API 封装**
|
|
|
|
|
|
在 `cfc-frontend/utils/api.js` 第 2582 行(`getHealthPlanTasks` 之后)追加:
|
|
|
|
|
|
@@ -402,7 +402,7 @@ git commit -m "docs(api): 健康方案删除接口记录(4.49)"
|
|
|
export const deleteHealthPlan = (data) => request('/api/health/plan/delete', 'POST', data)
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 2:plan-list.vue 模板加删除按钮**
|
|
|
+- [x] **步骤 2:plan-list.vue 模板加删除按钮**
|
|
|
|
|
|
在 `cfc-frontend/pages/health/plan-list.vue` 第 35-37 行,`plan-title` 文本与 `plan-status` 视图之间插入删除按钮(`@click.stop` 阻止冒泡进入详情,符合小程序事件规范):
|
|
|
|
|
|
@@ -412,7 +412,7 @@ export const deleteHealthPlan = (data) => request('/api/health/plan/delete', 'PO
|
|
|
<view class="plan-status" :class="'status-' + plan.status">
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 3:样式**
|
|
|
+- [x] **步骤 3:样式**
|
|
|
|
|
|
在 `cfc-frontend/pages/health/plan-list.vue` 的 `.plan-title` 样式块之后(第 210 行 `}` 之后)插入:
|
|
|
|
|
|
@@ -427,7 +427,7 @@ export const deleteHealthPlan = (data) => request('/api/health/plan/delete', 'PO
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 4:methods 实现删除交互**
|
|
|
+- [x] **步骤 4:methods 实现删除交互**
|
|
|
|
|
|
在 `cfc-frontend/pages/health/plan-list.vue` 的 `goDetail` 方法之后(第 90 行 `},` 之后)插入:
|
|
|
|
|
|
@@ -458,7 +458,7 @@ export const deleteHealthPlan = (data) => request('/api/health/plan/delete', 'PO
|
|
|
},
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 5:引入 API 函数**
|
|
|
+- [x] **步骤 5:引入 API 函数**
|
|
|
|
|
|
将 `cfc-frontend/pages/health/plan-list.vue` 第 50 行的 import 改为:
|
|
|
|
|
|
@@ -466,7 +466,7 @@ export const deleteHealthPlan = (data) => request('/api/health/plan/delete', 'PO
|
|
|
import { getHealthPlanList, deleteHealthPlan } from '@/utils/api.js'
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 6:语法校验(不打包)**
|
|
|
+- [x] **步骤 6:语法校验(不打包)**
|
|
|
|
|
|
`node --check` 默认按 CommonJS 解析 `.js`,而本文件是 ESM(`import`/`export`)会误报语法错——统一先落成 `.mjs` 再校验:
|
|
|
|
|
|
@@ -486,7 +486,7 @@ node scripts/audit-duplicate-api-calls.js
|
|
|
|
|
|
预期:退出码 0,无 ERROR 级违规。
|
|
|
|
|
|
-- [ ] **步骤 7:Commit**
|
|
|
+- [x] **步骤 7:Commit**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-frontend
|
|
|
@@ -502,7 +502,7 @@ git commit -m "feat(health): 方案列表支持删除(确认弹窗 + 级联删
|
|
|
- 修改:`cfc-web/src/api/healthPlan.js`
|
|
|
- 修改:`cfc-web/src/views/admin/HealthPlanManage.vue`
|
|
|
|
|
|
-- [ ] **步骤 1:API 封装**
|
|
|
+- [x] **步骤 1:API 封装**
|
|
|
|
|
|
在 `cfc-web/src/api/healthPlan.js` 末尾追加:
|
|
|
|
|
|
@@ -518,7 +518,7 @@ export function adminDeleteHealthPlan(data) {
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 2:操作列加删除按钮**
|
|
|
+- [x] **步骤 2:操作列加删除按钮**
|
|
|
|
|
|
在 `cfc-web/src/views/admin/HealthPlanManage.vue` 第 59-63 行,操作列(`width="100"` 改 `"140"` 容纳两按钮)内,`详情` 按钮后插入:
|
|
|
|
|
|
@@ -531,7 +531,7 @@ export function adminDeleteHealthPlan(data) {
|
|
|
</el-table-column>
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 3:import 与方法**
|
|
|
+- [x] **步骤 3:import 与方法**
|
|
|
|
|
|
将 `cfc-web/src/views/admin/HealthPlanManage.vue` 第 131 行改为:
|
|
|
|
|
|
@@ -569,7 +569,7 @@ import { adminListHealthPlans, adminGetHealthPlanDetail, adminDeleteHealthPlan }
|
|
|
},
|
|
|
```
|
|
|
|
|
|
-- [ ] **步骤 4:语法校验(不打包,ESM 需 .mjs)**
|
|
|
+- [x] **步骤 4:语法校验(不打包,ESM 需 .mjs)**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-web
|
|
|
@@ -581,7 +581,7 @@ cp src/api/healthPlan.js /tmp/healthPlan.check.mjs && node --check /tmp/healthPl
|
|
|
预期:两条 `node --check` 均无输出即通过,最后输出 `SYNTAX OK`。
|
|
|
(说明:两文件均为 ESM,落为 `.mjs` 后 `--check` 只做语法解析、不解析模块路径,能覆盖语法错误;实际编译由 HBuilderX 打包期兜底。)
|
|
|
|
|
|
-- [ ] **步骤 5:Commit**
|
|
|
+- [x] **步骤 5:Commit**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-web
|
|
|
@@ -596,7 +596,7 @@ git commit -m "feat(admin): 健康方案管理支持删除(确认弹窗 + 级
|
|
|
**文件:**
|
|
|
- 修改:`docs/superpowers/PROJECT-OVERVIEW.md`
|
|
|
|
|
|
-- [ ] **步骤 1:状态行追加条目**
|
|
|
+- [x] **步骤 1:状态行追加条目**
|
|
|
|
|
|
在 `docs/superpowers/PROJECT-OVERVIEW.md` 第 7 行(饮食/睡眠/运动打卡条目)之后插入新行:
|
|
|
|
|
|
@@ -606,7 +606,7 @@ git commit -m "feat(admin): 健康方案管理支持删除(确认弹窗 + 级
|
|
|
|
|
|
同步将第 3 行 `**文档版本:** v2.17` 改为 `**文档版本:** v2.18`,第 4 行 `**日期:** 2026-10-09` 改为 `**日期:** 2026-10-17`。
|
|
|
|
|
|
-- [ ] **步骤 2:全量回归验证(后端)**
|
|
|
+- [x] **步骤 2:全量回归验证(后端)**
|
|
|
|
|
|
```bash
|
|
|
cd cfc-backend && /tmp/apache-maven-3.8.6/bin/mvn clean compile -q && /tmp/apache-maven-3.8.6/bin/mvn test -DskipTests=false -Dtest=HealthPlanDeleteCascadeTest -q
|
|
|
@@ -614,7 +614,7 @@ cd cfc-backend && /tmp/apache-maven-3.8.6/bin/mvn clean compile -q && /tmp/apach
|
|
|
|
|
|
预期:`BUILD SUCCESS`,5 个测试 PASS。
|
|
|
|
|
|
-- [ ] **步骤 3:前端审计**
|
|
|
+- [x] **步骤 3:前端审计**
|
|
|
|
|
|
```bash
|
|
|
node scripts/audit-duplicate-api-calls.js
|
|
|
@@ -622,7 +622,7 @@ node scripts/audit-duplicate-api-calls.js
|
|
|
|
|
|
预期:退出码 0。
|
|
|
|
|
|
-- [ ] **步骤 4:Commit**
|
|
|
+- [x] **步骤 4:Commit**
|
|
|
|
|
|
```bash
|
|
|
git add docs/superpowers/PROJECT-OVERVIEW.md
|