Infinity Workshop

Карта кабинета клиента

Клиент входит через Парадную → попадает в личный VIP-кабинет (настройки себя) + держит в руках Планшет (проекты). Это два разных пространства с разной логикой.

Есть в коде, готово
Есть частично / заглушка
Нет — нужно добавить
Скрыто / только для оператора
Вход
🚪 Парадная — Front Door
Первое впечатление. Клиент описывает задачу и попадает внутрь. Без регистрации — только превью плана.
Поле задачи sessionStorage
Быстрые шаблоны
Preview → бесплатно
Расчёт цены сервис написан, не подключён
Вход / регистрация
Производственные линии
после входа
Личное пространство
🛋️ Кабинет — личные настройки
Кто я, как плачу, мои ключи, мои каналы публикации. Один раз настроил — забыл.
Имя full_name в БД
Email, язык, часовой пояс
Компания, должность
Аватар / фото профиля поля нет в WorkshopUserProfile
Уведомления notify_email, notifications_enabled
Тариф и баланс wallet: run/export/atelier
Пополнить баланс checkout endpoint
История транзакций billing/summary
BYOK: свой API-ключ client_api_key_present
Режим биллинга platform / byok / hybrid
Подключённые сервисы connected-services
Каналы публикации social_connection: provider_key, status
Политика уведомлений billing_notification_policy
Модели и провайдеры model-defaults → только advanced
Source registry только advanced
Budget limit USD только advanced
В руках клиента
📋 Планшет — мои проекты
Каждый проект — домик. Внутри домика: направления, волны, результаты, согласования. Планшет не смешивается с настройками кабинета.
Список проектов project_hub: title, status, branch
Направления внутри проекта direction: label, status, type
Волны / итерации wave: status, result, diff, pricing
Результат preview_url, documents, artifacts
Agreement Room quote, approval, payment status
Согласование цены quoted_price_min/max, revision
Решения / Approvals awaiting_approval → approved
Документы ProjectDocument привязан к проекту
Publish insights build_project_hub_publish_insights
Экспорт результата export_credits, export endpoint
Запуск новой волны из ЛК нет UI для follow-up run
История итераций с diff данные есть, UI нет
Статус производства live нет polling/websocket в UI

API endpoints, которые нужны кабинету

GET/billing/summary
Кошелёк: run/export/atelier кредиты + история транзакций
✓ Есть
GET/billing/profile
Режим биллинга, BYOK-статус, наценка, стратегия
✓ Есть
POST/billing/checkout
Создать платёж для пополнения баланса
✓ Есть
GET/billing/connected-services
Подключённые сервисы и каналы публикации
✓ Есть
GET/user-cabinet-snapshot
Сводный snapshot кабинета (сейчас заглушка)
⚡ Заглушка — нужно наполнить
GET/task-quote
Расчёт цены по типу задачи и scope
✓ Написан, подключён
GET/project-hub/list
Проекты, направления, волны, результаты
⚡ Есть в сервисе, нет публичного endpoint
GET/profile
Имя, email, язык, компания, уведомления
⚡ Данные в БД есть, endpoint в auth
POST/profile/avatar
Загрузка фото профиля
✗ Нет — поля нет в WorkshopUserProfile
GET/project/{id}/status
Live-статус производства проекта
✗ Нет polling/push для UI

Что делать дальше

🛋️
Кабинет = настройки себя
Имя, аватар, email, язык, часовой пояс, уведомления. Биллинг: баланс, тариф, BYOK. Каналы публикации. Один экран, без проектов.
Оставить здесь
📋
Планшет = только проекты
Домики проектов, направления, волны, результаты, согласования. Не смешивать с настройками профиля.
Отдельная поверхность
🖼️
Аватар профиля
В WorkshopUserProfile нет поля photo_url. В account.base есть photo_url. Нужно добавить поле в профиль или взять из account.
Добавить поле
⚙️
Модели и провайдеры
model-defaults, source-registry, budget_limit_usd — технические настройки. Не показывать обычному клиенту. Только в advanced / operator.
Спрятать в advanced
🔄
Live-статус производства
Данные о статусе волны есть в БД. Но в UI нет polling или push. Клиент не видит что происходит сейчас. Нужен простой polling endpoint.
Добавить polling
📊
Snapshot API
Сейчас /user-cabinet-snapshot возвращает заглушку. Нужно наполнить реальными данными из project_hub + billing/summary.
Наполнить реальными данными