mcpField
T
tapd-bug-analyzer

tapd-bug-analyzer

github.com/abcfed開発3242 回インストール34 週間前に更新
リポジトリ

tapd-bug-analyzer について

TAPD のバグ報告を調査するスキルです。チケット情報を取得し、traceId、タイムスタンプ付きリクエスト URL、または説明文に応じてログやコードを調べ、構造化した分析レポートを作成します。

主な機能

  1. 01TAPD バグ詳細の取得
  2. 02traceId によるログ分析
  3. 03時刻付き URL からのログ検索
  4. 04説明文に基づくコード調査
  5. 05分析結果と修正案の整理

活用シーン

  1. 01traceId を使った報告済みエラーの追跡
  2. 02時刻付き API リクエストのログ検索
  3. 03trace やリクエスト URL のないバグの調査
  4. 04バグ分析レポートの作成

MCP 対応

このスキルは TAPD MCP ツールでバグ詳細を取得し、内容に応じてログ分析やコード検索を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/abcfed/claude-marketplace --skill tapd-bug-analyzer

インストール後、Claude Code で/tapd-bug-analyzerを入力して読み込まれたか確認します。

詳細

TAPD Bug 分析技能

自动分析和定位 TAPD Bug 单中的问题,支持多种分析策略。

用法

/tapd-bug <bug_url> [--env <environment>] [--region <region>]
参数

使用说明

用户调用此技能时,按以下步骤执行:

第 1 步:解析 TAPD Bug 链接

从 Bug 链接中提取 workspace_id 和 bug_id:

URL 格式: https://www.tapd.cn/{workspace_id}/bugtrace/bugs/view/{bug_id}
示例: https://www.tapd.cn/12345678/bugtrace/bugs/view/1012345678001234567
第 2 步:获取 Bug 详情

使用 TAPD MCP ツール获取 Bug 单的详细信息:

调用 mcp__mcp-server-tapd__get_bug 工具:
- workspace_id: 从 URL 解析得到
- options: {"id": "<bug_id>", "fields": "id,title,description,status,severity,priority,reporter,current_owner,created,modified"}
第 3 步:分析 Bug 描述并选择分析策略

仔细阅读 Bug 描述(description 字段),按优先级选择分析策略:

策略 A:包含 traceId

检测 Bug 描述中是否包含 traceId(通常是 16 位十六进制字符串):

  • 正则匹配:[a-f0-9]{16}
  • 常见格式:traceId: xxx、trace_id=xxx、X-B3-TraceId: xxx

如果找到 traceId,直接调用 sls-trace-analyzer:

~/.claude/skills/sls-trace-analyzer/.venv/bin/python \
  ~/.claude/skills/sls-trace-analyzer/sls-query.py \
  --trace-id "<traceId>" \
  --region "<region>" \
  --env "<env>"

说明:脚本默认同时查询普通存储和长期存储两个 logstore,以获取完整日志。

策略 B:包含请求 URL(带时间戳)

检测 Bug 描述中是否包含 API 请求 URL:

  • URL 模式:http(s)://xxx.abczs.cn/api/...
  • 时间戳参数:URL 末尾的 13 位数字(毫秒时间戳)

示例 URL:

http://32.ftest.abczs.cn/api/v2/patientorders/his/ffffffff0000000035246dd0adec0000/hospital?1768198926187

如果找到带时间戳的 URL,直接调用 sls-trace-analyzer(URL 模式):

~/.claude/skills/sls-trace-analyzer/.venv/bin/python \
  ~/.claude/skills/sls-trace-analyzer/sls-query.py \
  --url "<完整URL含时间戳>"

sls-trace-analyzer 会自动:

  1. 解析 URL 中的域名、路径和时间戳
  2. 根据域名判断环境(dev/test/prod)和地域
  3. 查询网关日志以获取 traceId
  4. 使用 traceId 查询完整调用链日志
  5. 输出日志分析结果
策略 C:既无 traceId 也无时间戳

基于 Bug 描述进行代码分析:

  1. 提取关键信息(错误消息、功能模块、操作步骤)
  2. 使用 codebase-retrieval 搜索相关代码
  3. 分析业务逻辑,推断问题原因
第 4 步:日志分析与问题定位

获取 traceId 后,调用 sls-trace-analyzer 进行深入分析:

  1. 识别错误和异常

    • 查找 ERROR、WARN 级别的日志
    • 识别 Java 异常堆栈(Exception、Caused by)
    • 提取错误消息和错误码
  2. 追踪请求链路

    • 按时间对日志条目排序
    • 识别请求入口(Controller)和出口
    • 标记 RPC/Feign 调用和响应
  3. 定位代码问题

    • 从异常堆栈中提取类名和行号
    • 优先关注 cn.abcyun 包下的代码
    • 使用 codebase-retrieval 查找对应代码
