Skip to content

Phase 4.7: Модульный startup + shutdown + deployment modes #552

@ShaerWare

Description

@ShaerWare

Parent

Часть Phase 4 декомпозиции orchestrator.py: #494

Sub-issues

Цель

Финальная сборка: заменить монолитный startup/shutdown модульной инициализацией. orchestrator.py ≤ 200 строк.

Что сделать

Модульный startup

Заменить 394-строчный startup_event() на модульную инициализацию:

  • Каждый модуль реализует async def init(container) или create_service()
  • Orchestrator вызывает init() по графу зависимостей:
    1. core (DB, auth, config, roles, workspace)
    2. knowledge, llm, speech (фундаментальные сервисы)
    3. chat (зависит от knowledge + llm)
    4. channels, kanban, claude_code (зависят от chat)
    5. crm, ecommerce, sales (зависят от knowledge + chat)
    6. monitoring, admin

Graceful shutdown

Заменить однострочный shutdown_database():

async def shutdown():
    await task_registry.cancel_all(timeout=10)
    await channels.stop_all_bots()
    await bridge.stop()
    await db.close()

Deployment modes

Заменить 9 scattered if-statements на загрузку модулей по mode:

MODULES = {
    "full":  [core, knowledge, llm, speech, chat, channels, ...],
    "cloud": [core, knowledge, llm, chat, channels, ...],  # без speech, telephony
    "local": [core, knowledge, llm, speech, chat, channels, ...],
}

Целевой orchestrator.py (~100-200 строк):

  • FastAPI app creation
  • Middleware (CORS, rate limiter, security headers)
  • Module loading по deployment mode
  • Startup/shutdown lifecycle
  • Vue admin mount + main

Нюансы

  • ServiceContainer timing — роутеры получают сервисы через Depends(get_container). Container должен быть полностью заполнен до первого запроса. FastAPI lifespan гарантирует это
  • Helper-функции (_seed_system_roles, _seed_default_workspace, _auto_start_telegram_bots, etc.) — должны быть перенесены в домены к этому моменту
  • Условная регистрация роутеров — часть роутеров (speech, gsm, finetune) не нужны в cloud mode
  • DEV_MODE Vite proxy — оставить в orchestrator.py
  • Обратная совместимостьorchestrator:app используется в uvicorn.run() и Docker CMD

Зависимости

Критерии готовности

  • orchestrator.py ≤ 200 строк
  • Модульный startup — каждый модуль инициализируется через свой init()
  • Graceful shutdown: tasks → bots → bridge → DB
  • Deployment modes через загрузку/не-загрузку модулей
  • Health check показывает только загруженные модули
  • Все endpoints работают
  • Боты стартуют корректно
  • Docker deploy + health check OK
  • CI зелёный

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priorityphase:5-techdebtPhase 5: Technical DebtrefactoringArchitectural refactoring

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions