Files
scud_ai/docs/CHANGELOG.md

11 KiB
Raw Permalink Blame History

📋 История изменений (CHANGELOG)

Все ключевые изменения архитектуры, инструментов и модулей проекта SCUD Orion AI фиксируются в данном файле[cite: 6].

[3.0.0] — 2026-08-21

🚀 Глубокий архитектурный рефакторинг (Unified Clean Architecture)

Добавлено:

  • Пакет ядра core/:
    • core/connection.py: централизованный менеджер SQLite-подключений с поддержкой WAL-режима и row_factory.
    • core/schema.py: единая точка инициализации схемы данных и индексов.
    • core/repositories/: низкоуровневые репозитории scud_repo.py и zup_repo.py.
  • Доменные сервисы services/:
    • services/tasks/: полная изоляция логики задач (CRUD, Markdown-экспорт, генерация ROADMAP.md).
    • services/prompts/: доменный сервис системного промпта, поддержка превью, генерация HTML-Diff и пакетное удаление узлов (BATCH_DELETE).
    • services/snapshots/: бизнес-логика срезов СКУД с защитой финишных Y-снапшотов.
    • services/knowledge/: сервис базы знаний правил и синонимов отделов.
    • services/scud_etl/: модульный ETL-конвейер (pipeline.py, anomaly_detector.py, merger.py, sql_queries.py).
  • ИИ-оркестратор modules/ai_engine/:
    • Декомпозиция монолитного agent.py на узкие обработчики handlers/ и динамический контекст-билдер context_builder.py.
    • Двухконтурная обработка: нативный Function Calling + семантический страхующий инжектор (tool_injector.py).
    • Интеллектуальный Topic Drift менеджер с вежливым напоминанием на 3-й шаг и автоочисткой эфемерных сообщений на 4-й.
  • Интерфейс и UI:
    • Кнопка «✏️ Редактировать» прямо в карточке просмотра системного промпта с инлайн-редактором.

Исправлено:

  • Устранена утечка системного промпта в постоянный контекст (chat_messages).
  • Исправлены ошибки несоответствия сигнатур (TypeError: create_prompt_preview, save_full_prompt_draft, get_snapshots_registry) в Fast-Path.
  • Устранена галлюцинация слов-паразитов («Почемучка», «Почемучто») на уровне валидации ответа.
  • Исправлено устаревшее противоречивое правило 2.3 в базе данных, блокировавшее интерактивное удаление задач.

Удалено:

  • Устаревшие файлы-дубли: modules/web_api/llm/db/db_tasks.py, db_snapshots.py, prompt_merger.py.

[2026-08-19] — Инлайн-редактор задач, интеллектуальный ContextManager и стабилизация Function Calling

✨ Добавлено

  • Инлайн-редактирование задач (task_widget.js / tasks.py):
    • Добавлена кнопка редактирования (✏️) на каждой карточке задачи.
    • Карточка трансформируется в инлайн-форму с тремя полями: текст задачи, HTML5-пикер календаря планируемого срока и выпадающий список важности (LOW, MEDIUM, HIGH, CRITICAL).
    • Добавлен REST API эндпоинт PATCH /api/v1/tasks/{task_id} с поддержкой комплексного обновления полей в SQLite.
    • В карточки выведено отображение даты создания задачи.
  • Интеллектуальный ContextManager (context_manager.py):
    • Служебные запросы и карточки инструментов сохраняются синхронными парами (is_ephemeral = 1) и атомарно удаляются при завершении операций.
    • Свободные диалоги оператора (включая темы Topic Drift) сохраняются в постоянную историю (is_ephemeral = 0) и не стираются при закрытии сессий промпта/задач.
  • Поддержка Y-снапшотов (db_snapshots.py):
    • Исправлен SQL-запрос db_get_snapshots для точного извлечения ночных и фоновых срезов с префиксом Y (например, Y20260817-003).

