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