← 返回
未分类 Key

发布变更分析助手

user_3086da4f
未分类 community v1.0.3 4 版本 100000 Key: 需要
★ 0
Stars
📥 143
下载
💾 9
安装
4
版本
#latest

概述

智研发布数据分析

概述

本技能用于从智研平台获取导航技术中心和服务架构中心的发布数据,进行多维度分析,生成可视化报告。

前置准备

首次使用时需要配置以下Token,配置一次后会持久化到本地文件,后续使用无需再配。

1. 智研Token(必须,用于拉取发布数据)

检查 ~/.zhiyan_token 是否存在。如果没有,引导用户:

> 请访问 https://zhiyan.woa.com/permission/#/access-token/private ,登录智研平台 → 右上角头像 → 访问控制 → Token权限管理 → 个人账号 → 查看个人令牌,将令牌贴给我。

用户贴回Token后,自动写入 ~/.zhiyan_token

Token验证:拿到Token后,立即对6个项目空间各查1条数据验证权限:

# 验证逻辑:对每个project_id查page_size=1
for pid in [10323, 10988, 10990, 9259, 8934, 9251]:
    # 调用 query_order_list,检查返回 total > 0
  • 全部通过 → 告知用户"Token验证通过,6个项目空间均可访问"
  • 部分失败 → 告知用户哪些项目无权限,引导用户在智研平台申请对应项目空间的查看权限

2. TAPD Token(L3报告需要,用于计算Lead Time)

检查 ~/.tapd_token 是否存在。如果没有,引导用户:

> 请访问 https://tapd.woa.com/platform/myhome?not_direct=1&from=mcp#tab=tab-mytoken ,点击"创建个人访问令牌"。令牌仅显示一次,请妥善保存,然后贴给我。

用户贴回Token后,自动写入 ~/.tapd_token

Token验证:拿到Token后,立即对发布量最大的TAPD workspace各查1条验证权限:

# 验证逻辑:对每个workspace_id调用 GET /stories?workspace_id={ws}&limit=1
# 导航Top 6 + 服务架构Top 4
for ws in ['20423769', '20415762', '10133271', '70158606', '70144814', '10111831',
           '69991854', '10026301', '70106726', '70094753']:
    # 检查返回 status=1
  • 全部通过 → 告知用户"TAPD Token验证通过,发布量最大的10个TAPD空间均可访问。实际发布关联的TAPD空间较多,如后续遇到个别需求标记为'无权限',可按提示单独申请对应空间的权限"
  • 部分失败 → 告知用户哪些TAPD空间无权限,这些空间的需求Lead Time将标记为"无权限",引导用户在TAPD申请对应项目的成员权限

> 注意:如果用户只使用L1(快速查数)和L2(标准报告),不需要TAPD Token。仅在用户要求Lead Time分析时才需要。

核心流程

用户提问 → 意图识别 → 参数确认 → 数据获取 → 数据分析 → 产物输出

Step 1:意图识别与参数提取

从用户提问中提取三个关键参数:

1.1 时间范围

用户表述解释
---------------
"过去一周"最近 7 天
"过去一个月"最近 30 天
"昨天"昨天那一天
模糊表述必须和用户确认

1.2 查询范围

场景A — 整体查询:用户问"导航整体/导航中心"→ 查询导航的4个智研项目(10323/10988/10990/9259);用户问"服务架构"→ 查询服务架构的2个项目(8934/9251);用户问"地图网关"→ 仅查8934;用户问"引擎后台"→ 仅查9251。

场景B — 按业务方向查询:用户指定了业务板块(如"诱导""路线")→ 需要映射到具体的项目和 plm_app[].name

映射策略:静态表打底 + 动态查询兜底

  1. 先查静态映射表(见 references/数据分析字段映射.md §4.2),用用户口语匹配业务方向
  2. 精确命中(用户口语完全等于映射表中的某个口语关键词)→ 直接使用,无需确认
  3. 模糊命中(用户说的词接近但不完全等于,如"ETA""诱导服务")→ 列出最接近的方向,和用户确认
  4. 完全匹配不上 → 从智研 API 动态拉取 plm_app 列表让用户选
  5. 确认后,将 plm_app 列表以逗号分隔传入 --plm_filter,project_id 列表传入 --project_ids

