chore(import): 终验三处一行补完——fact-12 JSDoc 分层和解、flush 措辞、tsbuildignore
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -16,5 +16,6 @@ storage/
|
||||
|
||||
# 日志与临时文件
|
||||
*.log
|
||||
*.tsbuildinfo
|
||||
tmp/
|
||||
.DS_Store
|
||||
|
||||
@@ -31,8 +31,9 @@
|
||||
//
|
||||
// unsupported/error 也写 source_records(前置事实 12):parse_status='unsupported'/'failed'、
|
||||
// locale=站点默认、不关联 entry——"不支持对象有明确结果"的可审计性;postId 缺失时
|
||||
// source_id 以 rawLocation 回退(**不硬造**身份)。这两类是预期输入不是问题——行与计数
|
||||
// 即审计,不推 issue(job 不因此 succeeded_with_issues)。
|
||||
// source_id 以 rawLocation 回退(**不硬造**身份)。这两类是预期输入——写入器侧不推
|
||||
// issue;Task 6 起编排层将 reason/issue 归档 adapter 组(进 report.issues,终态随之
|
||||
// succeeded_with_issues——两层纪律有意分层)。
|
||||
//
|
||||
// 事务边界(ctx.db 直连约定下的自行包裹):跨语句不变量的路径(全新建四行 / 变化三步)
|
||||
// 用 db.transaction;单语句路径(跨快照 skip 补行)单 INSERT 自原子。写入路径对
|
||||
|
||||
@@ -732,7 +732,7 @@ function mergeOutcomes(acc: ImportPipelineOutcome, ret: ImportPipelineOutcome):
|
||||
* 的 reason/issue 同归 adapter 组(审查 Fix 4——不静默丢弃诊断信息);
|
||||
* - **失败报告部分冲刷**(审查 Fix 1):分派/finish 中途抛错时,把可安全取得的部分产出
|
||||
* 冲入 ctx.report 累加器后重抛——term/content 的 finish 是纯返回(无库依赖,就地补算);
|
||||
* media/route 的 finish 依赖库与先序产物,失败路径**不调用**(其键/issue 缺席于失败报告);
|
||||
* media/route 的 finish 依赖库与先序产物,失败路径**不调用**(其 issueGroups 为空数组——未到该 finish 阶段,部分数据不可安全取得);
|
||||
* 进度以 orchestrator 键 eventsDispatched 落 counts(仅失败路径出现——成功路径不占键)。
|
||||
*/
|
||||
function orchestratedPipeline(paths: { productsPath: string; newsPath: string }): ImportPipeline {
|
||||
|
||||
@@ -114,7 +114,7 @@ tests/integration/import-*.test.ts
|
||||
- [ ] 失败测试:mini.xml register→import 全链:site/connection/snapshot→job→terms(2+自建0)→content_entries(**3**:post/product/page——attachment 不建,前置事实 11)→media(2+对拍)→routes(首页+2列表+3内容+2媒体 asset+2 attachment 301+tags…)→报告(各计数+**清洗统计**+版本块+冲突/失配清单);**published_revision_id 全 NULL**(导入不发布断言);**mapConfig.locale=site.default_locale 接线断言**(前置事实 8)
|
||||
- [ ] **Task 3 审查移交的编排义务**:① NULL-entry 占位行收编(content-writer 六列分支 UPDATE 挂 entry——精确位置已标注在代码缝注释)② 多写入器 counts 按**求和**聚合(import.service 现为⊕覆盖——键名全局唯一已 JSDoc 契约化;编排层改或约定各写入器键前缀,二选一定死)③ 写入器 identity 参数共享基类型(Pick<ImportJobContext,…>)防漂移 ④ stale 回收(已在清单)⑤ REPORT_WRITE_FAILED 测试补 ⑥ wp:attachment 双写入方单一 owner 决策(content-writer record-only 足迹 vs media-writer——媒体域归 Task 4,编排广播时 media-writer 消费 attachment 行、content-writer 只留 record 足迹,Task 6 定分派规则)
|
||||
- [ ] **Task 5 审查移交的汇流契约(Task 6 实现底本)**:事件期**严格串行 await** 分派 `content.handleEvent → term → media → route`(三家锚点都查 content 同事件产物,禁 Promise.all);finish 期唯一硬序 `await media.finish()` **先于** `route.finish()`(attachment 反查与 asset 全表读 media_assets);term/content finish 同步无库依赖任意位置。**测试 fullPipeline(import-routes.test.ts)即抄写底本**。Task 7 度量备注:routesCollisions 重跑如实再现非缺陷;WP 首页=page 场景的首页冲突 issue 有既定解释;真实规模 ~2815 route 行 ~9300 RT——**DB 须同机/近端跑并记录耗时**,超预期先加 `(site_id,host,collision_key)` 与 `media_assets(source_id)` 两索引
|
||||
- [ ] 报告落 artifacts/import/<jobId>/reports/import.json+html(沿用 Plan 2 Task 6 报告纪律:动态文本转义/错误封顶/清洗统计入报告)
|
||||
- [x] 报告落 artifacts/import/<jobId>/reports/import.json(**HTML 版与错误封顶推迟至 Task 8 收尾**——Task 6 审查确认;JSON 已含 18 键 counts/issueGroups 六组/清洗统计/版本块)
|
||||
- [ ] stale 回收:超时 running → stale 置位与心跳列决策(ADR-017)
|
||||
- [ ] 绿 → commit `feat(import): 全链编排与导入报告`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user