Skip to content

chore(test): 飞书报告可读性优化 + 全量 skill 评审 + CI 基线加固 (v0.0.8 → 0.0.17)#59

Open
Jun-Hex wants to merge 8 commits intomainfrom
feat/rr-report-readability
Open

chore(test): 飞书报告可读性优化 + 全量 skill 评审 + CI 基线加固 (v0.0.8 → 0.0.17)#59
Jun-Hex wants to merge 8 commits intomainfrom
feat/rr-report-readability

Conversation

@Jun-Hex
Copy link
Copy Markdown
Collaborator

@Jun-Hex Jun-Hex commented Apr 29, 2026

本 PR 整合两块工作:① 飞书报告可读性优化(commits 3562807 ~ 32eb7f1,详见下方原 PR 描述);② test 插件全量评审 + CI 基线加固(commit 117cbcf,详见末尾「Addendum」节)。

版本号一次性从 0.0.8 升到 0.0.17(9 个 patch bump,对应 9 批改动)。所有改动 CI 全绿(79 PASS / 0 FAIL)。


TL;DR

基于 ai-case 平台 4 个真实飞书报告样本的可读性审查(requirement-review / test-case-review / change-analysis / smoke-test),逐项排查并约束输出格式。新建 3 份 TEMPLATES.md(test-case-review / change-analysis / requirement-traceability 之前完全没有报告模板)+ 重构 1 份(requirement-review)+ 修复 1 个 schema 校验违规(review_mode 黑名单)。所有改动都通过飞书 docx import 实测验证,0 emoji 残留 / 0 ASCII 残留 / 0 表格触发。


Background

ai-case 平台 4 个 AI 工作流完成后会自动上传 markdown 报告到飞书云文档。实测发现 4 份报告普遍存在影响阅读体验的格式问题,且其中一份触发了 schema 校验违规

