-- ============================================================ -- 视图:viw_kg_form_card —— ERP 知识图谱·表单卡片 (RAG 文档, 1748 行) -- 每个表单一段结构化文本 sCard,用于灌入向量库做召回;另暴露结构化元数据列供过滤。 -- 汇聚三层图谱:节点(viw_kg_form) + 上下游单据名(viw_kg_edge_flow) + 字段中文名清单。 -- -- ⚠ 字段清单用 GROUP_CONCAT 拼接,单表单字段可达 269 个 / 2477 字, -- 默认 group_concat_max_len=1024 会截断 —— 查询前必须 -- SET SESSION group_concat_max_len = 1000000; (见 export_form_cards.sql) -- -- sCard 结构:表单名 / 业务域 / 数据源(执行类型) / 上游单据 / 下游单据 / 字段 / 标识(formId,moduleId) -- 节点粒度 = 表单 sFormId (1748);上下游为菜单级。 -- ============================================================ CREATE OR REPLACE VIEW viw_kg_form_card AS SELECT fm.sFormId, fm.sModuleId, fm.sFormTitle, fm.sModuleName, fm.sDomain, fm.sDataSource, fm.sExecType, fm.iUpstream, fm.iDownstream, fm.bAiTool, fm.sAiScene, up.names AS sUpstreamForms, -- 上游单据名(逗号) dn.names AS sDownstreamForms, -- 下游单据名(逗号) fl.field_names AS sFieldList, -- 字段中文名清单(顿号) CONCAT_WS('\n', CONCAT('【表单】', fm.sFormTitle), CONCAT('业务域:', fm.sDomain), CONCAT('数据源:', fm.sDataSource, '(', fm.sExecType, ')'), CONCAT('上游单据:', IFNULL(up.names, '无')), CONCAT('下游单据:', IFNULL(dn.names, '无')), CONCAT('字段:', IFNULL(fl.field_names, '')), CONCAT('标识:formId=', fm.sFormId, ' moduleId=', fm.sModuleId, CASE WHEN fm.bAiTool = 1 THEN CONCAT(' AI场景=', IFNULL(fm.sAiScene,'')) ELSE '' END) ) AS sCard -- 可直接向量化的卡片文本 FROM viw_kg_form fm LEFT JOIN ( SELECT sParentId, GROUP_CONCAT(DISTINCT sChinese ORDER BY iOrder SEPARATOR '、') AS field_names FROM gdsconfigformslave WHERE IFNULL(sChinese,'') <> '' AND sControlName NOT LIKE 'Btn%' GROUP BY sParentId ) fl ON fl.sParentId = fm.sFormId LEFT JOIN ( SELECT sSrcModuleId AS mid, GROUP_CONCAT(DISTINCT sTgtName ORDER BY sTgtName SEPARATOR ',') AS names FROM viw_kg_edge_flow WHERE bSelfLoop = 0 GROUP BY sSrcModuleId ) dn ON dn.mid = fm.sModuleId LEFT JOIN ( SELECT sTgtModuleId AS mid, GROUP_CONCAT(DISTINCT sSrcName ORDER BY sSrcName SEPARATOR ',') AS names FROM viw_kg_edge_flow WHERE bSelfLoop = 0 GROUP BY sTgtModuleId ) up ON up.mid = fm.sModuleId;