Skip to content

15 · 泽湖 M0 D2+ 主线任务书(Codex 4 周开发剧本 · W2~W5)

作者:👤 Claude(执行副董事 · 车道 A) 日期:2026-08-16 读者:🤖 Codex-执行层(车道 B) + Claude 周验收 + 董事长周末收 范围:8 周 MVP 的第 2~5 周(08-22 → 09-18),主线是「微信 + Web MVP 上线,9 板块完整,1 班灰度可跑通」 关联:04-项目计划书与预算.md v3 / 11-M0W1验收清单.md / 12-UI一致性清单.md / 13-本地运行与部署清单.md / 14-API覆盖清单.md 配套:16-教联体协议模板-v1.md(校长/信息办同步用,本任务书不重复)


0. 三句话拍板(董事长 08-16 已拍)

  1. Prisma 6.19.3(CI 已固定,不升 7;2026-08-16 拍板)
  2. 迁移策略 B 快照(M0/M1 沿用当前 etl-migrate.js + etl-verify.js,M2 再做 A 全量)
  3. 演示分下限保留 55(让 D 级 UI 跑真,不删数据);PartnerType.members 二期补(M0 阶段 User 表用 organization/orgType 字符串字段承载)

1. 全局约束(每条都不可破)

1.1 技术栈

维度 选型 版本/约束
运行时 Node.js 24+(CI 已用,docs/13 已规定)
ORM Prisma 6.19.3(固定,不升 7;2026-08-16 拍板)
前端 微信小程序 + Web 后台 微信端用 WXML/WXSS,Web 端用静态 HTML/CSS/JS
后端 Node 24+ 零依赖 server/src/ 全部走内置模块
钉钉端 薄 UI 占位 本任务书不交付钉钉业务逻辑

1.2 提交与协作

  • 提交前缀:[Codex](本任务书全部);Claude 自改合规代码用 [Claude]
  • commit 前必跑:详见第 7 节「任务前必跑命令」
  • commit 后必推:本地 master 已被重命名为 main 追踪 origin/main(2026-08-16 拍板)
  • PR 流程:本期 4 周内仍走 main 直推(不是 fork PR),CI 绿 = 合并;如需 PR 流程董事长再拍

1.3 禁区(CLAUDE.md 全局规则)

禁区 说明
xb_* 云函数 一律不碰
login 鉴权区 Claude 自改不派(14 清单标 5 个权限偏差,本任务书 §3.1 修,但权限矩阵的设计原则由 Claude 把关)
ADMIN_OPENIDS 部署前董事长先登录拿 openid 填入,本任务书不部署
force push / hard reset 一律禁止
改 git 全局身份 局部 user.name "Codex" / user.email "codex@leifeng.local" 已设(README 已记),不要改 --global

1.4 全局 DoD(每周末必须绿的 5 条)

□ prisma@6 validate   ✅
□ node --check 全 .js  ✅
□ check.js all passed  ✅
□ smoke.js 全 passed   ✅(每新增端点必加 smoke 用例)
□ etl-verify ok        ✅(生成物 migrated-seed.json 已 .gitignore)

2. W2(08-22 ~ 08-28)· 微信小程序 MVP

W2 总目标

微信小程序跑通:学生/家长/教师 3 角色登录 + 5 维评价录入/查看 + 班级驾驶舱实时刷新;班主任即时评价 < 30 秒响应

Task W2.1 · 完善 Login 权限矩阵(关键 · 全 TDD 详细)

为什么关键:14-API覆盖清单 §5 标了 5 个权限偏差,是当前最严重的合规与数据泄漏风险。本任务必须在 W2 D1~D2 完成,否则后续所有端点都不安全。

Files: - Create: server/src/middleware/permission.js - Modify: server/src/routes/auth.js:1-80 - Modify: server/src/routes/students.js:1-60 - Modify: server/src/routes/evaluation.js:1-100 - Modify: server/src/routes/reports.js:1-80 - Create: server/scripts/test-permission.js - Modify: server/scripts/smoke.js:1-60

Interfaces(2026-08-16 Codex 走查后修订,身份一律从 req.user 取,不信任前端传 id):

// server/src/middleware/permission.js
requireRole(...roles)                              // req.user.role ∈ roles
requireSameClass({ param: 'classId' })             // teacher: req.user.classId === req.params.classId
requireSameStudent({ param: 'studentId' })         // student 自比; parent: param ∈ req.user.children
requirePartnerScope({ param: 'orgType' })          // partner 只读/写本 orgType