实测样本 主要问题
实体商品一期-需求评审-2026032500 H1 重复 / 功能点清单格式破碎 / [OK]/[!]/[X] ASCII 符号 / QA AI 助手 自评
测试用例评审-分包上传(2026-03-04) 5 张表格散行 / 缺整体就绪度判定 / 缺按用例 ID 分组的修复 to-do
进社区默认落tab实验-变更分析-2026042310 8 张表格散行 / ★/★★/★★★ 标记与跨 workflow 不统一 / multi-doc 间无交叉引用 / 覆盖率"约 N 个"含糊
插件升级提示-冒烟测试-2026040710 5 张表格散行 / 装饰性 emoji 章节前缀 📋🐛📊💡 被飞书自动转 ASCII / 缺整体置信度汇总
ai-case session 248 rr_summary.json 写出非法值 review_mode: "single_agent_serial",触发 contracts schema 校验违规(写入 output_data._schema_violations

飞书 docx import 的 4 大兼容性陷阱(实测发现)

PR 第一版本(commit 3562807)凭"看起来更好"的假设引入了 emoji 与 HTML <details> 折叠 — 上传飞书 docx import 实测时全部失败。这 4 个陷阱是本 PR 所有约束的科学依据

markdown 输入 飞书实际渲染 结论
<details><summary>...</summary>...</details> summary 内容变成普通文本 + 后续内容直接展开 HTML 折叠不支持
✅ 已获取 text: [OK] 已获取 ✅ 自动转 ASCII
⚠️ 待定 text: [!] 待定 ⚠️ 自动转 ASCII
❌ 未获取 bitable(17) 嵌入式表格 block,整行内容丢失 ❌ 触发飞书多维表格解析
📋 基本信息 (装饰性章节前缀) text: [Doc] 基本信息 📋/🐛/📊/💡 都被自动转 ASCII
markdown 表格 | ... | ... | 每个 cell 单独成 text/bullet block 表格被拆成离散散文

修复方向:统一中文方括号 [通过]/[已覆盖]/[实证] 替代所有 emoji + ASCII + 星级;表格全部改为 H3 + bullet;折叠改为全量 H4 分组。


改动总览(6 commits / 4 skills / 11 文件)

commit skill 主要改动
3562807 requirement-review 重构 TEMPLATES.md report.md 模板(10 处可读性优化)
26d3b03 requirement-review 飞书 import 实测后修正 5 处兼容性 + 4 处结构问题(A1 目录脱节、A2 章节序号重复、A4 意图识别表缺漏、F2 chat 输出对齐)
91ace7e test-case-review 新建 TEMPLATES.md(之前完全没有报告模板)— 8 节强约束
fb47249 change-analysis 新建 TEMPLATES.md(multi-doc 约束 code_change_analysis.md + test_coverage_report.md)— 引入双向交叉引用 + 置信度逐条标注
e459975 requirement-traceability 追加 smoke-test 模式 report.md 模板(之前 PHASES 5S.2 只约束 JSON 输出,无 markdown 模板)
32eb7f1 requirement-review 修复 review_mode 写出非法值 single_agent_serial(原 PR #58,已并入本 PR)

每个 skill 涉及的具体章节结构:

Skill 输出报告 章节数 关键创新
requirement-review report.md 6 节 新增 §4 时间盒清单(评审会前/会上/开发前/提测前 待办汇总)
test-case-review review_summary.md 8 节 新增 §0 用例就绪度判定 + §6 按用例 ID 分组修复 to-do(粗体 ID + · 前缀保层次)
change-analysis code_change_analysis.md + test_coverage_report.md 6 + 5 节 multi-doc 双向引用 + 每条结论行尾标 [实证]/[推测] + §5 置信度索引
requirement-traceability smoke-test 的 report.md 6 节 §0 整体置信度均值汇总 + §2 标题分子分母 共 N/总数 + §3.2 未追溯变更明确表述

4 个 workflow 统一约定(11 条)

PR #59 把分散在 4 个 skill 各自的报告 convention 收敛到统一规则:

  1. 不写 H1 标题 — 飞书 doc 名已包含报告类型,避免重复
  2. 不用 markdown 表格 — 飞书 import 后表格被拆成离散 text block 看起来像散文
  3. 不用 emoji ✅/⚠️/❌/⭕ — 飞书 import 会自动转 ASCII 或破坏内容
  4. 不用 ASCII [OK]/[!]/[X] — 跨 workflow 语义漂移(rr 表"有条件"、ca_cov 表"低风险但难复现")
  5. 不用星级 ★/★★/★★★ — 与跨 workflow 分级符号不统一
  6. 不用装饰性 emoji 章节前缀 📋/🐛/📊/💡 — 飞书自动转 ASCII
  7. 不用 HTML <details><summary> 折叠 — 飞书不识别,summary 反而变成误导性文字
  8. 统一中文方括号标记(按场景):
    • 就绪度/通过:[通过]/[有条件]/[不通过]
    • 覆盖率:[已覆盖]/[部分覆盖]/[未覆盖]/[范围外]
    • 风险:[高]/[中]/[低]
    • 置信度:[实证]/[推测]
    • 优先级:[P0]/[P1]/[P2]
  9. 元数据末尾必含「分析方式:AI 辅助 + ... 决策」 — 替代旧版本的 QA AI 助手自动生成 自评署名(削弱企业用户对结论的可信度)
  10. 代码块前必须加 quote 提示 > 以下代码块仅 Dev 排查时阅读,PM/QA 可跳过 — 平衡 PM/QA 与 Dev 双视角
  11. multi-doc 必须双向交叉引用 — 跨章节问题应通过编号引用而非复述

实测验证

PR 推进过程中通过 ai-case 平台的 create_feishu_doc.py 实际上传 4 份 mock 报告到飞书 docx,用 docx_v1_documents/{id}/blocks API 验证渲染结果:

报告类型 block 数 emoji 残留 ASCII 残留 表格触发 bitable 触发
requirement-review (E2E) 58 0 0 0 0
test-case-review 88 0 0 0 0
test-case-review §6 (用例分组层次) 11 0 0 0 0(验证粗体 ID + · 前缀视觉层次保留)
change-analysis 35 0 0 0 0
smoke-test 53 0 0 0 0

所有飞书云文档输出元素(H2/H3/H4 标题层次、bullet 列表、code block、quote block、bold 标记、中文方括号)均原样保留。


影响

  • 仅模板和 prompt 文档变化,不涉及 skill 行为/契约
    • rr_summary.json schema 不变(commit 32eb7f1 只是约束 AI 不要写非法的 review_mode 值,schema 本身就一直是这个 enum)
    • defect_list.json / smoke_test_report.json schema 不变
    • 其他 JSON 产物 schema 全部不变
  • 下一次执行各 workflow 时自动按新模板生成,无需 ai-case 平台侧改动
  • 已上传到飞书的历史报告不受影响

历史合并说明

本 PR 整合了原 PR #58fix/rr-summary-review-mode-text)的内容(commit 32eb7f1),原 #58 已关闭。所有 requirement-review 相关修复(包括 review_mode 黑名单)现在通过本 PR 一次性合入。


Addendum — Test 插件全量评审 + CI 基线加固(commit 117cbcf

这是第二块独立工作,与上面飞书报告优化属于不同主题,但因 reviewer 节奏放在同一 PR。如要拆分可以请提示。

TL;DR

系统性评审 test 插件全量产物(16 skill / 10 agent / 5 contract schema / CONVENTIONS / 3 根文档),扩 CI 基线 5 → 9 类检查,抓到 8 处 contract 真冲突并解决,删 3 个零调用 agent,依赖声明诚实化。改 51 文件 / +804 -535 行 / 3 删 3 新建。CI 全程 EXIT=0 / 79 PASS / 0 FAIL。

关键改动(按主题分组)

1. CI 基线加固(tests/validate.sh 5 → 9 类 Check)

Check 范围 内容
10 test 插件 SKILL.md frontmatter name ↔ 目录名一致
11 test 插件 handoffs [].skill 目标 skill 存在
12 test 插件 subagent_type=... 引用的 agent 文件存在
13 test 插件 references/*.md 路径解析(含中文文件名兼容)
14 test 插件 validate_contracts.py 跨 skill contract 一致性 + 白名单(contracts/known-collisions.yaml

附带:

  • 扩展 tests/check-schemas.sh:1 → 5 schema 验证(testcase / ca-summary / defect-list / rr-summary / smoke-test-report),含 ~30 反例
  • 修复 sandbox 模式下 mktemp 失败的伪绿(new_tmpdir 改为硬退出)

2. Contract 输出冲突解决(8 处真冲突 → 4 改名 + 4 白名单)

原文件名 处置
risk_assessment.json change-analysis 改为 bug_risk_assessment.json(与 traceability 区分语义)
test_execution_report.json unit_test_execution_report.json / integration_test_execution_report.json
supplementary_cases.json(3 方撞名) change-analysis → change_supplementary_cases.json,test-case-review → review_supplementary_cases.json,test-case-generation 保留 canonical(内部 scratch)
ui_fidelity_report.json 进白名单(primary+fallback 模式:traceability PHASES 3.4 仅在工作目录无 ui-fidelity-check 输出时才回退自产)
forward_verification.enriched.json 等 4 处 writeback 进白名单(同一 helper metersphere_helper.py writeback-from-fv 产出,运行时互斥)
requirement_points.md 进白名单(TCG/TCR understand 阶段 fallback 自产,schema 一致;同时补 TCG contract 之前漏声明的此 output)

新增 plugins/test/contracts/known-collisions.yaml 作为白名单的真源,含「评审协定」自我约束(拒绝把语义不同同名挪进白名单)。

3. 僵尸 agent 清理(3 删 + 13 处死引用)

删除文件 依据
agents/requirement-traceability/forward-tracer.md 自标 DEPRECATED;prompt 已内联到 PHASES 3.2.4
agents/requirement-traceability/reverse-tracer.md PHASES 3.3 明示"主 agent 顺序内联,不调 Task";零真实调用
agents/failure-classifier.md test-failure-analyzer/{SKILL,PHASES} 零引用,纯"预留"文档

跨 7 个文件清理 13 处死引用(含 SKILL/PHASES/TEMPLATES/TRACEABILITY_PROTOCOL/AGENT_PROTOCOL/README)。

4. 依赖诚实化

文件 改动
shared-tools/requirements.txt 从「No third-party packages required」修正为列出 5 个真依赖(pycryptodome/pyyaml 必需 + jsonschema/python-dotenv/aiohttp 可选)
feedback/requirements.txt 新建,声明 aiohttp(feishu_api.py 必需)
feedback/contract.yaml env_vars 补 FEISHU_PLUGIN_ID/SECRET/USER_KEY(之前 [] 与脚本实际需求不符)

5. Helper 脚本 UX 一致化

5 个共享脚本现在都支持标准 -h/--help(之前 --help 会被 search_mrs.py 当 story_id 发网络请求):

  • search_mrs.py / search_prs.py:新增 USAGE 常量 + --help 拦截
  • gitlab_helper.py / github_helper.py / metersphere_helper.py:将 "未知子命令" 路径改为 if argv[1] in ("-h", "--help"): print(usage); exit 0

6. 文档完善

  • AI_CODING_BEST_PRACTICES.md / PIPELINES.md / CONTRACT_SPEC.md 三个根文档加 audience note,明示"开发者参考,非 skill 运行依赖"
  • README 目录结构补每个根文档的角色说明 + contracts/ 目录
  • CONVENTIONS L466 编号前缀表事实修正:RP- 不只 TCG review,TCG/TCR 都用且都是 understand 阶段 fallback
  • 修复 2 处断链锚点:CONVENTIONS.md#审计输出格式_shared/ASSERTION_AUDIT.md#审计输出格式
  • AGENT_TEMPLATE 扩展 sub-agent 节名例外条款(容许 case-tracer 用 ## 执行流程/输出/置信度评分 替代标准节名)
  • WORKFLOW_DEFS qa-lite 写回行为更正:从「会失败」→「优雅 skip」(与 PHASES 6.1.b 实际行为对齐)
  • integration-test-design:5 阶段从 SKILL 拆出到独立 PHASES.md(与 unit-test-design 风格对齐,SKILL 387 → 252 行)
  • feedback/SKILL.md 补 Quick Start + Closing Checklist
  • metersphere-sync/SKILL.mdlist-stages 命令文档 + stdout shape
  • change-analysis/SKILL.md 模型分层表补 codex-change-analyzer
  • 删除 metersphere-sync deprecated confidence_threshold 字段(helper 早不识别,仅 contract.yaml 占位)

无影响

  • 无 skill 行为变化(contract output 改名是为消除冲突,downstream 引用全部同步更新)
  • 无 schema 变更
  • ai-case 仓侧无需改动
  • CI 全程绿(每个修改批次都跑过 validate.sh)

🤖 Generated by Claude Code

基于 ai-case 实测样本(实体商品一期-需求评审-2026032500)逐项排查发现
report.md 模板存在 10 处影响用户阅读体验的问题,本次按飞书云文档场景
集中重构 TEMPLATES.md report.md 模板与 PHASES.md 5.1 章节描述。

10 处具体修复:
1. 删除 H1 重复标题 — 飞书 doc 名已包含「需求评审」字样,AI 再写
   `# {需求名称} - 需求评审报告` 会出现两行几乎一样的标题
2. 功能点清单格式破碎 — 原模板用 `F1 | 模块 | 描述` 半列表+分组糅合,
   渲染时分组与第 1 个功能点合并成一行;改为 `### {模块}` H3 分组
   + `- F1: 描述` 列表
3. (略)评审统计加表头 — review_checklist.md 模板已含表头,本次只
   在报告侧明确不再嵌入裸数字段
4. ASCII 状态符号 [OK]/[\!]/[X] 全面替换为 emoji ✅/⚠️/❌;新增"关键
   约束"明确禁止 ASCII 兜底
5. 删除 §7「评审完整性声明」整节 — 90% 信息与 §1 元数据 / §3 章节
   末尾计数重复,"阻断项 X% 在合理范围内" 类 AI 自评对读者无价值
6. 功能点清单 46 条过长 — 强制用 `<details><summary>` 包裹默认折叠,
   飞书云文档导入后会渲染为可展开 block
7. 维度内部编码 FB2/LC2 + UX3 等 — 全部去掉,只保留人类可读的
   「功能边界」「逻辑一致性」维度名
8. 新增 §4「时间盒清单」— 按"评审会前/会上/开发前/提测前"重新组织
   §3 + §5 的 to-do,引用编号 + 一句话动作,不重复问题原文
9. 元数据加 `分析方式:AI 辅助 + 评审会决策`,明确强调结论由人在评审
   会最终决策;不写「评审人:QA AI 助手」之类的 AI 署名(避免企业用户
   质疑结论可信度)
10. 章节序号重排:1 评审结论 / 2 需求理解 / 3 各职能问题 / 4 时间盒
    清单 / 5 风险项 / 6 评审范围声明(旧版本 1/2/3/4/5/7 跳号)

实测下一份需求评审 session 将自动按新模板生成,预期:
- 报告长度从 8.2KB 降到约 3-4KB(折叠功能点清单 + 删 §7)
- 关键 to-do 在 §4 一目了然,不需要在 §3 里翻 PM/Dev/QA 各 section 拼凑
- 飞书 doc 标题与正文不再重复

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Jun-Hex Jun-Hex requested a review from em0t as a code owner April 29, 2026 09:32
@github-actions github-actions Bot added scope:plugins Changes one or more plugins. kind:feature Adds a feature or expands behavior. size:m Medium PR. labels Apr 29, 2026
Jun-Hex and others added 2 commits April 29, 2026 17:52
PR #59 第一版本基于"看起来更好"的假设引入了 emoji ✅/⚠️/❌ 与
HTML <details><summary> 折叠 block。今天上传一份 mock report 到飞书
docx 实测结果(doc_blocks API 验证):

1. ❌ 触发飞书的 bitable block 解析逻辑,整行内容被吃掉
2. ✅ 自动转换为 [OK]、⚠️ 自动转换为 [\!]
3. <details>/<summary> HTML 标签完全被忽略,summary 内容反而成为
   误导性"点击展开"普通文本(用户实际无法点击)

立即修正 5 处:

1. 状态符号统一为中文方括号标记(飞书 import 全部原样保留):
   - 就绪度: [通过] / [有条件] / [不通过](替代 ✅/⚠️/❌)
   - 信息边界: [已获取] / [未获取] / [不完整](替代 ✅/❌/⚠️)
   - 中间产物 review_checklist.md 仍用 [已确认]/[需关注]/[待确认]/
     [不适用] 4 类,TEMPLATES 顶部新增"关于符号约定"段明确不要混用
2. 移除 <details> 折叠约束,功能点清单全量列出,按模块用 H4
   `#### {模块名}` 分组(H4 视觉权重比 H3 低,不打乱大纲)
3. 关键约束新增 emoji 与 details 的禁用说明,附实测原因

同步本次审查发现的另 4 处结构问题(A1/A2/A4/F2):

4. TEMPLATES.md 目录写"7 章结构定义"但实际 6 章,已纠正
5. review_checklist.md 模板章节序号 ## 三、出现两次(标准 QA
   Checklist + 文档-设计稿交叉比对),重排为 三/四/五
6. SKILL.md 意图识别表新增 smoke-test / test-case-generation
   的引导,避免用户说"做冒烟测试"被错配
7. SKILL.md output 阶段 chat 输出措辞与 PHASES.md 5.2 对齐,
   明确 chat 给指标摘要 + 飞书链接,详细模板见 PHASES.md
8. TEMPLATES.md 三、标准 QA Checklist 表头明确引用
   CHECKLIST.md 的具体检查项,AI 不需要重新发明

实测验证:
- 用最新模板生成 mock report 上传飞书,58 个 block 全部正确渲染
- 0 emoji 残留、0 ASCII [OK] 残留、0 HTML 标签残留
- H2/H3/H4 三级标题层次正常,bullet list、§4 时间盒结构完整

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
test-case-review skill 之前没有 TEMPLATES.md,summary 阶段产出的
review_summary.md 完全靠 AI 自由发挥,导致实测样本(分包上传 DC 开放
入口-用例评审-2026-03-04)出现以下问题:

1. §1 评审总览、§2.1 覆盖映射、§3.2 缺失场景、§4.1 / §7 全部用
   markdown 表格,飞书 import 后被拆成离散 text/bullet block,看起来
   是散文不是表格(实测 5 处 ≈ 31 行散行)
2. emoji ✅/⚠️ 大量使用,飞书 import 会自动转 [OK]/[\!],且 ❌ 还会
   触发 bitable block 解析(详见 PR #59 D1 验证结论)
3. 缺"用例就绪度判定"——读者读完不知道这套用例算不算通过评审
4. §4 / §5 / §6 严重重叠:§6 改进建议高/中/低 15 条 ≈ 1:1 复述
   §4 (6 条) + §5 (9 条)
5. 同一用例(如 b3769bb8)在 §3 / §4 / §5 多处被点名,修复者要来回
   翻才能拼出"这个用例到底要改什么"
6. "QA AI 助手自动生成"署名削弱企业用户对结论的可信度

新增 TEMPLATES.md 强约束 8 节结构(0-7):
- §0 评审结论:用例就绪度判定 [通过]/[有条件]/[不通过] + 待修复分级
- §1 评审总览:核心指标 + 覆盖率目标线 ≥ 90%
- §2 需求覆盖率:已覆盖/部分覆盖/未覆盖 三组分别列出(不用表格)
- §3 场景完整性:端到端不闭环 + 缺失边界场景按需求点分组
- §4 用例正确性 / §5 用例规范性
- §6 修复 to-do(按用例 ID 分组):核心可执行价值章节,跨章节问题
  汇总到一起,用例 ID 行用粗体 + 待办行用 `· ` 前缀保留层次
- §7 建议补充的用例

关键约束("关键约束"小节):
- 禁止 markdown 表格(飞书 import 散行)
- 禁止 emoji ✅/⚠️/❌(飞书 import 会破坏内容)
- 禁止 §6 复述 §3/§4/§5 详情(用章节编号引用即可)
- 禁止 AI 助手署名(用「分析方式:AI 辅助 + 评审人决策」)
- 不写 H1(飞书 doc 名已包含「{需求名称}-用例评审-{YYYYMMDDHH}」)
- §6 to-do 用「粗体用例 ID + `· ` 前缀」保层次(飞书会拍平嵌套
  bullet 但 bold + `·` 字符可视觉区分)

同步更新:
- PHASES.md 5.4 引用新 TEMPLATES,列出 8 节结构
- SKILL.md 中间文件清单标注 review_summary.md 是飞书最终产物

实测验证(mock 报告 88 个 block):
- 0 emoji 残留 / 0 ASCII 残留 / 0 表格触发 / 0 bitable 触发
- §6 用例 ID 行带 [BOLD] 标记,待办行无粗体 + `·` 前缀
- 所有中文方括号标记([有条件]/[已覆盖]/[P0]/[完整性] 等)原样保留

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Jun-Hex Jun-Hex changed the title feat(test/requirement-review): 优化飞书报告 10 处可读性问题 feat(test): 优化飞书报告可读性 — requirement-review + test-case-review Apr 29, 2026
@github-actions github-actions Bot added size:l Large PR. and removed size:m Medium PR. labels Apr 29, 2026
change-analysis skill 之前没有 TEMPLATES.md,code_change_analysis.md
和 test_coverage_report.md 完全靠 AI 自由发挥,导致实测样本
(进社区默认落 tab 实验-变更分析-2026042310)出现以下问题:

1. 8 张 markdown 表格全部触发飞书 import 散行(变更分组、API 模型、
   论坛模块、4.1 直接影响、4.2 间接影响、置信度、PR Test plan、
   覆盖率汇总)— 是 4 份报告中表格密度最高的
2. ASCII [OK]/[X]/[\!] 大量使用(飞书 import 的自动转换结果)
3. ★/★★/★★★ 风险标记与跨 workflow 的 [阻断]/[高]/[中]/[低] 不统一
4. 缺"分析就绪度"全局判定 — 读者读完不知道这次变更算低/中/高风险
5. 第五节"置信度说明"放最后 — 读完 9KB 才发现某些结论是推测
6. multi-doc 间无交叉引用 — code_change_analysis §4.4 回归范围、
   test_coverage_report §2 缺口、ca_sup TC 用例 三处信息互相孤立
7. 覆盖率统计含糊 — "总关键变更点约 13 个 → 约 54%" 没声明依据
8. 代码 diff 块极长(Swift 源码)夹在自然语言报告中,PM/QA 视角下
   显得冗余但 Dev 又需要

新增 TEMPLATES.md 强约束 2 份报告:

【code_change_analysis.md】6 节
- §0 变更评估:变更风险 [低]/[中]/[高] + 实证 vs 推测占比
- §1 变更分组总览(H3 + bullet,不用表格)
- §2 核心变更深度(每条结论行尾标 [实证]/[推测])
  * 代码 diff 块前必须加 quote 提示「以下仅 Dev 可跳过」
- §3 调用链分析(代码块保留 ASCII 树)
- §4 影响面评估(4.1/4.2 用 bullet;4.4 回归范围必须 → 详见 [测试覆盖
  评估] 缺口 N 跨文档引用)
- §5 置信度索引(实证 vs 推测占比 + 章节列表,作索引不重复结论)

【test_coverage_report.md】5 节
- §0 覆盖率结论:测试覆盖 [已达标]/[有缺口]/[严重不足] + 精确总变更
  点数(禁止"约 N 个")+ 覆盖率目标线 ≥ 80%
- §1 PR Test Plan 覆盖(bullet 列表)
- §2 测试覆盖缺口分析(每缺口 → 详见 [代码变更分析] §X 跨引 + → ca_sup
  TC-XX 反向引用)
- §3 覆盖率汇总(已覆盖/未覆盖/待评估三组列表,末尾给精确公式)
- §4 高优先级补充测试建议(双向引用缺口 + TC-XX)

关键约束("关键约束"小节):
- 禁止 markdown 表格(飞书 import 散行)
- 禁止 emoji ✅/⚠️/❌(飞书 import 破坏内容)
- 禁止 ASCII [OK]/[\!]/[X](跨 workflow 语义漂移)
- 禁止 ★/★★/★★★(与跨 workflow 分级符号不统一)
- 代码 diff 块前必须加 quote 提示
- multi-doc 必须双向引用
- 置信度逐条标注 [实证]/[推测]
- 覆盖率统计必须精确,禁止"约 N 个"

同步更新:
- PHASES.md 阶段 4 / 阶段 5 引用新 TEMPLATES,列出章节结构
- SKILL.md Story 场景 7 阶段表加 TEMPLATES 链接 + 飞书 multi-doc 说明

实测验证(mock report 35 个 block):
- 0 emoji 残留 / 0 ASCII 残留 / 0 表格触发 / 0 star 残留
- code block + quote block 正常渲染
- bold 标记保留(§0 元数据、变更点标题、§5 占比)
- 中文方括号 [高]/[中]/[实证]/[推测] 全部原样保留

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Jun-Hex Jun-Hex changed the title feat(test): 优化飞书报告可读性 — requirement-review + test-case-review feat(test): 优化飞书报告可读性 — requirement-review + test-case-review + change-analysis Apr 29, 2026
冒烟测试 workflow 复用 requirement-traceability skill 的 smoke-test
模式,但之前 PHASES.md 只约束了 smoke_test_report.json 结构化输出,
没约束最终上传到飞书云文档的 report.md 人类可读报告格式。

实测样本(插件升级提示-冒烟测试报告-2026040710)暴露的问题:

1. 5 张 markdown 表格全部触发飞书 import 散行(基本信息 + 指标 +
   P0 用例评估 + 需求覆盖矩阵 + 代码变更追溯)— 与 ca 并列最多
2. 装饰性 emoji 章节前缀 📋/🐛/📊/💡 被飞书自动转为 [Doc]/[Bug]/
   [Chart]/[Tip] ASCII 形式
3. ⭕ 范围外 emoji 也被破坏
4. ASCII [OK]/[\!] 大量使用
5. 冒烟结论位置不在第一行(必须先看完基本信息表格)
6. 缺陷代码块过长(Kotlin 源码)无 Dev 跳过提示
7. 置信度散落各需求点(87%/75%/85%)但无整体均值汇总
8. 缺陷与用例的关联线弱(DEF-01 关联用例不在 P0 评估 6 条中)
9. "未追溯变更:0 个(无范围蔓延)" 含糊,PM 不懂"范围蔓延"
10. "本报告由 QA AI 助手...自动生成" 署名削弱可信度

新增 TEMPLATES.md「report.md(smoke-test 模式专用)」节,6 节强约束:
- §0 冒烟测试结论(首行 `判定:[通过]/[不通过]` + 整体置信度均值)
- §1 核心指标(bullet 列表,不用表格)
- §2 P0 用例评估(标题必须 `共 N/总数` 明确分子分母)
  * 用粗体用例 ID + bullet `· ` 前缀(参照 test-case-review §6 模式)
- §3 双通道追溯结论(§3.1 需求覆盖矩阵 + §3.2 代码变更追溯)
  * §3.2 末尾未追溯变更必须明确表述(禁止"无范围蔓延"含糊文案)
- §4 缺陷清单(每个 DEF 的代码块前必须加 quote 提示「以下代码块
  仅 Dev 排查时阅读」)
- §5 其他观察(粗体短词分类)

关键约束("关键约束"小节):
- 禁止 markdown 表格(飞书散行)
- 禁止 emoji ⭕/✅/⚠️/❌(⭕ 转乱码、❌ 触发 bitable)
- 禁止 ASCII [OK]/[\!]/[X](跨 workflow 语义漂移)
- 禁止装饰性 emoji 章节前缀 📋/🐛/📊/💡(飞书自动转 ASCII)
- 禁止「QA AI 助手」署名
- 代码块前必须加 quote 提示
- §2 标题必须明确分子分母(共 N/总数)
- §3.2 未追溯变更必须明确表述
- 置信度逐条标注且需汇总到 §0

同步 PHASES.md 5S.2:在 defect_list.json + smoke_test_report.json
两个产物之间新增第 3 步「写入 report.md」,引用 TEMPLATES 中 6 节
结构定义。

实测验证(mock report 53 个 block):
- 0 emoji 残留 / 0 ASCII 残留 / 0 表格触发 / 0 装饰性章节前缀
- bold 标记保留(§0 元数据/缺陷字段名/§5 分类)
- 中文方括号 [通过]/[待定]/[已覆盖]/[范围外]/[P0]/[推测] 全部原样

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Jun-Hex Jun-Hex changed the title feat(test): 优化飞书报告可读性 — requirement-review + test-case-review + change-analysis feat(test): 优化飞书报告可读性 — 4 大业务 workflow(rr/tcr/ca/smoke) Apr 29, 2026
@github-actions github-actions Bot added size:xl Very large PR, expect slower review. and removed size:l Large PR. labels Apr 29, 2026
PHASES.md 5.2 chat 输出文案 '单 Agent 串行' 与 schema enum
['multi_perspective', 'single_agent'] 不一致,AI 在写
rr_summary.json 时直译 '串行' → 'serial' 拼出 single_agent_serial,
触发 contracts/rr-summary.schema.json 校验违规(非阻断但污染
output_data._schema_violations)。

修复:
1. 5.2 文案从 '单 Agent 串行' 改为 '单 Agent'(与 enum 对齐)
2. 5.1.5 约束清单补一条 review_mode 枚举说明 + 黑名单
   single_agent_serial/serial 变体,与 verdict 同样的强制写法

实测案例:ai-case session 248 完成时触发该违规,verdict + 49
issues 均正常,仅 review_mode 字段被污染。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…isions resolved

A systematic review covering all 16 skills, 10 agents, 5 contract schemas, and shared
infrastructure (CONVENTIONS.md, CONTRACT_SPEC.md, root docs). Lifts version 0.0.8 → 0.0.17.

Highlights:

CI baseline (tests/validate.sh): 5 → 9 check categories.
- Add Check 10/11/12/13: SKILL frontmatter name vs dir, handoffs targets, subagent
  references, references/* paths (test plugin scope only)
- Add Check 14: cross-skill contract.yaml consistency via validate_contracts.py +
  known-collisions.yaml allowlist (primary+fallback / shared-helper patterns)
- Extend tests/check-schemas.sh: 1 → 5 schemas (testcase / ca-summary / defect-list
  / rr-summary / smoke-test-report) with ~30 negative samples
- Fix sandbox false-green: new_tmpdir hard-fails on mktemp denial

Zombie agent cleanup: 3 deleted, ~13 dead refs cleaned.
- agents/requirement-traceability/forward-tracer.md (DEPRECATED, prompt inlined to
  PHASES 3.2.4)
- agents/requirement-traceability/reverse-tracer.md (already 'main agent inline' per
  PHASES 3.3, zero Task calls)
- agents/failure-classifier.md (zero refs in test-failure-analyzer/{SKILL,PHASES})

Contract collision resolution (8 detected → 4 renamed + 4 allowlisted):
- risk_assessment.json: change-analysis renamed to bug_risk_assessment.json
- test_execution_report.json: split into unit_test_execution_report.json /
  integration_test_execution_report.json
- supplementary_cases.json (3-way): change-analysis → change_supplementary_cases.json,
  test-case-review → review_supplementary_cases.json, test-case-generation keeps
  canonical (internal scratch)
- ui_fidelity_report.json + 4 writeback files + requirement_points.md: allowlisted as
  primary+fallback or shared-helper outputs

Dependency honesty:
- shared-tools/requirements.txt: corrected from 'stdlib only' to list pycryptodome /
  pyyaml (required) + jsonschema / python-dotenv (optional)
- feedback/requirements.txt: new, declares aiohttp (required by feishu_api.py)
- feedback/contract.yaml: env_vars now includes FEISHU_PLUGIN_ID/SECRET/USER_KEY

Helper UX consistency: 5 scripts now support -h/--help cleanly (search_mrs/prs,
gitlab/github/metersphere helper).

Documentation:
- 3 root-level docs (AI_CODING_BEST_PRACTICES / PIPELINES / CONTRACT_SPEC) tagged
  with audience notes (developer references, not runtime deps)
- README目录结构: each root doc annotated with role
- CONVENTIONS L466 numbering prefix table fixed: RP- belongs to TCG/TCR understand
  (not 'TCG review')
- 2 broken anchors fixed: CONVENTIONS.md#审计输出格式 → _shared/ASSERTION_AUDIT.md
- AGENT_TEMPLATE: section-name exception extended for sub-agents (case-tracer)
- WORKFLOW_DEFS qa-lite: writeback behavior corrected from 'will fail' → 'gracefully
  skip' (matches PHASES 6.1.b actual behavior)
- integration-test-design: 5 phases extracted to PHASES.md (matches unit-test-design
  pattern)
- feedback SKILL: added Quick Start + Closing Checklist
- metersphere-sync: documented list-stages command + stdout shape
- change-analysis SKILL: added codex-change-analyzer to model layering table
- metersphere-sync deprecated confidence_threshold field removed (helper已ignored
  since v0.0.16; safe to drop)

CI: 79 PASS / 0 FAIL, EXIT=0.
@github-actions github-actions Bot added scope:tests Changes tests or validation coverage. maintainer-review High-risk change that should be reviewed by a repository maintainer. labels Apr 30, 2026
@Jun-Hex Jun-Hex changed the title feat(test): 优化飞书报告可读性 — 4 大业务 workflow(rr/tcr/ca/smoke) chore(test): 飞书报告可读性优化 + 全量 skill 评审 + CI 基线加固 (v0.0.8 → 0.0.17) Apr 30, 2026
@github-actions github-actions Bot added kind:chore Maintenance or configuration change. and removed kind:feature Adds a feature or expands behavior. labels Apr 30, 2026
…reakdown 正反例 (v0.0.18)

ca-summary.schema.json:
- 删 scenario 字段(无 backend / 无下游 skill 消费)
- risk_count description 加防混淆说明(指明 integer 总数,分桶用 risk_breakdown)
- risk_breakdown description 加示例

rr-summary.schema.json:
- 删 role_breakdown 字段(前端不展示,下游也未读)
- 删 review_mode 字段(无消费方)

change-analysis/PHASES.md:
- ca_summary example 调整字段顺序:risk_breakdown 前 risk_count 后,避免 AI 边读边写时把 dict 错填到 risk_count(304 实证 confusion)
- 加正反例对比块,明确"分桶 dict 应放 risk_breakdown 而非 risk_count"
- 删 scenario 相关约束行

requirement-review/PHASES.md:
- rr_summary example 删 role_breakdown / review_mode
- 约束段同步删除

contract.yaml:
- ca/rr description 同步去掉已删字段

tests/check-schemas.sh:
- 同步移除 scenario / role_breakdown / review_mode 的 valid sample 与负样本

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind:chore Maintenance or configuration change. maintainer-review High-risk change that should be reviewed by a repository maintainer. scope:plugins Changes one or more plugins. scope:tests Changes tests or validation coverage. size:xl Very large PR, expect slower review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant