Перейти к содержанию

UX Flows: CalmTrader MVP

Версия: 1.0 Дата: 13.01.2026


1. Общая карта продукта

1.1 Команды и состояния

flowchart TB
    subgraph Commands["Команды бота"]
        start["/start"]
        settings["/settings"]
        checkin["/checkin"]
        checkout["/checkout"]
        meditate["/meditate"]
        reset["/reset"]
    end

    subgraph States["Состояния агента"]
        idle["IDLE"]
        in_short["IN_SESSION_SHORT"]
        in_medium["IN_SESSION_MEDIUM"]
        in_unlimited["IN_SESSION_UNLIMITED"]
        out_short["OUT_SESSION_SHORT"]
        out_medium["OUT_SESSION_MEDIUM"]
        out_unlimited["OUT_SESSION_UNLIMITED"]
        breathe_fb["BREATHE_FEEDBACK"]
        meditate_fb["MEDITATE_FEEDBACK"]
    end

    start --> idle
    settings --> idle
    checkin --> in_short & in_medium & in_unlimited
    checkout --> out_short & out_medium & out_unlimited
    meditate --> breathe_fb & meditate_fb
    reset --> idle

    in_short & in_medium & in_unlimited --> idle
    out_short & out_medium & out_unlimited --> idle
    breathe_fb --> idle
    meditate_fb --> idle

1.2 Основной User Journey

journey
    title Типичный день трейдера с CalmTrader
    section Утро
      Открыть бота: 5: Трейдер
      Пройти check-in: 4: Трейдер
      Медитация или дыхание: 5: Трейдер
    section Торговля
      Получить поддержку: 4: Агент
      Справиться со стрессом: 3: Трейдер
    section Вечер
      Пройти checkout: 4: Трейдер
      Вечерняя практика: 5: Трейдер

2. Flow 1: Онбординг

2.1 Диаграмма

flowchart TD
    A[Пользователь нажимает /start] --> B{Новый пользователь?}
    B -->|Да| C[Создание записи в БД]
    B -->|Нет| D[Загрузка профиля]
    C --> D
    D --> E[Определение языка из Telegram]
    E --> F[Показ экрана настроек]

    F --> G[Settings Screen]
    G --> H{Выбор действия}

    H -->|Язык| I[Выбор ru/en]
    H -->|Режим| J[Выбор text/voice]
    H -->|Голос| K[Выбор м/ж]
    H -->|Провайдер| L[OpenAI/ElevenLabs]
    H -->|Продолжить| M[Вызов агента]

    I --> G
    J --> G
    K --> G
    L --> G

    M --> N[Агент определяет следующий шаг]
    N --> O[Персонализированное приветствие]

2.2 Экраны

Экран 1: Приветствие

┌─────────────────────────────┐
│  🧘 CalmTrader              │
│                             │
│  [Изображение]              │
│                             │
│  Привет! Я помогу тебе      │
│  управлять эмоциями         │
│  во время торговли.         │
│                             │
│  ─────────────────────────  │
│  Настройки:                 │
│                             │
│  🌐 Язык     [Русский  ▼]   │
│  📝 Режим    [Текст    ▼]   │
│  👤 Голос    [Женский  ▼]   │
│                             │
│  [ 🔙 Назад ] [ Продолжить ]│
└─────────────────────────────┘

Экран 2: Выбор языка

┌─────────────────────────────┐
│  🌐 Выберите язык           │
│                             │
│  [ 🇷🇺 Русский ]            │
│  [ 🇬🇧 English  ]           │
│                             │
│  [ 🔙 Назад ]               │
└─────────────────────────────┘

3. Flow 2: Check-in

3.1 Диаграмма

flowchart TD
    A[Пользователь: /checkin] --> B[Получение профиля]
    B --> C[Генерация приветствия]
    C --> D[Показ экрана выбора длительности]

    D --> E{Выбор длительности}
    E -->|Быстро| F[short: 1-2 мин]
    E -->|Средняя| G[medium: 3-5 мин]
    E -->|Полная| H[unlimited: 10+ мин]

    F --> I[Загрузка промпта check-in-short.md]
    G --> J[Загрузка промпта check-in-medium.md]
    H --> K[Загрузка промпта check-in-unlimited.md]

    I & J & K --> L[PromptBuilder: заполнение плейсхолдеров]
    L --> M[Разделение на части ≤4096 символов]
    M --> N[Отправка в чат]
    N --> O[Установка состояния IN_SESSION_*]
    O --> P[Диалог с агентом]
    P --> Q[Завершение сессии]
    Q --> R[Состояние IDLE]

3.2 Экраны

Экран 1: Выбор длительности

┌─────────────────────────────┐
│  ☀️ Утренний check-in       │
│                             │
│  [Изображение]              │
│                             │
│  Доброе утро, Алексей!      │
│  Готов к торговому дню?     │
│                             │
│  Выбери формат сессии:      │
│                             │
│  [ ⚡ Быстро (1-2 мин)  ]   │
│  [ 📝 Средняя (3-5 мин) ]   │
│  [ 🎯 Полная (10+ мин)  ]   │
│                             │
│  [ 🔙 Отмена ]              │
└─────────────────────────────┘

Экран 2: Сессия check-in

┌─────────────────────────────┐
│  🤖 AI Психолог:            │
│                             │
│  Привет! Давай подготовимся │
│  к торговому дню.           │
│                             │
│  Как ты себя чувствуешь     │
│  сейчас? Оцени уровень      │
│  энергии от 1 до 10.        │
│                             │
│  ─────────────────────────  │
│  👤 Пользователь:           │
│                             │
│  Чувствую себя на 7,        │
│  выспался хорошо            │
│                             │
│  [         Ввод текста    ] │
└─────────────────────────────┘

4. Flow 3: Checkout

4.1 Диаграмма

flowchart TD
    A[Пользователь: /checkout] --> B[Получение профиля]
    B --> C[Генерация приветствия]
    C --> D[Показ экрана выбора длительности]

    D --> E{Выбор длительности}
    E -->|Быстро| F[short]
    E -->|Средняя| G[medium]
    E -->|Полная| H[unlimited]

    F --> I[Загрузка промпта check-out-short.md]
    G --> J[Загрузка промпта check-out-medium.md]
    H --> K[Загрузка промпта check-out-unlimited.md]

    I & J & K --> L[PromptBuilder]
    L --> M[Отправка в чат]
    M --> N[Установка состояния OUT_SESSION_*]
    N --> O[Анализ торгового дня]
    O --> P[Рекомендации]
    P --> Q[Состояние IDLE]

4.2 Экраны

Экран 1: Выбор длительности

┌─────────────────────────────┐
│  🌙 Вечерняя рефлексия      │
│                             │
│  [Изображение]              │
│                             │
│  Алексей, торговый день     │
│  подходит к концу.          │
│  Давай подведём итоги.      │
│                             │
│  [ ⚡ Быстро (1-2 мин)  ]   │
│  [ 📝 Средняя (3-5 мин) ]   │
│  [ 🎯 Полная (10+ мин)  ]   │
│                             │
│  [ 🔙 Отмена ]              │
└─────────────────────────────┘

5. Flow 4: Практики осознанности (/meditate)

5.1 Диаграмма

flowchart TD
    A[Пользователь: /meditate] --> B[Получение профиля]
    B --> C[Генерация приветствия + изображение]
    C --> D[Показ выбора категории]

    D --> E{Выбор категории}
    E -->|Дыхательные| F[Список 5 техник + Назад]
    E -->|Общие| G[Список 6 медитаций + Назад]
    E -->|Ситуативные| H[Список 8 медитаций + Назад]
    E -->|Справка| I[Описание методологии + Назад]

    I --> D

    F --> J{Выбор техники}
    J --> K[Physiological Sigh]
    J --> L[Box Breathing]
    J --> M[4-7-8 Breathing]
    J --> N[Coherent Breathing]
    J --> O[Extended Exhale]
    J -->|Назад| D

    K & L & M & N & O --> P[Выбор длительности: 3/5/10 мин]
    P --> Q{Выбор действия}
    Q -->|Техника| R[Аудио объяснение]
    Q -->|Выполнить| S[Аудио практики]
    R --> Q
    S --> T[Кнопка "Готово"]
    T --> U[BREATHE_FEEDBACK]
    U --> V[Диалог с агентом]
    V --> W[IDLE]

    G --> X{Выбор медитации}
    H --> X
    X -->|Назад| D

    X --> Y[Генерация аудио + ambient]
    Y --> Z[Отправка voice message]
    Z --> AA[Кнопка "Готово"]
    AA --> AB[MEDITATE_FEEDBACK]
    AB --> AC[Диалог с агентом]
    AC --> W

