技术实践

得物用日志诊断Skill定位搜索接口SQL故障

应用与实践智能体系统AI 基础设施Agent 工具调用可观测性编程

概述

某搜索接口在测试环境反馈没有返回数据,工程师拿到 traceId 后仅执行一条命令 /log-diagnosis T1 feature/your-branch trace_id: "your-trace" 为什么最终没有返回数据,其余全部交给 AI:AI 从 traceId 推出日志时间范围为 2026-02-27 全天,检查发现 accessToken 已过期并自动刷新,随后调用日志平台 MCP 分 2 页拉取完整日志共 73 条。 AI 从日志中提取到请求入参(assembleByOrg/channelType/orderNo/status/ticketNo)与组装后的 toSearchDTO(含 orderStatus 8010、ticketSource 67、ticketTypeId 5802 等),识别出关键节点 resultList is empty 判定问题在 DB 层而非业务逻辑层。 随后从 ORM 框架打印的实际执行 SQL 中做同类字段横向对比,发现 order_types、delivery_modes、ticket_sources 等字段都写明了 IS NULL 与 = '' 两种情况,唯独 customer_tag 只判断 IS NULL 而遗漏了空字符串(按业务语义空串代表「不限制」),DB 现有数据 customer_tag 均存空串,因此被全部过滤。 AI 进一步定位到 MyBatis Mapper XML 的具体写法并给出补上 OR a.customer_tag = '' 的修复代码。