API 字段溯源
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_fd316394/api-field-tracer
技能介绍
它解决什么问题
维护 Spring Boot + Spring Cloud Feign + MyBatis 项目时,排查一个报表接口的取数问题往往要先回答三个问题:这个字段从哪张表来?链路中跨了哪些服务?某个 WHERE 条件是谁加上的?人工逐层翻 Controller、Service、Mapper XML 和 Feign 接口既慢又容易漏掉跨服务调用。这个技能就是用自动化脚本 + 结构化分析,把「响应字段 → 数据库列」的完整血缘一次性梳理出来。
核心能力与工作流程
- 通过
scripts/find_controller.py根据 URL path 定位 Controller 方法,并从@Operation或方法名提取接口中文名 - 从返回类型出发枚举响应 DTO/VO 全部字段,沿 Service 调用链进入 MyBatis 层:XML 走
scripts/parse_mybatis_xml.py解析 SQL、ResultMap 与 JOIN;MyBatis-Plus 读@TableName/@TableField;注解 SQL 直接读 Mapper 接口 - 遇到 Feign 调用时读
config/services.json定位下游仓库并递归溯源,生成带服务与 DB 分组、调用序号的 PUML 流程图;每个数据库箭头携带完整 SQL 和--行内注释,标注维度字段映射、聚合方式与过滤条件来源 - 输出 Markdown 映射文档,包含接口信息、本服务调用链、跨服务调用表与字段映射明细
- 可选阶段:风险代码预报(基于
references/risk_rules.md的人工评审,scripts/check_risk.py只给候选);报表取数全流程说明(含表取数流程图,SQL / 判断 / 计算三类要素齐全,交付给没有 Java 源码权限的数据工程师)
适用边界与注意点
- 所有服务名到本地仓库路径的映射集中在
config/services.json,首次使用前必须填写,路径错误会导致溯源失败;分享给团队时接收者要改成自己的路径,服务名 key 可不变 - 多模块 Maven 工程(api/biz/dao 拆分)下脚本可能报「无 Java 文件」,需改用 Grep 手动定位
- 下游服务没有本地源码时不会丢弃链路,而是标记
⚠️未配置本地路径,相关字段标注为未溯源 - 风险扫描是正则启发式的候选列表,可能存在误报漏报,最终判定需人工完成;报表说明只覆盖「数据从哪来」,不包含 ETL 写入与新表设计
使用场景
- 排查报表接口取数异常,需要确认某个响应字段来自哪张表、哪条 SQL 的哪个过滤条件
- 报表接口要迁移到新数据平台,需要完整字段血缘和表取数流程图作为口径基线
- 接口返回数据部分来自下游服务,需要确认 Feign 调用链路与下游字段来源
- 梳理接口全量字段映射,输出调用链路 PUML 流程图供评审和归档
适合人员
- Java 后端工程师:排查接口字段来源,快速定位是 XML 映射还是 Service 计算出错
- 报表平台数据工程师:需要把接口取数逻辑转成迁移方案,但没有 Java 源码查看权限
- 技术负责人:评审接口涉及的源码风险,需要结构化的调用链路与字段映射文档
- 需要为报表接口补全取数逻辑说明的团队:交付自包含的取数全流程文档用于迁移评审