From 03fa2cebbbaad12681d40eeb914be83dd1c4628b Mon Sep 17 00:00:00 2001 From: zichun <26684461+reporkey@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:33:53 +0800 Subject: [PATCH] Add viw_kg_field_dict: NL2SQL term-grounding dictionary (deliverable 5a) --- sql/viw_kg_field_dict.sql | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+), 0 deletions(-) create mode 100644 sql/viw_kg_field_dict.sql diff --git a/sql/viw_kg_field_dict.sql b/sql/viw_kg_field_dict.sql new file mode 100644 index 0000000..a5ca7ad --- /dev/null +++ b/sql/viw_kg_field_dict.sql @@ -0,0 +1,48 @@ +-- ============================================================ +-- 视图:viw_kg_field_dict —— ERP 知识图谱·字段术语字典 (NL2SQL 术语接地) +-- 一行 = 一个 (中文名 → 字段列名 → 表) 映射,让 LLM 把自然语言词汇落到真实列。 +-- 例:客户名称 → sCustomerName @ salsalesordermaster +-- 业务员 → sSalesManId @ salsalesordermaster (外键→ sissalesman.sId) +-- +-- 来源:字段控件 gdsconfigformslave.sChinese(中文名) + sName(列名), +-- 表 = 所属主表单 gdsconfigformmaster.sTbName。 +-- 剔除:按钮控件(Btn%)、空名、计算列(含 '(' / concat)。 +-- iFormUses = 有多少张表单用了此映射(术语显著度,可用于同名消歧排序)。 +-- 若该字段是外键(命中 viw_kg_edge_ref),带出 sFkTable/sFkKey —— NL2SQL 直接知道 join 到哪。 +-- 表名统一小写;sDomain 由表名规范前缀推导(同 viw_kg_form 口径)。 +-- 校验(本地库 xlyweberp_saas):约 38105 条 (表,字段,中文名) 去重映射。 +-- ============================================================ +CREATE OR REPLACE VIEW viw_kg_field_dict AS +SELECT + d.sChinese, -- 业务中文名(术语) + d.sField, -- 真实列名 + d.sTable, -- 所属表(小写) + CASE LEFT(REGEXP_REPLACE(d.sTable,'^(viw_|viw|v_|sp_|sp|proc_|proc|udf_|fun_|calc_)',''), 3) + WHEN 'sal' THEN '销售' WHEN 'pur' THEN '采购' WHEN 'quo' THEN '报价' + WHEN 'qly' THEN '品质' WHEN 'ops' THEN '发外' + WHEN 'mft' THEN '生产' WHEN 'man' THEN '生产' WHEN 'mes' THEN '生产' WHEN 'wor' THEN '生产' + WHEN 'mit' THEN '库存' WHEN 'inv' THEN '库存' WHEN 'pit' THEN '库存' + WHEN 'sgd' THEN '库存' WHEN 'sto' THEN '库存' + WHEN 'cah' THEN '财务' WHEN 'pay' THEN '财务' WHEN 'rec' THEN '财务' + WHEN 'bil' THEN '财务' WHEN 'cos' THEN '财务' WHEN 'cas' THEN '财务' + WHEN 'ele' THEN '基础资料' WHEN 'sis' THEN '基础资料' WHEN 'con' THEN '基础资料' + WHEN 'ept' THEN '设备' + ELSE '其他' + END AS sDomain, -- 业务域 + d.iFormUses, -- 使用此映射的表单数(显著度) + r.sTgtTable AS sFkTable, -- 外键目标表(若为引用字段) + r.sTgtKey AS sFkKey -- 外键目标主键 +FROM ( + SELECT LOWER(m.sTbName) AS sTable, s.sName AS sField, s.sChinese AS sChinese, + COUNT(DISTINCT s.sParentId) AS iFormUses + FROM gdsconfigformslave s + JOIN gdsconfigformmaster m ON s.sParentId = m.sId + WHERE IFNULL(s.sChinese,'') <> '' + AND IFNULL(s.sName,'') <> '' + AND s.sControlName NOT LIKE 'Btn%' + AND IFNULL(m.sTbName,'') <> '' + AND s.sName NOT LIKE '%(%' + AND s.sName NOT LIKE '%concat%' + GROUP BY LOWER(m.sTbName), s.sName, s.sChinese +) d +LEFT JOIN viw_kg_edge_ref r ON r.sSrcTable = d.sTable AND r.sSrcField = d.sField; -- libgit2 0.22.2