feat:修改ddql,增加qa问答
This commit is contained in:
		| @@ -1,8 +1,8 @@ | ||||
| from service.cus_vanna_srevice import CustomVanna | ||||
| from util import train_ddl | ||||
|  | ||||
| from  util import q_and_a_dict | ||||
| table_ddls = [ | ||||
|     train_ddl.ddl_sql,train_ddl.attendance_ddl | ||||
|     train_ddl.person_ddl_sql,train_ddl.rule_ddl,train_ddl.user_status_ddl | ||||
| ] | ||||
| list_documentions = [ | ||||
|     train_ddl.train_document, | ||||
| @@ -17,3 +17,6 @@ def add_ddl(vn: CustomVanna): | ||||
| def add_documentation(vn: CustomVanna): | ||||
|     for doc in list_documentions: | ||||
|         vn.add_documentation(doc) | ||||
|     for d in q_and_a_dict.question_and_answer: | ||||
|         vn.add_question_sql(question=d['question'], sql=d['answer']) | ||||
|  | ||||
|   | ||||
							
								
								
									
										206
									
								
								util/q_and_a_dict.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								util/q_and_a_dict.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,206 @@ | ||||
| question_and_answer = [ | ||||
|     {"question": "考勤地点有哪些", | ||||
|      "answer": ''' | ||||
|                SELECT DISTINCT CASE "region" | ||||
|                                    WHEN '1' THEN '北京' | ||||
|                                    WHEN '2' THEN '成都' | ||||
|                                    WHEN '3' THEN '秭归' | ||||
|                                    WHEN '4' THEN '拉萨' | ||||
|                                    WHEN '5' THEN '林芝' END AS "考勤地点" | ||||
|                FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance_rules" | ||||
|                WHERE "region" IS NOT NULL LIMIT 1000 | ||||
|                ''' | ||||
|      }, | ||||
|     {"question": "成都的考勤规则是什么", | ||||
|      "answer": ''' | ||||
|                SELECT "region"                                AS "region_code", | ||||
|                       CASE | ||||
|                           WHEN "region" = '1' THEN '北京' | ||||
|                           WHEN "region" = '2' THEN '成都' | ||||
|                           WHEN "region" = '3' THEN '秭归' | ||||
|                           WHEN "region" = '4' THEN '拉萨' | ||||
|                           WHEN "region" = '5' THEN '林芝' END AS "region_name", | ||||
|                       "morning_check_time"                    AS "morning_check_time", | ||||
|                       "afternoon_check_time"                  AS "afternoon_check_time", | ||||
|                       "before_lunch_time"                     AS "before_lunch_time", | ||||
|                       "after_lunch_time"                      AS "after_lunch_time" | ||||
|                FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance_rules" | ||||
|                WHERE "region" = '2' LIMIT 1000 | ||||
|                ''' | ||||
|      }, | ||||
|     {"question": "所有员工男女各有多少人", | ||||
|      "answer": ''' | ||||
|                SELECT CASE WHEN "gender" = '1' THEN '男' WHEN "gender" = '2' THEN '女' END AS "gender", | ||||
|                       COUNT(*)                                                             AS "person_count" | ||||
|                FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                WHERE "dr" = 0 | ||||
|                GROUP BY "gender" | ||||
|                ORDER BY "gender" ASC LIMIT 1000 | ||||
|                ''' | ||||
|      }, | ||||
|     { | ||||
|         "question": "联通下面有哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT "id"            AS "id", | ||||
|                          "code"          AS "工号", | ||||
|                          "name"          AS "姓名", | ||||
|                          "internal_unit" AS "内部单位", | ||||
|                          "external_unit" AS "外部单位" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                   WHERE "internal_unit" LIKE '%联通%' | ||||
|                      OR "external_unit" LIKE '%联通%' LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "9月有多少哪些员工在休假", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT p."id"            AS "id", | ||||
|                                   p."code"          AS "工号", | ||||
|                                   p."name"          AS "姓名", | ||||
|                                   p."internal_unit" AS "内部单位", | ||||
|                                   p."external_unit" 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" | ||||
|                   WHERE ps."status" = '1003' | ||||
|                     AND ps."date_value" LIKE '2025-09%' LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "联通的员工,8月份有哪些迟到,旷工的", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT p."code"                                      AS "工号", | ||||
|                                   p."name"                                      AS "姓名", | ||||
|                                   p."internal_unit"                             AS "内部单位", | ||||
|                                   p."external_unit"                             AS "外部单位", | ||||
|                                   CASE | ||||
|                                       WHEN ps."status" = '1006' THEN '迟到,早退' | ||||
|                                       WHEN ps."status" = '1005' THEN '旷工' END AS "人员状态", | ||||
|                                   ps."date_value"                               AS "日期" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p ON ps."person_id" = p."code" | ||||
|                   WHERE (p."internal_unit" LIKE '%联通%' OR p."external_unit" LIKE '%联通%') | ||||
|                     AND ps."status" IN ('1005', '1006') | ||||
|                     AND ps."date_value" LIKE '2025-08%' | ||||
|                     AND ps."dr" = 0 | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "博士和硕士分别有哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT "name"                                        AS "姓名", | ||||
|                                   "code"                                        AS "工号", | ||||
|                                   "internal_unit"                               AS "内部单位", | ||||
|                                   "external_unit"                               AS "外部单位", | ||||
|                                   CASE | ||||
|                                       WHEN "highest_degree" = '1' THEN '学士学位' | ||||
|                                       WHEN "highest_degree" = '2' THEN '硕士学位' | ||||
|                                       WHEN "highest_degree" = '3' THEN '博士学位' | ||||
|                                       WHEN "highest_degree" = '4' THEN '无' END AS "最高学位" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                   WHERE "highest_degree" IN ('2', '3') | ||||
|                     AND "dr" = '0' | ||||
|                   ORDER BY "最高学位", "姓名" LIMIT 1000 | ||||
|                   ''' | ||||
|     }, { | ||||
|         "question": "8月份在藏超过10天的有哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT p."code"                       AS "工号", | ||||
|                                   p."name"                       AS "姓名", | ||||
|                                   CASE | ||||
|                                       WHEN p."internal_unit" IS NOT NULL AND p."internal_unit" != '' THEN p."internal_unit" | ||||
|                                       ELSE p."external_unit" END AS "单位", | ||||
|                                   COUNT(ps."id")                 AS "在藏天数" | ||||
|                   FROM YJOA_APPSERVICE_DB."t_yj_person_status" ps | ||||
|                            JOIN YJOA_APPSERVICE_DB."t_pr3rl2oj_yj_person_database" p ON ps."person_id" = p."code" | ||||
|                   WHERE ps."is_in_tibet" = 1 | ||||
|                     AND ps."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND ps."date_value" LIKE '2025-08%' | ||||
|                   GROUP BY p."code", p."name", | ||||
|                            CASE | ||||
|                                WHEN p."internal_unit" IS NOT NULL AND p."internal_unit" != '' THEN p."internal_unit" | ||||
|                                ELSE p."external_unit" END | ||||
|                   HAVING COUNT(ps."id") > 10 | ||||
|                   ORDER BY COUNT(ps."id") DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "张三 8月的考勤查询", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT p."code"                                              AS "工号", | ||||
|                                   p."name"                                              AS "姓名", | ||||
|                                   p."internal_unit"                                     AS "内部单位", | ||||
|                                   p."external_unit"                                     AS "外部单位", | ||||
|                                   CASE | ||||
|                                       WHEN ps."status" = '1001' THEN '在岗' | ||||
|                                       WHEN ps."status" = '1002' THEN '出差' | ||||
|                                       WHEN ps."status" = '1003' THEN '休假,请假' | ||||
|                                       WHEN ps."status" = '1005' THEN '旷工' | ||||
|                                       WHEN ps."status" = '1006' THEN '迟到,早退' | ||||
|                                       WHEN ps."status" = '1007' THEN '休息日' | ||||
|                                       WHEN ps."status" = '4001' THEN 'am在岗pm缺勤' | ||||
|                                       WHEN ps."status" = '4002' THEN 'am缺勤pm在岗' | ||||
|                                       WHEN ps."status" = '6001' THEN 'am在岗pm早退' | ||||
|                                       WHEN ps."status" = '6002' THEN 'am迟到pm在岗' | ||||
|                                       WHEN ps."status" = '6004' THEN 'am迟到pm缺勤' | ||||
|                                       WHEN ps."status" = '4006' THEN 'am缺勤pm早退' END AS "人员状态", | ||||
|                                   ps."date_value"                                       AS "日期" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p ON ps."person_id" = p."code" | ||||
|                   WHERE p."name" = '张三' | ||||
|                     AND ps."date_value" LIKE '2025-08%' | ||||
|                     AND ps."dr" = 0 | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "8月份有多人迟到", | ||||
|         "answer": ''' | ||||
|                   SELECT count(distinct person_id) | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                   WHERE ps."status" = '1006' | ||||
|                     AND ps."date_value" LIKE '2025-08%' | ||||
|                     AND ps."dr" = 0 LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "负责智能体相关工作的是哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT "id"            AS "id", | ||||
|                          "code"          AS "工号", | ||||
|                          "name"          AS "姓名", | ||||
|                          "internal_unit" AS "内部单位", | ||||
|                          "external_unit" AS "外部单位", | ||||
|                          "work_content"  AS "工作内容" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                   WHERE "work_content" LIKE '%智能体%' LIMIT 1000 | ||||
|                   ''' | ||||
|     },{ | ||||
|         "question": "9月,旷工,迟到分别有多少人", | ||||
|         "answer": ''' | ||||
|                   SELECT CASE WHEN "status" = '1006' THEN '迟到' WHEN "status" = '1005' THEN '旷工' END AS "status_name", | ||||
|                          COUNT(DISTINCT "person_id")                                                    AS "person_count" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" | ||||
|                   WHERE "status" IN ('1006', '1005') | ||||
|                     AND "date_value" LIKE '2025-09%' | ||||
|                     AND "dr" = 0 | ||||
|                   GROUP BY "status" | ||||
|                   ORDER BY "status" LIMIT 1000 | ||||
|                   ''' | ||||
|     },{ | ||||
|         "question": "在研发基地工作的有哪些员工", | ||||
|         "answer": ''' | ||||
|                   SELECT "id"             AS "id", | ||||
|                          "code"           AS "工号", | ||||
|                          "name"           AS "姓名", | ||||
|                          "internal_unit"  AS "内部单位", | ||||
|                          "external_unit"  AS "外部单位", | ||||
|                          "office_address" AS "办公地点" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" | ||||
|                   WHERE ("office_address" LIKE '%研发基地%' OR "office_city" LIKE '%研发基地%') | ||||
|                     AND "dr" = '0' LIMIT 1000 | ||||
|                   ''' | ||||
|     } | ||||
|  | ||||
| ] | ||||
| @@ -1,5 +1,5 @@ | ||||
| ddl_sql = """ | ||||
| [ | ||||
| person_ddl_sql = """ | ||||
|  | ||||
| { | ||||
|   "db_name":"YJOA_APPSERVICE_DB", | ||||
|   "table_name": "t_pr3rl2oj_yj_person_database", | ||||
| @@ -17,7 +17,7 @@ ddl_sql = """ | ||||
|         "5":"停用" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["状态信息"] | ||||
|       "tags": ["状态信息","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "gender", | ||||
| @@ -28,7 +28,7 @@ ddl_sql = """ | ||||
|         "2": "女" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["基本信息", "人口属性"] | ||||
|       "tags": ["基本信息", "人口属性","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "id_card", | ||||
| @@ -74,7 +74,7 @@ ddl_sql = """ | ||||
|         "0": "否" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["员工类型", "身份标识"] | ||||
|       "tags": ["员工类型", "身份标识","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "phone_number", | ||||
| @@ -104,7 +104,7 @@ ddl_sql = """ | ||||
|         "7":"来访人员", | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["证件信息", "通行权限"] | ||||
|       "tags": ["证件信息", "通行权限","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "expire_time", | ||||
| @@ -154,7 +154,7 @@ ddl_sql = """ | ||||
|         "WQT":"其他外部人员" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["分类信息", "人员分类"] | ||||
|       "tags": ["分类信息", "人员分类","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "id", | ||||
| @@ -163,13 +163,7 @@ ddl_sql = """ | ||||
|       "role": "dimension", | ||||
|       "tags": ["主键", "ID标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "pubts", | ||||
|       "type": "DATETIME(39)", | ||||
|       "comment": "发布时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "系统字段"] | ||||
|     }, | ||||
|    | ||||
|     { | ||||
|       "name": "dr", | ||||
|       "type": "INT", | ||||
| @@ -186,7 +180,7 @@ ddl_sql = """ | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "编码", | ||||
|       "role": "dimension", | ||||
|       "tags": ["编码信息", "业务编码"] | ||||
|       "tags": ["编码信息", "工号"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "ytenant_id", | ||||
| @@ -195,132 +189,7 @@ ddl_sql = """ | ||||
|       "role": "dimension", | ||||
|       "tags": ["租户信息", "系统隔离"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "sourcegrand_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "来源表id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据来源", "关联信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "first_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "来源单据主表id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据来源", "关联信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "firstchild_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "来源单据子表id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据来源", "关联信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "firstbusiobj", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "来源业务对象", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务对象", "数据来源"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "firstcode", | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "来源单据号", | ||||
|       "role": "dimension", | ||||
|       "tags": ["单据信息", "业务编码"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "verifystate", | ||||
|       "type": "INT", | ||||
|       "comment": "单据状态", | ||||
|       "role": "dimension", | ||||
|       "tags": ["审批状态", "业务流程"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "auditor", | ||||
|       "type": "VARCHAR(180)", | ||||
|       "comment": "终审审批人", | ||||
|       "role": "dimension", | ||||
|       "tags": ["审批信息", "操作人"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "audit_time", | ||||
|       "type": "DATETIME(39)", | ||||
|       "comment": "审批日期", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "审批流程"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "auditnote", | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "当前审批人", | ||||
|       "role": "dimension", | ||||
|       "tags": ["审批信息", "操作人"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "procinst_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "流程实例ID", | ||||
|       "role": "dimension", | ||||
|       "tags": ["流程信息", "实例标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bizflow_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "业务流id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务流程", "流标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bizflowname", | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "流程名称", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务流程", "名称描述"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "source_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "上游单据主表id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据关联", "上游信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "sourcechild_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "上游单据子表id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据关联", "上游信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bizflowinstance_id", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "业务流实例id", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务流程", "实例标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "sourcebusiobj", | ||||
|       "type": "VARCHAR(108)", | ||||
|       "comment": "上游业务对象", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务对象", "上游信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "sourcecode", | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "上游单据号", | ||||
|       "role": "dimension", | ||||
|       "tags": ["单据信息", "业务编码"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bizflow_makebillcode", | ||||
|       "type": "VARCHAR(600)", | ||||
|       "comment": "单据转换规则编码", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务流程", "规则编码"] | ||||
|     }, | ||||
|    | ||||
|     { | ||||
|       "name": "create_time", | ||||
|       "type": "DATETIME(39)", | ||||
| @@ -335,27 +204,8 @@ ddl_sql = """ | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "系统记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "creator", | ||||
|       "type": "VARCHAR(180)", | ||||
|       "comment": "创建人", | ||||
|       "role": "dimension", | ||||
|       "tags": ["操作人信息", "系统记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "modifier", | ||||
|       "type": "VARCHAR(180)", | ||||
|       "comment": "修改人", | ||||
|       "role": "dimension", | ||||
|       "tags": ["操作人信息", "系统记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "worker_id", | ||||
|       "type": "VARCHAR(200)", | ||||
|       "comment": "工号", | ||||
|       "role": "dimension", | ||||
|       "tags": ["员工信息", "身份标识"] | ||||
|     }, | ||||
|     | ||||
|    | ||||
|     { | ||||
|       "name": "to_dept", | ||||
|       "type": "VARCHAR(600)", | ||||
| @@ -419,7 +269,7 @@ ddl_sql = """ | ||||
|         "9":"博士 " | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["教育信息", "学历背景"] | ||||
|       "tags": ["教育信息", "学历背景","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "highest_degree", | ||||
| @@ -432,7 +282,7 @@ ddl_sql = """ | ||||
|         "4":"无" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["教育信息", "学位背景"] | ||||
|       "tags": ["教育信息", "学位背景","枚举"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "graduate_school", | ||||
| @@ -600,196 +450,26 @@ ddl_sql = """ | ||||
|       "comment": "关联租户信息" | ||||
|     } | ||||
|   ], | ||||
|   "examples": [ | ||||
|     { | ||||
|       "question": "查询内部员工的数量", | ||||
|       "sql": "SELECT COUNT(*) as person_count FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database WHERE is_internal = '1' AND dr = 0" | ||||
|     }, | ||||
|     { | ||||
|       "question": "按性别统计人员分布情况", | ||||
|       "sql": "SELECT gender, COUNT(*) as person_count FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database WHERE dr = 0 GROUP BY gender" | ||||
|     }, | ||||
|     { | ||||
|       "question": "查询最近一个月新增的人员信息", | ||||
|       "sql": "SELECT * FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database WHERE create_time >= ADD_MONTHS(TRUNC(SYSDATE), -1) AND dr = 0" | ||||
|     } | ||||
|   ], | ||||
|   | ||||
|   "tags": ["人员管理", "人力资源", "审批流程", "基本信息", "工作信息"], | ||||
| }, | ||||
| { | ||||
|   "db_name":"YJOA_APPSERVICE_DB", | ||||
|   "table_name": "t_yj_person_attendance", | ||||
|   "table_comment": "人员考勤记录表,记录人员的考勤打卡信息", | ||||
|   "columns": [ | ||||
|     { | ||||
|       "name": "person_name", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "人员姓名", | ||||
|       "role": "dimension", | ||||
|       "tags": ["基本信息", "身份标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "id", | ||||
|       "type": "VARCHAR(200)", | ||||
|       "comment": "主键ID", | ||||
|       "role": "dimension", | ||||
|       "tags": ["主键", "ID标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "person_id", | ||||
|       "type": "VARCHAR(200)", | ||||
|       "comment": "人员ID", | ||||
|       "role": "dimension", | ||||
|       "tags": ["人员标识", "关联信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "phone_number", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "手机号码", | ||||
|       "role": "dimension", | ||||
|       "tags": ["联系方式", "通讯信息"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "attendance_time", | ||||
|       "type": "DATETIME(39)", | ||||
|       "comment": "考勤时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "考勤记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "attendance_address", | ||||
|       "type": "VARCHAR(200)", | ||||
|       "comment": "考勤地点", | ||||
|       "role": "dimension", | ||||
|       "tags": ["位置信息", "考勤记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "status", | ||||
|       "type": "INT", | ||||
|       "comment": "状态", | ||||
|       "value":{ | ||||
|         "1":"在岗", | ||||
|         "2":"出差", | ||||
|         "3":"休假" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["状态信息", "考勤状态"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "original_id", | ||||
|       "type": "VARCHAR(200)", | ||||
|       "comment": "原数据ID", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据来源", "原始标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "source", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "数据来源", | ||||
|       "role": "dimension", | ||||
|       "tags": ["数据来源", "系统标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "dr", | ||||
|       "type": "INT", | ||||
|       "comment": "逻辑删除标志", | ||||
|       "role": "dimension", | ||||
|       "tags": ["系统状态", "数据状态"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "create_time", | ||||
|       "type": "DATETIME(39)", | ||||
|       "comment": "创建时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "系统记录"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "enter_or_exit", | ||||
|       "type": "INT", | ||||
|       "comment": "进出类型", | ||||
|       "value":{ | ||||
|         "1":"进", | ||||
|         "2":"出" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["考勤类型", "进出标识"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "access_control_point", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "门禁点", | ||||
|       "role": "dimension", | ||||
|       "tags": ["位置信息", "门禁设备"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bv_st", | ||||
|       "type": "VARCHAR(20)", | ||||
|       "comment": "上午打卡时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "业务时间"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bv_et", | ||||
|       "type": "VARCHAR(20)", | ||||
|       "comment": "下午打卡时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "业务时间"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bv_st_field", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "午休前打卡时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "业务字段"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bv_et_field", | ||||
|       "type": "VARCHAR(50)", | ||||
|       "comment": "午休后打卡时间", | ||||
|       "role": "dimension", | ||||
|       "tags": ["时间信息", "业务字段"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "bv_go_type", | ||||
|       "type": "VARCHAR(8)", | ||||
|       "comment": "打卡类型", | ||||
|       "role": "dimension", | ||||
|       "tags": ["业务类型", "分类信息"] | ||||
|     }, | ||||
|   ], | ||||
|   "relationships": [ | ||||
|     { | ||||
|       "from": "person_id", | ||||
|       "to_table": "t_pr3rl2oj_yj_person_database", | ||||
|       "to_field": "id", | ||||
|       "type": "foreign_key", | ||||
|       "comment": "关联人员基本信息表" | ||||
|     } | ||||
|   ], | ||||
|   "examples": [ | ||||
|     { | ||||
|       "question": "查询今日考勤总人次", | ||||
|       "sql": "SELECT COUNT(*) as attendance_count FROM YJOA_APPSERVICE_DB.t_yj_person_attendance WHERE TO_CHAR(attendance_time, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND dr = '0'" | ||||
|     }, | ||||
|     { | ||||
|       "question": "按人员统计本月考勤次数", | ||||
|       "sql": "SELECT person_name, COUNT(*) as attendance_count FROM YJOA_APPSERVICE_DB.t_yj_person_attendance WHERE TO_CHAR(attendance_time, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM') AND dr = '0' GROUP BY person_name, person_id" | ||||
|     }, | ||||
|     { | ||||
|       "question": "查询最近一周的考勤记录", | ||||
|       "sql": "SELECT * FROM YJOA_APPSERVICE_DB.t_yj_person_attendance WHERE attendance_time >= SYSDATE - 7 AND dr = '0' ORDER BY attendance_time DESC" | ||||
|     }, | ||||
|     { | ||||
|       "question": "统计各门禁点的考勤分布", | ||||
|       "sql": "SELECT access_control_point, COUNT(*) as attendance_count FROM YJOA_APPSERVICE_DB.t_yj_person_attendance WHERE dr = '0' GROUP BY access_control_point" | ||||
|     } | ||||
|   ], | ||||
|   "tags": ["考勤管理", "人员考勤", "门禁记录", "时间统计", "考勤分析"] | ||||
| }, | ||||
| } | ||||
|  | ||||
| """ | ||||
|  | ||||
| train_document=''' | ||||
|                 语法为达梦数据库语法; | ||||
|                 查询地址,籍贯,公司,单位时,尽量使用like查询; | ||||
|                 查询人员信息时,由于数据表字段过多。只需要展示人员关键信息字段,id,工号,姓名,单位以及用户问题中需要查询的字段; | ||||
|                 表字段信息以及字段枚举信息在values下,注意相关字段枚举值的转换; | ||||
|                 查询单位信息时,内部单位和外部单位都需要查询,用OR条件查询; | ||||
|                  | ||||
|         ''' | ||||
|  | ||||
| rule_ddl=''' | ||||
| { | ||||
|   "db_name":"YJOA_APPSERVICE_DB", | ||||
|   "table_name": "t_yj_person_attendance_rules", | ||||
|   "table_comment": "人员考勤规则表,定义考勤时间规则和区域设置", | ||||
|   "table_comment": "人员考勤规则表,定义考勤时间规则,考勤地点设置", | ||||
|   "columns": [ | ||||
|     { | ||||
|       "name": "id", | ||||
| @@ -838,7 +518,7 @@ ddl_sql = """ | ||||
|         "5": "林芝" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["区域设置", "地理信息"] | ||||
|       "tags": [ "考勤的位置","非办公区域不要混淆","枚举"] | ||||
|     }, | ||||
|   ], | ||||
|   "relationships": [ | ||||
| @@ -850,26 +530,12 @@ ddl_sql = """ | ||||
|       "comment": "关联区域配置信息" | ||||
|     } | ||||
|   ], | ||||
|   "examples": [ | ||||
|     { | ||||
|       "question": "查询所有考勤规则列表", | ||||
|       "sql": "SELECT * FROM t_yj_person_attendance_rules" | ||||
|     }, | ||||
|     { | ||||
|       "question": "统计各区域的考勤规则数量", | ||||
|       "sql": "SELECT region, COUNT(*) as rule_count FROM YJOA_APPSERVICE_DB.t_yj_person_attendance_rules GROUP BY region" | ||||
|     }, | ||||
|     { | ||||
|       "question": "查询特定区域的考勤时间设置", | ||||
|       "sql": "SELECT morning_check_time, afternoon_check_time, before_lunch_time, after_lunch_time FROM YJOA_APPSERVICE_DB.t_yj_person_attendance_rules WHERE region = '北京'" | ||||
|     }, | ||||
|     { | ||||
|       "question": "检查是否存在重复的考勤规则", | ||||
|       "sql": "SELECT region, morning_check_time, afternoon_check_time, COUNT(*) as rule_count FROM YJOA_APPSERVICE_DB.t_yj_person_attendance_rules GROUP BY region, morning_check_time, afternoon_check_time HAVING COUNT(*) > 1" | ||||
|     } | ||||
|   ], | ||||
|   | ||||
|   "tags": ["考勤规则", "时间设置", "区域配置", "考勤管理", "规则定义"] | ||||
| }, | ||||
| } | ||||
| ''' | ||||
|  | ||||
| user_status_ddl=''' | ||||
| { | ||||
|   "db_name":"YJOA_APPSERVICE_DB", | ||||
|   "table_name": "t_yj_person_status", | ||||
| @@ -896,9 +562,9 @@ ddl_sql = """ | ||||
|       "value":{ | ||||
|         "1001":"在岗", | ||||
|         "1002":"出差", | ||||
|         "1003":"休假", | ||||
|         "1003":"休假,请假", | ||||
|         "1005":"旷工", | ||||
|         "1006":"迟到早退", | ||||
|         "1006":"迟到,早退", | ||||
|         "1007":"休息日", | ||||
|         "4001":"am在岗pm缺勤", | ||||
|         "4002":"am缺勤pm在岗", | ||||
| @@ -908,7 +574,7 @@ ddl_sql = """ | ||||
|         "4006":"am缺勤pm早退" | ||||
|       }, | ||||
|       "role": "dimension", | ||||
|       "tags": ["状态信息", "人员状态"] | ||||
|       "tags": ["状态信息", "人员状态","枚举","迟到早退都是:1006"] | ||||
|     }, | ||||
|     { | ||||
|       "name": "date_value", | ||||
| @@ -943,41 +609,12 @@ ddl_sql = """ | ||||
|     { | ||||
|       "from": "person_id", | ||||
|       "to_table": "t_pr3rl2oj_yj_person_database", | ||||
|       "to_field": "id", | ||||
|       "to_field": "code", | ||||
|       "type": "foreign_key", | ||||
|       "comment": "关联人员基本信息表" | ||||
|     } | ||||
|   ], | ||||
|   "examples": [ | ||||
|     { | ||||
|       "question": "查询今日人员状态记录数量", | ||||
|       "sql": "SELECT COUNT(*) as status_count FROM YJOA_APPSERVICE_DB.t_yj_person_status WHERE date_value = DATE_FORMAT(CURRENT_DATE(), '%Y-%m-%d') AND dr = 0" | ||||
|     }, | ||||
|     { | ||||
|       "question": "统计各状态的人员分布", | ||||
|       "sql": "SELECT status, COUNT(*) as status_count FROM YJOA_APPSERVICE_DB.t_yj_person_status WHERE dr = '0' GROUP BY status" | ||||
|     }, | ||||
|     { | ||||
|       "question": "查询在西藏地区的人员数量", | ||||
|       "sql": "SELECT COUNT(DISTINCT person_id) as tibet_person_count FROM YJOA_APPSERVICE_DB.t_yj_person_status WHERE is_in_tibet = 1 AND dr = 0" | ||||
|     }, | ||||
|     { | ||||
|       "question": "按日期统计人员状态记录", | ||||
|       "sql": "SELECT date_value, status, COUNT(*) as status_count FROM YJOA_APPSERVICE_DB.t_yj_person_status WHERE dr = '0' GROUP BY date_value, status ORDER BY date_value DESC" | ||||
|     }, | ||||
|     { | ||||
|       "question": "查询特定人员的状态历史记录", | ||||
|       "sql": "SELECT date_value, status, is_in_tibet FROM YJOA_APPSERVICE_DB.t_yj_person_status WHERE person_id = '123' AND dr = 0 ORDER BY date_value DESC" | ||||
|     } | ||||
|   ], | ||||
|   | ||||
|   "tags": ["人员状态", "状态记录", "地区管理", "西藏标识", "每日状态"] | ||||
| } | ||||
| ] | ||||
| """ | ||||
|  | ||||
| train_document=''' | ||||
|                 语法为达梦数据库语法; | ||||
|                 查询地址,籍贯,公司,单位时,尽量使用like查询; | ||||
|                 查询人员信息时,由于数据表字段过多。只需要展示人员关键信息字段,id,工号,姓名,单位以及用户问题中需要查询的字段; | ||||
|                 表字段信息以及字段枚举信息: | ||||
|         ''' | ||||
| ''' | ||||
		Reference in New Issue
	
	Block a user
	 雷雨
					雷雨