0012 — Продуктовые модули, доступ и тарифные пакеты¶
- Дата: 2026-08-21.
- Статус: Принято; физическая структура кода дополнена решением 0014, состав модулей и тарифов дополняется позднее.
- Ответственный: владелец проекта.
Контекст¶
SKUARO развивается по частям, а роли должны получать доступ не ко всему продукту сразу, а к конкретным возможностям. Владелец проекта определил модульную структуру продукта, управление доступом сотрудников по модулям и будущие пакеты монетизации, отличающиеся набором подключённых модулей.
Решение¶
Продуктовые модули¶
- Каждая самостоятельная пользовательская функция SKUARO оформляется как продуктовый модуль с постоянным идентификатором, названием, назначением, статусом и собственной матрицей прав.
- Первый продуктовый модуль —
today, русское название «Сегодня». - Модуль
todayявляется dashboard руководителя о текущем состоянии клиентской работы его организации в SKUARO. - Новые продуктовые модули добавляются последовательно и связываются через принятые контракты, application services и события, а не через неограниченный общий доступ к данным.
- Состав модулей не фиксируется заранее целиком; каждый новый модуль проходит отдельное продуктовое решение и проверку границ.
Два уровня модульности¶
- Продуктовый модуль — функция, которую видит пользователь, подключает организация и включает тариф.
- Технический модуль — граница кода внутри модульного монолита.
- Один продуктовый модуль может использовать несколько технических модулей. Например,
todayиспользует данные организаций, клиентов, обращений и следующих действий, но для пользователя и тарифа остаётся одним модулем.
Вычисление доступа¶
Для обычного пользователя доступ к операции внутри организации разрешён только при одновременном выполнении условий:
- пользователь и membership активны;
- организация имеет активированный модуль;
- пользователь получил доступ к этому модулю;
-
роль и права внутри модуля разрешают конкретную операцию и сущность.
-
Скрытие модуля или пункта меню на frontend повторяет результат вычисления прав, но не заменяет backend-проверку.
super_adminиplatform_adminсохраняют принятые платформенные права; запретplatform_adminизменятьsuper_adminостаётся выше модульных разрешений.
Управление организацией¶
- «Руководитель организации» видит, какие модули подключены его компании и каким тарифным пакетом они предоставлены.
- Руководитель управляет пользователями организации и назначает им доступ к подключённым модулям.
- Внутри каждого модуля руководитель назначает отдельные разрешения, доступные для соответствующей роли и модуля.
- Руководитель не может выдать сотруднику доступ к модулю, который не активирован у организации.
- Точная матрица делегируемых прав определяется отдельно для каждого модуля до его реализации.
Тарифные пакеты¶
- SKUARO будет иметь несколько пакетов монетизации, отличающихся набором подключённых продуктовых модулей.
- Тариф определяет доступный организации набор модулей, но не подменяет роли и пользовательские разрешения внутри организации.
- Названия пакетов, цены, лимиты, пробный период, правила повышения и понижения тарифа и платёжный провайдер пока не выбраны.
- Биллинг не добавляется в первый frontend-прототип и не реализуется до отдельного продуктового и эксплуатационного решения.
Последствия¶
- Целевая модель предусматривает реестр
ProductModule, связь тарифа с модулями, подключённые организации модули и доступ membership к модулю и его permissions. - Меню организации строится из пересечения активного тарифа, подключённых модулей и эффективных прав пользователя.
- Карта проекта
super_adminпоказывает статус продуктовых модулей отдельно от технических направлений и страниц. - Личный кабинет руководителя показывает подключённые модули; интерфейс управления сотрудниками и правами проектируется позднее вместе с первой командной ролью.
- Product gate для
todayсохраняется: модуль не становится production-модулем только из-за наличия frontend-прототипа. - Backend, таблицы тарификации и реальные ограничения доступа этим решением не создаются.
Отложенные вопросы¶
- Реестр следующих продуктовых модулей и порядок их проверки.
- Матрица permissions первого модуля
todayдляowner,admin,member,viewer. - Может ли роль задавать шаблон прав с последующими индивидуальными ограничениями или используются только явные grants.
- Названия, состав, цены, лимиты и жизненный цикл тарифных пакетов.
- Billing provider, налоги, платежные документы, trial, grace period и поведение при задолженности.
- Миграция организаций и пользовательских прав при изменении состава тарифа.
Откат или замена¶
Отказ от модульной упаковки продукта, изменение четырёхслойной проверки доступа или смешение тарифа с пользовательской ролью требует нового решения. Добавление конкретного модуля или тарифа оформляется отдельной записью без удаления этого решения.