package com.xly.tool; import dev.langchain4j.agent.tool.P; import dev.langchain4j.agent.tool.Tool; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * 知识图谱查询工具(M1)。 * *
目前只暴露 {@link #findForms} 一个只读能力:按关键词检索 ERP 业务表单目录 * (视图 {@code viw_ai_useful_forms},1748 张有用业务表单)。这是「表单名 → formId/moduleId」 * 定位的过渡实现,也是后续 KgSearch / formId 解析的雏形。 * *
表单目录是**全局元数据**(对所有品牌一致),不涉及行级/租户数据,因此不需要租户过滤。 */ @Component public class KgQueryTool { private final JdbcTemplate jdbc; public KgQueryTool(JdbcTemplate jdbc) { this.jdbc = jdbc; } @Tool("按关键词检索 ERP 业务表单目录,返回匹配的表单名、底层数据源、所属菜单id(moduleId) 与表单id(formId)。" + "当用户提到某类单据或报表、但你不确定具体是哪一张表单时,先用它来定位。最多返回 15 条。") public String findForms( @P("表单名或业务关键词,例如:报价 / 客户 / 库存 / 送货 / 应收 / 采购订单") String keyword) { if (keyword == null || keyword.isBlank()) { return "请提供一个表单名或业务关键词再检索。"; } String kw = keyword.trim(); String like = "%" + kw + "%"; List