unis_crm/doc/MCP接口审计报告.md

8.0 KiB
Raw Blame History

MCP 接口审计报告与整改建议

审计日期2026-09-16 审计范围:backend/src/main/java/com/unis/crm/llm/backend/src/main/resources/mapper/llm/LlmMcpMapper.xml 约束:本次审计不修改任何现有逻辑,仅只读核验,输出缺失项与可整改项清单。 基线:对照 ~/Downloads/scc_mcp_improvement_proposal.md 的 A-G 改造项及 6 条验收用例。


一、工具清单(当前暴露给 Agent 的 MCP 工具)

工具名 作用 备注
crm_opportunity_search 商机明细列表 分页 + total/hasMore
crm_customer_search 客户明细列表 分页 + total/hasMore
crm_work_report_search 日报列表 分页 + total/hasMore
crm_checkin_search 外勤打卡列表 分页 + total/hasMore
crm_todo_search 待办列表 分页 + total/hasMore
crm_followup_search 跟进记录列表 分页 + total/hasMore
crm_expansion_search 拓客(销售/渠道)列表 分页 + total/hasMore
crm_universal_search 跨模块通用搜索 无 total定位用
crm_entity_detail 单对象详情 仅单 id
crm_dict_options 字典选项查询 补齐工作职责等
crm_metadata_catalog 元数据目录 硬编码
crm_report_query 报表查询 多 reportType 聚合
crm_report_catalog 报表目录
crm_org_user_search 组织/用户查询 姓名→ID 映射
crm_user_profile 当前用户资料

说明:以上所有列表工具均已统一 total+hasMore 分页字段(既有汇总已落地)。


二、已满足项(核验通过)

状态 证据
A actual_signed_summary 实际签约聚合 完整 CrmReportQueryToolProvider L233-266stage='S5'+archived_at∈区间+actual_signed_amount,含 definition/dataQuality(s5MissingArchivedAt/s5MissingSignedAmount)/realizationRategroupBy 支持 none/month/owner/product/source/province
B sales_performance 签单口径 LlmMcpMapper.xml L891-900wonCount/wonAmount 按 S5+archived_at+actual_signed_amount
B opportunity_trend 输赢口径 L961-976won 按 S5、lost 按 L
C1 stage 字典联动校验 OpportunitySearchToolProvider validateStage非法值报错+合法枚举提示
C4 列表补齐签约字段 LlmMcpMapper.xml L149-154返回 actualSignedAmount/archivedAt
G dashboard_summary 权限 独立 STATS_PERMISSION 校验
数据权限注入 拦截器+指针测试兜底

三、缺失项清单(含可整改性评估)

约束说明:以下"可整改性"均在不动现有业务逻辑前提下评估——

  • 兼容式新增:默认值=原行为,不影响现有调用,可直接做
  • 低风险扩展:新增参数/字段,对既有合法调用无副作用,可直接做
  • 需谨慎:会改变现有调用返回形态或异常路径,若不做适配会改变行为,需评估

P0直接影响"少拉数据、精准取数",单文件、低风险)

