78 lines
6.1 KiB
Python
78 lines
6.1 KiB
Python
import sqlite3
|
||
import os
|
||
from datetime import datetime
|
||
|
||
DB_NAME = "context_memory.db"
|
||
|
||
def init_db():
|
||
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
|
||
)
|
||
""")
|
||
|
||
# 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
|
||
)
|
||
""")
|
||
|
||
# Первичное заполнение реестра задач [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)
|
||
|
||
conn.commit()
|
||
conn.close()
|
||
print("[✓] База данных контекста и трекинга задач успешно создана и заполнена!")
|
||
|
||
if __name__ == "__main__":
|
||
init_db() |