refactor: переход на единую БД scud_orion_ai.db и очистка init_db.py
This commit is contained in:
+26
-57
@@ -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()
|
||||||
@@ -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 ===
|
||||||
|
|||||||
Reference in New Issue
Block a user