5.2 Экраны

Экран 1: Выбор категории

┌─────────────────────────────┐
│  🧘 Практики осознанности   │
│                             │
│  [Изображение]              │
│                             │
│  Алексей, выбери тип        │
│  практики:                  │
│                             │
│  [🌬️ Дыхательные упражнения]│
│  [📿 Общие практики        ]│
│  [🎯 Ситуативные (эмоции)  ]│
│  [📖 Справка и методология ]│
│                             │
└─────────────────────────────┘

Экран 2: Дыхательные упражнения

┌─────────────────────────────┐
│  🌬️ Дыхательные упражнения  │
│                             │
│  Выбери технику:            │
│                             │
│  [😮‍💨 Физиологический вздох]│
│  [⬜ Квадратное дыхание    ]│
│  [4️⃣ Дыхание 4-7-8        ]│
│  [🔄 Когерентное дыхание   ]│
│  [💨 Удлинённый выдох      ]│
│                             │
│  [ 🔙 Назад ]               │
└─────────────────────────────┘

Экран 3: Выбор длительности (дыхание)

┌─────────────────────────────┐
│  ⬜ Квадратное дыхание      │
│                             │
│  Помогает достичь баланса   │
│  и улучшить концентрацию.   │
│                             │
│  Выбери длительность:       │
│                             │
│  [ ⚡ Короткая (3 мин) ]    │
│  [ 📝 Средняя (5 мин)  ]    │
│  [ 🎯 Длинная (10 мин) ]    │
│                             │
│  [ 🔙 Назад ]               │
└─────────────────────────────┘

Экран 4: Выбор действия (дыхание)

┌─────────────────────────────┐
│  ⬜ Квадратное дыхание      │
│  📝 Средняя (5 мин)         │
│                             │
│  [ 📖 Техника ]             │
│  Послушать объяснение       │
│                             │
│  [ ▶️ Выполнить ]           │
│  Начать практику            │
│                             │
│  [ 🔙 Назад ]               │
└─────────────────────────────┘

Экран 5: Общие практики

┌─────────────────────────────┐
│  📿 Общие практики          │
│                             │
│  [ ☀️ Утренняя настройка   ]│
│  [ 🌙 Вечерняя рефлексия   ]│
│  [ ⭐ Визуализация успеха  ]│
│  [ ⏳ Развитие терпения    ]│
│  [ 🤲 Принятие результатов ]│
│  [ 📊 Отстранённость       ]│
│                             │
│  [ ❓ Справка ]             │
│  [ 🔙 Назад  ]              │
└─────────────────────────────┘

Экран 6: Ситуативные практики

┌─────────────────────────────┐
│  🎯 Ситуативные практики    │
│                             │
│  [ 💔 Сброс после убытка   ]│
│  [ 😤 Предотвращение тильта]│
│  [ 🔁 Сброс овертрейдинга  ]│
│  [ 📈 Работа с FOMO        ]│
│  [ ⚖️ Риск-менеджмент      ]│
│  [ 👊 Месть рынку          ]│
│  [ 💰 Тревога от прибыли   ]│
│  [ 🔍 Паралич анализа      ]│
│                             │
│  [ ❓ Справка ]             │
│  [ 🔙 Назад  ]              │
└─────────────────────────────┘

Экран 7: Прослушивание медитации

┌─────────────────────────────┐
│  🧘 Утренняя настройка      │
│                             │
│  Найди тихое место,         │
│  сядь удобно и закрой       │
│  глаза.                     │
│                             │
│  🔊 [▶ Голосовое сообщение ]│
│     5:12                    │
│                             │
│  ─────────────────────────  │
│                             │
│  [ ✅ Готово ]              │
│                             │
└─────────────────────────────┘

6. Flow 5: Голосовое сообщение

6.1 Диаграмма

flowchart TD
    A[Пользователь отправляет voice] --> B{Длительность ≤ 20 мин?}
    B -->|Нет| C[Ошибка: слишком длинное]
    B -->|Да| D[Скачивание из Telegram]
    D --> E[Транскрипция через Whisper]
    E --> F[Загрузка в MinIO]
    F --> G[Показ typing indicator]
    G --> H[Отправка агенту]
    H --> I[Получение ответа]
    I --> J{response_mode?}
    J -->|text| K[Отправка текста]
    J -->|voice| L[Синтез TTS]
    L --> M[Отправка voice + текст]
    K & M --> N[Сохранение в БД]