🔧 Изменено

  • modules/web_api/llm/agent.py:
    • Полностью удалены эвристические текстовые фильтры и принудительные сортировки инструментов.
    • Настроен нативный возврат и исполнение инструментов без зацикливания модели.
    • Устранена ошибка UnboundLocalError при вызове справочных инструментов.
  • modules/web_api/llm/schemas.py:
    • Очищены описания инструментов от агрессивных директив и капса, стабилизирована селективность Function Calling для Qwen 2.5.
  • modules/web_api/llm/core/ollama_client.py:
    • Оптимизированы параметры генерации для Function Calling (repeat_penalty: 1.0, presence_penalty: 0.0, temperature: 0.0), что исключило спам несколькими вызовами инструментов на один запрос.
  • modules/web_api/static/js/chat/task_widget.js:
    • Фильтр по умолчанию переведен на вкладку «В работе» (IN_PROGRESS).

[2026-08-18] — Двухфазный жизненный цикл сессий, двусторонний Diff и Topic Drift Guard

✨ Добавлено

  • Двусторонний клиентский Diff (core.js): Реализован алгоритм сравнения черновика с baseline-промптом. Удаленные строки остаются на экране с красным зачеркиванием [УДАЛЕНИЕ], а добавленные/измененные строки выделяются красной рамкой с авто-отступами.
  • Topic Drift Guard (agent.py): Внедрен двухуровневый контроль смены темы:
    • Мгновенный сброс стейта и зачистка эфемерных сообщений при вызове сторонних инструментов (задачи, снапшоты, база).
    • Мягкий счетчик отвлечений (idle_turns = 3) в свободном диалоге с выводом напоминания и кнопок из tool_action_registry.
  • Команда context purge в CLI (db_cli.py): Добавлен флаг --all для полной очистки таблицы chat_messages и сброса стейтов сессий.

🔧 Изменено

  • modules/web_api/llm/agent.py:
    • Прямой просмотр промпта (db_get_system_prompt) переведен в прозрачный режим без блокировки строки ввода и без лишних кнопок.
    • В инструмент db_prompt_node_edit добавлена передача исходного baseline_prompt для точного сопоставления правок в UI.
  • modules/web_api/llm/core/fast_path.py: Оптимизирована зачистка эфемерных сообщений при кликах на кнопки фазы follow-up.

[2026-08-17] — Внедрение CLI-инспекции контекста и переход на нативный Function Calling

✨ Добавлено

  • scripts/db_cli.py: Добавлена команда context для инспекции истории сообщений chat_messages по сессиям с визуальным отображением флагов [ЭФЕМЕРНОЕ][cite: 6].
  • ROADMAP.md: Сформирована актуальная дорожная карта с планом отказа от регулярных выражений в пользу нативного Function Calling[cite: 6].

🔧 Изменено

  • modules/web_api/llm/db_tools.py: Удалены устаревшие неиспользуемые функции и заглушки счетчиков простоя[cite: 6].
  • modules/web_api/static/js/chat/core.js: Внедрена поддержка вызова инлайн-редактора черновика промпта прямо из окна диалога[cite: 6].

[2026-08-15] — Реляционная архитектура системного промпта

✨ Добавлено

  • system_prompt_nodes: Создана таблица реляционных узлов промпта с индексацией по разделам и пунктам (section_id, item_id)[cite: 6].
  • db_prompt_node_edit: Добавлен инструмент точечного добавления, изменения и удаления пунктов системного промпта[cite: 6].
  • Инлайн-редактор: Добавлен визуальный diff-просмотр изменений с подсветкой и кнопкой [✏️ Редактировать][cite: 6].

🔧 Изменено

  • modules/web_api/llm/agent.py: Генерация активного системного промпта переведена на динамическую сборку из реляционных узлов SQLite[cite: 6].
  • modules/web_api/llm/core/fast_path.py: Обработка кнопок «Подтвердить» и «Отменить» переведена на атомарную запись узлов в базу данных[cite: 6].

[2026-08-10] — Механизм эфемерных сообщений и очистки диалога

✨ Добавлено

  • Эфемерные сообщения (is_ephemeral): Маркировка временных сервисных ответов и черновиков[cite: 6].
  • db_purge_ephemeral_messages: Механизм физической зачистки временных записей из SQLite при завершении операций[cite: 6].
  • Интерактивные виджеты: Поддержка карточек задач (TASK_INTERACTIVE_CARD) с кнопками быстрого действия[cite: 6].