// 统一错误码(复用 server/src/lib/http-error.js,如无则新建):
// 401 UNAUTHORIZED         无/坏 token
// 403 FORBIDDEN            跨班 / 跨学生 / 越权
// 429 RATE_LIMITED         限流

Steps:

  • [ ] Step 1 写失败测试 test-permission.js:覆盖 5 个偏差(teacher 跨班读 / partner 读全部 / evaluation 未过滤 / reports 无角色校验 / auth 错误码不全)
// test-permission.js 片段(完整版要 17 个用例,本任务书给关键 5 个)
const tests = [
  ['teacher 不能读非本班学生',   async () => /* ... */],
  ['partner 不能访问 /students',  async () => /* ... */],
  ['teacher 写 evaluation 必须是本班', async () => /* ... */],
  ['parent 读 reports 仅限自己孩子', async () => /* ... */],
  ['auth 错误码 401/403/429 区分',  async () => /* ... */],
];
  • [ ] Step 2 运行 node scripts/test-permission.js → 期望 FAIL(中间件未创建)
  • [ ] Step 3 创建 permission.js 中间件(4 个 export 函数 + JSON 错误格式)
  • [ ] Step 4 接入 auth.js:补 INVALID_CREDENTIALS / NOT_APPROVED / TOO_MANY_ATTEMPTS 三种错误码
  • [ ] Step 5 接入 students.js:teacher 仅本班、partner 禁读(403 PARTNER_FORBIDDEN)
  • [ ] Step 6 接入 evaluation.js:teacher 本班校验(403 NOT_SAME_CLASS)/ student/parent 仅自己
  • [ ] Step 7 接入 reports.js:同上 + partner 禁读
  • [ ] Step 8 smoke.js 补 8 个用例覆盖新矩阵(含教师跨班 403、partner 403、家长读到别人孩子 403)
  • [ ] Step 9 跑 node scripts/test-permission.js + node scripts/smoke.js → 全 PASS
  • [ ] Step 10 commit [Codex] W2.1: 完善登录权限矩阵(5 偏差修复)

Task W2.2 · 微信小程序登录流(学生/家长/教师)