# 缺失项 现状 整改建议 可整改性
C2-1 多阶段过滤 stageIn 仅单值 stage = #{stage} schema 增 stageIn多值SQL 改 in (...),默认 null 不生效 兼容式新增
C2-2 日期区间 archivedFrom/To 增字段SQL 加区间条件,默认 null 不生效 兼容式新增
C2-3 日期区间 createdFrom/To 同上 兼容式新增
C2-4 金额区间 minAmount/maxAmount 同上 兼容式新增
C2-5 布尔 hasActualSignedAmount 增字段SQL 判 actual_signed_amount is not null,默认 null 不生效 兼容式新增
C3 排序 sort(如 -actual_signed_amount 无 ORDER BY 口子 增白名单 sort 参数,默认 null=现有顺序不动 兼容式新增
C5 字段投影 fields + description 截断 全列返回 增可选 fields(默认 null=全列兼容description 截断建议 120 兼容式新增
D crm_entity_detail 批量 ids 仅单 id,返回 found/detail 增可选 ids 分支,保留单 id 路径不动,回应 found/rows 兼容式新增

P1体验/口径自描述,改动较小)

# 缺失项 现状 整改建议 可整改性
B-caliber sales_performance/opportunity_trend 响应无口径说明 caliber 节点 响应层新增 caliber 字段说明各指标口径(不改数据) 低风险扩展
E-1 crm_metadata_catalog 硬编码 8 字段 缺 actualSignedAmount/archivedAt 说明 新增字段条目+中文+口径说明 低风险扩展
E-2 crm_dict_options 未回写"被哪些字段使用" 无使用方信息 新增 usage 说明 低风险扩展
F 归档转 S5 必填校验 业务侧未强制 archived_at/actual_signed_amount 业务侧(非 MCP 模块)校验 ⚠️ 需谨慎,改业务逻辑

P2一致性与报错策略改动会改变现有行为需评估

# 缺失项 现状 整改建议 可整改性
G-1 groupBy 无校验,非法值静默降级 sales_performance 传 month 无感透传 增参数白名单校验,非法值报错(新增防御,不改合法调用) ⚠️ 只改异常路径,合法调用不变
G-2 customer_summary groupBy=month 未实现 落到 industry 增 month 分支(新增语义) ⚠️ 新增分支,不改现有分支
G-3 daily_report_completion groupBy=month 未实现 month 静默按日返回(250+行) 增 month 分支 ⚠️ 新增分支
G-4 universal_search 商机行非结构化 仍拼接 summary 字符串 增独立 actualSignedAmount/archivedAt新增字段改返回结构 ⚠️ 会改通用搜索返回形态,需评估
G-5 crm_entity_detail 命名混用 o.* snake + 别名 camel 统一 camelCase改返回字段名 ⚠️ 改返回结构,需评估

四、结论

  1. 核心价值已落地actual_signed_summary 聚合、签单口径统一、stage 字典校验、total/hasMore、字段注释fieldDescriptions均已满足Agent "1~2 次调用出数"的目标基本达成。
  2. 最大缺口集中在 crm_opportunity_search 的过滤/排序/投影增强C2/C3/C5:这是让 LLM 少拉数据、精准取数的关键,且全部为兼容式新增、不动现有逻辑,风险最低。
  3. 批量详情D:可做成可选 ids 分支,保留现有单 id 路径,兼容。
  4. P2 一致性项G 系列)多为"新增分支/新增防御",不改合法调用结果,但会改变非法输入或返回结构的形态,建议按需逐个评估,避免一次全做引入回归。

五、后续落地建议(按优先级,均不动现有逻辑)

第一批推荐P0 + 低风险):

  1. crm_opportunity_search 补齐 stageIn/日期区间/金额区间/hasActualSignedAmount 过滤 → 减少 Agent 拉取量
  2. 增白名单 sort 排序 → 让 Agent 直接取 Top N
  3. 增可选 fields 投影 → 控制返回体,避免上下文膨胀
  4. crm_entity_detailids 批量分支(保留单 id→ 详情 N 次调用压成 1 次

第二批P1口径自描述 5. sales_performance/opportunity_trend 响应增 caliber 口径字段 6. crm_metadata_catalog 增 actualSignedAmount/archivedAt 及中文说明

第三批P2需逐个评估改动会触及现有行为边界 7. groupBy 白名单校验(非法值报错) 8. customer_summary/daily_report_completion 增 month 分支 9. universal_search 商机结构化为独立字段(改返回形态) 10. 归档必填校验(业务侧,非 MCP 模块)

每一项落地前都应补对应单测,并确认既有 132+ 条测试不回退。


本报告为只读审计结果,未对任何现有代码/数据库做修改。字段转载与口径说明如需进一步细化,欢迎在此基础上继续。