注意:无 plm_app 字段的审批单类型(交付流紧急部署单、发布评审单)会被 plm_filter 过滤掉,应在报告中提示用户此限制。

场景C — 按人查询:用户指定了发布人 → 按 creator 过滤。

场景D — 按类型过滤:用户指定了发布类型或变更意图 → 按对应字段过滤。

场景E — 时间对比:用户要对比两个时间段 → 分别拉取两段数据。

1.3 产物级别

级别产物包含内容适用场景
:---:------------------------
L1快速查数直接回答数字/列表,不生成报告场景C/D/F,或用户只要数字
L2标准报告完整 HTML 分析报告,不含 Lead Time场景A/B/E,用户要报告但不想等太久
L3完整报告完整 HTML 分析报告, Lead Time用户明确要求 Lead Time 分析

产物级别判断规则

  • 用户说"快速看看""多少次""谁最多"等 → 默认L1
  • 用户说"发布情况""分析一下""生成报告"等 → 默认L2,但要告知用户:

> "我将为你生成完整的发布分析报告。默认不包含需求Lead Time分析(因为需要逐条查询TAPD,耗时较长)。如果你需要研发效能/Lead Time数据,告诉我,我可以一并计算。"

  • 用户明确提到"Lead Time""研发效能""完整报告"等 → L3
  • 不确定时才询问用户

L1 场景下 --skip_detail 使用规则

变更意图分类依赖"标题+发布详情"做关键词匹配,skip_detail会导致意图分类严重不准。因此:

查询类型是否可用 skip_detail
---------:---:
按人过滤/排名(不涉及意图)✅ 可以
按审批单类型过滤(不涉及意图)✅ 可以
按变更意图过滤/统计/分布❌ 禁止
生成报告(L2/L3,含意图分析)❌ 禁止

L1 追问升级(全局规则)

L1 场景下如果使用了 --skip_detail,用户可能在看到L1结果后追问更多细节,此时需要无缝升级:

用户追问升级动作
------------------
"第X条的详情是什么"对该条审批单调 get 接口获取发布详情,直接回答
"展开看看具体内容"不带 --skip_detail 重新拉取数据,补全详情后回答
"帮我生成一份报告"从 L1 升级到 L2,不带 --skip_detail 重新拉取数据,生成 HTML 报告
"加上 Lead Time"从 L1/L2 升级到 L3,补算 Lead Time 后生成报告

升级时不需要重新询问时间范围和查询条件,复用当前会话中已确认的参数。

Step 2:数据获取

执行 scripts/fetch_release_data.py 从智研API拉取数据。

2.1 智研API

  • list 接口POST http://openapi.zhiyan.woa.com/workflow/api/order/query_order_list — 按项目ID+时间范围批量查询审批单
  • get 接口POST http://openapi.zhiyan.woa.com/workflow/api/order/get — 单条查询,获取发布详情(data字段中的impactDetails)

鉴权方式:HTTP Header token: {用户的智研个人令牌}

Token配置详见上方「前置准备」章节。执行脚本时传入:

ZHIYAN_TOKEN="$(cat ~/.zhiyan_token)" python3 scripts/fetch_release_data.py ...

2.2 脚本用法

# 查询全部4个项目
python3 scripts/fetch_release_data.py \
  --project_ids 10323,10988,10990,9259 \
  --start 2026-03-23 --end 2026-03-29 \
  --output release_data.csv

# 按业务板块过滤
python3 scripts/fetch_release_data.py \
  --project_ids 10323 \
  --start 2026-03-23 --end 2026-03-29 \
  --plm_filter "导航技术中心导航组-路线诱导" \
  --output release_data.csv

# 快速模式(跳过详情获取,无发布详情字段)
python3 scripts/fetch_release_data.py \
  --project_ids 10323 --start 2026-03-23 --end 2026-03-29 \
  --skip_detail --output release_data.csv