第 5 步:输出分析报告

生成结构化的分析报告:

## TAPD Bug 分析报告

### Bug 基本信息
- **Bug ID**: xxx
- **标题**: xxx
- **状态**: xxx
- **严重程度**: xxx
- **报告人**: xxx
- **处理人**: xxx

### 分析策略
- 使用策略: A/B/C
- TraceId: xxx(如有)
- 请求时间: xxx(如有)

### 错误摘要
- **错误类型**: xxx
- **错误消息**: xxx
- **发生位置**: `文件路径:行号`

### 调用链路
1. [入口] POST /api/xxx
2. [Service] XxxService.method()
3. [RPC] 调用 xxx 服务
4. [Error] 发生异常

### 问题定位
- **根因分析**: xxx
- **相关代码**:
  ```java
  // 问题代码片段
修复建议
  1. xxx
  2. xxx

## Examples

### 示例 1: Bug 描述中包含 traceId

```bash
/tapd-bug https://www.tapd.cn/12345678/bugtrace/bugs/view/1012345678001234567

Bug 描述内容:

用户反馈下单失败,错误信息:系统繁忙,请稍后重试
traceId: 8989a698c36e5189

执行流程:

  1. 解析 URL,获取 workspace_id=12345678、bug_id=1012345678001234567
  2. 调用 TAPD MCP 获取 Bug 详情
  3. 从描述中提取 traceId:8989a698c36e5189
  4. 调用 sls-trace-analyzer 分析日志
  5. 输出分析报告
示例 2:Bug 描述中包含请求 URL
/tapd-bug https://www.tapd.cn/12345678/bugtrace/bugs/view/1012345678001234568 --env test

Bug 描述内容:

测试环境下单接口报错 500
请求地址:http://32.ftest.abczs.cn/api/v2/patientorders/his/ffffffff0000000035246dd0adec0000/hospital?1768198926187

执行流程:

  1. 解析 URL,获取 workspace_id 和 bug_id
  2. 调用 TAPD MCP 获取 Bug 详情
  3. 从描述中提取请求 URL(含时间戳)
  4. 调用 sls-trace-analyzer(URL 模式)进行日志分析
  5. 输出分析报告
示例 3:纯文字描述的 Bug
/tapd-bug https://www.tapd.cn/12345678/bugtrace/bugs/view/1012345678001234569

Bug 描述内容:

患者在门诊缴费时,选择医保支付后点击确认,页面提示"医保结算失败",
但实际上 HIS 系统显示已经结算成功。
复现步骤:
1. 登录患者端 APP
2. 选择待缴费订单
3. 选择医保支付
4. 点击确认支付
预期结果:支付成功,跳转到支付成功页面
实际结果:提示"医保结算失败"

执行流程:

  1. 解析 URL,获取 workspace_id 和 bug_id
  2. 调用 TAPD MCP 获取 Bug 详情
  3. 未找到 traceId 或时间戳
  4. 从描述中提取关键词:门诊缴费、医保支付、医保结算
  5. 使用 codebase-retrieval 搜索相关代码
  6. 分析业务逻辑,推断可能的原因
  7. 输出分析报告
示例 4:实际案例——处方不展示规格

输入:

/tapd-bug https://www.tapd.cn/43780818/bugtrace/bugs/view/1143780818001109821

Bug 描述内容:

问题概述:处方不展示规格
门店id: ffffffff000000003526121e726a0004
收费单id:ffffffff000000003526dc97b673c003
补充说明:后台没返回药品档案的规格

执行流程:

  1. 解析 URL:workspace_id=43780818、bug_id=1143780818001109821
  2. 调用 TAPD MCP 获取 Bug 详情
  3. 分析描述:无 traceId、无带时间戳的 URL → 使用策略 C
  4. 提取关键词:处方、规格、药品档案
  5. 使用 codebase-retrieval 搜索相关代码
  6. 定位到 PrescriptionService.java:678-680

问题定位结果:

// PrescriptionService.java:678-680
if (goodsItem.getType() == 2) {
    prescriptionFormItem.setSpecification(...);
}

根因分析: 西药处方的 specification 字段仅在 type==2(材料)时设置,普通西药(type=1)未设置规格。

修复建议: 为所有类型的药品设置规格,优先使用 GoodsItem.displaySpec 字段。

コメント