refactor: переход на единую БД scud_orion_ai.db и очистка init_db.py

This commit is contained in:
2026-08-08 13:04:39 +03:00
parent 3405d86946
commit f1ef965640
2 changed files with 28 additions and 59 deletions
+26 -57
View File
@@ -1,78 +1,47 @@
import sqlite3
import os 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(): def init_db():
os.makedirs(os.path.dirname(DB_NAME), exist_ok=True)
conn = sqlite3.connect(DB_NAME) conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor() cursor = conn.cursor()
# 1. Таблица трекинга задач
cursor.execute(""" cursor.execute("""
CREATE TABLE IF NOT EXISTS tasks ( CREATE TABLE IF NOT EXISTS tasks (
task_id TEXT PRIMARY KEY, task_id TEXT PRIMARY KEY,
module TEXT NOT NULL, module TEXT,
title TEXT NOT NULL, title TEXT,
status TEXT NOT NULL, status TEXT DEFAULT 'BACKLOG',
priority TEXT NOT NULL, priority TEXT DEFAULT 'HIGH',
completed_at TEXT due_date TEXT,
) created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP
);
""") """)
# 2. Таблица архитектурных правил и контекста
cursor.execute(""" cursor.execute("""
CREATE TABLE IF NOT EXISTS architecture_memory ( CREATE TABLE IF NOT EXISTS chat_sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT PRIMARY KEY,
category TEXT NOT NULL, history_json TEXT NOT NULL,
rule_text TEXT NOT NULL, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
is_active INTEGER DEFAULT 1, );
created_at TEXT DEFAULT CURRENT_TIMESTAMP
)
""") """)
# Первичное заполнение реестра задач [TASK-01] .. [TASK-17] cursor.execute("""
tasks_data = [ CREATE TABLE IF NOT EXISTS system_prompts (
("TASK-01", "services/data_loader", "Исправление KeyError по ФИО в Excel экспорте 1С (переход на .iloc)", "COMPLETED", "HIGH", "2026-08-03"), id INTEGER PRIMARY KEY AUTOINCREMENT,
("TASK-02", "services/zup_extractor", "Перевод подключения 1С:ЗУП на продакшн MS SQL сервер ACCOUNT-01 + гибридный фоллбэк", "COMPLETED", "HIGH", "2026-08-04"), name TEXT UNIQUE NOT NULL,
("TASK-03", "services/scud_export", "Инцидент Равина В.Э.: Фиксация 100% приоритета сырых логов pLogData СКУД над расчетом УРВ Ориона", "COMPLETED", "HIGH", "2026-08-04"), prompt_text TEXT NOT NULL,
("TASK-04", "core/database", "Реализация схемы SQLite WAL, сохранение снапшотов и маппинг колонок (department/position)", "COMPLETED", "HIGH", "2026-08-05"), is_active INTEGER DEFAULT 1,
("TASK-05", "core/database", "Исправление бага дублирования номеров снапшотов (переход на вычисление MAX() по суффиксу)", "COMPLETED", "HIGH", "2026-08-05"), updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
("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)
conn.commit() conn.commit()
conn.close() conn.close()
print("[✓] База данных контекста и трекинга задач успешно создана и заполнена!") print(f"[✓] Единая база данных SQLite ({DB_NAME}) успешно проверкой инициализирована!")
if __name__ == "__main__": if __name__ == "__main__":
init_db() init_db()
+1 -1
View File
@@ -21,7 +21,7 @@ app = FastAPI(
description="REST API локального контекста, памяти и трекинга задач для ИИ-аудитора" 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_TOKEN = os.getenv("API_BEARER_TOKEN", "scud_secret_token_2026")
security = HTTPBearer() security = HTTPBearer()
# === ANCHOR: APP_INIT_END === # === ANCHOR: APP_INIT_END ===