docs(plan): Plan 2 采纳复审建议——paths 统一三方消费、commander 定根依赖
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ cms-one/
|
||||
|
||||
**Files:** Create `packages/adapter-wordpress/package.json`(@sf/adapter-wp,无 runtime 依赖本任务)、`tsconfig.json`/`tsconfig.build.json`(照 contracts 先例)、`src/limits.ts`;Test `test/limits.test.ts`
|
||||
|
||||
- [ ] **Step 0: 跨包接线决策落地(评审 Issue 2 前置)**:`@sf/adapter-wp` 加 workspace 依赖 `@sf/contracts`;**消费方式钉死为 vitest alias 指 src**——根 `vitest.config.ts` 加 `resolve.alias: { '@sf/contracts': path.resolve('packages/contracts/src/index.ts') }`;typecheck 由既有包级 tsc 覆盖(adapter-wp tsconfig 直接相对路径引用 contracts 源码的编译由包级 tsc 保证;CLI 侧走 tsx 同样吃 src)。结论记入 Task 9 的 ADR-016(不阻塞 Task 6)。
|
||||
- [ ] **Step 0: 跨包接线决策落地(评审 Issue 2 前置)**:`@sf/adapter-wp` 加 workspace 依赖 `@sf/contracts`;**统一用根 tsconfig `compilerOptions.paths`** 把 `@sf/contracts` 与 `@sf/adapter-wp` 映射到各自 `src/index.ts`——一份配置三方消费(包级 tsc 读 paths;vitest.config.ts 的 `resolve.alias` 指向同一映射;tsx 原生读 tsconfig paths)——**tsx 下 import 不经 dist,无需预构建**。结论记入 Task 9 的 ADR-016(不阻塞 Task 6)。
|
||||
- [ ] Step 1 失败测试:默认限额值冻结(maxWxrBytes 64MB、maxItems 200k、maxDepth 64、maxCdataLength 1MB、**maxFieldLength 1MB**、maxTermCount 50k、maxMetaPerItem 200、timeBudgetMs 120s、phpMaxDepth 8、phpMaxElements 1000)+ 类型字段齐全。注:timeBudgetMs 在 Task 3 以可注入时钟测试(构造函数接受 `now()`),Task 8 实测覆盖
|
||||
- [ ] Step 2 实现 `WxrLimits` 接口 + `DEFAULT_WXR_LIMITS` 常量(as const)+ 类型锁(照 contracts 单源派生先例锁值域)
|
||||
- [ ] Step 3 绿 → commit `feat(adapter-wp): 包骨架与限额契约`
|
||||
@@ -124,7 +124,7 @@ cms-one/
|
||||
- 副本落 `storage/snapshots/<kind>/<sha256前2位>/<sha256>`;原输入不再被后续任务读取
|
||||
- 路径安全:register 的输入路径必须在允许目录(storage/incoming 或显式绝对路径白名单校验——拒绝越界读取);**wxr:probe 例外:只读诊断命令,接受任意可读路径(Task 8 直读 cms 即用此通道),不写任何东西**
|
||||
- [ ] Step 2 实现服务(copy 流式+sha256 双算、媒体清单哈希、DB 写入、报告输出 **artifacts/register/<runId>/reports/**——阶段 2 无 import_jobs,runId 为本次 register 运行生成)+ CLI 接线
|
||||
- [ ] **CLI 执行机制(钉死)**:根 devDependency 加 `tsx`;根 package.json scripts 加 `"sf": "tsx scripts/sf.ts"`;`commander` 作为 adapter-wp 或根依赖;CLI 经 tsx 直吃 TS 源码(**无需预构建 dist**;apps/api 的 Nest 装饰器源码同样由 tsx 运行)。Task 8 命令相应为 `pnpm sf wxr:probe --wxr ...`
|
||||
- [ ] **CLI 执行机制(钉死)**:根 devDependency 加 `tsx`;根 package.json scripts 加 `"sf": "tsx scripts/sf.ts"`;`commander` **定为根依赖**(CLI 在根,adapter-wp 纯函数包不消费);CLI 经 tsx 直吃 TS 源码(**无需预构建 dist**;apps/api 的 Nest 装饰器源码同样由 tsx 运行)。Task 8 命令相应为 `pnpm sf wxr:probe --wxr ...`
|
||||
- [ ] Step 3 绿(75+新增)→ commit `feat(source): 输入登记服务与 sf CLI(content-addressed 快照)`
|
||||
|
||||
### Task 8: 真实 WXR 冒烟(阶段 2 验收)
|
||||
|
||||
Reference in New Issue
Block a user