2.3 智研项目

当前覆盖 6 个智研项目:

project_id项目名称分析字段取值所属业务
:---:---------------------:---:
10323导航技术中心-导航组路线排序/车道级/诱导/吸附导航
10988导航技术中心路况组路况导航
10990导航技术中心-3X实验室诱导动态方向导航
9259导航技术中心-公共出行-taf步骑行/电动车/公交导航
8934服务架构中心地图网关服务架构
9251引擎研发中心-引擎后台组底图服务/异源/同源服务架构

2.4 数据字段

通过智研 API 获取审批单数据后,按 references/数据分析字段映射.md 的映射规则提取分析字段。审批单有 4 种类型(A/B/Bu/C),不同类型的字段取值来源不同,详见 references/审批单字段定义.md

2.5 变更意图分类

基于发布标题和发布详情进行语义分析,归入以下四类:

分类典型特征
---------------
AB实验AB、实验、灰度放量、横评
策略优化优化、调整、阈值、参数、配置、缩容、扩容
问题修复修复、fix、bugfix、异常、兜底
新特性新增、支持、接入、上线、一期、专项

Step 3:分析与输出(按产物级别分流)

L1 — 快速查数

直接基于 CSV 数据回答用户问题,不生成报告文件。例如:发布总次数、发布人排行、某人的发布列表等。

L2 — 标准报告(不含 Lead Time)

执行 scripts/gen_report.py 生成 HTML 报告:

python3 scripts/gen_report.py --input data.csv --output report.html --title "导航组"

title命名规则"{查询范围} {时间范围简称}",例如:

  • 整体查询昨天 → "导航中心 3/30"
  • 诱导方向过去一周 → "路线诱导 3/24-3/30"
  • 整体查询过去一个月 → "导航中心 3月"

输出路径:默认输出到用户当前工作目录,文件名为 {title}_发布分析报告.html

end日期说明--start--end 均为包含当天,如查昨天(3/30),则 --start 2026-03-30 --end 2026-03-30

脚本自动检测 CSV 中是否有「需求Lead Time」列来决定报告模式。L2 模式包含 6 章 + 附录:

  1. 全局概览 — KPI卡片 + 环形图 + 服务条形图
  2. 发布节奏 — 按日汇总 + 折线图 + 洞察卡片
  3. 变更方向 — 变更意图总览 + 按模块拆解 + 主题归类
  4. 团队贡献 — 按人排行 + 人员-模块矩阵 + 单点风险
  5. 总结与建议 — 双栏正反总结 + P0/P1/P2 改进建议表
  6. 附录 — 完整发布记录明细

L3 — 完整报告(含 Lead Time)

在 L2 的基础上,插入一步 Lead Time 计算,流程为:

fetch_release_data.py 输出 CSV(基础13列)
        ↓
  calc_leadtime.py 计算(追加2列:需求Lead Time、Lead Time备注)
        ↓
gen_report.py 输出 HTML(含第五章:研发效能分析)

Lead Time 计算脚本scripts/calc_leadtime.py

python3 scripts/calc_leadtime.py data.csv data_l3.csv

