Э0.1 · Спека фундамента · субстрат №1 из 7
Тенант · доступ · аудит
Граница кабинета, роли, владение, аудит. Корень фундамента — на нём стоят все домены; каждая спека продукта открывается строкой «граница кабинета». Эта спека её задаёт.
СИСТЕМА · 100%
Этап Э1 (скелет)
Корень графа
core/tenancy-access
Продуктовый уровень
Зачем это несущее
01Кабинет — мир специалиста
Практика принадлежит специалисту, а не площадке: его клиенты, записи, бренд, деньги. Домен даёт три вещи, без которых продукта нет вообще.
изоляция
Данные не текут
Кабинет физически недостижим из другого. Фундамент доверия: без него нельзя доверить ни одной чувствительной записи.
роли + владение
Команда без утечек
Кто что может внутри и его ли это конкретная запись. Без этого нельзя пустить в кабинет второго человека.
аудит
Доказуемая приватность
Неизменяемый след привилегированных действий. Без него нельзя обещать, что никто не смотрел лишнего.
Тест боли: не украшение — несущий капитал. Не «даёт клиентов» напрямую, но без него клиент не доверит дневник → уйдёт; клиника не пустит второго специалиста → не вырастет; утечка между кабинетами → смерть продукта.
Единый логичный круг
02Карта ролей — три уровня
Внутри кабинета роль — свойство пары «человек × кабинет» (членство), а не человека. Один человек бывает специалистом в одном кабинете и клиентом в другом.
Над кабинетами
platform
Платформа (мы)
Выдаём кабинеты, тарифы, тумблеры. Заход-поддержка — под аудитом, по умолчанию только чтение, владельцу видно. Внутрь данных не лезем. Со сплита не берём — живём с подписки.
Кабинет = покупатель
owner
Владелец кабинета
Психолог-соло, клиника или партнёр-в-своём-кабинете. Деньги, бренд, модули, доли, заводит команду, передача владения. Соло = owner + specialist (2 шляпы), не три.
admin
Со-управленец = «главврач»
«Админ» и «главврач» — одна роль. Клинический надзор над ВСЕМ штатом (супервизия) + операционка. НЕ трогает деньги/бренд/доли. Только в клинике со штатом — соло её НЕ носит.
Внутри кабинета
specialist
Специалист (наш сотрудник)
Под брендом кабинета; клиенты кабинета; клинический доступ только к своим; доля с оплат.
assistant
Ресепшн
Записи, календарь, финансы (оплаты/счета/возвраты), документы. Клиническое НЕ видит. Пресет прав настраиваем.
client
Клиент
Своя сторона: самозапись, оплаты, документы, переписка, свои дневники (видимостью управляет сам).
recipient
Ребёнок / подросток
Имеет СВОЙ доступ к своей стороне (записи, чат со специалистом, дневники) — приватно от опекуна. Малолетний — через опекуна; порог возраста — настройка.
payer
Опекун / плательщик
Врата входа: регистрация, согласия, оплата + организационное. Терапевтическое содержимое ребёнка НЕ видит.
Кабинет-площадка
Клиника размещает партнёра на витрине, шлёт клиентов.
⇄ партнёрское соглашение ⇄
витрина · направление · доля
Кабинет партнёра partner = owner
Свой изолированный кабинет, свой бренд/клиенты/услуги. Хозяин сам — платит долю кабинету-родителю за поток. Не заходит внутрь площадки: связь = отношение между кабинетами.
Два инструмента под две ситуации
03Специалист или партнёр?
К клинике «Гармония» просится массажист. Подключить можно двумя принципиально разными способами — и это ровно наши две роли.
specialist · в штат
Сотрудник клиники
- Своего кабинета нет — работает внутри «Гармонии»
- Под брендом клиники; клиенты — клиники
- Заводится напрямую, сразу активен (доверенный)
- Уйдёт — уйдёт с пустыми руками
- Доля с оплат (внутрикабинетный сплит)
partner · свой кабинет + договор
Самостоятельный профи
- Заводит свой кабинет — свой бренд/клиенты/подписка
- Клиника его на витрине, шлёт клиентов; он отдаёт долю
- Никакой модерации его действий — сам себе хозяин
- Уйдёт — забирает свой кабинет целиком
- Может быть другой профессии (массаж): своя вертикаль/функции
Ключ: нужен человек в команду под свой бренд → specialist. Пришёл самостоятельный профи за твоим потоком, но остаётся собой → partner со своим кабинетом.
Терминология разведена: «доля кабинета», не «доля площадки»
04Денежный круг — два вида дележа
1
Клиент → кабинет. Платит фиксированную цену за услугу.
A
Сплит внутрикабинетный — 2 слоя. Штатный специалист ↔ доля кабинета.
База % (на специалисте) + доп % (на услуге) — суммируются, специалисту остаток. Два слоя = гибкость под разные услуги. Снапшот на момент счёта.
Б
Сплит межкабинетный — 1 слой. Кабинет-партнёр → одна доля кабинету-площадке.
Партнёр самостоятелен: свои цены ставит у себя, площадке платит единую ставку за поток. Владелец-площадка ставит, партнёр подтверждает. Глубже не идём.
2
Каждый кабинет → мы (подписка). Платформа со сплита не берёт ничего — ДНК «0% комиссии, 100% твои».
Здесь — только кто кому и на каком основании. Сам расчёт (суб-счета, проводки, точность) — соседний домен money.
Сердце домена — не смешивать
05Три разных вопроса доступа
роль
RBAC
Позволяет ли роль это действие вообще? Ресепшн не открывает клинические заметки.
владение объектом
BOLA → «не найдено»
Его ли эта конкретная запись? Даже у специалиста — только свои клиенты. Чужое отвечает «не существует», а не «запрещено».
модуль включён?
Изоляция + тумблер
Изоляция отделяет кабинет от кабинета (последний рубеж). Плюс: доступ = роль ∩ включённый модуль (capabilities).
По умолчанию; тонкая настройка — движком политик
06Матрица «роль → что может»
✓ может · ✗ нет · ~ частично/с условием · — неприменимо. Платформа «внутри кабинета» намеренно пуста: её единственный вход — заход-поддержка.
Обе стороны — специалист И клиент
07Ключевые сценарии
→Вход клиента двумя путями. Приглашение (специалист шлёт ссылку) ИЛИ самозапись с публичной страницы; дубли сливаются в одного клиента с общей историей.
→Клиника растит команду. Владелец заводит специалиста — сразу своё расписание и клиенты; передаёт клиента другому специалисту с досье. Главврач надзирает клинически.
→Партнёрское соглашение. Площадка предлагает долю → партнёр подтверждает → его услуги на витрине, направления и доля идут через оговоренный канал. Пересмотр доли → новое согласие.
→Двойная роль. Человек — специалист в A, клиент в B, владелец кабинета C; переключает активный кабинет, данные между ними не видны.
⎇Отпочкование специалиста. Уходит в свой кабинет и забирает клиентов — но каждый клиент сам решает, идти ли за ним (альянс принадлежит клиенту); клиника уведомляется. Данные согласившихся едут с досье. ДНК «практика — специалиста». Механика — Э8.
→Заход поддержки. Баннер + запись в журнал, видимый владельцу; только чтение по умолчанию; клиента не тревожим.
По-человечески, без апологий
08Края и ошибки
!Нет контекста → показываем пусто (не ошибку, не «всё»). По умолчанию закрыто.
!Чужой объект → «не найдено» (как будто его нет), не «запрещено».
!Последний владелец не уходит не передав кабинет — кабинет без владельца недопустим.
!Разрыв партнёрства → витрина/направления гаснут, но оба кабинета и все данные целы.
!Дубль самозаписи → «Похоже, это тот же клиент — объединить?»
Что решил сам — подтверди или поправь словами
09Отмечено на приёмку
Технические дефолты (правь при желании)
- ❗ Граница владелец↔главврач: деньги/бренд/удаление — только владелец; клинический надзор + операционка — главврач.
- ❗ Уход участника: ушёл специалист → клиенты остаются кабинету; разрыв партнёрства → кабинеты целы; последний владелец сначала передаёт кабинет.
- ❗ 2FA: обязательна владельцу/главврачу/специалисту/ресепшн/партнёру; клиенту — по желанию.
- Детальная межкабинетная механика партнёрства (как клиент/оплата/доля физически ходят) — на Э8 «Клиника»/«Деньги». Сейчас — только модель.