diff --git a/docs/superpowers/plans/2026-10-21-slice-import-pipeline-phase3.md b/docs/superpowers/plans/2026-10-21-slice-import-pipeline-phase3.md index d0d8dc1..488b634 100644 --- a/docs/superpowers/plans/2026-10-21-slice-import-pipeline-phase3.md +++ b/docs/superpowers/plans/2026-10-21-slice-import-pipeline-phase3.md @@ -97,15 +97,15 @@ tests/integration/import-*.test.ts - 855 attachment 真实规模冒烟(Task 7 一并) - [ ] 实现 + 绿 → commit `feat(import): 媒体登记与安全校验` -### Task 5: route_registry 生成(§6.1 处置全表) +### Task 5: route_registry 生成(§6.1 处置全表)✅ 完成(9d2cc0a,315 测试;§6.1 阶段 3 可产生的行全覆盖(mini 全链 12 行逐行对拍),?p= 排除钉死"不插行+计数+issue"(route_kind 六值无 excluded——查询路由 SP3),attachment 301 暂存到 finish 反查 media_assets(时序契约),host 单值 = production_origin(旧 host 变体 SP3),upsert 三分(owner = route_kind+target_content_id+target_file),日期/作者归档与人工映射/410 同属无输入源合理空缺) **Files:** `route-writer.ts`;Test `tests/integration/import-routes.test.ts` -- [ ] 失败测试(**所有阶段 3 可产生的 §6.1 行**均有对应用例——含评审补的 asset 与首页两行,mini 数据手构补充): +- [x] 失败测试(**所有阶段 3 可产生的 §6.1 行**均有对应用例——含评审补的 asset 与首页两行,mini 数据手构补充): - 内容 permalink → html(路径保真含 .html;target_content_id 关联);**首页 `/` → html**;**媒体上传路径 `/wp-content/uploads/...` → asset**(media public_path 生成);主列表页 `/products/`、`/news/`(**CLI 参数来源**,默认即此)→ html;产品/文章分类 → html(public_base_path 常量按前置事实 9,product_tag 记 `/product-tag/`——WooCommerce 默认,本切片该路径不生效仅记录);tag/product_tag/日期/作者 → redirect 301 主列表;attachment 页 → **一律 301 媒体文件**(前置事实 10 降级,报告注明);`?p=` → excluded_with_reason 登记。**"所有阶段 3 可产生的 §6.1 行"均有用例**(人工映射/确认删除两行无输入源,属合理空缺) - **exact/collision 双键**:`/About` 与 `/about` 两条并存(collision_key 折叠函数按前置事实 9 钉死);同 exact_key 冲突(两内容同路径)→ 报告 conflict 不静默覆盖 - **重导幂等**:同路径同目标 → 0 新行;目标变 → 更新(route 表可变,非不可变表) -- [ ] 实现 + 绿 → commit `feat(import): 路由注册表生成` +- [x] 实现 + 绿 → commit `feat(import): 路由注册表生成` ### Task 6: 编排集成 + 导入报告