chore: save working baseline before v3.0 architecture refactoring
This commit is contained in:
@@ -4,6 +4,34 @@
|
||||
|
||||
---
|
||||
|
||||
## [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
|
||||
|
||||
### ✨ Добавлено
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
# 🗺️ ДОРОЖНАЯ КАРТА И АРХИТЕКТУРНЫЙ РОАДМАП ПРОЕКТА SCUD ORION AI
|
||||
|
||||
## 📌 Зафиксированные вехи и концептуальные архитектурные решения
|
||||
|
||||
Схема веток Gitea для развития проекта:
|
||||
|
||||
main (100% стабильный релиз)
|
||||
│
|
||||
├──► feature/prompt-relational-nodes ──┐ (Перевод системного промпта на реляционные узлы в SQLite)
|
||||
│ ▼
|
||||
├──────────────────────────────────► merge to main
|
||||
│
|
||||
├──► feature/native-function-calling ──┐ (Отказ от регулярных выражений tool_injector.py в пользу нативного FC)
|
||||
│ ▼
|
||||
├──────────────────────────────────► merge to main
|
||||
│
|
||||
└──► feature/ephemeral-context ────────┐ (Интеллектуальный жизненный цикл эфемерных сообщений)
|
||||
▼
|
||||
merge to main
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Текущий активный спринт: Нативный Function Calling и реляционный редактор промпта
|
||||
|
||||
### 1. Архитектура чистого диалогового агента без регулярных выражений
|
||||
* **Концепция:** Полный отказ от жестких эвристик и регулярных выражений в `tool_injector.py`. Все решения о намерениях оператора, вызове инструментов и переключении тем принимает языковая модель через семантический контекст.
|
||||
* **Ключевые этапы реализации:**
|
||||
* **Этап 1 (Санитарная очистка):** Превращение `tool_injector.py` в простой фильтр мусорных тегов без инжекции и перехватов команд.
|
||||
* **Этап 2 (Семантическое управление сессией):** Инструктаж модели в `role: system` о поведении в состоянии `PROMPT_PREVIEW` (оценка подтверждения, отмены, правок или смены темы диалога).
|
||||
* **Этап 3 (Жизненный цикл контекста):** Модель видит временные сообщения (`is_ephemeral = 1`) только во время активной ветки; при фиксации решения (`fast_path.py`) контекст очищается через `db_purge_ephemeral_messages`.
|
||||
* **Этап 4 (Гибридный UI):** Поддержка как диалоговых правок, так и прямого инлайн-редактирования через форму `[✏️ Редактировать]` в окне чата.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Масштабирование эфемерного контекста и сервисные инструменты
|
||||
|
||||
### 2. Модуль инспекции контекста и базы данных (`db_cli.py`)
|
||||
* **Статус:** `Реализовано`.
|
||||
* Добавлена команда `context [session_id] [--limit N]` для просмотра сырой таблицы сообщений `chat_messages` с пометками об эфемерности.
|
||||
|
||||
### 3. Модуль задач и бэклога (`tasks`)
|
||||
* **Целевые инструменты:** `db_get_tasks`, `db_add_task`, `db_update_task_status`, `db_delete_task`.
|
||||
* Вывод интерактивных карточек задач с фильтрами без засорения постоянной истории диалога.
|
||||
|
||||
### 4. Модуль срезов и архива СКУД (`snapshots`)
|
||||
* **Целевые инструменты:** `db_get_snapshots`, `db_delete_snapshots`.
|
||||
* Интерактивное подтверждение удаления срезов и автоматическая очистка таблиц срезов из контекста.
|
||||
|
||||
### 5. Модуль базы знаний, правил и аномалий (`kb & anomalies`)
|
||||
* **Целевые инструменты:** `db_get_rules`, `db_get_anomalies`, `db_get_reference`.
|
||||
* Изоляция нормативных справочников от постоянной истории диалога для предотвращения залипания LLM.
|
||||
|
||||
---
|
||||
|
||||
## 🔮 Долгосрочный бэклог (Future Modules)
|
||||
|
||||
### 6. Интерактивный модуль планирования (Checklist & Task Planner Engine)
|
||||
* Динамические проектные чек-листы с синхронизацией в таблицу `tasks`.
|
||||
|
||||
### 7. Изолированная песочница кода (Code Execution Sandbox Engine)
|
||||
* Запуск динамических Python/Pandas вычислений в изолированном Docker/gVisor контуре.
|
||||
@@ -0,0 +1,136 @@
|
||||
# План реализации (ROADMAP)
|
||||
|
||||
## 1. Очистка от регулярок и костылей (`tool_injector.py`)
|
||||
- [x] Полностью удалить принудительные перехваты текста регулярными выражениями для команд добавления, редактирования и удаления пунктов[cite: 4].
|
||||
- [x] Оставить в модуле только базовую санитарную очистку сырых тегов (`<tool_call>`)[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 2. Настройка контекста и инструкций сессии (`agent.py`)
|
||||
- [x] Передать управление диалогом языковой модели через системный блок `role: "system"`[cite: 4].
|
||||
- [x] При активном состоянии `PROMPT_PREVIEW` передавать модели инструкцию:
|
||||
- **Подтверждение / отмена / корректировка:** продолжать работу с превью и вызывать соответствующие инструменты[cite: 4].
|
||||
- **Смена темы:** вежливо напомнить об открытом изменении и запросить решение[cite: 4].
|
||||
- [x] Обеспечить видимость эфемерных сообщений (`is_ephemeral = 1`) для модели во время активной работы с превью[cite: 4].
|
||||
- [x] Внедрить семантический Topic Drift Guard (`idle_turns` = 3) с вопросами и кнопками из `tool_action_registry`[cite: 4].
|
||||
- [x] Реализовать детерминированный мгновенный сброс сессии и зачистку эфемерного контекста при вызове сторонних инструментов[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 3. Очистка эфемерных сообщений при завершении (`fast_path.py` / `context_manager.py`)
|
||||
- [x] Настроить удаление временных сообщений превью (`db_purge_ephemeral_messages`) строго в момент нажатия кнопок **«Подтвердить»** или **«Отменить»**[cite: 4].
|
||||
- [x] Сбрасывать состояние сессии в базе данных после фиксации решения[cite: 4].
|
||||
- [x] Внедрить прямое точечное применение изменений через `db_apply_prompt_node_action`[cite: 4].
|
||||
- [x] Добавить обработку фазы `PROMPT_FOLLOWUP` с кнопками завершения и очистки контекста[cite: 4].
|
||||
- [x] Создать `context_manager.py` для строгого разграничения служебных tool-пар (`is_ephemeral=1`) и содержательного диалога (`is_ephemeral=0`), сохраняя беседы Topic Drift в истории[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 4. Инлайн-редактор в окне диалога (`core.js`)
|
||||
- [x] Проверить работу блока ручного редактирования (`inline-prompt-editor-container`) с кнопками **«Сохранить правки»** и **«Свернуть»**[cite: 4].
|
||||
- [x] Обеспечить сохранение черновика через API (`/api/v1/chat/draft`) и отображение обновленного текста перед подтверждением[cite: 4].
|
||||
- [x] Реализовать двусторонний клиентский Diff-рендерер (одновременная подсветка добавленных строк и зачеркивание удаленных `[УДАЛЕНИЕ]`)[cite: 4].
|
||||
- [x] Добавить авто-форматирование и отступы подпунктов (`X.Y.`) при ручном сохранении черновика[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 5. Тестирование и валидация системного промпта
|
||||
- [x] **Нативные вызовы:** проверить добавление, редактирование и удаление пунктов через нативные вызовы модели (`db_prompt_node_edit`)[cite: 4].
|
||||
- [x] **Контекстные сценарии:** проверить поведение модели при смене темы диалога оператором (Guardrail)[cite: 4].
|
||||
- [x] **UI и очистка:** проверить ручное редактирование через кнопку в окне чата и последующую очистку контекста (`db_purge_ephemeral_messages`)[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 6. Распространение архитектурного паттерна на модуль задач (`tasks`)
|
||||
- [x] **Масштабирование UI задач:**
|
||||
- Увеличена ширина карточки до `max-w-4xl` и динамическая высота скролла до `70vh`[cite: 4].
|
||||
- Реализованы переключатели фильтрации: «В работе» (по умолчанию), «В планах», «Готово», «Все»[cite: 4].
|
||||
- Разделены кнопки действия: «В работу» (для плановых) и «Готово» (для текущих)[cite: 4].
|
||||
- [x] **Инлайн-редактирование карточки задачи:**
|
||||
- Плавная трансформация карточки в 3-строчную форму (текст, дата со встроенным пикером, выпадающий список важности)[cite: 4].
|
||||
- Отображение даты создания задачи[cite: 4].
|
||||
- Сохранение через REST API эндпоинт `PATCH /api/v1/tasks/{id}`[cite: 4].
|
||||
- [x] **Детерминированный Fast-Path и двухфазное удаление:**
|
||||
- Мгновенная смена статусов без задержек LLM[cite: 4].
|
||||
- Карточка подтверждения удаления с автоочисткой контекста[cite: 4].
|
||||
- [x] **Генерация отчетов задач в Markdown:**
|
||||
- Добавлен инструмент `db_export_tasks_markdown` для формирования Markdown-файла с группировкой по модулям и чекбоксами `[x]` / `[ ]`[cite: 3].
|
||||
- Реализован роутер безопасной отдачи файлов с сохранением имени (`/api/v1/files/download/...`)[cite: 3].
|
||||
- [x] **Доменная консолидация задач:**
|
||||
- Реализован консолидированный инструмент `db_tasks_edit(action: ["ADD", "UPDATE", "DELETE", "EXPORT"], ...)`[cite: 3].
|
||||
|
||||
---
|
||||
|
||||
## 7. Распространение на модуль снапшотов (`snapshots`)
|
||||
- [x] **Поддержка Y-снапшотов:** универсальный парсинг и поиск по `snapshot_id LIKE 'Y%'` и срезам за 22:00:00[cite: 4].
|
||||
- [x] **Single Active Snapshot View:** сохранение активного среза в контексте для аналитики с автоматической ротацией и зачисткой при запросе новых дат[cite: 4].
|
||||
- [x] **Интерактивный UI с чекбоксами и защитой срезов:**
|
||||
- Чекбоксы в строках дневных срезов и кнопка «Выбрать все» в шапке[cite: 3].
|
||||
- Защита итогового вечернего среза Y (иконка замочка `🔒`, блокировка выбора)[cite: 3].
|
||||
- Динамическая кнопка «Удалить выбранные (N)» в подвале карточки[cite: 3].
|
||||
- [x] **Детерминированный Fast-Path удаления срезов:**
|
||||
- Двухфазное подтверждение удаления (одиночное и пакетное) с корректным счётчиком количества удаляемых элементов[cite: 3].
|
||||
- Защита от сброса фильтра даты (`query_date`) при обновлении карточки после удаления[cite: 3].
|
||||
|
||||
---
|
||||
|
||||
## 8. Архитектурный рефакторинг и декомпозиция монолитов (Текущий этап)
|
||||
> **Контроль версий:** перед каждым этапом и после его успешной проверки выполняется коммит и фиксация в репозитории **Gitea**.
|
||||
|
||||
- [ ] **Шаг 0: Фиксация базового состояния в Gitea:**
|
||||
- Создание тега/коммита `v2.5-pre-refactor` в Gitea перед структурными изменениями.
|
||||
- [ ] **Шаг 1: Разделение слоя данных и ядра (`core/`):**
|
||||
- Создание `core/connection.py` (единый SQLite Connection Manager с WAL и таймаутами).
|
||||
- Создание `core/schema.py` (DDL-инициализация всех таблиц и индексов из `database.py`).
|
||||
- Фиксация контрольной точки в Gitea.
|
||||
- [ ] **Шаг 2: Выделение доменных сервисов (`services/` / `domain/`):**
|
||||
- **Задачи (`services/tasks/`):** декомпозиция на `repository.py`, `service.py`, `exporter.py` (правило: до 100–150 строк на файл).
|
||||
- **Системный промпт (`services/prompts/`):** декомпозиция на `repository.py`, `service.py`, `diff_engine.py`.
|
||||
- **Снапшоты (`services/snapshots/`):** декомпозиция на `repository.py`, `service.py`.
|
||||
- **База знаний и правила (`services/knowledge/`):** вынос правил арбитража и словаря синонимов подразделений.
|
||||
- Фиксация контрольной точки в Gitea.
|
||||
- [ ] **Шаг 3: Декомпозиция ETL-конвейера (`main_etl.py` и `scud_export.py`):**
|
||||
- Выделение `services/scud_etl/pipeline.py` (оркестрация без длинных простыней кода).
|
||||
- Выделение `services/scud_etl/merger.py` (чистая склейка Dataframe 1С ⟷ СКУД).
|
||||
- Выделение `services/scud_etl/anomaly_detector.py` (алгоритмическая детекция нарушений).
|
||||
- Выделение `services/scud_etl/sql_queries.py` (вынос длинных T-SQL запросов).
|
||||
- Фиксация контрольной точки в Gitea.
|
||||
- [ ] **Шаг 4: Выделение чистого ИИ-оркестратора (`modules/ai_engine/`):**
|
||||
- Создание компактного `agent.py` (~60–80 строк) без ветвлений `if/elif` на сотни строк.
|
||||
- Внедрение изолированных обработчиков инструментов:
|
||||
- `handlers/task_handler.py`
|
||||
- `handlers/prompt_handler.py`
|
||||
- `handlers/snapshot_handler.py`
|
||||
- `handlers/anomaly_handler.py`
|
||||
- Создание `context_builder.py` (календарь, роли, сборка системного контекста).
|
||||
- Фиксация контрольной точки в Gitea.
|
||||
- [ ] **Шаг 5: Облегчение `web_api` и адаптация роутеров:**
|
||||
- Превращение `web_api` исключительно в тонкий транспортный шлюз (FastAPI + Статика).
|
||||
- Очистка роутеров от прямого SQL — вызовы только через доменные сервисы.
|
||||
- Рефакторинг CLI-утилиты `scripts/db_cli.py` (вынос форматирования в `scripts/cli/formatters.py`).
|
||||
- Финальное сквозное тестирование и фиксация релиза в Gitea (`v3.0-clean-architecture`).
|
||||
|
||||
---
|
||||
|
||||
## 9. Диалоговая генерация и контроль отчетов СКУД (Conversational Reporting Engine)
|
||||
- [ ] **Инструмент построения сводок (`db_generate_scud_report`):**
|
||||
- Создание инструмента Function Calling для запуска конвейера контроллинга за выбранную дату/снапшот прямо из чата[cite: 4].
|
||||
- Поддержка параметров: `target_date`, `snapshot_id`, `mode` (`summary` — дневная сводка, `detailed` — вчерашний отчет)[cite: 4].
|
||||
- [ ] **Интерактивная карточка аудита отчета в UI:**
|
||||
- Вывод статуса генерации, ключевых метрик (всего сотрудников, явка, опоздания, количество аномалий)[cite: 4].
|
||||
- Ссылки на сгенерированные файлы Excel (`.xlsx`) и Markdown (`.md`)[cite: 4].
|
||||
- [ ] **Диалоговый разбор аномалий и исключений:**
|
||||
- Возможность в диалоге запросить расшифровку конкретной аномалии[cite: 4].
|
||||
- Быстрое добавление сотрудника/отдела в `exceptions.json` или базу знаний прямо из чата по кнопке карточки[cite: 4].
|
||||
- [ ] **Экспорт и отправка среза:**
|
||||
- Команда формирования итоговой выгрузки для руководства в формате PDF/Markdown с передачей файла пользователю[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 10. Изолированная песочница кода (Code Execution Sandbox Engine)
|
||||
- [ ] **Docker/gVisor контур:**
|
||||
- Создание изолированного контейнера без доступа к внешней сети (network: none) с ограниченными лимитами по памяти и CPU (cgroups)[cite: 4].
|
||||
- Настройка безопасного монтирования только необходимых CSV/Parquet-файлов данных в режиме Read-Only[cite: 4].
|
||||
- [ ] **Динамические Python/Pandas вычисления:**
|
||||
- Инструмент генерации и безопасного выполнения скриптов агрегации и аналитики данных СКУД / 1С на лету[cite: 4].
|
||||
- Перехват stdout/stderr, сбор результатов расчетов и графиков с передачей в UI-чата[cite: 4].
|
||||
@@ -1,72 +0,0 @@
|
||||
# План реализации
|
||||
|
||||
## 1. Очистка от регулярок и костылей (`tool_injector.py`)
|
||||
- [x] Полностью удалить принудительные перехваты текста регулярными выражениями для команд добавления, редактирования и удаления пунктов[cite: 4].
|
||||
- [x] Оставить в модуле только базовую санитарную очистку сырых тегов (`<tool_call>`)[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 2. Настройка контекста и инструкций сессии (`agent.py`)
|
||||
- [x] Передать управление диалогом языковой модели через системный блок `role: "system"`[cite: 4].
|
||||
- [x] При активном состоянии `PROMPT_PREVIEW` передавать модели инструкцию:
|
||||
- **Подтверждение / отмена / корректировка:** продолжать работу с превью и вызывать соответствующие инструменты[cite: 4].
|
||||
- **Смена темы:** вежливо напомнить об открытом изменении и запросить решение[cite: 4].
|
||||
- [x] Обеспечить видимость эфемерных сообщений (`is_ephemeral = 1`) для модели во время активной работы с превью[cite: 4].
|
||||
- [x] Внедрить семантический Topic Drift Guard (`idle_turns` = 3) с вопросами и кнопками из `tool_action_registry`.
|
||||
- [x] Реализовать детерминированный мгновенный сброс сессии и зачистку эфемерного контекста при вызове сторонних инструментов.
|
||||
|
||||
---
|
||||
|
||||
## 3. Очистка эфемерных сообщений при завершении (`fast_path.py`)
|
||||
- [x] Настроить удаление временных сообщений превью (`db_purge_ephemeral_messages`) строго в момент нажатия кнопок **«Подтвердить»** или **«Отменить»**[cite: 4].
|
||||
- [x] Сбрасывать состояние сессии в базе данных после фиксации решения[cite: 4].
|
||||
- [x] Внедрить прямое точечное применение изменений через `db_apply_prompt_node_action`[cite: 4].
|
||||
- [x] Добавить обработку фазы `PROMPT_FOLLOWUP` с кнопками завершения и очистки контекста.
|
||||
|
||||
---
|
||||
|
||||
## 4. Инлайн-редактор в окне диалога (`core.js`)
|
||||
- [x] Проверить работу блока ручного редактирования (`inline-prompt-editor-container`) с кнопками **«Сохранить правки»** и **«Свернуть»**[cite: 4].
|
||||
- [x] Обеспечить сохранение черновика через API (`/api/v1/chat/draft`) и отображение обновленного текста перед подтверждением[cite: 4].
|
||||
- [x] Реализовать двусторонний клиентский Diff-рендерер (одновременная подсветка добавленных строк и зачеркивание удаленных `[УДАЛЕНИЕ]`).
|
||||
- [x] Добавить авто-форматирование и отступы подпунктов (`X.Y.`) при ручном сохранении черновика.
|
||||
|
||||
---
|
||||
|
||||
## 5. Тестирование и валидация системного промпта
|
||||
- [x] **Нативные вызовы:** проверить добавление, редактирование и удаление пунктов через нативные вызовы модели (`db_prompt_node_edit`)[cite: 4].
|
||||
- [x] **Контекстные сценарии:** проверить поведение модели при смене темы диалога оператором (Guardrail)[cite: 4].
|
||||
- [x] **UI и очистка:** проверить ручное редактирование через кнопку в окне чата и последующую очистку контекста (`db_purge_ephemeral_messages`)[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 6. Распространение архитектурного паттерна на модуль задач (`tasks`)
|
||||
- [ ] **Масштабирование UI задач:**
|
||||
- Увеличить размер окна/виджета просмотра и управления задачами (`TASK_INTERACTIVE_CARD`) по аналогии с окном редактирования системного промпта для удобного управления большим списком.
|
||||
- [ ] **Интерактивное управление и превью:**
|
||||
- Карточка предпросмотра параметров создаваемой задачи (`db_add_task`) с кнопками `[Подтвердить]`, `[Отменить]`, `[✏️ Редактировать]`.
|
||||
- Подтверждение опасных операций (удаление задачи `db_delete_task`) с кнопками валидации.
|
||||
- Follow-up фаза с выводом актуализированного списка задач из `tool_action_registry`.
|
||||
- [ ] **Доменная консолидация:**
|
||||
- Объединить `db_add_task`, `db_update_task_status`, `db_delete_task` в единый диспетчер `db_tasks_edit(action: ["ADD", "UPDATE", "DELETE"], ...)`[cite: 4].
|
||||
- Обновить `TOOLS_SCHEMA` в `schemas.py`[cite: 4].
|
||||
|
||||
---
|
||||
|
||||
## 7. Распространение на модуль снапшотов (`snapshots`) и правил (`rules`)
|
||||
- [ ] **Консолидация модуля `snapshots`:**
|
||||
- Интерактивное подтверждение массового удаления снапшотов за дату (`db_delete_snapshots`).
|
||||
- Объединить операции удаления и управления срезами в единый `db_snapshots_edit(action: ["DELETE"], ...)`[cite: 4].
|
||||
- Авто-зачистка тяжелых таблиц снапшотов из контекста при переходе к другим темам.
|
||||
- [ ] **Модуль правил арбитража (`rules`):**
|
||||
- Редактирование правил базы знаний через единый паттерн узлов с подсветкой diff.
|
||||
|
||||
---
|
||||
|
||||
## 8. Изолированная песочница кода (Code Execution Sandbox Engine)
|
||||
- [ ] **Docker/gVisor контур:**
|
||||
- Создание изолированного контейнера без доступа к внешней сети (network: none) с ограниченными лимитами по памяти и CPU (cgroups).
|
||||
- Настройка безопасного монтирования только необходимых CSV/Parquet-файлов данных в режиме Read-Only.
|
||||
- [ ] **Динамические Python/Pandas вычисления:**
|
||||
- Инструмент генерации и безопасного выполнения скриптов агрегации и аналитики данных СКУД / 1С на лету.
|
||||
- Перехват stdout/stderr, сбор результатов расчетов и графиков с передачей в UI-чата.
|
||||
Reference in New Issue
Block a user