diff --git a/main_service.py b/main_service.py index 91a38ed..4681deb 100644 --- a/main_service.py +++ b/main_service.py @@ -48,7 +48,7 @@ def create_vana(): "api_base": config('CHAT_MODEL_BASE_URL', default=''), "model": config('CHAT_MODEL_NAME', default=''), 'temperature':config('CHAT_MODEL_TEMPERATURE', default=0.7, cast=float), - 'max_tokens':config('CHAT_MODEL_MAX_TOKEN', default=20000), + 'max_tokens':config('CHAT_MODEL_MAX_TOKEN', default=5000), }, ) diff --git a/template.yaml b/template.yaml index f24f3b7..ee054a8 100644 --- a/template.yaml +++ b/template.yaml @@ -63,12 +63,12 @@ template: - **默认行为**:若提问未指定排序,**默认按时间字段降序排序**(即最新数据在前)。 - **格式化**:若提问要求时间/日期/年月/年,且未指定格式,则分别格式化为 'yyyy-MM-dd HH:mm:ss' / 'yyyy-MM-dd' / 'yyyy-MM' / 'yyyy',语法需适配当前数据库引擎。(达梦数据库如果时间字段是varchar类型也可以) - - 解析用户问题,识别并替换所有已知的等价短语: + + 解析用户问题,识别并替换所有已知的等价短语,将前面的短语换成后面得等价短语,: ** 数信部 -> 数字信息部 ** 安质部 -> 安全质量部 - - + 例如:查询数信部有多少人->查询数字信息部有多少人 + 聚合与计算 @@ -77,8 +77,9 @@ template: 使用了函数(如 COUNT(), CAST(), SUM())的字段,必须为其指定一个英文别名。 计算占比或百分比时,结果保留两位小数,并以 '%' 符号结尾。示例:ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM table), 2) || '%' (PostgreSQL语法) 若查询结果包含枚举字段(如 gender=1,2),必须使用 CASE WHEN 语句将其转换为可读的标签。示例: SELECT CASE WHEN "gender" = '1' THEN '男' WHEN "gender" = '2' THEN '女' END AS "gender" - 重点!重点!涉及查询orgs表时,部门存在多层级,需要递归查询。语法示例:SELECT "id" - FROM "IUAP_APDOC_BASEDOC"."org_orgs" START + 重点!重点!重点!涉及查询orgs表时,部门存在多层级,必须递归查询。使用 start .. with 语法。递归语法示例: + 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" diff --git a/util/q_a_next.py b/util/q_a_next.py index 0e468f2..bf43888 100644 --- a/util/q_a_next.py +++ b/util/q_a_next.py @@ -182,6 +182,23 @@ org_and_attend_q_a = [ 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 ''' + },{ + "question": "10月迟到人数最多的部门", + "answer": ''' + SELECT o."name" AS "部门名称", COUNT(DISTINCT ps."person_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" + JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id" + WHERE ps."status" = '1006' + AND ps."date_value" LIKE '2025-10%' + AND ps."dr" = 0 + AND o."dr" = 0 + AND o."enable" = 1 + AND o."code" LIKE '%CYJ%' + GROUP BY o."name" + ORDER BY COUNT(DISTINCT ps."person_id") DESC LIMIT 1 + ''' } ] diff --git a/util/q_and_a_dict.py b/util/q_and_a_dict.py index 572fc2e..7446869 100644 --- a/util/q_and_a_dict.py +++ b/util/q_and_a_dict.py @@ -1,32 +1,7 @@ question_and_answer = [ - {"question": "XX部有多少员工,男女员工分别有多少", - "answer": ''' - SELECT COUNT(*) AS "总人数", - SUM(CASE WHEN gender = '1' THEN 1 ELSE 0 END) AS "男员工数", - SUM(CASE WHEN gender = '2' THEN 1 ELSE 0 END) AS "女员工数" - FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database p - WHERE p.internal_dept IN (SELECT "id" - FROM "IUAP_APDOC_BASEDOC"."org_orgs" START - WITH "name"||"shortname" LIKE '%XX部%' - CONNECT BY PRIOR "id" = "parentid" - ) - AND p.dr = 0 - LIMIT 1000; - ''' - }, - { - "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 - ''' - }, + { "question": "9月有多少哪些员工在休假", "answer": ''' @@ -362,21 +337,7 @@ question_and_answer = [ LIMIT 1000; ''' }, - { - "question": "XX综合部女员工有多少", - "answer": ''' - SELECT (SELECT COUNT(*) - FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p - WHERE 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" - ) - AND p."gender" = '2' - AND p."dr" = 0 - ) AS "女员工数" - ''' - }, + { "question": "XX中心今天各个处室在岗人员数量", "answer": '''