diff --git a/init_db.py b/init_db.py index e279610..c76c0af 100644 --- a/init_db.py +++ b/init_db.py @@ -1,78 +1,47 @@ -import sqlite3 import os -from datetime import datetime +import sqlite3 -DB_NAME = "context_memory.db" +DB_NAME = "/home/puh/scud_orion_ai_v2/data/scud_orion_ai.db" def init_db(): + os.makedirs(os.path.dirname(DB_NAME), exist_ok=True) conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() - # 1. Таблица трекинга задач cursor.execute(""" CREATE TABLE IF NOT EXISTS tasks ( task_id TEXT PRIMARY KEY, - module TEXT NOT NULL, - title TEXT NOT NULL, - status TEXT NOT NULL, - priority TEXT NOT NULL, - completed_at TEXT - ) + module TEXT, + title TEXT, + status TEXT DEFAULT 'BACKLOG', + priority TEXT DEFAULT 'HIGH', + due_date TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP + ); """) - # 2. Таблица архитектурных правил и контекста cursor.execute(""" - CREATE TABLE IF NOT EXISTS architecture_memory ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - category TEXT NOT NULL, - rule_text TEXT NOT NULL, - is_active INTEGER DEFAULT 1, - created_at TEXT DEFAULT CURRENT_TIMESTAMP - ) + CREATE TABLE IF NOT EXISTS chat_sessions ( + session_id TEXT PRIMARY KEY, + history_json TEXT NOT NULL, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP + ); """) - # Первичное заполнение реестра задач [TASK-01] .. [TASK-17] - tasks_data = [ - ("TASK-01", "services/data_loader", "Исправление KeyError по ФИО в Excel экспорте 1С (переход на .iloc)", "COMPLETED", "HIGH", "2026-08-03"), - ("TASK-02", "services/zup_extractor", "Перевод подключения 1С:ЗУП на продакшн MS SQL сервер ACCOUNT-01 + гибридный фоллбэк", "COMPLETED", "HIGH", "2026-08-04"), - ("TASK-03", "services/scud_export", "Инцидент Равина В.Э.: Фиксация 100% приоритета сырых логов pLogData СКУД над расчетом УРВ Ориона", "COMPLETED", "HIGH", "2026-08-04"), - ("TASK-04", "core/database", "Реализация схемы SQLite WAL, сохранение снапшотов и маппинг колонок (department/position)", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-05", "core/database", "Исправление бага дублирования номеров снапшотов (переход на вычисление MAX() по суффиксу)", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-06", "scripts/fix_snapshots", "Создание и выполнение скрипта сквозной переиндексации снапшотов с префиксом Y", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-07", "scripts/db_cli", "Реализация CLI-инспектора БД и выравнивание номеров срезов для идеальной верстки в терминале", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-08", "main.py / logic", "Двойная проверка исключений по department_scud и 1С, удержание 100% приоритета кадровых документов", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-09", "services/text_reporter", "Лаконичный вывод неразмеченных сотрудников с короткими аббревиатурами отделов СКУД (РУК, ОИЗ, ПУ и др.)", "COMPLETED", "HIGH", "2026-08-05"), - ("TASK-10", "services/scud_export", "Внутридневной контроль: Извлечение полных цепочек проходов pLogData (входы/выходы за смену)", "BACKLOG", "HIGH", None), - ("TASK-11", "services/data_loader", "Внутридневной контроль: Расчет количества и суммарной длительности отлучек/перекуров сверх обеда", "BACKLOG", "HIGH", None), - ("TASK-12", "services/text_reporter", "Внутридневной контроль: Вывод списка системных нарушителей внутреннего распорядка в Markdown-отчет", "BACKLOG", "MEDIUM", None), - ("TASK-13", "automation", "Автоматизация сбора срезов по расписанию (Cron / Systemd Timers на 12:00, 17:00, 19:00)", "BACKLOG", "HIGH", None), - ("TASK-14", "services/notifications", "Интеграция Telegram-бота для алертов Администратору при массовых сбоях турникетов (>5%)", "BACKLOG", "MEDIUM", None), - ("TASK-15", "api / fastapi", "Создание REST API на FastAPI (/api/v1/snapshots, /api/v1/scud/logs, /api/v1/anomalies)", "BACKLOG", "HIGH", None), - ("TASK-16", "frontend / chat", "Веб-интерфейс с ИИ-чатом на базе Ollama (Qwen 2.5 14B) с поддержкой Function Calling к REST API", "BACKLOG", "HIGH", None), - ("TASK-17", "core/memory", "Создание модуля персистентной памяти проекта в SQLite и CLI-инструмента для фиксации архитектурных решений", "IN_PROGRESS", "HIGH", None), - ] - - cursor.executemany(""" - INSERT OR REPLACE INTO tasks (task_id, module, title, status, priority, completed_at) - VALUES (?, ?, ?, ?, ?, ?) - """, tasks_data) - - # Базовые правила архитектуры - rules_data = [ - ("logic_rule", "Сырые логи pLogData СКУД имееют 100% приоритет над расчетом УРВ Ориона."), - ("logic_rule", "Официальные кадровые документы 1С (отпуска, командировки, больничные) имеют абсолютный приоритет над отсутствием в СКУД."), - ("scud_override", "Запрещено переименовывать ФИО сотрудников при 100% совпадении строк между 1С и СКУД в AI-верификаторе."), - ("formatting", "Температура указывается исключительно в градусах Цельсия, скорости в км/ч.") - ] - - cursor.executemany(""" - INSERT INTO architecture_memory (category, rule_text) - VALUES (?, ?) - """, rules_data) + cursor.execute(""" + CREATE TABLE IF NOT EXISTS system_prompts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT UNIQUE NOT NULL, + prompt_text TEXT NOT NULL, + is_active INTEGER DEFAULT 1, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + """) conn.commit() conn.close() - print("[✓] База данных контекста и трекинга задач успешно создана и заполнена!") + print(f"[✓] Единая база данных SQLite ({DB_NAME}) успешно проверкой инициализирована!") if __name__ == "__main__": - init_db() \ No newline at end of file + init_db() diff --git a/main.py b/main.py index 89c2d0c..4c14e92 100644 --- a/main.py +++ b/main.py @@ -21,7 +21,7 @@ app = FastAPI( description="REST API локального контекста, памяти и трекинга задач для ИИ-аудитора" ) -DB_NAME = "context_memory.db" +DB_NAME = "/home/puh/scud_orion_ai_v2/data/scud_orion_ai.db" SECURITY_TOKEN = os.getenv("API_BEARER_TOKEN", "scud_secret_token_2026") security = HTTPBearer() # === ANCHOR: APP_INIT_END ===