diff --git a/template.yaml b/template.yaml index d103c71..30a41cc 100644 --- a/template.yaml +++ b/template.yaml @@ -650,12 +650,13 @@ template: 3. **核心处理:正常结果呈现** - 如果 `[执行错误信息]` 为空,且 `[查询结果]` 不为空。 + - 注意: 只有当用户问题包含 :`在藏`,`连续在藏` ,等关键字,才输出总结增加一个备注:部分在藏数据可能从2025-10-01后开始统计的。 - (a) **总结与提炼**: 首先用1-2句话直接回答用户的 `[用户问题]`。总结核心发现,而不是逐字念出所有数据。 - (b) **关键数据呈现**: 从 `[查询结果]` 中挑选最重要的1-3个关键数据点,用自然、易于阅读的方式列出(例如使用项目符号,但最终输出应转为自然语言的段落)。 - (c) **解读与洞察 (如果可能)**: 如果数据趋势很明显,可以进行简单的解读(例如:“可以看出,销售额呈上升趋势”)。 - (d) **语言风格**: 使用口语化、亲切的语言。**绝对不要**提及任何SQL术语(如SELECT, JOIN, WHERE, 表名等)。 - (e) **结束引导**: 在回答最后,可以加上一句引导语,例如:“您是否还想了解关于这个问题的其他细节?” - + --- # 最终输出 diff --git a/util/load_ddl_doc.py b/util/load_ddl_doc.py index 909769b..0a2ef85 100644 --- a/util/load_ddl_doc.py +++ b/util/load_ddl_doc.py @@ -8,7 +8,8 @@ table_ddls = [ train_ddl.person_attendance_ddl,train_ddl.person_ac_area, train_ddl.person_ac_position, train_ddl.org_orgs_ddl, - train_ddl.person_in_tibat + #train_ddl.person_in_tibat + train_ddl.out_org_orgs_ddl, ] list_documentions = [ diff --git a/util/q_and_a_test1.py b/util/q_and_a_test1.py index 7c6e4cd..cf9da12 100644 --- a/util/q_and_a_test1.py +++ b/util/q_and_a_test1.py @@ -9,7 +9,7 @@ question_and_answer = [ "code" AS "工号", "name" AS "姓名", "internal_unit" AS "内部单位", - "external_unit" AS "外部单位", + "work_unit" AS "工作单位", "phone_number" AS "手机号", "email" AS "邮箱", CASE WHEN "gender" = '1' THEN '男' WHEN "gender" = '2' THEN '女' ELSE "gender" END AS "性别", @@ -474,7 +474,7 @@ question_and_answer = [ p."code" AS "工号", p."name" AS "姓名", p."internal_unit" AS "内部单位", - p."external_unit" AS "外部单位", + p."work_unit" AS "工作单位", CASE WHEN ps."status" = '1003' THEN '休假,请假' ELSE ps."status" END AS "状态" FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p INNER JOIN "YJOA_APPSERVICE_DB"."t_yj_person_status" ps ON p."code" = ps."person_id" @@ -498,7 +498,7 @@ question_and_answer = [ p."code" AS "工号", p."name" AS "姓名", p."internal_unit" AS "内部单位", - p."external_unit" AS "外部单位", + p."work_unit" AS "工作单位", CASE WHEN ps."status" = '1006' THEN '迟到早退' WHEN ps."status" = '1009' THEN '迟到' @@ -532,7 +532,7 @@ question_and_answer = [ p."code" AS "工号", p."name" AS "姓名", p."internal_unit" AS "内部单位", - p."external_unit" AS "外部单位", + p."work_unit" AS "工作单位", CASE WHEN ps."status" = '1008' THEN '加班' ELSE '其他' END AS "状态" @@ -561,7 +561,7 @@ question_and_answer = [ SELECT DISTINCT p."code" AS "工号", p."name" AS "姓名", p."internal_unit" AS "内部单位", - p."external_unit" AS "外部单位", + p."work_unit" AS "工作单位", CASE WHEN ps."status" = '1001' THEN '在岗' WHEN ps."status" = '1002' THEN '出差' @@ -677,12 +677,20 @@ question_and_answer = [ { "question": "来自联通的有多少员工", "answer": """ - SELECT "id" AS "id", - "code" AS "工号", - "name" AS "姓名", - "external_unit" AS "外部单位" - FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" - WHERE "external_unit" LIKE '%联通%' LIMIT 1000 + SELECT p.id AS person_id, -- 人员ID + p.name AS person_name, -- 人员姓名 + p.code AS work_id, -- 工号 + p.phone_number, -- 手机号 + p.person_type, -- 人员类型 + o.name AS external_unit_name -- 外部单位名称 + FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database AS p + INNER JOIN + YJOA_APPSERVICE_DB.t_pr3rl2oj_outsourcing_org_new AS o ON p.external_unit = o.id + WHERE p.dr = 0 -- 1. 筛选正常数据,排除已删除 + AND p.person_status != '1' -- 2. 筛选已在流程中或已入库的人员,排除草稿 + AND o.name like '%联通%' -- 4. 核心条件:外 + + """, "tags": ["员工", "外部单位", "统计查询"], "category": "外部单位统计" @@ -690,12 +698,18 @@ question_and_answer = [ { "question": "各个外部单位下的员工人数统计", "answer": """ - SELECT "external_unit" AS "外部单位", COUNT(*) AS "员工人数" - FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" - WHERE "external_unit" IS NOT NULL - AND "external_unit" != '' - GROUP BY "external_unit" - ORDER BY "员工人数" DESC LIMIT 1000 + SELECT o.name AS external_unit_name, -- 外部单位名称 + COUNT(p.id) AS employee_count -- 该单位下的员工人数 + FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database AS p + INNER JOIN + YJOA_APPSERVICE_DB.t_pr3rl2oj_outsourcing_org_new AS o ON p.external_unit = o.id + WHERE p.dr = 0 -- 1. 只统计正常(非已删除)的人员 +-- AND p.person_status IN ('3', '4', '5') -- 可选:只统计特定状态的人员,如“已入库”、“停用”等 + GROUP BY o.name -- 2. 按外部单位名称进行分组 + + HAVING COUNT(p.id) > 0 -- 3. (可选) 只显示有员工的单位 + ORDER BY employee_count DESC; -- 4. 按员工人数从多到少排序 + """, "tags": ["员工", "外部单位", "人数统计"], "category": "外部单位统计" @@ -1102,7 +1116,7 @@ question_and_answer = [ } , { - "question": "9月在林芝工作中有多少天迟到?", + "question": "张三9月在林芝工作中有多少天迟到?", "answer": ''' SELECT COUNT(*) as '迟到天数' diff --git a/util/train_ddl.py b/util/train_ddl.py index 7d01404..959245e 100644 --- a/util/train_ddl.py +++ b/util/train_ddl.py @@ -54,13 +54,7 @@ person_database_ddl = """ "role": "dimension", "tags": ["证件信息", "身份标识"] }, - { - "name": "input_time", - "type": "DATETIME(39)", - "comment": "录入时间", - "role": "dimension", - "tags": ["时间信息", "操作记录"] - }, + { "name": "external_unit", "type": "VARCHAR(600)", @@ -68,20 +62,8 @@ person_database_ddl = """ "role": "dimension", "tags": ["组织信息", "外部单位","外部单位名称"] }, - { - "name": "photo", - "type": "TEXT(max)", - "comment": "照片(二进制文本)", - "role": "dimension", - "tags": ["多媒体信息"] - }, - { - "name": "input_user", - "type": "VARCHAR(108)", - "comment": "录入人", - "role": "dimension", - "tags": ["操作人信息"] - }, + + { "name": "is_internal", "type": "VARCHAR(108)", @@ -137,13 +119,7 @@ person_database_ddl = """ "role": "dimension", "tags": ["组织信息", "内部架构","部门ID"] }, - { - "name": "input_dept", - "type": "VARCHAR(108)", - "comment": "录入部门ID", - "role": "dimension", - "tags": ["操作部门", "组织信息","录入部门ID"] - }, + { "name": "name", "type": "VARCHAR(600)", @@ -195,7 +171,7 @@ person_database_ddl = """ { "name": "code", "type": "VARCHAR(600)", - "comment": "用户ID彪马", + "comment": "用户ID编号", "role": "dimension", "tags": ["用户ID", "工号"] }, @@ -207,21 +183,6 @@ person_database_ddl = """ "tags": ["租户信息", "系统隔离"] }, - { - "name": "create_time", - "type": "DATETIME(39)", - "comment": "创建时间", - "role": "dimension", - "tags": ["时间信息", "系统记录"] - }, - { - "name": "modify_time", - "type": "DATETIME(39)", - "comment": "修改时间", - "role": "dimension", - "tags": ["时间信息", "系统记录"] - }, - { "name": "to_dept", @@ -357,52 +318,9 @@ person_database_ddl = """ "role": "dimension", "tags": ["工作信息", "职责描述"] }, - { - "name": "engage_contract_no", - "type": "VARCHAR(600)", - "comment": "从事项目合同编号", - "role": "dimension", - "tags": ["合同信息", "项目信息"] - }, - { - "name": "engage_contract_name", - "type": "VARCHAR(600)", - "comment": "从事项目合同名称", - "role": "dimension", - "tags": ["合同信息", "项目信息"] - }, - { - "name": "is_subcontractor", - "type": "VARCHAR(108)", - "comment": "是否分包商", - "value":{ - "1":"是", - "0":"否", - }, - "role": "dimension", - "tags": ["供应商类型", "合作模式","枚举信息"] - }, - { - "name": "general_contractor_unit", - "type": "VARCHAR(600)", - "comment": "总包单位全称", - "role": "dimension", - "tags": ["合作单位", "总包信息"] - }, - { - "name": "entry_date", - "type": "VARCHAR(30)", - "comment": "入场日期", - "role": "dimension", - "tags": ["时间信息", "项目参与"] - }, - { - "name": "expected_departure_date", - "type": "VARCHAR(30)", - "comment": "预计离场日期", - "role": "dimension", - "tags": ["时间信息", "项目参与"] - }, + + + { "name": "office_city", "type": "VARCHAR(600)", @@ -435,14 +353,7 @@ person_database_ddl = """ "role": "dimension", "tags": ["联系方式", "通讯信息"] }, - { - "name": "person_count", - "type": "INT", - "comment": "人员数量", - "role": "metric", - "aggregation": "count", - "tags": ["统计指标", "数量统计"] - } + ], "relationships": [ { @@ -1037,7 +948,7 @@ person_in_tibat = ''' "relationships": [ { "from": "person_id", - "to_table": "t_yj_person_database", + "to_table": "t_pr3rl2oj_yj_person_database", "to_field": "code", "type": "foreign_key", "comment": "关联人员基本信息表" @@ -1123,4 +1034,42 @@ org_orgs_ddl = ''' "tags": ["部门id","部门信息","部门名称"] } +''' + +out_org_orgs_ddl = ''' +{ + "db_name":"YJOA_APPSERVICE_DB", + "table_name": "t_pr3rl2oj_outsourcing_org_new", + "table_comment": "外部单位信息表。仅用于查询外部单位信息,关联人员基本信息表中的external_unit字段", + "columns": [ + { + "name": "id", + "type": "VARCHAR(36)", + "comment": "外部单位ID", + "role": "dimension", + "tags": ["主键", "id标识","外部单位ID"] + } + , + { + "name": "name", + "type": "VARCHAR(50)", + "comment": "部门名称", + "role": "dimension", + "tags": ["外部单位名称"] + } + + + ], + "relationships": [ + { + "from": "id", + "to_table": "t_pr3rl2oj_yj_person_database", + "to_field": "external_unit", + "type": "foreign_key", + "comment": "关联人员基本信息表,用于外部单位查询" + } + ], + + "tags": ["外部单位","外部信息","外部单位名称",'仅用于查询外部单位'] +} ''' \ No newline at end of file