Skip to main content

ADOLF CORE — Часть 3.1: Launcher — Система баннерного подменю

Проект: Ядро корпоративной AI-системы
Модуль: User Interface / Launcher
Версия: 1.1
Дата: Январь 2026

1. Введение

1.1. Назначение

Launcher — компонент системы ADOLF, обеспечивающий двухуровневую навигацию с визуальным выбором действий через баннеры. Пользователь сначала выбирает модуль в боковом меню, затем видит экран с баннерами доступных действий, и только после выбора конкретного баннера запускается исполняемый код.

1.2. Проблема и решение

ПроблемаРешение Launcher
Автозапуск LLM при открытии модуляКод запускается только после явного выбора действия
Пользователь не понимает возможности модуляВизуальные баннеры с описанием каждого действия
Нет контроля над запуском задачДвухуровневая навигация: модуль → действие
Сложная навигация в чат-интерфейсеПродуктовый UX вместо чат-ориентированного

1.3. Ключевые принципы

  • Два уровня навигации — модуль → баннеры действий → результат
  • Прямой запуск — действие выполняется сразу без дополнительных параметров (MVP)
  • Контроль доступа на уровне модуля — если пользователь видит модуль, он видит все его баннеры
  • JSON-конфигурация — статичные файлы конфигурации для MVP
  • Отдельная страница результата — с навигацией назад

1.4. Связь с UI Reference

Launcher использует дизайн-систему shadcn/ui и Lucide Icons. Базовые стили: ui_reference/base/shadcn-variables.css
Design tokens: ui_reference/base/shadcn-tokens.json
МодульCSS VariableLucide IconHEX
CFO--module-cfoline-chart#22C55E
Reputation--module-reputationthumbs-up#F97316
Watcher--module-watchereye#EF4444
Content Factory--module-contentfactory#A855F7
Marketing--module-marketingmegaphone#EC4899
Scout--module-scoutsearch#06B6D4
Knowledge--module-knowledgebook-open-check#3B82F6
Lex--module-lexscale#64748B
Logistic--module-logistictruck#14B8A6

2. Архитектура

2.1. Общая схема

2.2. Поток данных

2.3. Структура файлов

/app/
├── frontend/src/
│   ├── lib/styles/
│   │   └── launcher.css
│   └── routes/apps/
│       ├── +layout.svelte
│       ├── [module]/
│       │   ├── +page.svelte
│       │   └── result/+page.svelte
│       └── components/
│           ├── Banner.svelte
│           ├── BannerGrid.svelte
│           └── ResultView.svelte
├── backend/routes/
│   └── launcher.py
├── config/launcher/
│   ├── cfo.json
│   ├── reputation.json
│   ├── watcher.json
│   ├── content_factory.json
│   ├── marketing.json
│   ├── scout.json
│   ├── knowledge.json
│   ├── lex.json
│   └── logistic.json
└── executors/launcher/
    ├── __init__.py
    ├── cfo.py
    └── ...

3. Конфигурация баннеров

3.1. Структура JSON

{
  "module": "cfo",
  "version": "1.0",
  "title": "Финансы",
  "description": "Финансовая аналитика и отчётность",
  "icon": "line-chart",
  "banners": [
    {
      "id": "pnl_report",
      "title": "P&L отчёт",
      "description": "Прибыль и убытки за период",
      "icon": "file-bar-chart",
      "action": "cfo.pnl_report",
      "enabled": true,
      "badge": null
    }
  ]
}

3.2. Поля модуля

ПолеТипОбязательноОписание
modulestringИдентификатор модуля
versionstringВерсия конфигурации
titlestringЗаголовок страницы
descriptionstringОписание модуля
iconstringLucide icon name
bannersarrayМассив баннеров

3.3. Поля баннера

ПолеТипОбязательноОписание
idstringУникальный ID
titlestringЗаголовок
descriptionstringОписание действия
iconstringLucide icon name
actionstringID действия (module.action)
enabledbooleanАктивен ли (default: true)
badgestringБейдж (NEW, AI, BETA)

3.4. Файлы конфигурации

