mcpField
C
check-approve

check-approve

github.com/rheinmir开发10239 次安装2 周前更新
代码仓库

关于 check-approve

check-approve 是用于排查 DMS 审批请求是否到达后端的技能。它根据请求编号生成后端与前端日志查询命令,保存为脚本并展示供用户在产品服务器运行;不会自行连接或执行命令。

主要功能

  1. 01生成后端与前端日志查询命令
  2. 02支持按时间范围筛选
  3. 03未知容器或用户保留占位符
  4. 04保存脚本并显示可复制命令
  5. 05不连接或操作产品服务器

适用场景

  1. 01排查 DMS 审批请求是否到达后端
  2. 02检查审批请求是否停留在前端或代理
  3. 03为特定请求生成产品服务器排查命令

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rheinmir/setup --skill check-approve

安装后在 Claude Code 中输入/check-approve确认已加载。

详细介绍

Skill:check-approve

WHAT

用途和上下文
  • 用途: 当遇到 DMS 请求“点了 approve 但卡住了”,或不确定审批命令是否已到 BE 时,用户需要一条单行命令,粘贴到产品服务器(ubuntu@hcm-bonbon-sv03)上运行——Agent 无法通过 SSH 连接产品服务器,因此不会自行运行,只生成命令([[feedback_product_server_debug]])。此 Skill 会预先生成 BE + FE 命令,写入 .sh 文件(避免复制时换行出错),并在回复中直接展示。
  • 触发条件(何时使用):
    • /check-approve <REQ-CODE> [--since 120m]
    • 用户说:“写个检查命令(approve/审批)”、“请求 approve 卡住了”、“日志里看不到审批命令”、“检查 BE/FE 上的审批”
  • 非目标: 不通过 SSH 连接或在产品服务器上运行命令,不修复 approve 的 bug(需要复现/修复的问题 → /orca-issue),默认不在本地追踪。
心智模型

REQ-CODE (+ SUM-ID、since、container、user) → BE + FE 模板 → 单行命令 → 写入 .sh 文件并直接展示 → 用户自行在产品服务器上运行 → 读取结果(是否有 POST approve)。

输入和输出约定
字段必填?含义
输入<REQ-CODE>是request 编号,例如 BAF-CTD-26050043;缺少时 → 询问用户
输入--since否docker logs 的时间范围,默认 120m
输入--be-container / --user否缺少时 → 使用占位符 <BE_CONTAINER> / <FE_USER>
输入SUM-ID否进一步缩小筛选范围;如有需要,询问用户
输出scratchpad/check-approve-<REQ-CODE>.sh是2 条 BE + FE 单行命令(或用户指定的路径)
输出回复中的内联命令是方便用户快速复制;“完成”= 用户拿到可运行的命令,并非 Agent 已运行
规则和能力
  • RULE-01(MUST):不得自行通过 SSH 连接或在产品服务器上运行命令——只生成命令([[feedback_product_server_debug]])。
  • RULE-02(MUST):默认在产品服务器(hcm-bonbon-sv03)上追踪,而非本地。
  • RULE-03(MUST):每条命令都保持在一行(不得换行)。
  • RULE-04(MUST):如果用户说“写入 wiki 的日志文件夹” → 写入 .sh/.txt,不要写入 .md(避免 OKF frontmatter hook)。
  • 能力:写入本地命令文件;不能访问服务器,也不能联网。
失败边界
  • 缺少 <REQ-CODE> → 澄清,不得使用猜测的编号生成命令。
  • 不知道 container/user → 可以部分完成:使用占位符生成命令,并提醒用户通过 docker ps 确认后替换。
  • 用户要求 Agent 自行在产品服务器上运行命令 → 按 RULE-01 阻止,只提供命令。

HOW

主工作流
步骤类型输入操作输出/退出失败/下一步
W01判断用户的话确定参数,其余使用占位符参数集缺少 REQ-CODE → 澄清
W02确定性参数按模板生成 2 条 BE + FE 单行命令,保持在一行2 条命令—
W03副作用命令写入 scratchpad/check-approve-<REQ-CODE>.sh(或用户指定的路径).sh 文件—
W04确定性命令在回复中展示;不得自行运行用户拿到命令—

