Resume Prompt
CONV-22 — большая сессия по entity model. После долгого обсуждения с Ромой/Сергеем уточнили иерархию: Client (человек с логином) → создаёт Organisation (tenant) → содержит Project → Unit. Сделали Wave 1 (bulk rename Partner→Client / Workspace→Organisation / роли с Sales-/Content- префиксами + Russian формы), Wave 1.5 (selective entity-vs-identity disambiguation, §1 переписан с диаграммой и двумя таблицами). Закоммитили (a56033a) и засинкали preview (e4f736a). Запустили Wave 2 — закончили Chunk 1 of 8 (§2 Onboarding & Auth: entry-point choice screen + Microsoft SSO в Stage 1 + Custom SSO в Stage 2/Tier 3). Chunk 1 НЕ закоммичен.
Следующее — Wave 2 Chunk 2: §3 Billing & Tier model. Это самый большой и требует полной переписки текущей «Модель 4» секции (lines ~756-800 в launch-plan-stage-1.html). В Chunk 2: 3-tier structure (T1 Simple / T2 Pro c custom domain / T3 Custom), 14-day trial period per Project, project ownership transfer flow с hard constraint «только до payment» (T), auto-demote Owner→Admin при transfer (J), drop seat-based language (M), standalone walkthrough explicit non-goal (L). Решить первым делом: commit Chunk 1 раздельно или bundle с Chunk 2.
После §3 — Chunks 3-8: §4 Access, §5 Visibility, §6 User Journeys, §7 Edge cases, Phase callouts, ADR placeholders. Sergey выбрал режим B — кусками с чек-поинтами.
Не трогай Stage 2/3/4 — только Stage 1.
Summary
Сессия по entity model. Обсудили транскрипт длинного звонка Sergey+Roman по Foundational decisions — ~22 пункта (терминология, роли, stock allocation, billing, public visibility, status changes, buyer flow, channels, SSO, tier model, ownership transfer). Sergey ответил по каждому. Главный концептуальный сдвиг — разделение Client (человек с логином) и Organisation (tenant): Client создаёт Organisation, внутри Organisation живут Projects. Wave 1 (bulk terminology rename — Partner/Workspace/role-prefixes + Russian формы, ~120 замен) и Wave 1.5 (selective entity-vs-identity disambiguation, §1 entity glossary переписан с диаграммой и двумя таблицами) — закоммичены и запушены (a56033a). Preview repo засинкан после 4 коммитов отставания (e4f736a). Запустили Wave 2 — Chunk 1 of 8 готов (§2 Onboarding & Auth: entry-point choice screen + Microsoft SSO в Stage 1 + Custom SSO Stage 2/Tier 3 mention). Chunk 1 не закоммичен. Sergey выбрал режим B — кусками с чек-поинтами после каждого §.
Changes
docs/plan/launch-plan-stage-1.html— Wave 1 (bulk rename ~120 замен: Partner→Client, Workspace→Organisation, Manager→Sales Manager, Editor→Content Editor, Agent→Sales Agent, + Russian формы партнёр/менеджер/редактор/агент с case-aware suffix-handling; placeholders {partner-*}/partner_id → {slug}/client_id), Wave 1.5 (§1 entity glossary полностью переписан с text-diagram + двумя таблицами Сущности/Роли, ~25 entity-vs-identity disambiguation replaces, slug normalisation {client-slug}→{slug} / {client-domain}→{custom-domain}, 2 mistranslation reverts «жена/Client/друг» → «жена/партнёр/друг»), Wave 2 Chunk 1 (§2 entry-point choice details + Microsoft auth + Custom SSO Stage 2 mention). 2870→2973 строки. Wave 1+1.5 закоммичены (a56033a); Chunk 1 ещё нет.~/.claude/projects/-Users-diver-code-offplan-online-os/memory/MEMORY.md— удалена строкаplan_permission_tenancy_state(memory cleanup per Sergey).~/.claude/projects/-Users-diver-code-offplan-online-os/memory/plan_permission_tenancy_state.md— DELETED (stale, заменена реальным состоянием в плане).workstreams/stage1-roman-integration.md— What's Next переписан под Wave 2 Chunk 2 + полный chunk plan.- preview repo (commit
e4f736a): добавлены plan/launch-plan-stage-1.html (NEW), mockups/admin-panel-v8.html (NEW), mockups/admin-quick-build-atelier-standalone.html (NEW), mockups/operator-panel-v3.html (NEW); обновлены plan/launch-plan-v3-full.html (после CONV-19 split, 263KB→85KB), plan/launch-plan-changelog.html; удалён mockups/admin-quick-build-v1.html.
Decisions
Client/Organisation/Project entity model (refined hierarchy). До Wave 1 plan описывал «Partner» как «юр. лицо-плательщик — корневая сущность» — Sergey изначально предложил Partner→Client. Но в середине Wave 1.5 (после моего вопроса «есть понимание где organisation а где проект а где workspace») Sergey уточнил: «есть клиент и он создает организацию в которой есть проект». Это значит Client = человек с логином (login identity), а Organisation = tenant (бизнес-сущность) — две разные вещи. Это стандартный SaaS B2B паттерн (Slack: User → Workspace; Notion: User → Workspace). Wave 1.5 selective re-rename: ~25 мест где «Client» означало entity → Organisation; остальные ~29 мест где Client означал person — оставлено. Workspace вообще исчез как термин (был ромин misnaming).
Microsoft OAuth добавляется в Stage 1. Sergey: «все наши кампании сидят на Майкрософт». Auth methods после Wave 2 Chunk 1: Google + Microsoft + email/password (3 primary methods). Custom SAML/OIDC SSO — Stage 2 в Tier 3 (Enterprise) feature. Отвергнуто: оставить только Google + email/password как было в ADR 0005 v1.
14-day trial period per Project + hard constraint «transfer только до payment». Sergey прямо подчеркнул T: «надо избежать передачи акка после оплаты. Только до в течении бесплатного периода». Это блокирует юридически сложный сценарий пост-payment ownership change. Студия создаёт проект для девелопера → 14 дней trial → либо студия оплачивает либо передаёт ownership девелоперу (двухсторонняя верификация code) → после payment transfer-button disabled навсегда. Auto-demote: Owner studio → Admin при transfer accept; новый Owner может demote/remove studio дальше.
Status-change form unified с buyer-link auto-creation (D+E как один механизм). Объединение пунктов D (status protection) и E (buyer↔unit linkage). Email-lookup при заполнении статус-формы → match existing Buyer record this Sales Agent работает с (через token-link history) → auto-link Buyer to Unit OR create new. Триггеры: Available→Reserved, Available→Sold, Reserved→Sold (с pre-fill «same buyer?»). Полная спека отрисована в conversation (data model, edge cases, permissions). Рассматривалось как 2 отдельных механизма (status form + manual unit-buyer link в карточке) — отвергнуто как излишняя ручная работа.
3-tier pricing: T1 Simple / T2 Pro / T3 Custom. T1 — visual-only, без агентств/рассылок, ~$300/мес («должно казаться дёшево»); T2 — T1 + agencies/external agents + email blasts + custom domain; T3 — Enterprise (annual / кастомные фичи / Custom SSO). Custom domain в T2 не T1 (Sergey коррекция от моего initial предложения T1). Standalone walkthrough product (соперничество с Kuula $20/mo) — explicit non-goal: «не наше, нахрен», направляем такие запросы в Kuula. Отвергнуто: seat-based pricing — Sergey: «места это не надо, точно нет».
Wave 2 chunked approach (8 chunks) с чек-поинтами. Sergey выбрал «Вариант B» из двух вариантов (одним заходом vs кусками). Chunks: §2 Onboarding (done) → §3 Billing → §4 Access → §5 Visibility → §6 User Journeys → §7 Edge cases → Phase callouts → ADR placeholders. После каждого chunk я делаю отчёт и жду «дальше» / правки. Альтернатива (одним заходом) — быстрее по wall-clock, но без shanса заметить если ушёл не туда в раннем разделе.
Next Steps
- Wave 2 Chunk 2 — §3 Billing & Tier model (lines ~756-800 в launch-plan-stage-1.html): полный rewrite «Модели 4» с 3-tier структурой (T1 Simple / T2 Pro c custom domain / T3 Custom), 14-day trial period per Project, ownership transfer flow с T constraint (только до payment), auto-demote Owner→Admin при transfer, drop seat-based language, standalone walkthrough explicit non-goal. Размер: L.
- Перед Chunk 2 — решить: commit Chunk 1 раздельно или bundle с Chunk 2.
- Wave 2 Chunks 3-8: §4 Access (Internal/External Sales Agent split, Permission Matrix Actions column, Cross-org isolation, View-as-Agent режим, Internal pool fix), §5 Visibility (PIN-protected как 4-й preset + Custom cleanup), §6 User Journeys (status-form D+E + request-more F + channels G), §7 Edge cases, Phase callouts (1.2/1.4/1.7/1.10/1.11), ADR placeholders.
- После Wave 2 complete — preview sync round 2, отправить ссылку Роме на review.
- ADR 0005 v3 — добавить Microsoft + Custom SSO scope (отдельный файл в docs/decisions/, либо update existing).
Open Questions
- Cyprus vs Abu Dhabi entity decision — still open
- Walkthrough лимиты per tier — нужен tech estimate Ильи
- Multi-agent commission attribution (first-touch vs last-touch) — open business rule, не блокирует Stage 1 launch
- Commit Chunk 1 раздельно или bundle с Chunk 2 — решить первым делом следующей сессии
- Юридика ownership transfer constraint после payment — нужен legal review до ratification ADR 0011
Context for next session
- File state:
docs/plan/launch-plan-stage-1.htmlимеет uncommitted Wave 2 Chunk 1 changes (§2 Onboarding + Microsoft auth). 1 modified file. Решить commit стратегию первым делом. - Preview repo синхронизирован как
e4f736a— Stage 1 с Wave 1+1.5 виден публично. Роме ещё не отправили ссылку — после Wave 2 complete. - Memory очищена:
plan_permission_tenancy_state.mdудалён;project_resume_improvement.mdтакже пропал из MEMORY.md (по system note, intentional). - Wave 2 Chunks 2-8 в очереди. Chunk 2 (§3 Billing) — самый большой, требует полный rewrite секции, не патчинг.
- ADR placeholders для Chunk 8: 0005 v3 (Microsoft + Custom SSO), 0008 (Tier model), 0011 (Trial+Transfer+T constraint), 0012 (Channels).
- D+E unified mechanism спека готова в этом transcript (детальная spec со data model, smart match logic, edge cases) — переносить в план в Chunk 5 (§6 User Journeys: Sales Agent journey) и Chunk 7 (Phase 1.10 callout).
- Sergey предпочитает kуски (вариант B) с чек-поинтами после каждого § — не делать всё одним заходом.
- Slug placeholders нормализованы:
{client-slug}/{client-name}→{slug},{client-domain}→{custom-domain}. Если в новом content нужен placeholder — использовать{slug}consistently. - Notion workstream relation для CONV-22 не подтянулась (UUID в frontmatter
3580965e-0cbf-819d-84b8-d0f3eb08455bвозможно stale) — non-blocking, но если в /resume увидишь missing workstream link, перепроверить ID.