Fill task card for pptx structural gate

This commit is contained in:
2026-10-14 07:36:29 +00:00
parent 5facfcfc27
commit 2ccf3a66cc
+19 -14
View File
@@ -7,42 +7,47 @@
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= d40579ed7fe3bbca68d3c6fcd1bce6707688d59e
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-pptx-register-structural-gate(worktree);分支:feature/pptx-register-structural-gate
- 授权与交付终点:<本次允许的动作与终点;未授权事项写明>
- 授权与交付终点:用户 2026-10-14 会话内批准按既定方案实施(B1 登记口结构自检 + B4 提示词收紧 + B2 lint 结构断言);终点 = backend 分支 PR 合入 + Dev gitlink 组合 PR 合入。B3(终轮门禁 scorer 扩面)涉及 agent-native 跨仓改动,留作后续任务,不在本次范围。
- 交付模式:manual(前序人工决策,智能体 Review/合入);其他阶段明确授权后可记为 authorized-continuous
- 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
- 自动推进授权:无;授权范围:无;授权来源:无;授权终点:无;停止条件:无(未授权)
- 当前阶段:需求拆解;当前增量:I1(待定义)
- 自动推进授权:无;授权范围:B1/B4/B2 实施、Review、合入;授权来源:用户会话指令「开始按计划实施」(2026-10-14);授权终点:上述 PR 合入;停止条件:CI 红或评审阻塞
- 当前阶段:实施与自检;当前增量:I1(B1+B4+B2 一次交付)
- 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
## 目标与非目标
<预期结果、受影响入口/模块/契约;明确不做什么。>
- 背景:Agent 绕开 housestyle kit 用 zipfile 手拼 OOXML 生成了缺母版/主题/docProps 的残缺 pptx(机械臂腹部超声设计方案.pptx),正文抽取照常成功、三层校验(登记/终轮门禁/housestyle lint)全部放行,Office 按 OPC 校验才判损坏。
- 目标:1) register_artifact 对 .docx/.xlsx/.pptx 登记前做纯 Go 结构自检(ZIP 合法 + 必备部件 + pptx 的 slide→layout→master→theme 引用链),残缺包拒绝登记并给出 kit 重建指引;2) lint_pptx 前置母版/主题/版式链结构断言(structure-broken,不随模板降级),打开失败兜底为结构错误而非 traceback;3) 提示词(tool.run_python v2 / base.deliverables v8)明令禁止手拼 OOXML 并给缺库降级话术。
- 非目标:不改 agent-native gates.go(B3 单独任务);不补 docProps/presProps 等增强校验;不恢复用户侧那份坏文件(另行处理)。
- 受影响入口:register_artifact 工具、housestyle.lint CLI(`python -m housestyle.lint`)、提示词库;对外契约:合法 kit 产物登记行为不变。
## 关联方向与规划
- 适用状态:待核对(无适用规划时说明原因)
- 主记录路径/版本:待核对(路径按仓库根目录定位,归档后不变;只引用唯一正文)
- 对应里程碑:待核对
- 适用状态:无适用既有规划;问题定位与修复方案 2026-10-14 在用户会话中完成并获批准(本卡即为落地记录)
- 主记录路径/版本:会话内方案(B1/B4/B2 优先,B3 跟进);无独立规划文档
- 对应里程碑:无
## 需求分析
| ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 |
|---|---|---|---|---|---|---|
| R1 | 待填写 | 待评估 | 待定 | 待定义 | 待确认 | 待评审 |
| R1 | register_artifact 拒绝结构残缺的 docx/xlsx/pptx | 直接堵住事故类(手拼 OOXML)进入交付面板 | 高 | 事故形残缺包登记报错含「结构自检未通过」与 kit 指引;合法 kit 产物登记成功 | 无 | 采纳 |
| R2 | lint_pptx 结构断言 + 打开兜底 | python-pptx 对缺母版容忍导致 lint 漏放;docx/xlsx 打开成功即核心部件在位无需同款断言 | 高 | 残缺包 lint 报 structure-broken error(exit 1);kit 产物无 structure-broken | 无 | 采纳 |
| R3 | 提示词禁止手拼 OOXML 并给缺库降级话术 | 前置拦截:让模型不再走手拼路线 | 高 | tool.run_python v2、base.deliverables v8 生效,prompts 测试通过 | 无 | 采纳 |
## 方案与计划
- 方案引用:待填写(含对象版本)
- 实施计划引用:待填写(含增量与需求 ID)
- 测试计划引用:待填写(含需求 ID 与验收条件)
- 方案引用:会话内定位报告与修复方案(2026-10-14,用户批准);落点 internal/tools/ooxmlgate.go(L1 纯 Go)、housestyle/lint.py、prompts/library 两个文件
- 实施计划引用:I1 = R1+R2+R3 一次交付;fs_write_file 已有 rejectBinaryOfficeWrite 无需改动
- 测试计划引用:Go 侧 ooxmlgate_test.go(合法/事故形/九类断链/登记集成);python 侧 test_housestyle.BrokenPptxTests(残缺/合法/不可解析);组合验证 make test + make build(CI 同源)
## 阶段评审
| 阶段 | 对象版本 | 结论 | 评审人 | 时间 | 依据 |
|---|---|---|---|---|---|
| 需求拆解 | 待定 | 未评审 | — | — | — |
| 需求评估 | 待定 | 未评审 | — | — | — |
| 需求表确认 | 待定 | 未评审 | — | — | — |
| 需求拆解 | 会话定位报告 2026-10-14 | 通过 | weichen(会话内) | 2026-10-14 | 会话内问题定位与方案获用户批准 |
| 需求评估 | 同上 | 通过 | weichen(会话内) | 2026-10-14 | R1-R3 与事故一一对应 |
| 需求表确认 | 本卡 R1-R3 | 通过 | weichen(会话内) | 2026-10-14 | 「开始按计划实施」指令即确认 |
| 方案设计 | 待定 | 未评审 | — | — | — |
| 实施计划 | 待定 | 未评审 | — | — | — |
| 实施与自检 | 待定 | 未评审 | — | — | — |