计算步骤

  1. 遍历 CSV 中每行的「需求单」字段,用正则解析出 TAPD 的 workspace_id、object_type(story/bug)、object_id
  2. 无需求单链接的行标记"无TAPD链接",跳过
  3. 通过 TAPD OpenAPI(http://apiv2.tapd.woa.com)查询需求/缺陷基本信息,获取 created 时间
  4. 通过 TAPD OpenAPI 查询状态变更历史,找到最终到达终态的时间(非首次,因为bug可能被reopen)
  5. 计算 Lead Time = 需求创建时间 → 最终到达终态时间
  6. 按判定规则标注备注,追加到 CSV

story 和 bug 的终态判定差异

类型API路径终态判定方式
---------------------------
bugbug_changes?field=status直接匹配英文key:resolvedclosed
storystory_changes(不加field过滤)field_changes 数组中找 field=="status" 的变更,用 value_after_parsed(中文名)匹配:待发布已发布已实现已验证已关闭

> story的状态key是项目自定义的(如 status_23),不同项目不同,因此必须用API返回的 value_after_parsed 中文名来匹配终态。

鉴权:使用 TAPD Token(同MCP配置中的 X-Tapd-Access-Token),通过 HTTP Header Authorization: Bearer {token} 传入。

缓存机制:同一需求单被多行引用时,只查一次API,结果复用。

权限限制:部分TAPD项目当前Token无权限,标记为"无权限",在报告中统计并提示。

Lead Time 判定规则

分类条件备注标记判定方式
------------------------------
疑似补录Lead Time < 24小时疑似补录脚本自动判定
待判定Lead Time ≥ 24小时待判定脚本标记,由大模型根据「状态变更时间线」判定
无权限TAPD API返回422无权限脚本自动判定
未到达终态需求未到达待发布/已发布/resolved/closed未到达终态脚本自动判定

大模型判定流程(针对"待判定"的记录):

脚本输出CSV中包含「状态变更时间线」列,格式如:新→需求已评审(13s)→开发中(6s)→产研自测中(3h2m)→待发布(3s)

大模型在生成L3报告时,逐条审查"待判定"记录的时间线,判定为:

  • 正常:状态变更间隔合理,反映真实研发过程
  • 状态扭转不规范:多个状态变更在极短时间内连续发生(如数秒内跳过多个中间状态),说明TAPD状态未按节点及时更新,而是事后一次性补点

L3 报告比 L2 多一章:

  1. 研发效能(Lead Time) — Lead Time 分类统计 + 明细表 + 补录/不规范洞察

默认输出 HTML。 用户要 PDF 时,用 Playwright 将 HTML 转为 PDF(每个章节从新页开始,首页 Header 与全局概览合并)。

参考文档

按需加载,不要预先全部读入:

  • references/审批单字段定义.md — 4 种审批单类型的字段结构和判定条件。当需要理解数据模型或字段取值来源时读取。
  • references/数据分析字段映射.md — 分析字段与原始字段的映射关系、枚举值映射表。当需要做字段映射或业务板块匹配时读取。
  • references/发布分析报告框架.md — 报告的 7 章结构定义、每章的分析逻辑和数据依赖。当生成报告时读取。

版本历史

共 4 个版本

  • v1.0.3 ## v1.1.0(2026-04-07) ### 新增业务覆盖 - **扩展服务架构业务**:新增 2 个智研项目支持 - 8934(服务架构中心) — 展示名"地图网关" - 9251(引擎研发中心-引擎后台组) — 展示名"底图服务/异源/同源" - 新增口语别名映射:网关、反爬、街景、长连接、底图服务、同源/异源匹配、数据编译器、地图网关、引擎后台、服务架构 - 整体查询层级:用户说"服务架构" → 查 8934+9251;"地图网关" → 仅 8934;"引擎后台" → 仅 9251 ### 字段名通用化 - CSV 字段名 `导航的智研空间` → `智研空间名称`,适配多业务场景 - 所有文档中的字段引用同步更新 ### 脚本改进 - `fetch_release_data.py`:`PROJECT_MAP` 新增 8934/9251 - `gen_report.py`:`short_mod()` 新增服务架构 PLM 前缀去除规则;`--title` 默认值从"导航组"改为通用的"发布分析" ### 文档更新 - `SKILL.md`:description、概述、前置准备(智研6项目+TAPD 10空间验证)、查询范围、项目表 - `数据分析字段映射.md`:§4.1 项目映射表、§4.2 业务方向映射表 - `user_scene.md`:背景、项目表、场景一~六典型提问 - `发布分析报告框架.md`:字段名、报告定位 当前
    2026-04-07 18:17 安全 安全
  • v1.0.2 ## v1.0.2(2026-04-02) ### 优化改进 - **服务分布注释说明**:单期和对比模式的服务分布图表下方新增注释,解释为什么服务总数可能小于发布总数(变更助手单和TKEX交付流部署单不携带服务名称字段) - **变更方向模块拆解表**:新增"发布详情"列,方便查看每条发布的具体内容 - **Token权限验证**:首次配置Token后立即验证权限有效性 - 智研Token:对4个项目空间各查1条验证 - TAPD Token:对发布量最大的6个TAPD空间各查1条验证,通过后提示用户实际空间更多,如遇"无权限"可按需单独申请
    2026-04-02 17:44 安全 安全
  • v1.0.1 # 发布变更分析助手 Release Notes **版本**:v1.0.1 **发布日期**:2026-04-02 **技能名称**:release-analytics --- ## 新增功能 ### Lead Time 研发效能分析(L3报告) - 新增 `calc_leadtime.py` 脚本,通过 TAPD OpenAPI 批量计算需求 Lead Time - 支持 story 和 bug 两种类型,自动适配不同项目的自定义状态体系 - Lead Time 取"最终到达终态"时间(非首次),避免 bug 被 reopen 导致的误判 - 新增"状态变更时间线"列,格式如 `新→开发中(13s)→待发布(3h)`,供大模型判断状态扭转是否规范 - 补录阈值设为 24 小时,≥24h 标记"待判定"由大模型审查 - 支持旧版 TAPD 链接格式(`/prong/stories/view/`) ### 发布审批单类型字段 - CSV 新增"发布审批单类型"列,区分 5 种类型:变更助手单、交付流部署单-智研、交付流部署单-TKEX、交付流紧急部署单、发布评审单 - 报告附录明细表新增"审批单类型"列 ### 对比报告 Lead Time 章节 - 对比模式新增第五章"研发效能对比",包含 KPI 卡片对比(有效 LT 中位数、补录占比、无 TAPD 链接数)+ 洞察卡片 - 对比报告附录新增 Lead Time 和 LT 备注列 ## 优化改进 ### 报告质量 - 服务分布图表下方新增注释说明,解释为什么服务总数可能小于发布总数(变更助手单和 TKEX 不携带服务名称) - 变更方向分析的模块拆解表新增"发布详情"列 - 对比模式附录表头与单期模式统一(类型、地域、Lead Time、LT 备注) ### skip_detail 使用规则 - 明确规定:涉及变更意图的查询(过滤、统计、分布)禁止使用 skip_detail,因为意图分类依赖标题+详情 ### 时间范围处理 - 修正"这周/上周"按自然周(周一到周日)计算,而非简单向前推 7 天 ## 安全性 - 清除 TAPD Token 硬编码,改为从 `~/.tapd_token` 文件或 `TAPD_ACCESS_TOKEN` 环境变量读取 - 首次使用时自动引导用户配置智研 Token 和 TAPD Token ## 技能元信息 - 技能中文名:发布变更分析助手 - description 更新:包含项目空间、业务方向映射、典型场景、输出能力说明 - 新增"前置准备"章节,集中说明首次使用配置流程 - references 新增 `user_scene.md` 用户场景文档 ## 包含文件(8个) | 文件 | 说明 | |------|------| | `SKILL.md` | 技能主文件(触发条件、流程定义、规则) | | `scripts/fetch_release_data.py` | 智研 API 数据拉取脚本 | | `scripts/calc_leadtime.py` | TAPD Lead Time 批量计算脚本 | | `scripts/gen_report.py` | HTML 报告生成脚本(单期+对比) | | `references/审批单字段定义.md` | 4 种审批单类型的字段结构 | | `references/数据分析字段映射.md` | 分析字段与原始字段映射 | | `references/发布分析报告框架.md` | 报告 7 章结构定义 | | `references/user_scene.md` | 6 大用户场景及典型提问 |
    2026-04-02 16:36 安全 安全
  • v1.0.0 Initial release
    2026-04-02 15:59 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

Mcporter

steipete
使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。
★ 198 📥 68,271
dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 686 📥 331,317
dev-programming

Docker Essentials

arnarsson
核心 Docker 命令和工作流程,包括容器管理、镜像操作和调试。
★ 38 📥 32,705