L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

defect-report-generator

defect-report-generator

将缺陷/任务清单 CSV 自动转换成一份自包含的 HTML 测试缺陷报告。当用户给出一份 CSV(含任务状态/标题/负责人/模块/逾期等列)并要求"生成测试报告""出一份缺陷分析报告""根据缺陷清单做统计报告"时使用。脚本仅用 Python 标准库,图表为内联 SVG + CSS(无 CDN),离线可打开。也适用于任务清单、Bug 列表、工单导出的质量分析。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: defect-report-generator description: 将缺陷/任务清单 CSV 自动转换成一份自包含的 HTML 测试缺陷报告。当用户给出一份 CSV(含任务状态/标题/负责人/模块/逾期等列)并要求"生成测试报告""出一份缺陷分析报告""根据缺陷清单做统计报告"时使用。脚本仅用 Python 标准库,图表为内联 SVG + CSS(无 CDN),离线可打开。也适用于任务清单、Bug 列表、工单导出的质量分析。 agent_created: true

Defect Report Generator(缺陷/任务清单 → 测试报告)

Overview

把一份缺陷(或任务/工单)CSV 清单,一键生成一份自包含、可离线打开的 HTML 测试缺陷报告。 报告包含:KPI 概览卡片、状态分布环形图、模块分布条形图、各模块状态明细表、负责人分布、 未完成(未关闭)缺陷清单、逾期清单、测试结论与改进建议、数据说明共 8 个章节。

设计要点:仅依赖 Python 标准库(csv/re/math/html/argparse),不联网、不装包;图表手写内联 SVG + CSS,因此双击 HTML 即可打开,不会因缺 CDN 而白屏。

WHEN to use

  • 用户给出一份 CSV 并说:"生成测试报告 / 出缺陷分析报告 / 根据这份清单做统计 / 帮我看看缺陷情况"。
  • 源文件是缺陷管理、Bug 跟踪、任务看板(TAPD/Jira/禅道等)导出的 CSV。
  • 任务列表、工单列表、需求清单的"质量/进度"分析同样适用(列结构相同即可)。

Workflow(使用流程)

  1. 确认输入:拿到 CSV 路径。若用户没给标题/项目名/测试周期,可用 --title / --project / --period 覆盖,或从 CSV 表头(项目列、开始/截止列)自动推断。
  2. 运行脚本(隔离 Python 环境,不要污染用户系统):
    /Users/zhushengping/.workbuddy/binaries/python/versions/3.13.12/bin/python3 \
      ~/.workbuddy/skills/defect-report-generator/scripts/generate_report.py \
      "<CSV路径>" -o "<输出HTML路径>" \
      [--title "报告标题"] [--project "项目名"] [--period "2026-07-10 ~ 2026-07-31"]
    
  3. 核对输出:脚本会打印总数、各状态计数、未关闭数、逾期数、解决率、关闭率。 与业务预期对一下(例如"已验收=45、未关闭=11"是否合理)。
  4. 交付:用 present_files 打开 HTML 预览交付;有必要则补充说明口径。

列自动识别规则(无需固定表头)

detect_columns() 按关键词模糊匹配表头,定位以下列(找不到则为空,统计降级):

逻辑列命中关键词
状态状态 / status
标题标题 / title / 名称 / summary / 主题 / 描述
负责人负责人 / 处理人 / owner / assignee / 经办
模块模块 / module
逾期逾期 / overdue / late
任务ID任务id / 缺陷id / bug id / id / 编号 / 序号
项目/开始/截止项目 / 开始 / 截止·due·完成日期·结束
  • 模块优先从标题首段 【xxx】 或 [xxx] 解析(extract_module),无括号才回退到模块列,都没有记"未分类"。
  • 编码按 utf-8-sig → utf-8 → gbk → gb18030 依次尝试,兼容带 BOM / 中文导出的 CSV。

状态映射规则(6 桶模型)

业务状态千奇百怪,脚本用关键词顺序匹配把它们归一成 6 个标准桶 (CANON_RULES,顺序很重要,先匹配更具体的):

标准桶命中关键词(节选)业务含义
已验收已验收/已关闭/验收/closed/verified/已解决测试确认关闭
已拒绝已拒绝/拒绝/rejected/wontfix/不予修复/不是缺陷/设计如此/重复/不修复开发拒绝或无效缺陷(视为已处理)
修复中修复中/处理中/进行中/in progress/开发中处理中
已修复已修复/修复/fixed/resolved待验证
待确认待确认/待处理/待验证/待修复/pending/新建/打开/重新打开/待未关闭
其他(以上都不匹配)无法归类

口径:「未关闭」= 已修复 + 修复中 + 待确认 + 其他; 「解决率」= (已验收 + 已拒绝) / 总数;「关闭率」= 已验收 / 总数。

⚠️ 维护提示:若"修复中"被错误并入"已修复",说明 CANON_RULES 里 修复中 元组不在 已修复 之前, 保持顺序即可(修复中 必须在 已修复 之上,否则子串"修复"会把两者吞掉)。

输出报告章节

  1. 顶部信息条(项目 / 测试周期 / 生成日期 / 总数)
  2. KPI 卡片:缺陷总数、已验收、已拒绝、未关闭、逾期
  3. 一、缺陷状态分布(环形图 + 图例 + 解决进度说明)
  4. 二、缺陷模块分布(条形图,Top10 + 其他)
  5. 三、各模块状态明细表
  6. 四、负责人分布
  7. 五、未完成(未关闭)缺陷清单
  8. 六、逾期情况
  9. 七、测试结论与建议(结论 + 改进建议两栏)
  10. 八、数据说明与局限

局限与扩展

  • 原数据若缺严重程度 / 优先级 / 发现版本等字段,报告不做相应分析(已在"数据说明"注明)。
  • 可在脚本中扩展 CANON_RULES 适配更多状态词;需要 Word/PDF 输出可叠加 docx/pptx 技能。
  • 换一份同结构 CSV,改路径重跑即更新,无需改代码。

Resources

scripts/

  • generate_report.py —— 核心脚本,标准库实现,见上方"使用流程"。
Skills enregistrées