feat:增加强制提示词,增加新的问答示例
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| from service.cus_vanna_srevice import CustomVanna | ||||
| from util import train_ddl | ||||
| from  util import q_and_a_dict | ||||
| from  util import q_and_a_dict,q_a_next | ||||
| import random | ||||
| table_ddls = [ | ||||
|     train_ddl.person_database_ddl,train_ddl.person_status_ddl, | ||||
|     train_ddl.person_attendance_ddl,train_ddl.person_ac_area, | ||||
| @@ -20,6 +21,10 @@ 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: | ||||
|     dd=[] | ||||
|     dd.extend(q_and_a_dict.question_and_answer) | ||||
|     ##dd.extend(q_a_next.org_and_attend_q_a) | ||||
|     random.shuffle(dd) | ||||
|     for d in dd: | ||||
|         vn.add_question_sql(question=d['question'], sql=d['answer']) | ||||
|  | ||||
|   | ||||
							
								
								
									
										187
									
								
								util/q_a_next.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								util/q_a_next.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,187 @@ | ||||
| org_and_attend_q_a = [ | ||||
|     { | ||||
|         "question": "XX中心员工在林芝工作的天数", | ||||
|         "answer": ''' | ||||
|                   SELECT DISTINCT p."code"                                                   AS "工号", | ||||
|                                   p."name"                                                   AS "姓名", | ||||
|  | ||||
|                                   COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                            LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a ON p."code" = a."person_id" | ||||
|                            LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac | ||||
|                                      ON a."access_control_point" = ac."ac_point" | ||||
|                   WHERE p."dr" = 0 | ||||
|                     AND a."dr" = 0 | ||||
|                     AND ac."region" = 5 | ||||
|                     AND p."internal_dept" in | ||||
|                         (SELECT "id" | ||||
|                          FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH "name"||"shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") | ||||
|                   GROUP BY p."code", p."name" | ||||
|                   ORDER BY "在林芝工作天数" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, { | ||||
|         "question": "xx中心10月有哪些人迟到/早退", | ||||
|         "answer": ''' | ||||
|                   SELECT p."id"                                                               AS "id", | ||||
|                          p."code"                                                             AS "code", | ||||
|                          p."name"                                                             AS "name", | ||||
|                          CASE WHEN ps."status" = '1006' THEN '迟到/早退' ELSE ps."status" END AS "status" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            INNER JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                                       ON p."code" = ps."person_id" | ||||
|                   WHERE ps."status" = '1006' | ||||
|                     AND ps."date_value" LIKE '2025-10%' | ||||
|                     AND ps."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND p."internal_dept" IN (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "xx中心10月有哪些人出差", | ||||
|         "answer": ''' | ||||
|                   SELECT p."id"                                                          AS "id", | ||||
|                          p."code"                                                        AS "code", | ||||
|                          p."name"                                                        AS "name", | ||||
|                          CASE WHEN ps."status" = '1002' THEN '出差' ELSE ps."status" END AS "status" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            INNER JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                                       ON p."code" = ps."person_id" | ||||
|                   WHERE ps."status" = '1002' | ||||
|                     AND ps."date_value" LIKE '2025-10%' | ||||
|                     AND ps."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND p."internal_dept" IN (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "xx中心10月有哪些人旷工", | ||||
|         "answer": ''' | ||||
|                   SELECT p."id"                                                          AS "id", | ||||
|                          p."code"                                                        AS "code", | ||||
|                          p."name"                                                        AS "name", | ||||
|                          CASE WHEN ps."status" = '1002' THEN '旷工' ELSE ps."status" END AS "status" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            INNER JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                                       ON p."code" = ps."person_id" | ||||
|                   WHERE ps."status" = '1005' | ||||
|                     AND ps."date_value" LIKE '2025-10%' | ||||
|                     AND ps."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND p."internal_dept" IN (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "xx中心10月有哪些人请假", | ||||
|         "answer": ''' | ||||
|                   SELECT p."id"                                                          AS "id", | ||||
|                          p."code"                                                        AS "code", | ||||
|                          p."name"                                                        AS "name", | ||||
|                          CASE WHEN ps."status" = '1003' THEN '请假' ELSE ps."status" END AS "status" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps | ||||
|                            INNER JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                                       ON p."code" = ps."person_id" | ||||
|                   WHERE ps."status" = '1005' | ||||
|                     AND ps."date_value" LIKE '2025-10%' | ||||
|                     AND ps."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND p."internal_dept" IN (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "xx中心,9月迟到次数多前三是哪几个员工", | ||||
|         "answer": ''' | ||||
|                   SELECT p.name       AS "employee_name", | ||||
|                          p.code       AS "employee_code", | ||||
|                          o.name       AS "department_name", | ||||
|                          COUNT(ps.id) AS "late_count" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p | ||||
|                            JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p.internal_dept = o.id | ||||
|                            JOIN "YJOA_APPSERVICE_DB"."t_yj_person_status" ps ON p.id = ps.person_id | ||||
|                   WHERE p.dr = 0 | ||||
|                     AND ps.dr = 0 | ||||
|                     AND ps.status = '1006' | ||||
|                     AND ps.date_value LIKE '2025-09%' | ||||
|                     AND o.id IN (SELECT id FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH (name LIKE '%xx中心%' OR shortname LIKE '%xx中心%') AND dr=0 AND enable=1 | ||||
|                   CONNECT BY PRIOR id = parentid) | ||||
|                   GROUP BY p.name, p.code, o.name | ||||
|                   ORDER BY "late_count" DESC LIMIT 3 | ||||
|                   ''' | ||||
|     }, { | ||||
|         "question": "xx中心员工10月打卡记录查询", | ||||
|         "answer": ''' | ||||
|                   SELECT a."person_name"                                                                    AS "person_name", | ||||
|                          p."code"                                                                           AS "employee_code", | ||||
|                          a."attendance_time"                                                                AS "attendance_time", | ||||
|                          a."attendance_address"                                                             AS "attendance_address", | ||||
|                          CASE | ||||
|                              WHEN a."status" = 1 THEN '在岗' | ||||
|                              WHEN a."status" = 2 THEN '出差' | ||||
|                              WHEN a."status" = 3 | ||||
|                                  THEN '休假' END                                                            AS "status_desc", | ||||
|                          CASE | ||||
|                              WHEN a."enter_or_exit" = 1 THEN '进' | ||||
|                              WHEN a."enter_or_exit" = 2 | ||||
|                                  THEN '出' END                                                              AS "entry_exit", | ||||
|                          o."name"                                                                           AS "department_name" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a | ||||
|                            JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p ON a."person_id" = p."code" | ||||
|                            JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id" | ||||
|                   WHERE a."dr" = 0 | ||||
|                     AND p."dr" = 0 | ||||
|                     AND a."attendance_time" >= '2025-10-01' | ||||
|                     AND a."attendance_time" < '2025-11-01' | ||||
|                     AND o."id" IN (SELECT o2."id" FROM "IUAP_APDOC_BASEDOC"."org_orgs" o2 | ||||
|                   START WITH (o2."name" LIKE '%xx中心%' | ||||
|                           OR o2."shortname" LIKE '%xx中心%') | ||||
|                          AND o2."dr" = 0 | ||||
|                          AND o2."enable" = 1 | ||||
|                   CONNECT BY PRIOR o2."id" = o2."parentid") | ||||
|                   ORDER BY a."attendance_time" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, { | ||||
|  "question": "xx中心员工10月考勤查询", | ||||
|         "answer": ''' | ||||
|                   SELECT p."code"                 AS "工号", | ||||
|                          p."name"                 AS "姓名", | ||||
|                          o."name"                 AS "部门名称", | ||||
|                          ps."date_value"          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早退' | ||||
|                              ELSE ps."status" END 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" | ||||
|                            JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id" | ||||
|                   WHERE o."id" IN (SELECT id FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH ("name" LIKE '%xx中心%' OR "shortname" LIKE '%xx中心%') AND "enable" = 1 AND "dr" = 0 AND "code" LIKE '%CYJ%' | ||||
|                   CONNECT BY PRIOR "id" = "parentid") AND ps."date_value" LIKE '2025-10%' AND ps."dr" = 0 AND p."dr" = 0 | ||||
|                   ORDER BY ps."date_value" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     } | ||||
|  | ||||
| ] | ||||
| @@ -451,29 +451,7 @@ question_and_answer = [ | ||||
|                       LIMIT 1 | ||||
|                   ''' | ||||
|     }, | ||||
|     { | ||||
|         "question": "张三今天早上9点半之前,今天早上0点之后,有打卡记录吗", | ||||
|         "answer": ''' | ||||
|                   SELECT a."person_name"        AS "姓名", | ||||
|                          a."attendance_time"    AS "考勤时间", | ||||
|                          a."attendance_address" AS "考勤地址", | ||||
|                          CASE | ||||
|                              WHEN a."status" = 1 THEN '在岗' | ||||
|                              WHEN a."status" = 2 THEN '出差' | ||||
|                              WHEN a."status" = 3 THEN '休假' | ||||
|                              END                AS "状态", | ||||
|                          CASE | ||||
|                              WHEN a."enter_or_exit" = 1 THEN '进' | ||||
|                              WHEN a."enter_or_exit" = 2 THEN '出' | ||||
|                              END                AS "进出类型" | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a | ||||
|                   WHERE a."person_name" = '张三' | ||||
|                     AND a."attendance_time" >= '2025-10-16 00:00:00' | ||||
|                     AND a."attendance_time" < '2025-10-16 09:30:00' | ||||
|                     AND a."dr" = 0 | ||||
|                   ORDER BY a."attendance_time" DESC LIMIT 1000 | ||||
|                   ''' | ||||
|     }, | ||||
|  | ||||
|     { | ||||
|         "question": "XX中心正式人员有多少,各个处室有多少?", | ||||
|         "answer": ''' | ||||
|   | ||||
| @@ -7,11 +7,7 @@ train_document=''' | ||||
|                 查询单位时,通过orgs表查询,且需要基于parentID查询递归查询单位下的子单位; | ||||
|                 查询内部单位时,则可以直接查询人员信息表,通过like模糊查询; | ||||
|                 没有明确说明查询外部单位,都默认查询通过orgs查询单位; | ||||
|                 数信中心和数信部并非同一个部门,注意区分,不要混淆 | ||||
|                 数信中心下还有多个部门,这些部门里的人员也隶属于数信中心 | ||||
|                 根据部门名称查询部门时除了全称name,简称shortname也重要信息 | ||||
|                 数信部是简称 | ||||
|                 部门表org_orgs中的level字段 {1:公司,2:一级部门,3:二级部门.....} | ||||
|                 internal_dept和internal_unit是部门编号不是名称,注意区分 | ||||
|                 查询部门信息时尽量使用internal_dept而非internal_unit<UNK> | ||||
|         ''' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 雷雨
					雷雨