docs(plan): Task 3 勾选 + 阶段2责任清单

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-20 18:30:43 +08:00
parent 31cd7ed7f4
commit 33517065f6
@@ -362,7 +362,7 @@ git add infra .env.example && git commit -m "feat(infra): PostgreSQL16 compose
---
### Task 3: contracts 包——UniversalRow 契约冻结
### Task 3: contracts 包——UniversalRow 契约冻结 ✅ 完成(857389e + 修复 31cd7ed,双审通过;审查修复:守卫收紧必填类型/对象形状、包级 test 脚本移除、10 键 it.each + 4 拒绝用例、REQUIRED 类型锁)
**Files:**
- Create: `packages/contracts/package.json`、`packages/contracts/tsconfig.json`
@@ -843,7 +843,7 @@ describe('空库全量迁移', () => {
- Create: `README.md`(快速开始:corepack → install → db:up → migrate → test)
- Create: `docs/adr/ADR-001-ORM选择Drizzle.md`(一句话决策 + 备选 Prisma 否决理由:SQL 可控、cms 实战);ADR-002~013 按 spec §3 表逐条落成短文件(每个 3–5 行)
- [ ] **Step 1: 补脚本与 README**(含质量审查沉淀的三项:根 package.json 加 `"type": "module"`、新增 `.gitattributes`(`* text=auto eol=lf` 统一行尾)、加 `engines.node >= 22`)
- [ ] **Step 1: 补脚本与 README**(含质量审查沉淀的三项:根 package.json 加 `"type": "module"`、新增 `.gitattributes`(`* text=auto eol=lf` 统一行尾)、加 `engines.node >= 22`;含 Task 3 实施发现:根 typecheck 需覆盖 packages/apps——扩根 tsconfig include 或根 typecheck 脚本改逐包 `tsc -b`,CI 同步)
- [ ] **Step 2: eslint flat config + `pnpm lint` 通过**
- [ ] **Step 3: 全量验证**:`pnpm lint && pnpm typecheck && pnpm test` 全绿
- [ ] **Step 4: Commit 并推送**
@@ -855,6 +855,12 @@ git push origin main
---
## 移交阶段 2 的责任清单(来自 Task 3 质量审查)
- canonical `status` 值域 + 未知 status 的导入兜底策略,钉在适配器转换测试里(契约层 string 宽松是有意设计)
- 适配器 property 测试覆盖:`taxonomyRefs`/`attachmentRefs` 元素形状、`sourceId`/`sourceTermId` 非空
- 如需字段级错误报告:**加法式**新增 `validateUniversalRow(): issue[]`,不动现有布尔守卫
## 验收(对照 spec §15 阶段 0/1)
- [ ] 原项目未被本项目修改(cms 是活跃仓库、并行会话在继续开发——Task 0.1 审查已确认;验收口径 = **本项目从未向 cms 执行任何写操作**(流程纪律),阶段验收时记录当时所见 cms HEAD 作信息性参考;**发现任何 cms 异常只报告用户,绝不 restore/checkout**)