各步骤的详细说明(W01–W04 的事实来源):

  1. 确定参数——获取 <REQ-CODE>、--since,以及用户提供的 container/user;其余使用占位符,供用户自行填写。
  2. 生成命令——按下方模板构建 2 条单行命令(BE + FE),保持在一行(不得换行)。
  3. 写入文件——写入 scratchpad/check-approve-<REQ-CODE>.sh(或用户指定的路径)。如果用户说“写入 wiki 的日志文件夹” → 写入 .sh/.txt,不要写入 .md(避免 OKF frontmatter hook)。
  4. 展示命令——在回复中展示 2 条内联命令,方便用户快速复制。不得自行在产品服务器上运行。
输入
参数含义默认值
<REQ-CODE>request 编号,例如 BAF-CTD-26050043必填
--sincedocker logs 的时间范围120m
--be-container后端 container(如果用户知道)占位符 <BE_CONTAINER>
--user用于筛选 proxy log 的 FE 用户名占位符 <FE_USER>(例如 trangntt)

<REQ-CODE> 通常关联 SUM-ID(例如 1010228)——如需进一步缩小筛选范围,请询问用户。

分支
ID类型条件行为跳过 / 失败汇合点
B01user_optional用户说“写入 wiki 的 log 文件夹”写入 .sh/.txt 到该文件夹,而不是 scratchpad/,不写入 .md未提及 → 使用默认路径W04
B02user_optional用户只需按 request 编号筛选使用精简版 BE 命令,而不是汇总版—W03
验证与停止

目视检查:每条命令正好一行,request 编号已在正确位置替换,剩余占位符已明确说明。在 W04 后停止——读取 log 是用户的步骤(用户贴回 log 后使用“读取结果”一节)。

示例
  • 正例: /check-approve BAF-CTD-26050043 --since 6h → 写入 scratchpad/check-approve-BAF-CTD-26050043.sh,其中包含 BE + FE 命令和 --since 6h,容器名保留为 <BE_CONTAINER>/<FE_CONTAINER>,以内联方式打印,不执行。
  • 边界/失败:“帮忙检查 approve 卡住了,自己 SSH 进去看看”但未提供 request 编号 → 询问 request 编号;拒绝 SSH,只生成命令。
参考 — 命令模板

BE(product 上的 docker logs)— 汇总各 approve endpoint 的命令:

docker logs <BE_CONTAINER> --since 120m 2>&1 | grep -i -B2 -A2 -e BAF-CTD-26050043 -e <SUM_ID> | grep -i -e POST -e Action -e Approve -e Reject -e Return -e UpdateGenTask -e GetGenTaskById -e UpdateTask -e "ApproveSummary/Approve" -e QuickApprove -e UpdateRequestByApproveGroup

BE — 精简版(只按 request 编号筛选):

docker logs <BE_CONTAINER> --since 120m 2>&1 | grep -i -e POST -e approve -e UpdateGenTask -e ApproveSummary -e UpdateRequestByApproveGroup -e BAF-CTD-26050043

FE(dms-proxy log)— 按 user + request 筛选:

docker logs <FE_CONTAINER> --since 120m 2>&1 | grep -i -e "dms-proxy" -e BAF-CTD-26050043 -e <FE_USER> -e Approve -e Action

将 <BE_CONTAINER> / <FE_CONTAINER> 替换为实际容器名(docker ps)。如果审批已经进行了一段时间,调整 --since(例如 6h)。将 BAF-CTD-26050043 替换为需要检查的 request 编号。

参考 — 读取结果
  • 有 POST /api/ApproveSummary/Approve(或 UpdateGenTask、UpdateRequestByApproveGroup)并带有 request 编号 → 审批命令已到达 BE。
  • 没有任何 POST 行,尽管 FE 显示已点击 → request 卡在 FE / proxy,还未调用 BE → 继续检查 [[concepts/approve-action-flow]] 和 proxy。
  • 各模块的 endpoint 参见 [[entities/dms-modules]](BAF/VEN01/CashAdv…有所不同)。
参考 — 限制
  • 不要自行 SSH / 在 product 上运行命令——只生成命令([[feedback_product_server_debug]])。
  • 默认在 product(hcm-bonbon-sv03)上追踪,而不是在本地。

来源

  • 原始内容: 从 session 6902c846 / c2f1149e 提炼(2026-06-25,排查 BAF-CTD-26050043/30/26060030 的 approve 卡住问题)
  • 生成者: /orca-eval finding #3(250626-eval-report)

评论

支持 Markdown