Compare commits
	
		
			4 Commits
		
	
	
		
			039b15341e
			...
			dev
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 66dc268cd5 | ||
|   | e6756c74da | ||
|   | e72b24e7f7 | ||
|   | 7837b95766 | 
| @@ -58,9 +58,10 @@ def create_vana(): | ||||
| def init_vn(vn): | ||||
|     logger.info("--------------init vana-----connect to datasouce db----") | ||||
|     connect_database(vn) | ||||
|     load_ddl_doc.add_ddl(vn) | ||||
|     load_ddl_doc.add_documentation(vn) | ||||
|  | ||||
|     if config('IS_FIRST_LOAD', default=False, cast=bool): | ||||
|         load_ddl_doc.add_ddl(vn) | ||||
|         load_ddl_doc.add_documentation(vn) | ||||
|         load_train_data_ddl(vn) | ||||
|     return vn | ||||
|  | ||||
|   | ||||
| @@ -54,6 +54,9 @@ template: | ||||
|           <rule-detail>生成的SQL必须避免与数据库关键字冲突。</rule-detail> | ||||
|           <rule-detail>注意列名定义和使用的先后顺序,例如:SELECT阶段定义了列名,如果GROUP BY阶段先与SELECT阶段执行时,是不许在GROUP BY阶段引用列名的。</rule-detail> | ||||
|           <rule-detail>在ORDER BY、GROUP BY、WHERE子句中不要使用SELECT中定义的别名</rule-detail> | ||||
|           <rule-detail>当SELECT中同时包含聚合列和非聚合列时,需要在GROUP BY中指定所有非聚合列</rule-detail> | ||||
|           <rule-detail>递归 WITH 子句必须具有列别名列表</rule-detail> | ||||
|           <rule-detail>CONNECT BY子查询是独立的,无法访问外部查询的表别名,因此涉及CONNECT BY子查询时,里面禁止使用表别名</rule-detail> | ||||
|         </rule> | ||||
|         <rule> | ||||
|           <rule-title>数据查询与排序</rule-title> | ||||
| @@ -115,6 +118,10 @@ template: | ||||
|           <rule-detail>若用户提问中提及参考SQL,需先判断该SQL是否为一个合法的、只读的查询语句。</rule-detail> | ||||
|           <rule-detail>忽略问题中提到的“数据源名称”或“数据源描述”等无关信息,聚焦于核心的业务需求。</rule-detail> | ||||
|         </rule> | ||||
|         <rule> | ||||
|         <rule-title>图表字段注意事项</rule-title> | ||||
|         <rule-detail>基于参考SQL的查询结果,请确保图表配置中的value字段与SQL结果字段别名完全一致。例如SELECT "external_unit" AS "外部单位" 图表配置的value应为“外部单位”而非“external_unit”。</rule-detail> | ||||
|         </rule> | ||||
|       </Rules> | ||||
|       ### 以下 <example> 块帮助你理解问题及返回格式,**请勿将此块内的任何表结构用于回答用户的问题**。 | ||||
|       <example> | ||||
| @@ -185,10 +192,6 @@ template: | ||||
|               <words><word>数信中心</word><word>建设处</word><word>规划发展部</word><word>综合处</word></words> | ||||
|               <description>这些都可能是单位的名称,属于内部部门</description> | ||||
|             </terminology> | ||||
|             <terminology> | ||||
|               <words><word>external_unit</word><word>external_dept</word></words> | ||||
|               <description>这些直接是外部单位和外部部门的字段,值是名称,非编号</description> | ||||
|             </terminology> | ||||
|           </terminologies> | ||||
|         <!-- [RAG 集成区] --> | ||||
|         <!-- 将从向量数据库/知识库中检索到的最相关的N个问答对放在这里 --> | ||||
| @@ -247,9 +250,15 @@ template: | ||||
|         <rule> | ||||
|           你需要在JSON内生成一个图表的标题,放在"title"字段内,这个标题需要尽量精简 | ||||
|         </rule> | ||||
|         <rule> | ||||
|           基于参考SQL的查询结果,请确保图表配置中的value字段与SQL结果字段别名完全一致。例如SELECT "external_unit" AS "外部单位" 图表配置的value应为“外部单位”而非“external_unit” | ||||
|         </rule> | ||||
|         <rule> | ||||
|           涉及查询男女性别比例时建议采用表格或者柱状图展示,禁止采用饼状图 | ||||
|         </rule> | ||||
|         <rule> | ||||
|           表格作为保底配置,当生成某中图表配置有困难时一律用表格 | ||||
|         </rule> | ||||
|         <rule> | ||||
|           如果需要表格,JSON格式应为: | ||||
|           {{"type":"table", "title": "标题", "columns": [{{"name":"{lang}字段名1", "value": "SQL 查询列 1(有别名用别名,去掉外层的反引号、双引号、方括号)"}}, {{"name": "{lang}字段名 2", "value": "SQL 查询列 2(有别名用别名,去掉外层的反引号、双引号、方括号)"}}]}} | ||||
|   | ||||
| @@ -120,7 +120,7 @@ org_and_attend_q_a = [ | ||||
|                          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 | ||||
|                            JOIN "YJOA_APPSERVICE_DB"."t_yj_person_status" ps ON p.code = ps.person_id | ||||
|                   WHERE p.dr = 0 | ||||
|                     AND ps.dr = 0 | ||||
|                     AND ps.status = '1006' | ||||
| @@ -217,6 +217,24 @@ org_and_attend_q_a = [ | ||||
|                          ''', | ||||
|         "tags": ["员工", "部门", "考勤", "迟到","人数","最值"], | ||||
|         "category": "考勤管理" | ||||
|     } | ||||
|     }, | ||||
|     { | ||||
|         "question": "XX中心在藏最长时间的人是谁", | ||||
|         "answer": ''' | ||||
|                   SELECT p."name" AS "姓名", p."code" 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 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."name", p."code" | ||||
|                   ORDER BY COUNT (ps."id") DESC LIMIT 1 | ||||
|                   ''' | ||||
|     }, | ||||
|  | ||||
| ] | ||||
|   | ||||
| @@ -468,54 +468,53 @@ question_and_answer = [ | ||||
|                                             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" | ||||
|                       ) | ||||
|                          AND p.id IN ( | ||||
|                   ) | ||||
|                   AND p.code IN ( | ||||
|                   SELECT person_id | ||||
|                   FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" | ||||
|                   WHERE status = '1001' | ||||
|                     AND date_value = TO_CHAR(SYSDATE | ||||
|                       , 'yyyy-MM-dd') | ||||
|                     AND dr = 0) | ||||
|                     AND p.dr = 0 | ||||
|                   AND date_value = TO_CHAR(SYSDATE, 'yyyy-MM-dd') | ||||
|                   AND dr = 0) | ||||
|                   AND p.dr = 0 | ||||
|                   GROUP BY o.name | ||||
|                   ORDER BY "人数" DESC | ||||
|                       LIMIT 1000 | ||||
|                   ''', | ||||
|         "tags": ["员工", "部门", "考勤", "在岗人数"], | ||||
|         "category": "考勤管理" | ||||
|     }, | ||||
|     { | ||||
|         "question": "XX部门昨天在岗人员数量", | ||||
|         "answer": ''' | ||||
|                   SELECT COUNT(p.id) AS "人数" | ||||
|                   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" s ON p.id = s.person_id | ||||
|                   WHERE o.id 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") | ||||
|                          AND s.status = '1001' | ||||
|                          AND s.date_value = TO_CHAR(SYSDATE - 1 | ||||
|                            , 'yyyy-MM-dd') | ||||
|                          AND s.dr = 0 | ||||
|                          AND p.dr = 0 LIMIT 1000 | ||||
|                   ''', | ||||
|         "tags": ["员工", "部门", "考勤", "在岗人数"], | ||||
|         "category": "考勤管理" | ||||
|     }, | ||||
|     { | ||||
|         "question": "XX中心的李四十月份休息了多少天", | ||||
|         "answer": """ | ||||
|                   SELECT COUNT(*) AS rest_days | ||||
|                   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 p."name" = '谭杰明' | ||||
|                     AND p."internal_dept" IN (SELECT "id" | ||||
|                                               FROM "IUAP_APDOC_BASEDOC"."org_orgs" START | ||||
|                   WITH ("name" LIKE '%xx中心%' OR "shortname" LIKE '%xx中心%') | ||||
|                       AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%' | ||||
|                   LIMIT 1000 | ||||
|               ''', | ||||
|             "tags": ["员工", "部门", "考勤", "在岗人数"], | ||||
|             "category": "考勤管理" | ||||
|         }, | ||||
|         { | ||||
|             "question": "XX部门昨天在岗人员数量", | ||||
|             "answer": ''' | ||||
|                     SELECT COUNT(p.id) AS "人数"  | ||||
|                     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" s ON p.code = s.person_id  | ||||
|                     WHERE o.id 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")  | ||||
|                             AND s.status = '1001'  | ||||
|                             AND s.date_value = TO_CHAR(SYSDATE - 1,  | ||||
|                             'yyyy-MM-dd')  | ||||
|                             AND s.dr = 0  | ||||
|                             AND p.dr = 0 LIMIT 1000 | ||||
|                     ''', | ||||
|             "tags": ["员工", "部门", "考勤", "在岗人数"], | ||||
|             "category": "考勤管理" | ||||
|         }, | ||||
|         { | ||||
|             "question": "XX中心的李四十月份休息了多少天", | ||||
|             "answer": """ | ||||
|               SELECT COUNT(*) AS rest_days  | ||||
|               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 p."name" = '谭杰明'  | ||||
|               AND p."internal_dept" IN ( | ||||
|                   SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"  | ||||
|                   START WITH ("name" LIKE '%数信中心%' OR "shortname" LIKE '%数信中心%')  | ||||
|                   AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'  | ||||
|                   CONNECT BY PRIOR "id" = "parentid" | ||||
|                       ) | ||||
|                          AND ps."status" = '1003' | ||||
| @@ -935,3 +934,4 @@ question_and_answer = [ | ||||
|     } | ||||
|  | ||||
| ] | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user