Перейти к содержанию

0012 — Продуктовые модули, доступ и тарифные пакеты

  • Дата: 2026-08-21.
  • Статус: Принято; физическая структура кода дополнена решением 0014, состав модулей и тарифов дополняется позднее.
  • Ответственный: владелец проекта.

Контекст

SKUARO развивается по частям, а роли должны получать доступ не ко всему продукту сразу, а к конкретным возможностям. Владелец проекта определил модульную структуру продукта, управление доступом сотрудников по модулям и будущие пакеты монетизации, отличающиеся набором подключённых модулей.

Решение

Продуктовые модули

  • Каждая самостоятельная пользовательская функция SKUARO оформляется как продуктовый модуль с постоянным идентификатором, названием, назначением, статусом и собственной матрицей прав.
  • Первый продуктовый модуль — today, русское название «Сегодня».
  • Модуль today является dashboard руководителя о текущем состоянии клиентской работы его организации в SKUARO.
  • Новые продуктовые модули добавляются последовательно и связываются через принятые контракты, application services и события, а не через неограниченный общий доступ к данным.
  • Состав модулей не фиксируется заранее целиком; каждый новый модуль проходит отдельное продуктовое решение и проверку границ.

Два уровня модульности

  • Продуктовый модуль — функция, которую видит пользователь, подключает организация и включает тариф.
  • Технический модуль — граница кода внутри модульного монолита.
  • Один продуктовый модуль может использовать несколько технических модулей. Например, today использует данные организаций, клиентов, обращений и следующих действий, но для пользователя и тарифа остаётся одним модулем.

Вычисление доступа

Для обычного пользователя доступ к операции внутри организации разрешён только при одновременном выполнении условий:

  1. пользователь и membership активны;
  2. организация имеет активированный модуль;
  3. пользователь получил доступ к этому модулю;
  4. роль и права внутри модуля разрешают конкретную операцию и сущность.

  5. Скрытие модуля или пункта меню на frontend повторяет результат вычисления прав, но не заменяет backend-проверку.

  6. 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 и поведение при задолженности.
  • Миграция организаций и пользовательских прав при изменении состава тарифа.

Откат или замена

Отказ от модульной упаковки продукта, изменение четырёхслойной проверки доступа или смешение тарифа с пользовательской ролью требует нового решения. Добавление конкретного модуля или тарифа оформляется отдельной записью без удаления этого решения.