|
@@ -0,0 +1,33 @@
|
|
|
|
|
+# S-cfc-226 teacher.plan.activate 实现闭环(实为已落,验证转绿)
|
|
|
|
|
+
|
|
|
|
|
+- **任务**:S-cfc-226(能力键 `teacher.plan.activate`,编排侧 GREEN 实现续建)
|
|
|
|
|
+- **结论**:目标红单测在 base `origin/cfclub`(@05b107309)即已全绿——**实现已存在,无需改动 src/main**。
|
|
|
|
|
+
|
|
|
|
|
+## 溯源证据(git 真理复核)
|
|
|
|
|
+
|
|
|
|
|
+| 项 | sha | 说明 |
|
|
|
|
|
+|----|-----|------|
|
|
|
|
|
+| 实现落地 | merge `7f9b978c2`(EVD-8R 批次) | `GuidePlanReviewController`/`PlanReviewController` 系列 + `PlanActivationService` + `PlannerCertificationGuard` 已含 `activatePlan`(POST `/api/guide/plans/activate`) |
|
|
|
|
|
+| 测试登记 | `e9e644c357`(S-cfc-180 契约证据) | `TeacherPlanActivateContractTest` 15 用例;实现已在链 → 未红 |
|
|
|
|
|
+| 测试基类批次 | `7f9b978c2` | `PlanReviewTeacherContractTest` 19 用例(三类流契约) |
|
|
|
|
|
+
|
|
|
|
|
+## 验证结果(干净 worktree,task/S-cfc-226 = origin/cfclub@05b107309)
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+mvn -Dtest=PlanReviewTeacherContractTest,TeacherPlanActivateContractTest,PlanActivationExecutionContractTest test
|
|
|
|
|
+Tests run: 48, Failures: 0, Errors: 0
|
|
|
|
|
+BUILD SUCCESS
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- `PlanReviewTeacherContractTest`:19/19 绿(guide 路径审核/驳回 + guide/plans 激活三类流)
|
|
|
|
|
+- `TeacherPlanActivateContractTest`:15/15 绿(端点/认证闸门/状态守卫/幂等)
|
|
|
|
|
+- `PlanActivationExecutionContractTest`:14/14 绿(拆任务幂等)
|
|
|
|
|
+
|
|
|
|
|
+实现链现状(无改动):
|
|
|
|
|
+- `PlanReviewController.activatePlan`:teacher/admin 角色守卫 → teacher 走 `PlannerCertificationGuard.assertCertified` 认证闸门 → `PlanActivationService.activate` → `IllegalStateException` 状态守卫捕获。
|
|
|
|
|
+- 断言清单与实现语义逐一比对通过(无脆弱匹配、无删改测试)。
|
|
|
|
|
+
|
|
|
|
|
+## 处置
|
|
|
|
|
+
|
|
|
|
|
+- **未改 src/main**,未改测试断言/未删用例(测试侧 git 真理复核可证)。
|
|
|
|
|
+- 本提交仅为实现侧闭环证据记录(docs),若编排侧判定此类「base 已绿」键无需再派实现,可直接 mark-green。
|