6.2 Экраны

Экран: Голосовой диалог

┌─────────────────────────────┐
│  👤 Пользователь:           │
│  🎤 [▶ Голосовое 0:15 ]     │
│                             │
│  ─────────────────────────  │
│  🤖 AI Психолог:            │
│                             │
│  🔊 [▶ Голосовое 0:23 ]     │
│                             │
│  💬 Понимаю, это непросто.  │
│  Давай попробуем технику    │
│  физиологического вздоха... │
│                             │
│  [         Ввод текста    ] │
│  [🎤]                       │
└─────────────────────────────┘

7. Flow 6: Настройки

7.1 Диаграмма

flowchart TD
    A[/settings] --> B[Главный экран настроек]

    B --> C{Выбор категории}
    C -->|Язык| D[Экран выбора языка]
    C -->|Режим| E[Экран выбора режима]
    C -->|Голос| F[Экран выбора пола]
    C -->|Провайдер| G[Экран выбора TTS]
    C -->|Голос агента| H[Экран выбора голоса]
    C -->|Скорость| I[Экран выбора скорости]
    C -->|Транскрипция| J[Вкл/Выкл]
    C -->|Продолжить| K[Вызов агента]

    D --> L[Выбор ru/en]
    E --> M[Выбор text/voice]
    F --> N[Выбор male/female]
    G --> O[Выбор openai/elevenlabs]
    H --> P[Выбор nova/echo/sarah/liam]
    I --> Q[Выбор 0.8/1.0/1.2]

    L & M & N & O & P & Q --> R[Сохранение в БД]
    R --> B

    J --> R

7.2 Настройки

Категория Поле БД Значения Default
Язык language_code ru, en ru
Режим ответа response_mode text, voice text
Пол голоса voice_gender male, female female
TTS провайдер tts_provider openai, elevenlabs openai
Голос tts_voice nova, echo, sarah, liam nova
Скорость tts_speed 0.8, 1.0, 1.2 1.0
Транскрипция show_transcript true, false false

8. State Machine

8.1 Диаграмма состояний

stateDiagram-v2
    [*] --> IDLE : /start

    IDLE --> IN_SESSION_SHORT : /checkin + short
    IDLE --> IN_SESSION_MEDIUM : /checkin + medium
    IDLE --> IN_SESSION_UNLIMITED : /checkin + unlimited

    IDLE --> OUT_SESSION_SHORT : /checkout + short
    IDLE --> OUT_SESSION_MEDIUM : /checkout + medium
    IDLE --> OUT_SESSION_UNLIMITED : /checkout + unlimited

    IDLE --> BREATHE_FEEDBACK : /meditate + дыхание + done
    IDLE --> MEDITATE_FEEDBACK : /meditate + медитация + done

    IN_SESSION_SHORT --> IDLE : сессия завершена
    IN_SESSION_MEDIUM --> IDLE : сессия завершена
    IN_SESSION_UNLIMITED --> IDLE : сессия завершена

    OUT_SESSION_SHORT --> IDLE : сессия завершена
    OUT_SESSION_MEDIUM --> IDLE : сессия завершена
    OUT_SESSION_UNLIMITED --> IDLE : сессия завершена

    BREATHE_FEEDBACK --> IDLE : feedback собран
    MEDITATE_FEEDBACK --> IDLE : feedback собран

    IDLE --> [*] : /reset

8.2 Контекст состояний

Состояние Контекст Описание
IDLE Обычное общение
IN_SESSION_* duration Pre-market check-in
OUT_SESSION_* duration Post-market checkout
BREATHE_FEEDBACK technique, duration После дыхания
MEDITATE_FEEDBACK meditation, duration_min После медитации

9. Wireframes Summary

Типы экранов

Тип Описание Примеры
Welcome Приветствие с изображением /start, /meditate
Selection Выбор из списка Категории, техники, медитации, длительности
Settings Настройки с кнопками /settings
Dialog Чат с агентом Check-in, Checkout, Feedback
Audio Аудио сообщение + кнопка Практика дыхания, медитация

Компоненты UI

Компонент Реализация Telegram API
Кнопки выбора InlineKeyboardMarkup CallbackQuery
Голосовое Voice message sendVoice
Изображение Photo sendPhoto
Текст Message sendMessage
Индикатор Typing sendChatAction

Документ создан: 13.01.2026 Версия: 1.0