Files: - Modify: miniapp-wechat/pages/login/login.js:1-100 - Create: miniapp-wechat/utils/auth.js(统一 auth 工具) - Modify: miniapp-wechat/utils/api.js:1-50(指向 http://127.0.0.1:3000/api,可配 baseURL)

Interfaces:

// miniapp-wechat/utils/auth.js
login(identifier, password, accountType)  // 返回 {token, user}
getCurrentUser()                          // 从 storage 读
logout()

Acceptance: - [ ] 3 角色用同一登录页(账号栏 + 密码栏 + 角色单选)→ 走 POST /api/auth/login - [ ] token 存 wx.setStorageSync('token');后续请求 header 带 Authorization: Bearer <token> - [ ] 登录失败显示具体错误码文案(INVALID_CREDENTIALS / NOT_APPROVED / TOO_MANY_ATTEMPTS 三态) - [ ] commit [Codex] W2.2: 微信端登录流(3 角色)

Task W2.3 · 微信端 5 维评价(录入 + 查看)

Files: - Modify: miniapp-wechat/pages/evaluation/evaluation.js:1-80 - Modify: miniapp-wechat/pages/evaluation/evaluation.wxml:1-40 - Modify: miniapp-wechat/pages/evaluation/evaluation.wxss:1-50 - Create: miniapp-wechat/pages/evaluation/submit.js(班主任即时评价)

Acceptance: - [ ] 学生/家长视图:5 维列表 + 历史轨迹(最近 10 条) - [ ] 教师视图:5 维列表 + 「即时评价」按钮 → 弹出维度选择 → 提交 < 30 秒响应(端到端计时) - [ ] 维度数据从 GET /api/evaluation/dimensions 拉(30 个评价点) - [ ] 提交走 POST /api/evaluation/records - [ ] 提交后刷新页面 + 成功 toast - [ ] commit [Codex] W2.3: 微信端 5 维评价(查看 + 即时录入)

Task W2.4 · 微信端班级驾驶舱(实时刷新)

Files: - Modify: miniapp-wechat/pages/dashboard/dashboard.js:1-100 - Modify: miniapp-wechat/pages/dashboard/dashboard.wxml:1-50

Acceptance: - [ ] 教师看到:本班学生 5 维均分雷达图 + 待办评价数 + 本周新增记录数 + 最近 5 条动态 - [ ] 数据从 GET /api/dashboard/summary 拉,每 30 秒轮询(不用 WebSocket,本期简化) - [ ] 30 秒轮询失败显示「数据加载失败,点击重试」 - [ ] commit [Codex] W2.4: 微信端班级驾驶舱(30s 轮询)

W2 周末验收(Claude 周五收)

□ W2.1 权限矩阵 5 偏差全修 + 测试 17 用例全绿
□ W2.2 微信端 3 角色登录 OK(含错误码三态)
□ W2.3 教师即时评价端到端 < 30 秒
□ W2.4 班级驾驶舱 30 秒刷新
□ 全局 DoD 5 条全绿
□ CI 跑通(commit + push)

3. W3(08-29 ~ 09-04)· Web 后台 MVP

W3 总目标

Web 后台跑通:7 类角色登录 + 权限矩阵 + 批量录入 + 数据看板;教联体 3 类试点数据接入准备就绪

Task W3.1 · Web 端 7 类角色登录 + 权限矩阵 UI

Files: - Modify: web-admin/login.html:1-100 - Modify: web-admin/index.html:1-50 - Modify: web-admin/assets/styles.css:1-150 - Create: web-admin/assets/permission-matrix.js

Acceptance: - [ ] 登录页支持 7 类角色单选(学生/家长/教师/教务/校长/教联体/管理员) - [ ] 登录后顶部导航按角色显示可见菜单(权限矩阵驱动) - [ ] 学生/家长无权访问 Web 后台(重定向回登录 + 提示「请用小程序」) - [ ] 教联体只看到「教联体管理」入口 - [ ] 校长/管理员看到全部 - [ ] commit [Codex] W3.1: Web 端 7 角色登录 + 权限矩阵 UI

Task W3.2 · Web 端批量录入评价

Files: - Create: web-admin/batch-entry.html - Create: web-admin/assets/batch-entry.js - Modify: server/src/routes/evaluation.js:1-100(加 POST /evaluation/records/batch)

API 新增:

POST /api/evaluation/records/batch
Body: { classId, termId, records: [{ studentId, dimensionId, score, remark? }] }
Resp: { created, skipped, errors: [{ row, reason }] }

Acceptance: - [ ] 教师/教务选班级 + 学期 → 看到本班学生 × 30 评价点表格 - [ ] 支持批量勾选 + 批量打分(拖选单元格) - [ ] 提交后服务端逐条校验,错误行返回 row index + reason - [ ] UI 高亮错误行 + 允许修改后重提 - [ ] smoke.js 加 1 用例:POST /evaluation/records/batch - [ ] commit [Codex] W3.2: Web 端批量录入(教师/教务)

Task W3.3 · Web 端数据看板(基础版)

Files: - Modify: web-admin/dashboard.html:1-150 - Modify: web-admin/assets/dashboard.js

Acceptance: - [ ] 校长/教务看到:全校 5 维均分 + 各班排名 + 待办评价数 + 教联体活动数 - [ ] 教师看到:自己班(沿用微信端 W2.4 逻辑 + Web 端大屏适配) - [ ] 图表用 Chart.js CDN(一次性引入,无第三方 npm) - [ ] commit [Codex] W3.3: Web 端数据看板(基础版)

Task W3.4 · 教联体 3 类数据接入(架构任务 · 必须先做)

Files: - Create: server/src/routes/partner.js - Create: server/src/integrations/police.js(派出所 mock) - Create: server/src/integrations/library.js(图书馆 mock) - Create: server/src/integrations/leifeng.js(雷锋纪念馆 mock) - Create: server/scripts/test-partner.js

API 新增(2026-08-16 Codex 走查后补全,含学校统一发号 + 邀请码激活配套端点):

GET    /api/partner/activities?type=police|library|leifeng     (教联体读本单位 + 学校读全部)
POST   /api/partner/activities                                 (教联体单位写入)
GET    /api/partner/students?externalId=xxx                    (查参与学生)

POST   /api/admin/partners                                     (学校统一发号——学校管理员权限)
  Body: { orgType: 'police'|'library'|'leifeng', orgName, contactName, contactPhone }
  Resp: { partnerId, inviteCode, validUntil }                  (邀请码 8 位一次性,7 天有效)

POST   /api/auth/activate                                      (邀请码激活)
  Body: { inviteCode, password }
  Resp: { token, user }                                        (设密后直接登录)

存储(2026-08-16 Codex 走查后约定): - 邀请码 + 账号映射 M1 用 JSON 文件 server/data/invite-codes.json(不建独立 Prisma 表,避免 schema 膨胀) - 邀请码一次性使用 → 标记 used=true + usedBy=userId - 7 天过期 → 启动时扫描 JSON 自动失效

Acceptance: - [ ] 3 类教联体单位各 mock 5 条活动数据(位于 server/data/partner/*.json) - [ ] 教师在班级驾驶舱看到本班学生参与的教联体活动 - [ ] 学校管理员能通过 POST /api/admin/partners 创建教联体账号(仅 role=admin 可调) - [ ] 邀请码可激活(POST /api/auth/activate),激活后账号可登录 - [ ] 一次性 + 7 天失效逻辑落实(JSON 扫描) - [ ] 学校统一发号 + 邀请码机制落实(详见 16-教联体协议模板-v1.md §3) - [ ] smoke.js 加 5 用例(GET / POST activities + POST admin/partners + POST auth/activate + 邀请码过期) - [ ] commit [Codex] W3.4: 教联体 3 类数据接入(含学校发号 + 邀请码激活 + JSON 存储)

W3 周末验收

□ W3.1 7 角色登录 + 权限矩阵 UI
□ W3.2 批量录入端到端 + 错误行高亮
□ W3.3 数据看板(Chart.js 基础图表)
□ W3.4 教联体 3 类接入(5 活动/类 + 协议字段对齐 16 模板)
□ 全局 DoD 5 条全绿
□ CI 跑通

4. W4(09-05 ~ 09-11)· 9 板块完善 + ETL 联调

W4 总目标

9 大板块功能完整;ETL 迁移工具与新平台端到端联调;miniapp 数据迁移准备就绪

Task W4.1 · 9 板块逐一落地(9 个子任务 · 标准模板)

每个板块按统一模板:

Files 模板:

miniapp-wechat/pages/<slug>/  (微信端)
web-admin/<slug>.html         (Web 后台)
server/src/routes/<slug>.js   (如需新端点)
server/scripts/smoke.js       (补 smoke 用例)

9 板块清单(依 PRD 第六节 + 04 计划书 §3.1):

# 板块 主责 W4 子任务编号
1 首页今日动态 雷达图 + 待办 + 动态流 W4.1.1
2 评价中心五维评价 W2.3 已完成,本周补完家长端 W4.1.2
3 四大超级课程 活动记录 + 报名 W4.1.3
4 养成教育 6 项检查 + 自动归集 W4.1.4
5 青锋计划 / 社会实践 活动报名 + 实践记录 W4.1.5
6 教联体协同 W3.4 已完成,本周补前端 W4.1.6
7 成长档案 学期报告单 PDF 导出(W6 主交付,W4 先占位) W4.1.7-占位
8 家校互通 通知 + 已读 + 私信文字 W4.1.8
9 班级管理驾驶舱 W2.4/W3.3 已完成,本周补 Web 端教师视图 W4.1.9

每个子任务交付: - 微信端页面 + Web 后台页面(如适用) - 服务端端点(如新增) - smoke.js 用例(如新增端点) - 单个 commit [Codex] W4.1.<n>: <板块名>

Task W4.2 · ETL 端到端联调(关键 · 必有数据)

Files: - Modify: server/tools/etl-migrate.js:1-200 - Modify: server/tools/etl-verify.js:1-150 - Create: server/tools/etl-dryrun-report.md(自动生成)

Acceptance: - [ ] 输入:30 条 leifeng-snapshot.json(已生成) - [ ] 输出:migrated-seed.json 30/1710/57(班级/学生/记录,已达成) - [ ] etl-verify 17 项全 OK - [ ] 联调:用 migrated-seed.json 喂给新平台,验证 /students 返回 30 个学生 + 维度分布正确 - [ ] 性能:单次迁移 < 5 秒 - [ ] 自动生成 etl-dryrun-report.md(含样本数据 + 字段映射表) - [ ] commit [Codex] W4.2: ETL 端到端联调(30 学生 + 1710 记录)

Task W4.3 · miniapp 数据迁移准备(关键 · 不实际迁)

Files: - Create: server/tools/miniapp-readiness-check.js - Create: docs/15a-miniapp-migration-runbook.md(迁移操作手册,Codex 写)

Acceptance: - [ ] miniapp-readiness-check 验证:miniapp 可达 + 数据库可读 + 30 个学生 + 1710 条记录可拉 - [ ] runbook 包含:①迁移步骤 ②回滚步骤 ③验证脚本 ④停服窗口 - [ ] 本周不实际迁,实际迁移在 W5 D3 执行 - [ ] commit [Codex] W4.3: miniapp 迁移准备(check + runbook)

W4 周末验收

□ W4.1.1~9 全部完成(板块 7 占位 W6)
□ W4.2 ETL 联调:30 学生 + 1710 记录 + 17 项 verify
□ W4.3 miniapp 迁移准备就绪(不实际迁)
□ 全局 DoD 5 条全绿
□ CI 跑通

5. W5(09-12 ~ 09-18)· 1 班灰度 + miniapp 实际迁移

W5 总目标

1 个班灰度跑通(30~50 学生 + 7 类角色独立登录);miniapp 数据实际迁移;M1 MVP 收官

Task W5.1 · 教联体 2~3 类满开(与教联体单位真实对接)

Files: - Modify: server/src/integrations/police.js - Modify: server/src/integrations/library.js - Modify: server/src/integrations/leifeng.js - Create: server/data/partner/police-activities.json(≥ 20 条) - Create: server/data/partner/library-activities.json(≥ 20 条) - Create: server/data/partner/leifeng-activities.json(≥ 20 条)

Acceptance: - [ ] 每类教联体活动数 ≥ 20 条 - [ ] 教联体单位登录后能 POST 新活动 → 教师端可见 - [ ] 协议字段(学校统一发号 + 邀请码)落实(16 模板 §3) - [ ] commit [Codex] W5.1: 教联体 3 类满开(≥20 活动/类)

Task W5.2 · miniapp 数据实际迁移(关键 · 一次性 · 谨慎)

Files: - Create: server/tools/miniapp-migrate-execute.js - Create: server/tools/miniapp-migrate-rollback.js - Modify: docs/15a-miniapp-migration-runbook.md(W4.3 写的,加实际执行记录)

Acceptance: - [ ] 执行前必跑 miniapp-readiness-check.js(W4.3 写的)→ 输出 ready ✅ - [ ] 执行前必跑 miniapp-migrate-execute.js --dry-run → 输出预期迁移报告 - [ ] 执行:miniapp 停服窗口(建议周末凌晨 2 小时) - [ ] 执行后:跑 etl-verify.js + 新平台 /students / /evaluation/records 核对数量 - [ ] 回滚预案:miniapp-migrate-rollback.js 测试可回滚(不在生产测,仅 dry-run 验证) - [ ] 微信端通知:迁移完成后校长/教师群通知 - [ ] commit [Codex] W5.2: miniapp 数据迁移执行 + 验证

Task W5.3 · 1 班灰度(M1 MVP 收官)

Files: - Create: server/scripts/pilot-acceptance.js(7 角色独立登录自动化测试) - Create: docs/15b-pilot-acceptance-report.md(Codex 写,Claude 复核)

Acceptance: - [ ] 1 班 30~50 学生(校长指定名单) - [ ] 7 类角色账号全部建好,每类至少 1 人 - [ ] pilot-acceptance.js 端到端跑通:登录 → 看 5 维 → 录 1 条评价 → 看报告 - [ ] 灰度报告 15b-pilot-acceptance-report.md 含:登录截图 + 评价录入截图 + 报告截图 + 7 角色账号清单 - [ ] 校长验收签字(本任务书范围内可后置) - [ ] commit [Codex] W5.3: 1 班灰度(7 角色 + 30 学生 + 端到端验证)

W5 周末验收(M1 MVP DoD)

□ W5.1 教联体 3 类满开(≥20 活动/类)
□ W5.2 miniapp 数据迁移 100%(含回滚预案)
□ W5.3 1 班灰度:7 角色 + 30 学生 + 端到端
□ 全局 DoD 5 条全绿
□ CI 跑通
□ [M1 MVP DoD 8.2](详见 04 计划书 §8.2):
  - 微信小程序 + Web 后台 **8 板块** MVP 功能 ✅(**板块 7「成长档案 / 学期报告单」不纳入 M1 验收,W4.1.7 仅占位,主交付放 W6**——2026-08-16 Codex 走查口径)
  - 5 维评价 100% 覆盖 / 7 类角色独立登录 ✅
  - 班主任即时评价 < 30 秒响应 ✅
  - 1 个班灰度(30~50 学生)✅
  - miniapp 数据迁移 100% ✅
  - 班级驾驶舱实时刷新 ✅

口径变更记录(2026-08-16):04 计划书 §8.2 原文「9 板块 MVP 功能」,本任务书依 Codex 走查明确板块 7 推迟到 M2(W6),M1(M0 W5)只验收 8 板块。如需还原为 9 板块,需追加 W5 内工时。


6. 验证矩阵(每周末 Claude 周验收用)

验证项 工具 通过标志 责任人
Prisma schema 合法 npx --yes prisma@6 validate 无输出 + exit 0 Codex 跑
全 JS 语法 find ... \| xargs node --check 无输出 Codex 跑
check.js 12 项 node scripts/check.js CHECK_RESULT: all passed Codex 跑
smoke.js N 端点 node scripts/smoke.js SMOKE_RESULT: 全部 passed Codex 跑
ETL migrate + verify node tools/etl-migrate.js && node tools/etl-verify.js ETL_VERIFY: ok Codex 跑
权限矩阵 node scripts/test-permission.js TEST_PERMISSION: all passed Claude 写 + Codex 维护
CI 端到端 GitHub Actions run 4 步全绿 Codex push 后 Harness 验
微信端登录 微信开发者工具 + 真机扫码 3 角色 OK Codex 手测
Web 后台 http://127.0.0.1:8080/ + 7 角色账号 权限矩阵驱动菜单 Codex 手测
教师即时评价 < 30s 浏览器 stopwatch 端到端 < 30s Codex 手测
班级驾驶舱 30s 刷新 浏览器开 5 分钟 自动轮询 10 次 Codex 手测

7. 任务前必跑命令(每个 task 开始前)

cd C:\Users\lvxin\Desktop\codex沟通\泽湖成长平台
git checkout main
git pull --rebase           # 拉最新
git log --oneline -5        # 看最近提交
# 跑当前状态基线:
npx --yes prisma@6 validate --schema server/prisma/schema.prisma
cd server
find src scripts prisma tools -name '*.js' -print0 | xargs -0 -n1 node --check
node scripts/check.js
node scripts/smoke.js
node tools/etl-migrate.js && node tools/etl-verify.js

如果任何一条 FAIL:先修基线再开新 task。


8. 任务完成后必跑命令(每个 task commit 前)

# 1. 静态检查
npx --yes prisma@6 validate --schema server/prisma/schema.prisma
cd server
find src scripts prisma tools -name '*.js' -print0 | xargs -0 -n1 node --check

# 2. 动态检查(按改动类型)
node scripts/check.js
node scripts/smoke.js
node tools/etl-verify.js        # 如果改了 etl-migrate.js
node scripts/test-permission.js  # 如果改了权限相关路由

# 3. 端到端(如涉及前端改动)
start.bat                       # 启服务
# 浏览器手测

# 4. commit + push
cd ..
git add -A
git commit -m "[Codex] W<n>.<m>: <一句话描述>"
git push origin main            # 触发 CI

9. 与 5 件异步启动的接口(不阻塞本任务书,但需配合)

# 异步任务 主责 进度问询点
① 备案材料 v1 Claude + 校长 W5 D5 前提交
② 教联体对接协议 校长(用 16 模板) W3 D1 前完成
③ 1 班灰度名单 校长 W5 D1 前确定
④ 部署脚本 + CI/CD Claude(已完成雏形) M3 W8 用
⑤ ETL 迁移工具 Claude(已完成 v1) 本任务书 §5.2 用

Codex 不要等这些:M0/M1 阶段以上 5 件默认已完成,未完成时按占位数据走。


10. 风险与回退

风险 概率 应对
W2.1 权限矩阵设计返工 中 Claude W2 D0 把关设计,Codex 实现
W4.2 miniapp 数据结构与新平台 schema 冲突 中 W4.3 readiness-check 前置,迁移分批
W5.2 miniapp 迁移失败 中 rollback.js 预案,先 dry-run
W5.3 灰度被家长投诉 中 校长提前沟通(W3 D3 完成通知)
8 周时间过紧 中 W6 砍合并(教联体+报告单合到 W6)

11. 变更日志

日期 版本 变更 作者
2026-08-16 v1.0 初稿(基于 04 计划书 v3 + 11 W1 验收清单 + 12/13/14 本轮交付) 👤 Claude