Kaynağa Gözat

docs(tdd): S-cfc-226 teacher.plan.activate 实现闭环证据(base 已绿:实现由 EVD-8R 落地,48 JUnit 全绿,0 src/main 改动)

Sisyphus 36 dakika önce
ebeveyn
işleme
ace46ca305

+ 33 - 0
docs/tdd/impl/impl-2026-11-13-S-cfc-226-teacher-plan-activate.md

@@ -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。