← 返回
未分类

TNG_PMO需求管理

PMO 需求追踪完整工作流技能,覆盖数据清洗到看板生成全流程。当用户提到PMO看板、需求追踪看板、生成看板、PMO助手、清洗PMO数据、生成需求燃尽图时触发。自动完成读取需求收集表和Matrix项目数据、数据清洗、数据合并,最终生成离线可用的HTML交互式看板。
PMO 需求追踪完整工作流技能,覆盖数据清洗到看板生成全流程。当用户提到PMO看板、需求追踪看板、生成看板、PMO助手、清洗PMO数据、生成需求燃尽图时触发。自动完成读取需求收集表和Matrix项目数据、数据清洗、数据合并,最终生成离线可用的HTML交互式看板。
user_c4c7fba7
未分类 community v1.0.4 5 版本 100000 Key: 无需
★ 0
Stars
📥 113
下载
💾 0
安装
5
版本
#latest

概述

PMO Assistant Skill

本技能覆盖 PMO 需求追踪的完整工作流:从原始 Excel 数据清洗 → 合并 → 看板生成。

触发条件

  • 用户说"PMO 看板"、"需求追踪看板"、"生成看板"
  • 用户说"清洗 PMO 数据"、"清洗需求数据"
  • 用户说"PMO 助手"、"需求燃尽图"

完整工作流

第一阶段:数据清洗与合并

输入文件:

  • 需求收集表.xlsx(原始需求数据,含2行合并表头)
  • Matrix项目数据.xlsx(Matrix 项目数据)

输出文件:

  • 合并需求数据_清洗后.xlsx(含 合并数据按业务线拆分 两个 Sheet)

执行步骤:

Step 1:运行合并清洗脚本

cd {工作目录}
python3 scripts/merge_data.py

