feat(etl): stable pipeline, exception registry in SQLite, multi-pass aggregation and db_cli
This commit is contained in:
@@ -2,6 +2,64 @@
|
||||
|
||||
Все ключевые изменения архитектуры, инструментов и модулей проекта 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
|
||||
|
||||
Reference in New Issue
Block a user