Epic: Фаза 2 (пилот ops + продукт, без B2C) #8

Closed
opened 2026-07-25 20:33:03 +03:00 by cursor-ai · 12 comments
Owner

Контекст

После MVP 0.1 и брендинга 0.2 (Spec#10, закрыт) продукт уже содержит personal/commercial календари, booking, follow, specialist_invite, inbox /bookings, trial/заглушку subscription, admin, публичный бренд CalenTIQ.

Этот эпик — Фаза 2: готовность к пилоту (ops) + продуктовые возможности без оплаты услуги клиентом.

Цель

Довести стенд до пилота (почта, бэкап, секреты, legal, позиция по подписке владельца) и расширить продукт logout, файлами, уведомлениями, waitlist. Совместная работа уже закрывается specialist_invite + booking inbox, не calendar_share.

В скоупе

A. Pilot / ops (бывший B2 из Spec#10)

  • SMTP / transactional email (verify, invite; далее reminders)
  • Backup
  • Secrets / certs / alerts
  • Legal stubs
  • Позиция по subscription payment владельца (не оплата услуги клиентом)
  • DNS/SPF для calentiq.com (домен в использовании; чеклист BRANDING.md)

B. Продукт

  • Серверный logout / revoke session (POST /v1/logout, клиенты зовут API)
  • Загрузка файлов (avatar / cover): storage, MIME/квоты, UI
  • Уведомления + reminders (in-app есть; email/Web Push — после SMTP)
  • Waitlist на событие (после уведомлений)
  • calendar_share — низкий приоритет, только при явном сценарии соредактора personal (не путать с follow / specialist_invite / subscription)
  • client_type=mobile — хвост, когда появится нативный клиент

Вне скоупа

  • B2C оплата услуги клиентом (checkout booking, цена на услуге, hold/capture) — не вписывается в продукт на этом горизонте
  • Смена/покупка другого домена без ок владельца
  • Переделка IA, 4-й mood, rename API-ключей calm|energetic|business

Порядок волн

  1. Ops-минимум: SMTP + secrets/certs/alerts
  2. Backup + legal stubs + позиция по subscription владельца
  3. Logout/revoke (можно параллельно с волной 1)
  4. Notifications/reminders (после SMTP)
  5. Files (нужен storage)
  6. Waitlist (после уведомлений)
  7. Share / mobile — не блокер пилота

Критерии закрытия эпика

  • Волны 1–2 (пилот ops) закрыты отдельными задачами или явно вынесены
  • Logout/revoke в контракте и клиентах (Back#69/#74, Front#72)
  • Spec синхронизирован (EventHubBackSpec / EventHubFrontSpec) — sessions/device
  • B2C не возвращается в этот эпик без отдельного решения

Ops статус (закрытие)

Подпункт Статус
DNS/TLS/*.calentiq.com done — BRANDING.md
SMTP (stage Resend / IFT Mailpit) done — SMTP.md
Certs LE done — CALENTIQ-CERTS.md
Backup Mnesia done — BACKUP.md
Legal stubs done — Front /privacy /terms
Alerts / Kuma мониторы + launcher; канал Telegram/email → DevOps#15
Боевой PSP подписки владельца вынесен (не блокер закрытия эпика)

Связи

Приоритет

Закрыт.

## Контекст После MVP 0.1 и брендинга 0.2 (Spec#10, закрыт) продукт уже содержит personal/commercial календари, booking, follow, specialist_invite, inbox `/bookings`, trial/заглушку subscription, admin, публичный бренд CalenTIQ. Этот эпик — **Фаза 2**: готовность к пилоту (ops) + продуктовые возможности без оплаты услуги клиентом. ## Цель Довести стенд до пилота (почта, бэкап, секреты, legal, позиция по подписке владельца) и расширить продукт logout, файлами, уведомлениями, waitlist. Совместная работа уже закрывается specialist_invite + booking inbox, не `calendar_share`. ## В скоупе ### A. Pilot / ops (бывший B2 из Spec#10) - SMTP / transactional email (verify, invite; далее reminders) - Backup - Secrets / certs / alerts - Legal stubs - Позиция по **subscription payment владельца** (не оплата услуги клиентом) - DNS/SPF для `calentiq.com` (домен в использовании; чеклист `BRANDING.md`) ### B. Продукт - Серверный logout / revoke session (`POST /v1/logout`, клиенты зовут API) - Загрузка файлов (avatar / cover): storage, MIME/квоты, UI - Уведомления + reminders (in-app есть; email/Web Push — после SMTP) - Waitlist на событие (после уведомлений) - `calendar_share` — низкий приоритет, только при явном сценарии соредактора personal (не путать с follow / specialist_invite / subscription) - `client_type=mobile` — хвост, когда появится нативный клиент ## Вне скоупа - **B2C оплата услуги клиентом** (checkout booking, цена на услуге, hold/capture) — не вписывается в продукт на этом горизонте - Смена/покупка другого домена без ок владельца - Переделка IA, 4-й mood, rename API-ключей `calm|energetic|business` ## Порядок волн 1. Ops-минимум: SMTP + secrets/certs/alerts 2. Backup + legal stubs + позиция по subscription владельца 3. Logout/revoke (можно параллельно с волной 1) 4. Notifications/reminders (после SMTP) 5. Files (нужен storage) 6. Waitlist (после уведомлений) 7. Share / mobile — не блокер пилота ## Критерии закрытия эпика - [x] Волны 1–2 (пилот ops) закрыты отдельными задачами или явно вынесены - [x] Logout/revoke в контракте и клиентах (Back#69/#74, Front#72) - [x] Spec синхронизирован (`EventHubBackSpec` / `EventHubFrontSpec`) — sessions/device - [x] B2C не возвращается в этот эпик без отдельного решения ## Ops статус (закрытие) | Подпункт | Статус | |----------|--------| | DNS/TLS/`*.calentiq.com` | done — `BRANDING.md` | | SMTP (stage Resend / IFT Mailpit) | done — `SMTP.md` | | Certs LE | done — `CALENTIQ-CERTS.md` | | Backup Mnesia | done — `BACKUP.md` | | Legal stubs | done — Front `/privacy` `/terms` | | Alerts / Kuma | мониторы + launcher; канал Telegram/email → DevOps#15 | | Боевой PSP подписки владельца | вынесен (не блокер закрытия эпика) | ## Связи - Branding 0.2 (закрыт): https://git.sabilin.com/EventHub/EventHubSpec/issues/10 - `BRANDING.md` — чеклист Domain/DNS (`calentiq.com`) - Алерты TBD: https://git.sabilin.com/EventHub/EventHubDevOps/issues/15 ## Приоритет Закрыт.
cursor-ai added the EpicFuture labels 2026-07-25 20:33:03 +03:00
Author
Owner

Продуктовая фаза 2 (этот эпик) идёт после закрытия MVP 0.1 и B1 branding в новом эпике 0.2: #10. Закрытие MVP: #9.

Продуктовая фаза 2 (этот эпик) идёт после закрытия MVP 0.1 и B1 branding в новом эпике 0.2: https://git.sabilin.com/EventHub/EventHubSpec/issues/10. Закрытие MVP: https://git.sabilin.com/EventHub/EventHubSpec/issues/9.
cursor-ai self-assigned this 2026-08-14 16:07:00 +03:00
cursor-ai changed title from Epic: Фаза 2 продукта (после MVP) to Epic: Фаза 2 (пилот ops + продукт, без B2C) 2026-08-14 16:07:00 +03:00
Author
Owner

Беру в работу. Скоуп пересмотрен:

  • в Фазу 2 влит бывший B2 из Spec#10 (SMTP, backup, secrets/certs/alerts, legal stubs, позиция по подписке владельца);
  • B2C-оплата услуги клиентом убрана из фазы — пока не вписывается в продукт;
  • Spec#10 закрыт как сделанный B1.

Дочерние задачи Back/Front не создаём, пока не выберем первую волну реализации.

Беру в работу. Скоуп пересмотрен: - в Фазу 2 влит бывший B2 из Spec#10 (SMTP, backup, secrets/certs/alerts, legal stubs, позиция по подписке владельца); - B2C-оплата услуги клиентом убрана из фазы — пока не вписывается в продукт; - Spec#10 закрыт как сделанный B1. Дочерние задачи Back/Front не создаём, пока не выберем первую волну реализации.
Author
Owner

Спеки в рабочем дереве EventHubSpec обновлены под новый скоуп (коммит — по отдельной просьбе):

  • EventHubBackSpec.md §2.1.2–2.1.3, §2.9: ops/waitlist/logout/files в фазе 2; B2C вне горизонта; эквайринг подписки владельца — фаза 2.
  • EventHubFrontSpec.md §7: то же разделение.

Метка Future с #8 снята, остаётся Epic.

Спеки в рабочем дереве EventHubSpec обновлены под новый скоуп (коммит — по отдельной просьбе): - `EventHubBackSpec.md` §2.1.2–2.1.3, §2.9: ops/waitlist/logout/files в фазе 2; B2C вне горизонта; эквайринг подписки владельца — фаза 2. - `EventHubFrontSpec.md` §7: то же разделение. Метка Future с #8 снята, остаётся Epic.
cursor-ai removed the Future label 2026-08-14 16:08:38 +03:00
Author
Owner

Нарезаны дочерние задачи Фазы 2 (без выбора реализации и без кода). Реализацию начинаем только после ок на конкретную волну.

Волна 1 (пилот SMTP)

Волна 2

Волна 3 (logout)

Волна 4–6

Волна 7 (Future)

B2C не создавали.

Нарезаны дочерние задачи Фазы 2 (без выбора реализации и без кода). Реализацию начинаем только после ок на конкретную волну. ## Волна 1 (пилот SMTP) - Back#68 SMTP `logic_email` — https://git.sabilin.com/EventHub/EventHubBack/issues/68 - DevOps#11 SMTP стенда — https://git.sabilin.com/EventHub/EventHubDevOps/issues/11 - DevOps#12 secrets/certs/alerts — https://git.sabilin.com/EventHub/EventHubDevOps/issues/12 ## Волна 2 - DevOps#13 backup — https://git.sabilin.com/EventHub/EventHubDevOps/issues/13 - Front#67 legal stubs — https://git.sabilin.com/EventHub/EventHubFront/issues/67 - Spec#18 позиция по подписке владельца — https://git.sabilin.com/EventHub/EventHubSpec/issues/18 ## Волна 3 (logout) - Back#69 — https://git.sabilin.com/EventHub/EventHubBack/issues/69 - Front#68 — https://git.sabilin.com/EventHub/EventHubFront/issues/68 - FrontAdmin#43 — https://git.sabilin.com/EventHub/EventHubFrontAdmin/issues/43 ## Волна 4–6 - Back#70 reminders — https://git.sabilin.com/EventHub/EventHubBack/issues/70 - Back#71 + DevOps#14 + Front#69 файлы — https://git.sabilin.com/EventHub/EventHubBack/issues/71 - Back#72 + Front#70 waitlist — https://git.sabilin.com/EventHub/EventHubBack/issues/72 ## Волна 7 (Future) - Back#73 calendar_share — https://git.sabilin.com/EventHub/EventHubBack/issues/73 - Back#74 client_type=mobile — https://git.sabilin.com/EventHub/EventHubBack/issues/74 B2C не создавали.
Author
Owner

Статус Фазы 2 (после пуша logout)

Закрыто

  • Волна 1: Back#68 SMTP, DevOps#11, DevOps#12
  • Волна 2: DevOps#13 backup, Front#67 legal, Spec#18 подписка владельца
  • Волна 3: Back#69 + Front#68 + FrontAdmin#43 logout

Дальше (открыто)

  • Волна 4: Back#70 email-reminders
  • Волна 5: Back#71 + DevOps#14 + Front#69 files
  • Волна 6: Back#72 + Front#70 waitlist
  • Волна 7 (Future): Back#73 share, Back#74 mobile

Критерии эпика: волны 1–2 и logout — выполнены; Spec синхронизирован по SMTP/logout/подписке. Следующий срез — после выбора волны.

## Статус Фазы 2 (после пуша logout) ### Закрыто - **Волна 1:** Back#68 SMTP, DevOps#11, DevOps#12 - **Волна 2:** DevOps#13 backup, Front#67 legal, Spec#18 подписка владельца - **Волна 3:** Back#69 + Front#68 + FrontAdmin#43 logout ### Дальше (открыто) - Волна 4: Back#70 email-reminders - Волна 5: Back#71 + DevOps#14 + Front#69 files - Волна 6: Back#72 + Front#70 waitlist - Волна 7 (Future): Back#73 share, Back#74 mobile Критерии эпика: волны 1–2 и logout — выполнены; Spec синхронизирован по SMTP/logout/подписке. Следующий срез — после выбора волны.
Author
Owner

Волна 4 (Back#70)

Email-reminders реализованы локально (eunit зелёный). Коммит/пуш — по просьбе. Далее по плану — волна 5 files.

## Волна 4 (Back#70) Email-reminders реализованы локально (eunit зелёный). Коммит/пуш — по просьбе. Далее по плану — волна 5 files.
Author
Owner

Статус

Закрыты: Back#70 reminders, Back#71 upload, Front#69 UI (коммиты локально, без пуша).

Дальше: волна 6 waitlist (Back#72 + Front#70) — варианты в чате.

## Статус Закрыты: Back#70 reminders, Back#71 upload, Front#69 UI (коммиты локально, без пуша). Дальше: волна 6 waitlist (Back#72 + Front#70) — варианты в чате.
Author
Owner

Волна waitlist в master: Back#72 + Front toggle/join (после push Front). Ранее: reminders Back#70, upload Back#71/Front#69. Локальный Front push — следом.

Волна waitlist в master: Back#72 + Front toggle/join (после push Front). Ранее: reminders Back#70, upload Back#71/Front#69. Локальный Front push — следом.
Author
Owner

Front waitlist тоже в master (toggle + join/leave). Back/Spec уже запушены ранее.

Front waitlist тоже в master (toggle + join/leave). Back/Spec уже запушены ранее.
Author
Owner

Обновление по продуктовой волне logout/sessions:

  • Back#74 / Front#72 закрыты (list/revoke + device + UI)
  • критерии Logout/revoke и Spec sync отмечены

Открытых P0/P1-задач нет. Следующее: остаток ops (критерий «Волны 1–2») или Epic Фаза 3 (#19).

Обновление по продуктовой волне logout/sessions: - Back#74 / Front#72 закрыты (list/revoke + device + UI) - критерии Logout/revoke и Spec sync отмечены Открытых P0/P1-задач нет. Следующее: остаток ops (критерий «Волны 1–2») или Epic Фаза 3 (#19).
Author
Owner

BRANDING Domain/DNS + Kuma/launcher (2026-08-16)

  • Чеклист BRANDING.md по calentiq.com — все пункты [x] (DNS/TLS/SPF/DKIM/DMARC/URL).
  • Uptime Kuma IFT: 4 HTTP-монитора (Stage/IFT API+client); KUMA_ADMIN_* в .env + secrets.
  • IFT FAB/launcher: generate-ift-launcher.sh пробрасывает user/password Kuma (#username/#password); config.json перегенерирован.
  • Остаток ops: канал алертов Telegram/email (webhook Kuma) — отдельная DevOps-задача.
## BRANDING Domain/DNS + Kuma/launcher (2026-08-16) - Чеклист `BRANDING.md` по `calentiq.com` — все пункты `[x]` (DNS/TLS/SPF/DKIM/DMARC/URL). - Uptime Kuma IFT: 4 HTTP-монитора (Stage/IFT API+client); `KUMA_ADMIN_*` в `.env` + secrets. - IFT FAB/launcher: `generate-ift-launcher.sh` пробрасывает user/password Kuma (`#username`/`#password`); config.json перегенерирован. - Остаток ops: канал алертов Telegram/email (webhook Kuma) — отдельная DevOps-задача.
Author
Owner

Закрываем эпик по решению владельца.

Волны 1–2 ops: DNS/TLS/calentiq.com, SMTP (Resend/Mailpit), certs, backup, legal stubs, Kuma-мониторы + проброс creds в IFT FAB — done. Канал алертов Telegram/email вынесен в DevOps#15. Боевой PSP подписки владельца — вне закрытия (отдельное решение позже).

Продукт в эпике: logout/sessions, files, waitlist, notifications/Web Push — закрыты отдельными задачами; share/mobile — не блокер пилота.

Закрываем эпик по решению владельца. **Волны 1–2 ops:** DNS/TLS/`calentiq.com`, SMTP (Resend/Mailpit), certs, backup, legal stubs, Kuma-мониторы + проброс creds в IFT FAB — done. Канал алертов Telegram/email вынесен в DevOps#15. Боевой PSP подписки владельца — вне закрытия (отдельное решение позже). **Продукт в эпике:** logout/sessions, files, waitlist, notifications/Web Push — закрыты отдельными задачами; share/mobile — не блокер пилота.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: EventHub/EventHubSpec#8