脚本自动完成:

  • 读取两个输入文件(自动处理2行表头)
  • 清洗字符串列(strip()、处理 nan)
  • 统一状态字段(归一化为9种标准状态)
  • 生成一级状态字段(未开始/进行中/已完成)
  • 外连接合并(以 Matrix ID 为键)
  • 输出到 合并需求数据_清洗后.xlsx(Sheet: 合并数据

Step 2:按业务线拆分

python3 scripts/split_by_business_line.py

脚本自动完成:

  • 读取 合并需求数据_清洗后.xlsx 第一个 Sheet
  • 业务线(212982) 字段中含逗号的记录拆分为多条
  • 结果写入新 Sheet 按业务线拆分
  • 供看板生成脚本使用

注意merge_data.py 中的输入输出路径是硬编码的,如果用户提供了不同路径,需要先修改脚本中的 file1_pathfile2_pathoutput_path 变量。

第二阶段:生成看板

读取 合并需求数据_清洗后.xlsx(sheet: 按业务线拆分),生成 PMO看板.html

执行:

cd {工作目录}
python3 scripts/generate_dashboard_data.py

脚本自动完成:

  • 过滤数据只保留 2026 年及以后(创建时间 >= 2026-01-01
  • 计算周度/月度趋势、吞吐量、燃尽图数据
  • 计算各业务线完成率(含排序列表 biz_completion_list
  • 生成完整 HTML 文件(含嵌入式 DATA 对象,本地 Chart.js 文件)

第三阶段:验证与交付

# JS 语法检查
cd {工作目录}
node -e "
const fs=require('fs');
const html=fs.readFileSync('PMO看板.html','utf8');
const m=html.match(/<script>[\s\S]*?<\/script>/g);
let js='';m.forEach(s=>{js+=s.replace(/<\/?script>/g,'');});
try{new Function(js);console.log('JS 语法正常');}catch(e){console.log('JS 错误:',e.message);}
"

验证通过后,用 deliver_attachments 交付 PMO看板.html

用户可直接用浏览器打开(file:// 协议,离线可用)。

看板内容

图表说明
------------
汇总卡片需求总量、已完成、进行中、完成率、业务线数
周度/月度趋势新增 vs 完成条形图
周度/月度吞吐量完成-新增,绿色为正、红色为负
燃尽图(周度/月度)剩余未完成需求折线图
需求优先级分布饼图(高/中/低)
业务线完成度横向条形图,按完成率降序,显示 完成率%(已完成/总数)
各业务线状态分布堆叠条形图
业务线甘特图浮条时间线图,按需求着色(已完成=绿、进行中=蓝),动态高度

核心文件

文件位置说明
------------------
merge_data.pyscripts/数据清洗与合并(去空格、状态归一化、外连接合并)
split_by_business_line.pyscripts/按业务线拆分(逗号分隔的业务线拆分为多条记录)
generate_dashboard_data.pyscripts/看板生成脚本(读取清洗后Excel → 生成HTML)
chart.min.jsassets/Chart.js 本地副本(v4.4.1)
chartjs-plugin-datalabels.min.jsassets/datalabels 插件本地副本

关键实现细节

数据过滤

只保留 创建时间 >= 2026-01-01 的数据,避免历史数据干扰。

biz_completion_list

Python 生成已排序的列表(按完成率降序),含 name/rate/done/total 字段,

JS 直接使用数组渲染,避免字典查找导致 undefined。

动态高度

业务线完成度图表根据业务线数量动态设置高度:Math.max(300, 条数 × 44)px

图表 ID 命名规范

  • 汇总看板:ch-weekly-trend, ch-monthly-trend, ch-weekly-tp, ch-monthly-tp, ch-weekly-burndown, ch-monthly-burndown, ch-priority, ch-biz-completion, ch-biz-status
  • 业务线看板:ch-b- 前缀

JS 防御性编程

每个图表渲染用独立 try-catch,单个图表失败不影响其他图表。

常见问题

Q: 图表显示 undefined?

A: 通常是浏览器缓存了旧版 HTML,按 Cmd+Shift+R 强制刷新。

Q: 业务线完成度显示 (undefined/undefined)?

A: datalabels formatter 第二个参数是 context 对象,需用 ctx.dataIndex 取索引,不能直接用 i

Q: 想调整图表顺序?

A: 修改 scripts/generate_dashboard_data.py 中 HTML 模板部分的卡片顺序。

Q: 发给同事后打开报错 Chart is not defined?

A: HTML 使用 CDN 加载 Chart.js(jsdelivr),需要联网。如果同事在内网无法访问外网,需要把 chart.min.js 和 chartjs-plugin-datalabels.min.js 和 HTML 放在同一目录。

Q: 合并后数据量与预期不符?

A: 检查 merge_data.py 中 Matrix ID 格式是否一致。如果 file1 的 ID 带 .0 后缀而 file2 不带,会导致外连接匹配失败。脚本已内置 .0 后缀清理逻辑。

Q: 企微导出的 Excel 报错 Fill() takes no arguments?

A: openpyxl 3.1.x 与部分 Excel 样式不兼容。merge_data.py 已内置猴子补丁解决。

Q: 看板文件覆盖了历史版本?

A: 每次生成看板文件名自动带日期(如 PMO看板_20260526.html),历史版本不会被覆盖。

变更记录

2026-05-26

  • Matrix ID 标准化merge_data.py 中 file1 和 file2 的 Matrix ID 统一去 .0 后缀,解决外连接匹配失败导致的数据偏差(349 → 363)
  • 处理优先级 NaN 填充merge_data.py 中缺失的 处理优先级 字段默认填"中",解决优先级分布饼图为空的问题
  • CDN 引用generate_dashboard_data.py 中 Chart.js 和 datalabels 改用 jsdelivr CDN 加载,解决分享时外部 JS 文件找不到的问题
  • 文件名加日期generate_dashboard_data.py 输出文件名格式为 PMO看板_YYYYMMDD.html,避免覆盖历史版本
  • 业务线图表数据修复generate_dashboard_data.pyweekly_new_biz 等 6 个字段改为 {业务线: {周: 数量}} 索引顺序,修复业务线看板图表为空的问题
  • 企微 Excel 兼容merge_data.py 新增 openpyxl Fill 猴子补丁和 safe_read_excel 函数,解决企微导出 Excel 样式解析崩溃的问题

2026-06-01

  • 业务线甘特图generate_dashboard_data.py 中新增 gantt_biz 数据计算和各业务线甘特图渲染。选中业务线后,在走势图下方显示该业务线的需求时间线(浮条图),按状态着色(已完成=绿、进行中=蓝、其他=灰),支持动态高度和日期格式化 tooltip。

版本历史

共 5 个版本

  • v1.0.4 Initial release 当前
    2026-06-01 11:19 安全 安全
  • v1.0.3 Initial release
    2026-05-26 15:36 安全 安全
  • v1.0.2 Initial release
    2026-05-26 13:24 安全 安全
  • v1.0.1 Initial release
    2026-05-13 11:05 安全 安全
  • v1.0.0 Initial release
    2026-05-12 09:23 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,219 📥 266,762
ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误和纠正,以实现持续改进。使用时机:(1)命令或操作意外失败;(2)用户纠正……
★ 4,061 📥 799,115
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 672 📥 324,437