готовность к созданию API и базы контекста для ИИ.
This commit is contained in:
+38
-2
@@ -36,7 +36,7 @@ def ask_ollama(prompt, system_prompt=None):
|
||||
|
||||
def get_system_rules_context():
|
||||
"""
|
||||
Загружает глобальные системные правила компании прямо из Базы Данных.
|
||||
Загружает глобальные системные правила компании прямо из Базы Данных SQLite.
|
||||
"""
|
||||
rules = get_all_rules_from_db()
|
||||
if not rules:
|
||||
@@ -146,4 +146,40 @@ def ai_verify_scud_against_staff(unrecognized_scud_fios, staff_fios):
|
||||
except Exception as e:
|
||||
print(f"[!] Ошибка разбора JSON от ИИ при сверке опечаток: {e}")
|
||||
|
||||
return mapping
|
||||
return mapping
|
||||
|
||||
def ai_verify_department_exceptions(unexplained_df, exception_departments):
|
||||
"""
|
||||
Локальный ИИ проверит, не являются ли оставшиеся неотмеченными отделы
|
||||
синонимами/аббревиатурами отделов из exceptions.json.
|
||||
"""
|
||||
if unexplained_df.empty or not exception_departments:
|
||||
return []
|
||||
|
||||
dept_list = unexplained_df['Подразделение'].dropna().unique().tolist()
|
||||
rules_context = get_system_rules_context()
|
||||
|
||||
prompt = f"""
|
||||
{rules_context}
|
||||
Ты — кадровый аудитор.
|
||||
Список отделов-исключений компании: {json.dumps(exception_departments, ensure_ascii=False)}
|
||||
Список отделов сотрудников, попавших в неизвестные: {json.dumps(dept_list, ensure_ascii=False)}
|
||||
|
||||
Определи, какие из отделов сотрудников являются ПОЛНЫМИ НАЗВАНИЯМИ или СИНУНИМАМИ отделов-исключений (например: 'Отдел внутреннего контроля' — это 'ОВК').
|
||||
|
||||
Выдай ответ строго в формате JSON:
|
||||
{{
|
||||
"matched_departments": ["Название отдела 1", "Название отдела 2"]
|
||||
}}
|
||||
"""
|
||||
raw_response = ask_ollama(prompt, system_prompt="Выдавай только валидный JSON.")
|
||||
|
||||
try:
|
||||
match = re.search(r'\{.*\}', raw_response, re.DOTALL)
|
||||
if match:
|
||||
data = json.loads(match.group(0))
|
||||
return data.get("matched_departments", [])
|
||||
except Exception as e:
|
||||
print(f"[⚠️] Ошибка ИИ-арбитража отделов: {e}")
|
||||
|
||||
return []
|
||||
Reference in New Issue
Block a user