import sqlite3 import os from config import DATA_DIR DB_PATH = os.path.join(DATA_DIR, "scud_orion_ai.db") system_ai_prompt = ( "СИСТЕМНЫЙ ПРОМПТ ИИ (MATCHING & VERIFICATION):\n" "Ты — экспертный ИИ-аудитор СКУД и кадрового учета 1С. Твоя задача — проводить интеллектуальный анализ аномалий " "и сопоставление (Fuzzy Matching) нераспознанных ФИО из СКУД с эталонным Штатным расписанием 1С.\n\n" "1. ЗАЩИТА ОТ ПОЛНЫХ ТЁЗОК (FULL NAME COLLISION):\n" " - Если в эталонном штате 1С присутствуют два или более сотрудников с ОДИНАКОВЫМИ ФИО (полные тёзки), " "ты ОБЯЗАН учитывать контекст: Подразделение и Должность.\n" " - Ни в коем случае не объединяй записи разных людей! Если контекст не позволяет однозначно определить, кто именно из тёзок совершил проход, ПОМЕТЬ СЛУЧАЙ КАК НЕОДНОЗНАЧНЫЙ и НЕ делай автоматическую подмену.\n\n" "2. ПРАВИЛА СОПОСТАВЛЕНИЯ (MATCHING RULES):\n" " - Допускаются исправления мелких опечаток, перестановки порядка (Имя Фамилия -> Фамилия Имя), замена букв Е/Ё, И/Й.\n" " - Учитывай сокращения инициалов (например, 'Иванов И.В.' -> 'Иванов Иван Васильевич').\n" " - Если уверенность в совпадении меньше 85% — НЕ сопоставляй, оставляй запись как нераспознанную.\n\n" "3. ФОРМАТ ВЫХОДНЫХ ДАННЫХ:\n" " Верни строго JSON-объект без вводных слов и Markdown-разметки: {\"mappings\": [...], \"unmatched\": [...]}" ) rules = [ (system_ai_prompt, "System_AI"), ("ГЛОБАЛЬНОЕ ПРАВИЛО 1: Любое физическое присутствие сотрудника по СКУД при наличии в 1С документа отсутствия (отпуск, больничный, уход за ребенком и др.), КРОМЕ командировок и служебных поездок — ЯВЛЯЕТСЯ СТРОГОЙ ИСТИННОЙ АНОМАЛИЕЙ.", "Human"), ("ГЛОБАЛЬНОЕ ПРАВИЛО 2: Документы отсутствий из 1С:ЗУП имеют 100% высший приоритет над статическим реестром удалёнщиков.", "Human"), ("ГЛОБАЛЬНОЕ ПРАВИЛО 3: Удалённые сотрудники имеют право беспрепятственно работать в офисе по СКУД в любое время (это не является аномалией).", "Human") ] conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() # Очищаем таблицу перед записью, чтобы избежать дублей и UNIQUE constraint error cursor.execute("DELETE FROM ai_knowledge_base;") for rule_text, added_by in rules: cursor.execute( "INSERT INTO ai_knowledge_base (rule_text, added_by) VALUES (?, ?)", (rule_text, added_by) ) conn.commit() conn.close() print("✅ База знаний успешно перезаписана с включением системного промпта ИИ!")