Конфигурации для всех модулей размещаются в /config/launcher/:
ФайлМодуль
cfo.jsonФинансы
reputation.jsonОтзывы
watcher.jsonМониторинг цен
content_factory.jsonКонтент
marketing.jsonМаркетинг
scout.jsonАналитика
knowledge.jsonБаза знаний
lex.jsonЮридический
logistic.jsonЛогистика

4. Стили

4.1. Подключение

<link rel="stylesheet" href="/ui_reference/base/shadcn-variables.css">
<link rel="stylesheet" href="/styles/launcher.css">
<script src="https://unpkg.com/lucide@latest"></script>

4.2. CSS-классы

Launcher использует CSS переменные из shadcn-variables.css:
КлассНазначение
.launcher-pageКонтейнер страницы
.launcher-headerЗаголовок с описанием
.banner-gridСетка баннеров (CSS Grid)
.bannerКарточка баннера
.banner--disabledОтключённый баннер
.banner__iconИконка баннера
.banner__titleЗаголовок баннера
.banner__descriptionОписание
.banner__badgeБейдж (AI, NEW)
.back-buttonКнопка назад
.loading-overlayОверлей загрузки

4.3. Module Color Variants

Цвет баннера определяется атрибутом data-module:
<button class="banner" data-module="cfo">...</button>
CSS автоматически применяет --module-color и --module-color-light из shadcn-variables.css.

5. Backend API

5.1. Endpoints

EndpointMethodОписание
/api/launcher/config/{module}GETКонфигурация баннеров
/api/launcher/executePOSTВыполнение действия
/api/launcher/modulesGETСписок доступных модулей

5.2. Модели данных

ExecuteRequest:
{
  "module": "cfo",
  "action": "cfo.pnl_report",
  "banner_id": "pnl_report"
}
ExecuteResponse:
{
  "success": true,
  "action": "cfo.pnl_report",
  "title": "P&L отчёт",
  "data": { ... },
  "timestamp": "2026-01-31T12:00:00Z",
  "error": null
}

5.3. Реализация

Реализация API соответствует стандартам FastAPI из adolf_fastapi_reference_v1_0.md:
  • Авторизация через get_current_user
  • Проверка доступа через check_module_access
  • Динамическая загрузка executors
  • Стандартная обработка ошибок

6. Executors

6.1. Структура

Каждый модуль имеет свой файл executor в /executors/launcher/:
# executors/launcher/cfo.py

async def pnl_report(user: dict) -> dict:
    """P&L отчёт за текущую неделю."""
    # Логика формирования отчёта
    return {"type": "pnl_report", "data": ...}

async def abc_analysis(user: dict) -> dict:
    """ABC-анализ SKU."""
    return {"type": "abc_analysis", "data": ...}

6.2. Соглашения

  • Имя функции = последняя часть action (после точки)
  • Обязательный параметр user: dict
  • Возвращает dict с результатом
  • Async функции

7. Версия 2.0 (планы)

7.1. Конфигурация в PostgreSQL

ТаблицаНазначение
launcher_modulesМодули
launcher_bannersБаннеры

7.2. Расширенные типы действий

ТипОписание
directПрямой запуск (MVP)
formФорма параметров перед запуском
chatПереход в чат с Pipeline
redirectВнешний URL

7.3. Три уровня навигации

Модуль → Категория → Баннер → Результат

8. Резюме

MVP (v1.0)

КомпонентСтатус
JSON-конфигурация
Двухуровневая навигация
Прямой запуск
Страница результата
shadcn/ui стили
Lucide иконки

Планы (v2.0)

КомпонентСтатус
PostgreSQL конфигурация📋
Форма параметров📋
Три уровня навигации📋
Переход в чат📋

9. Связанные документы

ДокументОписание
ui_reference/base/shadcn-variables.cssCSS переменные дизайн-системы
ui_reference/base/shadcn-tokens.jsonDesign tokens
ui_reference/README.mdОбзор UI Reference
adolf_fastapi_reference_v1_0.mdСтандарты FastAPI

Версия: 1.0
Дата: Январь 2026
Статус: Утверждён