Round 2 — P1 MCL + GRACE: - logger intent-drop repaired across 182 call sites; logging unified repo-wide on the intent-first facade (211 direct SSOT log() sites migrated); facade level= support; molecular-cot-logging skill synced with the module (.agents -> .kilo). - EXPLORE/REASON-REFLECT gaps closed: poll-dispatch failure path, exploration fail-closed choke point in _finish(), 9 silent mcp_ops_dispatch adapters. - INV_6: dead agent/app.py edge removed (_llm_health); specs 033/035/036/039 sweep -> 0 dead edges (5 retargeted to live IDs, 15 tombstoned with successors). - INV_9 dedupes (TaskDrawer BINDS_TO, vestigial assistantOffset, duplicated @SIDE_EFFECT); INV_1: migrations 0014-0016 anchored, exploration_sandbox module-region span fixed. - Full-suite defect root-caused: leaked DI singleton mocks from test_dependencies_unit -> autouse restore fixture + get_session_idle_timeout_minutes hardening (int validation, EXPLORE fallback SESSION_POLICY_CONFIG_INVALID). - Executable pins: tests/test_core/test_logger_wire_format.py (wire fields, misuse proof, repo-wide AST sweeps over both forbidden shapes). Round 3 — server.py decomposition EXECUTED per the binding gate plan (specs/050-mcp-interface/plans/server-decomposition-gate.md, execution log included): - 1571 -> 177 LOC: scenario_inputs.py (268), auth.py (238, single _access_token_context site), rbac_server.py (393), tools_authoring.py (367), tools_scenario.py (373). - Addendum E: pre-existing ops_tools.py INV_7 offender split 420 -> 215 + tools_review.py (253). - Contract IDs frozen, import surface frozen, registration order frozen; monkeypatch seams relocated to owning modules (recorded); zero behavior diff. Round 4 — P2 queue closed: - Story 5 AC2: HandoffSurface copyable prompt parameterized with dashboard context (/agent route forwards objectType/objectId/objectName/envId/route/intent; i18n handoff_context_label ru/en; contract + render tests). - E6 / MCPX-FR-007a: McpTransportGuard enforces server-owned JSON-depth bound (typed 400 json_depth_exceeded pre-dispatch, iterative fail-closed walker) and per-session sliding-window rate limit (typed 429 rate_limited + standard Retry-After); rejections create no mutable state. Limits live in McpServerConfiguration. - SC-005 remnants CLOSED: /api/assistant router unmounted (package retained as MCP parity provenance, header records rationale); /api/agent/llm-config REMOVED with in-place Tombstone + dead strict service DI deleted; assistant.ts deleted (inbound edge removed first); SystemSettings assistant-retention UI + 16 i18n keys removed; .env.example 7860/GRADIO vars removed (zero consumers verified repo-wide). - SC-004 + SC-009: exact RBAC catalog pins (admin 47 / analyst 21 / viewer 15 derived from the live catalog); mid-flow role revocation hides tools in the next tools/list AND denies cached-catalog calls by name on the same identity-only token; mid-flow grant exposes the approvals surface without new consent. - Browser cookie-consent decision recorded (tasks.md T008): not built in 050. Round 5 — last 050 task + FR-010: - T008b: Core.EndpointLocality deny-by-default perimeter guard for LLM/VLM provider base_url at the create/update choke points (private ranges, enterprise DNS suffixes, all-private resolution; fail closed; anti-substring-spoofing; empty URL denied); typed 400 endpoint_not_local:<reason> pre-persistence; EXPLORE audit line on every denial; env escape hatches documented (INSTALL.md "Локальный периметр"). - MCPX-FR-010: MCP_CATALOG_VERSION published as serverInfo.version at initialize; deprecated/deprecation_note on McpToolDefinition; [DEPRECATED] marker at the single list_tools choke point (entry stays listed/callable one minor cycle); deliberate major-bump ritual pinned by test. Evidence: full backend suite 11243 passed / 240 skipped / 1 xpassed / 0 failed; frontend vitest 3435 passed / lint 0 errors; MCP slice 103; locality slice 107; anchor+AST sweeps ALL BALANCED over 138 touched files; 050 tasks.md fully [x] with proof.
superset-tools
Корпоративная платформа для управления Apache Superset, перевода данных с помощью LLM и безопасной доставки аналитики между окружениями.
superset-tools помогает превратить набор разрозненных дашбордов, ручных переносов и служебных скриптов в управляемый процесс: с версиями, согласованиями, аудитом, фоновым выполнением и AI-ассистентом.
Когда Superset уже вырос, а процессы вокруг него — ещё нет
На старте Apache Superset обычно прост: аналитик создаёт датасет, собирает дашборд и показывает его коллегам. Но по мере роста компании появляются новые окружения, подразделения, языки, требования безопасности и сотни связанных объектов.
В этот момент команда сталкивается с типичными вопросами:
- Как перенести дашборд из разработки в production и ничего не сломать?
- Как понять, кто изменил отчёт и можно ли вернуть предыдущую версию?
- Как перевести сотни тысяч наименований и описаний, сохранив отраслевую терминологию?
- Как контролировать длительные операции без постоянного просмотра логов?
- Как дать аналитикам свободу, не теряя управляемость и аудит?
- Как подключить LLM к внутренним данным, не превращая это в набор несвязанных экспериментов?
superset-tools объединяет эти задачи в одной платформе и делает работу с Superset воспроизводимой, наблюдаемой и безопасной.
Что получает бизнес
| Результат | Как достигается |
|---|---|
| Быстрый выпуск многоязычной отчётности | Массовый LLM-перевод данных с корпоративными словарями и предварительной проверкой |
| Меньше ошибок при релизах | Dry-run перед миграцией показывает изменения и риски до применения |
| Прозрачная история изменений | Дашборды и связанные объекты версионируются через Git |
| Снижение ручной работы | Повторяемые операции запускаются из интерфейса, по расписанию или через API |
| Контроль длительных процессов | Прогресс, результаты и ошибки доступны в реальном времени |
| Управляемое использование AI | Единые LLM-провайдеры, словари, аудит и подтверждение критических действий |
| Готовность к корпоративной среде | Ролевая модель, ADFS SSO, аудит и поддержка закрытых контуров |
Ключевые сценарии
Перевод корпоративных данных без ручной обработки
Представьте каталог из 300 000 позиций: наименования продукции, технические характеристики, марки материалов и примечания. Отчётность нужно подготовить на английском, немецком и китайском языках, при этом терминология должна соответствовать внутренним стандартам компании.
В superset-tools команда выбирает источник, нужные поля и языки, подключает терминологический словарь и сначала получает небольшую выборку для проверки. После согласования система запускает полный перевод, сохраняет результат и формирует отчёт о выполнении.
При следующем запуске переводятся только новые и изменившиеся записи. Уже обработанные данные и подтверждённые формулировки используются повторно, поэтому процесс становится быстрее и экономичнее.
Что поддерживается:
- несколько целевых языков за один проход;
- OpenAI-совместимые модели и корпоративные LLM-шлюзы;
- отраслевые словари из CSV/TSV;
- предварительный просмотр результата;
- исправление переводов прямо в интерфейсе;
- инкрементальная обработка новых данных;
- плановые запуски по расписанию;
- статистика по строкам, ошибкам, кэшу и расходу токенов;
- массовая корректировка неконсистентных терминов.
Безопасная миграция между dev, staging и production
Ручной export/import плохо масштабируется: идентификаторы отличаются, подключения к БД называются по-разному, а последствия становятся видны только после релиза.
superset-tools сначала выполняет dry-run и показывает, какие объекты будут созданы или изменены, какие зависимости найдены и где есть риски. Только после проверки команда запускает реальную миграцию.
Автоматический маппинг помогает сопоставить базы данных и ресурсы между окружениями, а единый отчёт сохраняет результат операции для последующего аудита.
Бизнес-эффект: меньше аварийных исправлений, быстрее выпуск изменений и понятная процедура согласования релиза.
Дашборды как управляемые цифровые активы
Дашборд — это не просто экран с графиками. В нём зафиксированы бизнес-метрики, SQL-логика, фильтры и договорённости между подразделениями. Поэтому его изменения должны быть такими же прозрачными, как изменения программного кода.
Git-интеграция superset-tools позволяет:
- хранить историю версий;
- сравнивать изменения;
- возвращаться к стабильному состоянию;
- разделять экспериментальную и промышленную работу по веткам;
- доставлять согласованные изменения в целевое окружение;
- генерировать понятные сообщения коммитов с помощью LLM.
В результате команда получает единый процесс для аналитики и разработки, а ключевые отчёты перестают зависеть от памяти отдельных сотрудников.
AI-ассистент для повседневных операций
Платформой можно управлять через чат на естественном языке. Пользователь формулирует задачу так, как привык обсуждать её с коллегами:
«Проверь дашборд производства перед публикацией»
«Покажи последние изменения в отчёте по качеству»
«Подготовь перенос дашборда на staging и сначала покажи риски»
«Проанализируй загруженную спецификацию и найди связанные датасеты»
AI-агент сохраняет контекст диалога, умеет работать с PDF и XLSX и запрашивает подтверждение перед критическими действиями. Это не отдельный демонстрационный чат, а дополнительный интерфейс к реальным операциям платформы.
Единый центр контроля
Все длительные процессы — перевод, миграция, резервное копирование, анализ и Git-операции — выполняются как управляемые фоновые задачи.
Пользователь видит:
- текущий статус и прогресс;
- этап, на котором находится операция;
- предупреждения и ошибки;
- итоговый отчёт;
- историю запусков;
- автора и время действия.
Администратору не нужно подключаться к серверу и искать нужный фрагмент лога, а бизнес-пользователь не остаётся перед бесконечным индикатором загрузки.
Кому подходит superset-tools
BI-командам
Для управления большим количеством дашбордов и датасетов, выпуска изменений между окружениями и подготовки многоязычной отчётности.
Аналитикам данных
Для запуска типовых операций из единого интерфейса, отслеживания результатов и работы с AI без необходимости писать служебные скрипты.
DevOps и платформенным инженерам
Для воспроизводимых поставок, Git-процессов, интеграции с CI/CD, фоновых задач и развёртывания в закрытом контуре.
Руководителям ИТ, BI и DWH
Для прозрачности процессов, разграничения доступа, истории изменений и снижения зависимости от ручных действий отдельных специалистов.
Командам локализации и управления данными
Для массового перевода справочников и технического контента с контролем терминологии и качества результата.
Чем платформа отличается от набора скриптов
Скрипт хорошо решает одну задачу один раз. Корпоративный процесс должен переживать рост объёмов, смену сотрудников, ошибки внешних систем и новые требования безопасности.
superset-tools добавляет вокруг операций необходимый управленческий контур:
- единый пользовательский интерфейс;
- роли и права доступа;
- предварительную проверку изменений;
- фоновые задачи и повторные попытки;
- историю и аудит;
- отчёты в едином формате;
- расписания и retention-политики;
- API для внешних систем;
- расширение через плагины.
Корпоративное использование
Платформа рассчитана как на обычное Docker-развёртывание, так и на изолированные корпоративные сети.
Поддерживаются:
- локальная авторизация и ADFS SSO;
- роли
admin,analystиviewer; - корпоративные CA-сертификаты;
- собственные LLM-шлюзы и OpenAI-совместимые API;
- развёртывание без доступа к внешним источникам;
- очищенные enterprise-дистрибутивы;
- журналирование действий и результатов операций.
Как устроен продукт
Пользователь работает с единой веб-платформой, которая объединяет управление дашбордами, датасетами, миграциями, переводами, Git-репозиториями и фоновыми задачами. AI-агент предоставляет альтернативный диалоговый интерфейс, а API позволяет подключать CI/CD, Airflow, cron и внутренние корпоративные системы.
Архитектура модульная: стандартные возможности реализованы как плагины, поэтому платформу можно расширять под собственные источники данных и бизнес-процессы.
Быстрый старт
Инструкции по Docker-развёртыванию, локальной разработке, настройке LLM, SSO, сертификатов и закрытого контура находятся в INSTALL.md.
Документация
- Установка и настройка
- Архитектура системы
- Архитектурные решения
- Enterprise Clean Deployment
- API после запуска
- Руководство для контрибьюторов
Лицензия
Проект распространяется под лицензией MIT.