Phase 1 Progress Report¶
Проект: CalmTrader — AI Психолог для Трейдеров Контракт: order-001-phase1-ru Период: 01.12.2025 — 31.01.2026 Дата отчёта: 13.01.2026
Выводы¶
- Разработка идёт с опережением — реализован функционал сверх MVP (голос, медитации, AI Agent)
- Исследования отстают — нужны тестовые интервью и подготовка каналов
- Документация завершена — PRD, user stories, UX flow, test cases готовы
- Блокер: интервью зависят от Заказчика
Рекомендации¶
- Приоритизировать подготовку каналов для поиска респондентов (A4A-15)
- Начать тестовые интервью параллельно с разработкой
- Завершить Admin панель для мониторинга
- Согласовать ToS/PP с юристом
Executive Summary¶
Общий прогресс по контракту¶
| Раздел | Done | Частично | Todo | Прогресс |
|---|---|---|---|---|
| 2.1 Исследования | 2 | 0 | 6* | 25% |
| 2.2 Операции | 3 | 1 | 0* | 87% |
| 2.3 Управление продуктом | 5 | 0 | 1 | 83% |
| 2.4 Разработка | 9 | 2 | 0 | 91% |
| ИТОГО | 19 | 3 | 7 | 72% |
* Без учёта задач Заказчика (2.1.5, 2.2.3)
Статус в Linear¶
| Статус | Количество |
|---|---|
| Done | 29 |
| In Progress | 0 |
| Todo | 17 |
| Backlog | 11 |
| Canceled | 4 |
Статистика разработки¶
| Метрика | Значение |
|---|---|
| Коммитов | 230+ |
| Релизов | 21 (v1.0.0 — v1.33.0) |
| Python файлов (apps/) | 112 |
| Python строк кода | ~16,000 |
| TypeScript/HTML (admin) | ~2,800 строк |
| Telegram-бот версия | v1.33.0 |
Ключевые достижения¶
- Telegram-бот работает в production — https://t.me/ai_calm_trader_bot
- AI Agent с персонализированным onboarding — GPT-4o powered
- Голосовые сообщения — STT (Whisper) + TTS (OpenAI/ElevenLabs)
- Единая команда /meditate — 5 дыхательных техник + 14 guided медитаций (включая 10 CBT-сценариев)
- Методология check-in/checkout с промптами для 3 режимов
- Admin панель — Ionic/Angular (user management, events, broadcast, analytics)
- 132 аудио-части — 110 CBT voice parts (male/female), 12 generic, 10 ambient sounds
Детализация по разделам контракта¶
2.1 Исследования (User Discovery)¶
| № | Работа | Linear | Статус | Комментарий |
|---|---|---|---|---|
| 2.1.1 | Подготовка методологии интервью | A4A-12, A4A-44, A4A-45, A4A-46 | ✅ Done | Методология, скрипт, таблица созданы |
| 2.1.2 | Тестовые интервью (до 2 шт) | A4A-13 | 📋 Todo | — |
| 2.1.3 | Доработка методологии | A4A-14 | 📋 Todo | Ждёт результатов 2.1.2 |
| 2.1.4 | Каналы поиска респондентов | A4A-15 | 📋 Todo | — |
| 2.1.5 | Проведение интервью (до 30 шт) | — | ⏸️ Заказчик | — |
| 2.1.6 | Транскрибация интервью | A4A-16 | 📋 Todo | Ждёт 2.1.5 |
| 2.1.7 | Анализ + user personas | A4A-17 | 📋 Todo | Ждёт 2.1.6 |
| 2.1.8 | Van Westendorp анализ | A4A-18 | 📋 Todo | — |
| 2.1.9 | Настройка аналитики | A4A-19 | ✅ Done | PostHog Cloud EU интегрирован |
Результаты: - Методология проблемных интервью - Скрипт интервью для CalmTrader - Таблица результатов (Google Sheets)
2.2 Операции¶
| № | Работа | Linear | Статус | Комментарий |
|---|---|---|---|---|
| 2.2.1 | ToS и Privacy Policy | A4A-20, A4A-40, A4A-41, A4A-42 | 🔸 Частично | RU готов, EN и согласование с юристом — нет |
| 2.2.2 | Регистрация домена | A4A-21 | ✅ Done | calmtrader.ai (Spaceship) |
| 2.2.3 | Stripe/PayPal аккаунты | — | ⏸️ Заказчик | — |
| 2.2.4 | SOPs документация | A4A-22 | ✅ Done | sops-v1.md |
| 2.2.5 | Security audit | A4A-23 | ✅ Done | Report, Methodology |
Результаты: - Домен: calmtrader.ai - Субдомены: api., bot., app., admin., docs. - SSL: Let's Encrypt (auto-renewal via Traefik) - SOPs: Deployment, rollback, incident response, backup/restore, monitoring - Security Audit: 3 Medium findings, 3 Low findings, 0 Critical/High
2.3 Управление продуктом¶
| № | Работа | Linear | Статус | Комментарий |
|---|---|---|---|---|
| 2.3.1 | PRD для MVP | A4A-24 | ✅ Done | prd-mvp.md |
| 2.3.2 | User stories (20 шт) | A4A-25 | ✅ Done | user-stories-mvp.md |
| 2.3.3 | UX flow проектирование | A4A-26 | ✅ Done | ux-flows-mvp.md |
| 2.3.4 | Координация команды | A4A-27 | ✅ Done | Linear (57 задач), 2 статус-митинга |
| 2.3.5 | Тестирование (30 test cases) | A4A-28 | ✅ Done | test-cases-mvp.md |
| 2.3.6 | Маркетинговая координация | A4A-29 | 📋 Todo | — |
Результаты:
- PRD для MVP — 9 функциональных требований, 3 user personas
- User Stories — 20 историй с acceptance criteria
- UX Flows — 9 Mermaid диаграмм, wireframes
- Test Cases — 30 тест-кейсов (21 P1, 8 P2, 1 P3)
- Координация команды: Linear workspace (57 задач: 21 Done, 1 In Progress, 20 Todo, 11 Backlog, 4 Canceled), 2 статус-митинга с клиентом
2.4 Разработка¶
| № | Работа | Linear | Статус | Комментарий |
|---|---|---|---|---|
| 2.4.1 | Архитектура и схема БД | A4A-30 | ✅ Done | architecture-v1.md |
| 2.4.2 | Telegram-бот framework | A4A-31 | ✅ Done | Python aiogram 3.x |
| 2.4.3 | Database models | A4A-32 | ✅ Done | database-schema-v1.md |
| 2.4.4 | Методология check-in | A4A-33 | 🔸 Частично | Методология готова, промпты написаны |
| 2.4.5 | Pre-market check-in flow | A4A-34 | 🔸 Частично | 3 режима промптов, нужна интеграция с агентом |
| 2.4.6 | Post-market reflection | A4A-35 | 🔸 Частично | 3 режима промптов, нужна интеграция с агентом |
| 2.4.7 | CBT-based AI responses | A4A-36 | ✅ Done | 10 CBT-медитаций, 110 voice parts (male/female) |
| 2.4.8 | Дыхательные упражнения | A4A-37, A4A-235 | ✅ Done | 5 техник с аудио |
| 2.4.9 | Базовые команды | A4A-38 | ✅ Done | /start, /settings, /checkin, /checkout, /breathe, /meditate, /reset |
| 2.4.10 | Административная панель | A4A-39 | ✅ Done | User management, events, broadcast, analytics |
| 2.4.11 | Production deployment | A4A-10, A4A-11 | ✅ Done | Hetzner, Docker, CI/CD |
Результаты: - Бот: @ai_calm_trader_bot (production) - API: https://api.calmtrader.ai - Admin: https://admin.calmtrader.ai - Docs: https://docs.calmtrader.ai - CI/CD: GitHub Actions (auto-deploy on push to main)
Детали по check-in/checkout (2.4.4–2.4.6):
Готово:
- Методология описана в
doc/methodology/checkin-checkout/ - 6 промптов:
check-{in,out}-{short,medium,unlimited}.md - PromptBuilder класс для генерации промптов с контекстом пользователя
- Атрибуты и метрики определены в методологии
Осталось:
- Интеграция промптов с AI агентом для интерактивного сценария (текст/голос)
Детали по Analytics (2.1.9):
✅ Готово:
- PostHog Cloud EU интегрирован
- Analytics service в боте (
apps/bot/app/services/analytics.py) - 232 исторических события мигрированы
- Все команды бота отслеживаются: bot_started, message_sent, checkin_started, checkout_started, breathing_started, meditation_started, chat_reset
- User identification с properties (name, username, language)
Критерии приёмки (GO/NO-GO)¶
Из контракта, раздел 7:
| Критерий | Статус | Комментарий |
|---|---|---|
| Методология интервью подготовлена и протестирована | 🔸 Частично | Подготовлена, тестовые интервью — нет |
| Каналы и запросы для поиска респондентов | ❌ Нет | — |
| Результаты интервью обработаны и проанализированы | ❌ Нет | Ждёт интервью |
| Telegram-бот работает в production | ✅ Да | — |
| Pre/post-market check-in реализован | 🔸 Частично | Методология и промпты готовы, нужна интеграция с агентом |
| Дыхательные упражнения доступны | ✅ Да | 5 техник |
| Административная панель работает | ✅ Да | User management, events, broadcast, analytics |
| Analytics dashboard настроен | ✅ Да | PostHog Cloud EU, 232 события мигрированы |
| ToS и Privacy Policy опубликованы | 🔸 Частично | RU есть, EN — нет |
Готовность к приёмке: ~65%
Задачи сверх MVP¶
Функционал, который не был в контракте, но реализован:
| ID | Задача | Описание | Ценность |
|---|---|---|---|
| A4A-145 | AI Agent Onboarding | Персонализированный onboarding с GPT-4o, сбор профиля трейдера | Высокая |
| A4A-147 | Голосовые сообщения | Транскрипция голоса (Whisper), хранение в MinIO | Высокая |
| A4A-148 | TTS ответы агента | Голосовые ответы через OpenAI/ElevenLabs | Высокая |
| A4A-159 | Мультиязычность | Полная локализация ru/en | Средняя |
| A4A-249 | AI Image Generation | Midjourney API через APIFRAME | Низкая |
| A4A-250 | Admin Bot /generate | Генерация картинок в админ-боте | Низкая |
| A4A-259 | Команда /meditate | 4 guided медитации с ambient звуками | Высокая |
Суммарно добавлено ~7 фич сверх контракта.
Оставшиеся задачи для завершения Phase 1¶
Высокий приоритет (блокеры приёмки)¶
- A4A-13, A4A-14 — Тестовые интервью и доработка методологии
- A4A-15 — Каналы поиска респондентов
- A4A-33, A4A-34, A4A-35 — Методология и flows для check-in/checkout
- ~~A4A-39 — Завершение Admin панели~~ ✅ Done (v1.28.0)
- ~~A4A-19 — Настройка аналитики~~ ✅ Done (PostHog Cloud EU)
Средний приоритет¶
- A4A-20, A4A-41, A4A-42 — ToS/PP: согласование и перевод
- ~~A4A-22 — SOPs документация~~ ✅ Done
- ~~A4A-30, A4A-32 — Документация архитектуры и моделей~~ ✅ Done
Низкий приоритет¶
- ~~A4A-24, A4A-25, A4A-26, A4A-28 — PRD, User stories, UX flow, Test cases~~ ✅ Done
- ~~A4A-36 — CBT-based AI responses (10 сценариев)~~ ✅ Done (v1.31.0)
- ~~A4A-23 — Security audit~~ ✅ Done
Риски и блокеры¶
| Риск | Вероятность | Влияние | Митигация |
|---|---|---|---|
| Нет респондентов для интервью | Средняя | Высокое | Подготовить каналы поиска (A4A-15) |
| Задержка с интервью от Заказчика | Средняя | Высокое | Параллельная работа над разработкой |
| Согласование ToS с юристом затягивается | Низкая | Среднее | Опубликовать draft версию |
Приложение 1: Документация проекта¶
Вся документация доступна на https://docs.calmtrader.ai
| Раздел | Документов | Описание |
|---|---|---|
| Продукт | 7 | PRD, User Stories, UX Flows, Test Cases, Архитектура |
| Дыхательные практики | 5 | Методология, визуализации, UX, техспецификация |
| Check-in/Check-out | 4 | AI-ассистент, атрибуты, логика сессий, промпты |
| Исследования | 2 | Анализ рынка, Unit-экономика |
| Статистика трейдеров | 20 | По типу, инструментам, опыту, психологии, демографии |
| CusDev | 5 | Методология интервью, скрипт, Van Westendorp |
| Юридическое | 2 | ToS, Privacy Policy (RU) |
| Техническая | 2 | Архитектура системы, схема БД |
| Операции | 3 | SOPs, Security Audit |
| Отчёты | 1 | Phase 1 Progress Report |
| ИТОГО | 51 | — |
Приложение 2: Аудио контент медитаций¶
Общая статистика¶
| Категория | Файлов | Описание |
|---|---|---|
| CBT Voice Parts | 110 | 55 сценариев × 2 голоса (male/female) |
| Generic Meditation | 12 | Базовые части (intro, breath, body, mind, outro, trading) |
| Ambient Sounds | 10 | Фоновые звуки природы (loops) |
| ИТОГО | 132 | — |
CBT Voice Parts (Когнитивно-поведенческая терапия)¶
10 сценариев для работы с эмоциями трейдера:
Phase 1 (6 сценариев):
| Сценарий | Частей | Описание |
|---|---|---|
| FOMO Intervention | 6 | Работа со страхом упущенных возможностей |
| Tilt Prevention | 6 | Профилактика тильта |
| Overtrading Reset | 5 | Сброс переторговли |
| Risk Mindset | 5 | Мышление о рисках |
| Patience Cultivation | 6 | Развитие терпения |
| Acceptance Practice | 6 | Практика принятия |
Phase 2 (4 сценария — v1.31.0):
| Сценарий | Частей | Описание |
|---|---|---|
| Revenge Trading | 5 | Остановка реванш-трейдинга после потери |
| Profit Anxiety | 5 | Работа с тревогой о прибыли |
| Analysis Paralysis | 5 | Выход из аналитического ступора |
| Market Detachment | 6 | Психологическое отключение от рынка |
Таблица CBT аудио файлов¶
| Part Type | Файл | Промпт | Язык | Пол |
|---|---|---|---|---|
| cbt_fomo_intro | voices/ru/male/cbt_fomo_intro.mp3 | [softly] Ты заметил в себе FOMO... страх упустить возможность... Это нормальная реакция... Давай поработаем с ней... | ru | male |
| cbt_fomo_intro | voices/ru/female/cbt_fomo_intro.mp3 | [softly] Ты заметил в себе FOMO... страх упустить возможность... Это нормальная реакция... Давай поработаем с ней... | ru | female |
| cbt_fomo_body_scan | voices/ru/male/cbt_fomo_body_scan.mp3 | [softly] Обрати внимание на своё тело... Где ты чувствуешь это напряжение?.. В груди?.. В животе?.. Просто отметь это ощущение... | ru | male |
| cbt_fomo_body_scan | voices/ru/female/cbt_fomo_body_scan.mp3 | [softly] Обрати внимание на своё тело... Где ты чувствуешь это напряжение?.. В груди?.. В животе?.. Просто отметь это ощущение... | ru | female |
| cbt_fomo_thought_pattern | voices/ru/male/cbt_fomo_thought_pattern.mp3 | [softly] Какие мысли крутятся в голове?.. "Я упускаю прибыль"... "Все зарабатывают, кроме меня"... Заметь эти мысли... Не борись с ними... | ru | male |
| cbt_fomo_thought_pattern | voices/ru/female/cbt_fomo_thought_pattern.mp3 | [softly] Какие мысли крутятся в голове?.. "Я упускаю прибыль"... "Все зарабатывают, кроме меня"... Заметь эти мысли... Не борись с ними... | ru | female |
| cbt_fomo_reframe | voices/ru/male/cbt_fomo_reframe.mp3 | [softly] А теперь посмотри шире... Рынок будет существовать завтра... и послезавтра... Возможности приходят и уходят... Но твой капитал — это твоя главная возможность... Его нужно защищать... | ru | male |
| cbt_fomo_reframe | voices/ru/female/cbt_fomo_reframe.mp3 | [softly] А теперь посмотри шире... Рынок будет существовать завтра... и послезавтра... Возможности приходят и уходят... Но твой капитал — это твоя главная возможность... Его нужно защищать... | ru | female |
| cbt_fomo_acceptance | voices/ru/male/cbt_fomo_acceptance.mp3 | [softly] Прими то, что некоторые сделки — не твои... Это не потеря... Это мудрость... Пропустить сомнительную сделку — это тоже решение профессионала... | ru | male |
| cbt_fomo_acceptance | voices/ru/female/cbt_fomo_acceptance.mp3 | [softly] Прими то, что некоторые сделки — не твои... Это не потеря... Это мудрость... Пропустить сомнительную сделку — это тоже решение профессионала... | ru | female |
| cbt_fomo_closure | voices/ru/male/cbt_fomo_closure.mp3 | [softly] Почувствуй, как напряжение уходит... Ты в контроле... Ты выбираешь свои сделки... А не они выбирают тебя... | ru | male |
| cbt_fomo_closure | voices/ru/female/cbt_fomo_closure.mp3 | [softly] Почувствуй, как напряжение уходит... Ты в контроле... Ты выбираешь свои сделки... А не они выбирают тебя... | ru | female |
| cbt_tilt_intro | voices/ru/male/cbt_tilt_intro.mp3 | [softly] Тильт начинается незаметно... С одной неудачной сделки... С желания отыграться... Давай научимся замечать его раньше... | ru | male |
| cbt_tilt_intro | voices/ru/female/cbt_tilt_intro.mp3 | [softly] Тильт начинается незаметно... С одной неудачной сделки... С желания отыграться... Давай научимся замечать его раньше... | ru | female |
| cbt_tilt_body_signs | voices/ru/male/cbt_tilt_body_signs.mp3 | [softly] Тело всегда знает первым... Сжатые челюсти... Напряжённые плечи... Учащённое дыхание... Горячее лицо... Отметь, что чувствуешь прямо сейчас... | ru | male |
| cbt_tilt_body_signs | voices/ru/female/cbt_tilt_body_signs.mp3 | [softly] Тело всегда знает первым... Сжатые челюсти... Напряжённые плечи... Учащённое дыхание... Горячее лицо... Отметь, что чувствуешь прямо сейчас... | ru | female |
| cbt_tilt_thought_signs | voices/ru/male/cbt_tilt_thought_signs.mp3 | [softly] Заметь свои мысли... "Рынок против меня"... "Я должен вернуть убыток"... "Ещё одна сделка"... Эти мысли — красные флаги тильта... | ru | male |
| cbt_tilt_thought_signs | voices/ru/female/cbt_tilt_thought_signs.mp3 | [softly] Заметь свои мысли... "Рынок против меня"... "Я должен вернуть убыток"... "Ещё одна сделка"... Эти мысли — красные флаги тильта... | ru | female |
| cbt_tilt_pause | voices/ru/male/cbt_tilt_pause.mp3 | [softly] Когда замечаешь эти признаки — остановись... Пауза — это не слабость... Это сила... Отойди от терминала... Сделай перерыв... | ru | male |
| cbt_tilt_pause | voices/ru/female/cbt_tilt_pause.mp3 | [softly] Когда замечаешь эти признаки — остановись... Пауза — это не слабость... Это сила... Отойди от терминала... Сделай перерыв... | ru | female |
| cbt_tilt_reset | voices/ru/male/cbt_tilt_reset.mp3 | [softly] Убыток уже случился... Он в прошлом... Следующая сделка — это новое решение... Не связанное с предыдущей... Каждая сделка — чистый лист... | ru | male |
| cbt_tilt_reset | voices/ru/female/cbt_tilt_reset.mp3 | [softly] Убыток уже случился... Он в прошлом... Следующая сделка — это новое решение... Не связанное с предыдущей... Каждая сделка — чистый лист... | ru | female |
| cbt_tilt_closure | voices/ru/male/cbt_tilt_closure.mp3 | [softly] Ты больше, чем одна сделка... Больше, чем один день... Защити себя от себя... И рынок вознаградит твоё терпение... | ru | male |
| cbt_tilt_closure | voices/ru/female/cbt_tilt_closure.mp3 | [softly] Ты больше, чем одна сделка... Больше, чем один день... Защити себя от себя... И рынок вознаградит твоё терпение... | ru | female |
| cbt_overtrade_intro | voices/ru/male/cbt_overtrade_intro.mp3 | [softly] Ты заметил, что торгуешь слишком много... Это осознание — первый шаг... Давай остановимся и разберёмся... | ru | male |
| cbt_overtrade_intro | voices/ru/female/cbt_overtrade_intro.mp3 | [softly] Ты заметил, что торгуешь слишком много... Это осознание — первый шаг... Давай остановимся и разберёмся... | ru | female |
| cbt_overtrade_why | voices/ru/male/cbt_overtrade_why.mp3 | [softly] Спроси себя... Почему я открываю эту сделку?.. Это по системе?.. Или я ищу действие ради действия?.. Скука и азарт — плохие советчики... | ru | male |
| cbt_overtrade_why | voices/ru/female/cbt_overtrade_why.mp3 | [softly] Спроси себя... Почему я открываю эту сделку?.. Это по системе?.. Или я ищу действие ради действия?.. Скука и азарт — плохие советчики... | ru | female |
| cbt_overtrade_cost | voices/ru/male/cbt_overtrade_cost.mp3 | [softly] Каждая лишняя сделка — это комиссия... Это спред... Это эмоциональная энергия... Подсчитай, сколько стоит твоя переторговля... | ru | male |
| cbt_overtrade_cost | voices/ru/female/cbt_overtrade_cost.mp3 | [softly] Каждая лишняя сделка — это комиссия... Это спред... Это эмоциональная энергия... Подсчитай, сколько стоит твоя переторговля... | ru | female |
| cbt_overtrade_quality | voices/ru/male/cbt_overtrade_quality.mp3 | [softly] Лучше одна качественная сделка в день... Чем десять посредственных... Терпение — это навык... И он приносит деньги... | ru | male |
| cbt_overtrade_quality | voices/ru/female/cbt_overtrade_quality.mp3 | [softly] Лучше одна качественная сделка в день... Чем десять посредственных... Терпение — это навык... И он приносит деньги... | ru | female |
| cbt_overtrade_closure | voices/ru/male/cbt_overtrade_closure.mp3 | [softly] Закрой терминал... Отойди... Твои лучшие сделки ещё впереди... Дай им время появиться... | ru | male |
| cbt_overtrade_closure | voices/ru/female/cbt_overtrade_closure.mp3 | [softly] Закрой терминал... Отойди... Твои лучшие сделки ещё впереди... Дай им время появиться... | ru | female |
| cbt_risk_intro | voices/ru/male/cbt_risk_intro.mp3 | [softly] Риск — это не враг... Это партнёр... Без риска нет прибыли... Давай научимся жить с ним в мире... | ru | male |
| cbt_risk_intro | voices/ru/female/cbt_risk_intro.mp3 | [softly] Риск — это не враг... Это партнёр... Без риска нет прибыли... Давай научимся жить с ним в мире... | ru | female |
| cbt_risk_accept | voices/ru/male/cbt_risk_accept.mp3 | [softly] Перед каждой сделкой определи свой риск... Сколько ты готов потерять?.. Прими эту сумму заранее... Она уже "потрачена" на возможность... | ru | male |
| cbt_risk_accept | voices/ru/female/cbt_risk_accept.mp3 | [softly] Перед каждой сделкой определи свой риск... Сколько ты готов потерять?.. Прими эту сумму заранее... Она уже "потрачена" на возможность... | ru | female |
| cbt_risk_control | voices/ru/male/cbt_risk_control.mp3 | [softly] Ты не контролируешь рынок... Но контролируешь размер позиции... Стоп-лосс... Точку входа... Это твоя зона влияния... | ru | male |
| cbt_risk_control | voices/ru/female/cbt_risk_control.mp3 | [softly] Ты не контролируешь рынок... Но контролируешь размер позиции... Стоп-лосс... Точку входа... Это твоя зона влияния... | ru | female |
| cbt_risk_outcome | voices/ru/male/cbt_risk_outcome.mp3 | [softly] Результат отдельной сделки — это случайность... Но результат ста сделок — это система... Доверься процессу... Не отдельному исходу... | ru | male |
| cbt_risk_outcome | voices/ru/female/cbt_risk_outcome.mp3 | [softly] Результат отдельной сделки — это случайность... Но результат ста сделок — это система... Доверься процессу... Не отдельному исходу... | ru | female |
| cbt_risk_closure | voices/ru/male/cbt_risk_closure.mp3 | [softly] Рискуй осознанно... Принимай убытки спокойно... Они — часть игры... Плата за право участвовать... | ru | male |
| cbt_risk_closure | voices/ru/female/cbt_risk_closure.mp3 | [softly] Рискуй осознанно... Принимай убытки спокойно... Они — часть игры... Плата за право участвовать... | ru | female |
| cbt_patience_intro | voices/ru/male/cbt_patience_intro.mp3 | [softly] Терпение — суперсила трейдера... Рынок вознаграждает тех, кто умеет ждать... Давай развивать этот навык... | ru | male |
| cbt_patience_intro | voices/ru/female/cbt_patience_intro.mp3 | [softly] Терпение — суперсила трейдера... Рынок вознаграждает тех, кто умеет ждать... Давай развивать этот навык... | ru | female |
| cbt_patience_hunter | voices/ru/male/cbt_patience_hunter.mp3 | [softly] Представь себя охотником... Ты не бегаешь за добычей... Ты ждёшь в засаде... Идеальный момент придёт... Твоя задача — быть готовым... | ru | male |
| cbt_patience_hunter | voices/ru/female/cbt_patience_hunter.mp3 | [softly] Представь себя охотником... Ты не бегаешь за добычей... Ты ждёшь в засаде... Идеальный момент придёт... Твоя задача — быть готовым... | ru | female |
| cbt_patience_boredom | voices/ru/male/cbt_patience_boredom.mp3 | [softly] Скука — это нормально... Это значит, что ты не в рынке без причины... Скука защищает твой капитал... Прими её как союзника... | ru | male |
| cbt_patience_boredom | voices/ru/female/cbt_patience_boredom.mp3 | [softly] Скука — это нормально... Это значит, что ты не в рынке без причины... Скука защищает твой капитал... Прими её как союзника... | ru | female |
| cbt_patience_quality | voices/ru/male/cbt_patience_quality.mp3 | [softly] Вспомни свои лучшие сделки... Скорее всего, ты их терпеливо ждал... А худшие — открывал в спешке... Терпение равно качество... | ru | male |
| cbt_patience_quality | voices/ru/female/cbt_patience_quality.mp3 | [softly] Вспомни свои лучшие сделки... Скорее всего, ты их терпеливо ждал... А худшие — открывал в спешке... Терпение равно качество... | ru | female |
| cbt_patience_present | voices/ru/male/cbt_patience_present.mp3 | [softly] Будь здесь и сейчас... Не в прошлых упущенных сделках... Не в будущих воображаемых прибылях... Здесь... В этом моменте ожидания... | ru | male |
| cbt_patience_present | voices/ru/female/cbt_patience_present.mp3 | [softly] Будь здесь и сейчас... Не в прошлых упущенных сделках... Не в будущих воображаемых прибылях... Здесь... В этом моменте ожидания... | ru | female |
| cbt_patience_closure | voices/ru/male/cbt_patience_closure.mp3 | [softly] Каждая минута ожидания — это инвестиция... В качество твоих сделок... В твой долгосрочный успех... | ru | male |
| cbt_patience_closure | voices/ru/female/cbt_patience_closure.mp3 | [softly] Каждая минута ожидания — это инвестиция... В качество твоих сделок... В твой долгосрочный успех... | ru | female |
| cbt_accept_intro | voices/ru/male/cbt_accept_intro.mp3 | [softly] Принятие — это не смирение... Это освобождение... От борьбы с тем, что уже произошло... Давай практиковать принятие... | ru | male |
| cbt_accept_intro | voices/ru/female/cbt_accept_intro.mp3 | [softly] Принятие — это не смирение... Это освобождение... От борьбы с тем, что уже произошло... Давай практиковать принятие... | ru | female |
| cbt_accept_loss | voices/ru/male/cbt_accept_loss.mp3 | [softly] Эта потеря уже случилась... Она в прошлом... Сопротивление не изменит цифры на счёте... Но украдёт энергию для следующих сделок... | ru | male |
| cbt_accept_loss | voices/ru/female/cbt_accept_loss.mp3 | [softly] Эта потеря уже случилась... Она в прошлом... Сопротивление не изменит цифры на счёте... Но украдёт энергию для следующих сделок... | ru | female |
| cbt_accept_not_you | voices/ru/male/cbt_accept_not_you.mp3 | [softly] Убыточная сделка — это не ты... Это событие... Одно из тысяч в твоей карьере... Оно не определяет тебя как трейдера... | ru | male |
| cbt_accept_not_you | voices/ru/female/cbt_accept_not_you.mp3 | [softly] Убыточная сделка — это не ты... Это событие... Одно из тысяч в твоей карьере... Оно не определяет тебя как трейдера... | ru | female |
| cbt_accept_lesson | voices/ru/male/cbt_accept_lesson.mp3 | [softly] В каждой потере есть урок... Но чтобы его увидеть, нужно сначала принять... Без осуждения себя... Без самобичевания... | ru | male |
| cbt_accept_lesson | voices/ru/female/cbt_accept_lesson.mp3 | [softly] В каждой потере есть урок... Но чтобы его увидеть, нужно сначала принять... Без осуждения себя... Без самобичевания... | ru | female |
| cbt_accept_release | voices/ru/male/cbt_accept_release.mp3 | [softly] Выдохни и отпусти... Отпусти злость на рынок... Отпусти разочарование в себе... Освободи место для новых возможностей... | ru | male |
| cbt_accept_release | voices/ru/female/cbt_accept_release.mp3 | [softly] Выдохни и отпусти... Отпусти злость на рынок... Отпусти разочарование в себе... Освободи место для новых возможностей... | ru | female |
| cbt_accept_closure | voices/ru/male/cbt_accept_closure.mp3 | [softly] Принятие — это практика... С каждым разом становится легче... Ты учишься... Ты растёшь... Ты становишься сильнее... | ru | male |
| cbt_accept_closure | voices/ru/female/cbt_accept_closure.mp3 | [softly] Принятие — это практика... С каждым разом становится легче... Ты учишься... Ты растёшь... Ты становишься сильнее... | ru | female |
Generic Meditation Voice Parts (Базовые части)¶
| Part Type | Файл | Промпт | Язык | Пол |
|---|---|---|---|---|
| intro_relaxation | voices/ru/male/intro_relaxation.mp3 | [softly] Найди удобное положение... Закрой глаза... Позволь телу полностью расслабиться... | ru | male |
| breath_deep | voices/ru/male/breath_deep.mp3 | [softly] Сделай глубокий... медленный вдо-о-ох через нос... | ru | male |
| breath_hold | voices/ru/male/breath_hold.mp3 | [whispers] Задержи дыхание... ощути тишину внутри... | ru | male |
| breath_exhale | voices/ru/male/breath_exhale.mp3 | [softly] Медленно вы-ы-ыдохни через рот... отпуская всё напряжение... | ru | male |
| body_tension | voices/ru/male/body_tension.mp3 | [softly] Пройдись вниманием по телу... Заметь, где ты чувствуешь напряжение... в плечах... в челюсти... в руках... | ru | male |
| body_release | voices/ru/male/body_release.mp3 | [whispers] С каждым выдохом... отпускай это напряжение... позволь ему раствориться... | ru | male |
| mind_thoughts | voices/ru/male/mind_thoughts.mp3 | [whispers] Если приходят мысли — это нормально... просто заметь их... и мягко отпусти... как облака, проплывающие по небу... | ru | male |
| mind_present | voices/ru/male/mind_present.mp3 | [softly] Вернись в настоящий момент... Здесь и сейчас... только ты и твоё дыхание... | ru | male |
| outro_return | voices/ru/male/outro_return.mp3 | [whispers] Когда будешь готов... начни замечать звуки вокруг... [softly] Медленно открой глаза... Ты спокоен и готов к новому дню... | ru | male |
| trading_loss | voices/ru/male/trading_loss.mp3 | [softly] Эта сделка — лишь одна точка данных... Она не определяет тебя... как трейдера... как человека... | ru | male |
| trading_market | voices/ru/male/trading_market.mp3 | [softly] Рынок будет здесь завтра... и послезавтра... Всегда будут новые возможности... | ru | male |
| trading_control | voices/ru/male/trading_control.mp3 | [softly] Ты контролируешь только свои решения... своё внимание... свой внутренний мир... | ru | male |
| trading_process | voices/ru/male/trading_process.mp3 | [whispers] Фокусируйся на процессе, не на результате... Доверяй своей системе... | ru | male |
| trading_confidence | voices/ru/male/trading_confidence.mp3 | [softly] Ты подготовлен... Ты знаешь свою стратегию... Ты готов к новому дню... | ru | male |
Ambient Sounds (Фоновые звуки)¶
| Part Type | Файл | Промпт (SFX) | Язык | Пол |
|---|---|---|---|---|
| forest | ambient/forest_30s_loop.mp3 | soft ambient forest sounds, birds chirping gently in the distance, light breeze through leaves, peaceful nature atmosphere, seamless loop, no sudden sounds | none | none |
| stream | ambient/stream_30s_loop.mp3 | gentle mountain stream flowing over smooth rocks, soft water sounds, peaceful and calming, seamless loop for meditation | none | none |
| rain | ambient/rain_30s_loop.mp3 | gentle rain falling, soft patter on leaves and roof, calming rain sounds, no thunder, peaceful ambiance, seamless loop | none | none |
| fireplace | ambient/fireplace_20s_loop.mp3 | crackling fireplace, cozy warm fire sounds, gentle wood crackling, relaxing ambiance, seamless loop | none | none |
| ocean | ambient/ocean_30s_loop.mp3 | ocean waves gently rolling onto shore, soft sea sounds, peaceful beach ambiance, no seagulls, seamless loop for relaxation | none | none |
| wind | ambient/wind_30s_loop.mp3 | soft gentle wind blowing through meadow, peaceful breeze sounds, no harsh gusts, calming atmosphere, seamless loop | none | none |
| thunderstorm | ambient/thunderstorm_30s_loop.mp3 | distant thunderstorm, soft rolling thunder in background, light rain, no close lightning, relaxing storm ambiance, seamless loop | none | none |
| night | ambient/night_30s_loop.mp3 | peaceful night sounds, soft crickets chirping gently, occasional owl hoot in distance, calm nocturnal ambiance, seamless loop | none | none |
| garden | ambient/garden_30s_loop.mp3 | morning garden ambiance, birds singing softly, gentle rustling of plants, peaceful dawn atmosphere, seamless loop | none | none |
| waterfall | ambient/waterfall_30s_loop.mp3 | gentle waterfall flowing, soft cascading water sounds, peaceful nature ambiance, no harsh roaring, seamless loop for meditation | none | none |
Технические детали¶
- TTS Provider: ElevenLabs (eleven_v3)
- Голоса: Liam (male), Sarah (female)
- Формат: MP3, конвертируется в OGG Opus для Telegram
- Хранилище: MinIO bucket
meditation-audio - Ambient SFX: ElevenLabs Sound Effects API
Приложение 3: Функции Telegram-бота¶
Команды бота¶
| Команда | Описание | Функционал |
|---|---|---|
/start |
Запуск бота | Экран настроек + переход к агенту |
/settings |
Настройки | Язык, голос, TTS провайдер, скорость |
/checkin |
Pre-market check-in | 3 режима: короткий (5 мин), средний (15 мин), безлимит |
/checkout |
Post-market reflection | 3 режима: короткий, средний, безлимит |
/meditate |
Практики осознанности | 3 категории: дыхание, общие, ситуативные |
/reset |
Сброс истории | Удаление всех сообщений из Telegram |
/users |
Список пользователей | Только для админов |
Практики осознанности (/meditate)¶
Команда /meditate объединяет все практики в единый интерфейс с 3 категориями:
Категория "Дыхательные упражнения" (5 техник):
| Техника | Описание | Длительность |
|---|---|---|
| Box Breathing | Квадратное дыхание 4-4-4-4 | 3/5/7 мин |
| Physiological Sigh | Двойной вдох + длинный выдох | 3/5/7 мин |
| 4-7-8 Breathing | Вдох 4, задержка 7, выдох 8 | 3/5/7 мин |
| Coherent Breathing | Синхронное дыхание 5-5 | 3/5/7 мин |
| Extended Exhale | Продлённый выдох 4-8 | 3/5/7 мин |
Категория "Общие практики" (6 медитаций):
| Тип | Описание | Длительность |
|---|---|---|
| Утренняя настройка | Подготовка к торговому дню | 5 мин |
| Вечерняя рефлексия | Анализ дня | 7 мин |
| Визуализация успеха | Позитивная установка | 5 мин |
| CBT: Patience | Развитие терпения | 5 мин |
| CBT: Acceptance | Практика принятия | 5 мин |
| CBT: Market Detachment | Психологическое отключение от рынка | 7 мин |
Категория "Ситуативные" (8 медитаций):
| Тип | Описание | Длительность |
|---|---|---|
| Сброс после убытка | Работа с потерей | 7 мин |
| CBT: Tilt Prevention | Профилактика тильта | 5 мин |
| CBT: Overtrading Reset | Сброс переторговли | 5 мин |
| CBT: FOMO | Работа со страхом упущенной возможности | 5 мин |
| CBT: Risk Mindset | Мышление о рисках | 5 мин |
| CBT: Revenge Trading | Остановка реванш-трейдинга | 5 мин |
| CBT: Profit Anxiety | Работа с тревогой о прибыли | 5 мин |
| CBT: Analysis Paralysis | Выход из аналитического ступора | 5 мин |
Голосовые функции¶
| Функция | Описание |
|---|---|
| STT (Speech-to-Text) | OpenAI Whisper — транскрипция голосовых сообщений |
| TTS (Text-to-Speech) | OpenAI tts-1 или ElevenLabs eleven_v3 |
| Голоса | Male: Liam, Echo, Fable, Onyx; Female: Sarah, Nova, Shimmer, Alloy |
| Скорость | 0.8x / 1.0x / 1.2x |
| Транскрипт | Опционально показывать текст после голоса |
Настройки пользователя¶
| Настройка | Поле | По умолчанию | Варианты |
|---|---|---|---|
| Язык | language_code |
ru | ru / en |
| Режим ответа | response_mode |
text | text / voice |
| Пол агента | voice_gender |
female | male / female |
| TTS провайдер | tts_provider |
openai | openai / elevenlabs |
| Голос TTS | tts_voice |
nova | nova, echo, liam, sarah, etc. |
| Скорость TTS | tts_speed |
1.0 | 0.8 / 1.0 / 1.2 |
| Показать транскрипт | show_transcript |
true | true / false |
AI Agent¶
| Функция | Описание |
|---|---|
| Модель | GPT-4o (OpenAI) |
| Персонализация | Приветствие на основе профиля пользователя |
| Контекст | История сообщений сохраняется в PostgreSQL |
| Промпты | 6 режимов check-in/checkout (short/medium/unlimited) |
Приложение 4: Функции Admin Panel¶
URL и доступ¶
- URL: https://admin.calmtrader.ai
- Авторизация: Telegram WebApp (только для is_admin=true)
- Технологии: Ionic 8 + Angular 20 + Tailwind CSS
Страницы¶
| Страница | Путь | Функционал |
|---|---|---|
| Dashboard | /tabs/dashboard |
Статистика: пользователи, сообщения, события; График активности за 30 дней |
| Users | /tabs/users |
Список пользователей с поиском и фильтрацией |
| User Detail | /tabs/users/:id |
Профиль, статистика, редактирование настроек, удаление истории |
| Events | /tabs/events |
Логи событий с фильтрацией по типу |
| Broadcast | /tabs/broadcast |
Массовая рассылка с preview |
| Analytics | /tabs/analytics |
Графики событий (PostHog) |
| Settings | /tabs/settings |
Настройки темы (light/dark/system) |
Dashboard¶
| Метрика | Описание |
|---|---|
| Всего пользователей | Общее количество зарегистрированных |
| Новых за неделю | Регистрации за последние 7 дней |
| Всего сообщений | Общее количество сообщений |
| Всего событий | Количество аналитических событий |
| График активности | Сообщения по дням за 30 дней |
User Detail¶
| Функция | Описание |
|---|---|
| Профиль | Аватар, имя, username, telegram_id, дата регистрации |
| Статистика | Количество сообщений, событий, последняя активность |
| Редактирование | is_admin, language_code, response_mode, voice_gender |
| Удаление истории | Удаление всех сообщений пользователя |
Events¶
| Функция | Описание |
|---|---|
| Список событий | event_type, user, data, timestamp |
| Фильтрация | По типу события (dropdown) |
| Пагинация | Infinite scroll |
| Детали | Просмотр event_data в alert |
Broadcast¶
| Функция | Описание |
|---|---|
| Ввод сообщения | Textarea с поддержкой Markdown |
| Preview | Показ количества получателей |
| Отправка | Рассылка всем пользователям |
| Результат | sent_count, failed_count, total_users |
Analytics¶
| Функция | Описание |
|---|---|
| Период | 7 дней / 30 дней / 90 дней |
| График событий | Bar chart популярных событий |
| Детализация | Список событий с процентами |
| Данные | PostHog Query API через proxy |
API Endpoints (Admin)¶
| Method | Endpoint | Описание |
|---|---|---|
| GET | /admin/stats |
Статистика для dashboard |
| GET | /admin/activity |
График активности |
| GET | /admin/events |
События с пагинацией |
| GET | /admin/events/types |
Типы событий |
| GET | /admin/users/{id} |
Детали пользователя |
| PATCH | /admin/users/{id} |
Обновление настроек |
| DELETE | /admin/users/{id}/messages |
Удаление истории |
| POST | /admin/broadcast |
Рассылка |
| POST | /admin/analytics/query |
PostHog proxy |
Event Types¶
| Тип события | Описание |
|---|---|
start |
Команда /start |
command_checkin |
Команда /checkin |
command_checkout |
Команда /checkout |
command_breathe |
Команда /breathe |
command_meditate |
Команда /meditate |
command_reset |
Команда /reset |
meditate_selected |
Выбор медитации |
meditate_started |
Начало медитации |
meditate_completed |
Завершение медитации |
breathe_technique_selected |
Выбор техники дыхания |
breathe_duration_selected |
Выбор длительности |
breathe_execution_started |
Начало дыхательного упражнения |
Отчёт сгенерирован автоматически на основе данных Linear.