Skip to content

Раздел 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. Связь с дизайн-системой

Launcher использует единую дизайн-систему ADOLF на базе shadcn/ui.

Документация: UI Design System

Все модули используют единую цветовую схему с --primary как акцентным цветом. Визуальная идентификация модулей — через Lucide-иконки.

МодульLucide IconReact Import
Knowledgedatabase-searchDatabaseSearch
Content FactoryshirtShirt
CFOchart-candlestickChartCandlestick
Reputationthumbs-upThumbsUp
Watcherhat-glassesHatGlasses
MarketingtargetTarget
ScoutbinocularsBinoculars
LexscaleScale
LogistictruckTruck
Officebuilding-2Building2
Shopshopping-cartShoppingCart

Полный реестр иконок: Приложение A: Реестр иконок


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
│   ├── office.json
│   └── shop.json
└── executors/launcher/
    ├── __init__.py
    ├── cfo.py
    └── ...

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

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

json
{
  "module": "cfo",
  "version": "1.0",
  "title": "Финансы",
  "description": "Финансовая аналитика и отчётность",
  "icon": "chart-candlestick",
  "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. Файлы конфигурации

ФайлМодульИконка
cfo.jsonФинансыchart-candlestick
reputation.jsonОтзывыthumbs-up
watcher.jsonМониторинг конкурентовhat-glasses
content_factory.jsonКонтентshirt
marketing.jsonМаркетингtarget
scout.jsonАналитика нишbinoculars
knowledge.jsonБаза знанийdatabase-search
lex.jsonЮридическийscale
logistic.jsonЛогистикаtruck
office.jsonДашборд агентовbuilding-2
shop.jsonИнтернет-магазинshopping-cart

4. Стили

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

Launcher использует единую дизайн-систему shadcn/ui. Подробности: Раздел 1: Основы

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

4.2. 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. Стилизация

Все компоненты используют CSS-переменные shadcn/ui:

css
.banner {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}

.banner:hover {
  border-color: var(--primary);
  box-shadow: var(--shadow-lg);
}

.banner__badge {
  background: var(--primary);
  color: var(--primary-foreground);
}

Подробнее о паттернах: Раздел 4: Паттерны компоновки


5. Backend API

5.1. Endpoints

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

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

ExecuteRequest:

json
{
  "module": "cfo",
  "action": "cfo.pnl_report",
  "banner_id": "pnl_report"
}

ExecuteResponse:

json
{
  "success": true,
  "action": "cfo.pnl_report",
  "title": "P&L отчёт",
  "data": { },
  "timestamp": "2026-02-16T12:00:00Z",
  "error": null
}

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

Реализация API соответствует стандартам FastAPI Reference:

  • Авторизация через get_current_user
  • Проверка доступа через check_module_access
  • Динамическая загрузка executors
  • Стандартная обработка ошибок

6. Executors

6.1. Структура

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

python
# 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.1)

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

Планы (v2.0)

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

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

ДокументОписание
UI: ВведениеОбзор дизайн-системы
UI: ОсновыCSS-переменные, цвета
UI: ТематизацияИконки модулей
UI: ПаттерныПаттерны компоновки
UI: ИконкиРеестр Lucide-иконок
FastAPI ReferenceСтандарты API

Версия: 1.1
Дата: Февраль 2026
Статус: Актуален

Документация ADOLF Platform