Архитектурные уровни
Полные определения — в docs/frontend/DOMAIN_MODEL.md. Эта страница — практическая, роутинг-версия: по URL или строке права понять, к какому уровню это относится.
User
├── Platform
└── Organization (Workspace)
└── ApplicationUser стоит над Platform и Organization, а не внутри них. Ты аутентифицируешься один раз как себя, а дальше попадаешь в организацию, членом которой являешься, или — если у тебя есть платформенная роль — в администрирование платформы. Оба пути доступны с нейтрального /dashboard после входа.
| Уровень | Отвечает на вопрос | Роуты | Префикс прав | Роли |
|---|---|---|---|---|
| User | «Кто я, где я хочу работать?» | /dashboard, /account/* | — | — |
| Organization | «Что я могу делать в этой организации?» | /org/:slug/* | portal:*, org:* | OWNER/ADMIN/MEMBER (системные, три с момента упразднения VIEWER 2026-08-19) + кастомные роли, per-org |
| Platform | «Чем я могу управлять во всей системе?» | /platform/* | platform:* | SUPER_ADMIN, P4P Owner, P4P Admin (P4P Member удалена 2026-08-19 — см. IAM) |
| Application | Независимые продукты, работающие внутри организации | /org/:slug/<app>/* | ограничено приложением | наследует членство в организации |
В чём старые дизайн-доки ошибаются — и позднейшее исправление
docs/frontend/INFORMATION_ARCHITECTURE.md описывает «Projects»/«CRM» и т.п. как обычные Application, на которые могла бы подписаться любая организация. Но построено было не так — хотя сегодня это ближе к истине, чем кажется на первый взгляд. То, что реально существует под /team/* и /platform/staff — это Internal Company Workspace, собственный инструмент P4P для управления штатом, отделами, проектами и задачами. До 2026-08-18 он был закрыт правами platform:staffing:* — настоящая фича уровня Platform. docs/staffing/ADR-002-org-rbac- migration.md перевёл его на Organization RBAC, ограниченную организацией P4P Internal — тот же механизм Role/Permission/ TenantGuard+PermissionsGuard, который использует любая другая организация, теперь под ключами workspace:staffing:*/ workspace:calendar:*/workspace:finance:*. Так что /team/* сегодня по-настоящему Organization-уровня, просто навсегда ограничен одной конкретной организацией (P4P Internal), а не той, что выбрана сейчас — единственное место, где сокращение этой таблицы «уровень определяется по префиксу роута» не работает, поскольку URL всё ещё выглядит как /team/*, а не /org/p4p-internal/*. PlatformStaffMembership этой миграцией не затронут — он по-прежнему отвечает на отдельный вопрос («признан ли этот человек сотрудником P4P вообще», HR/кадровый факт) в отличие от «что он может делать в Team Management» (теперь это вопрос роли организации выше). См. Администрирование платформы и документ модуля Персонал.
По-настоящему Organization-уровневые, подписываемые-по-организациям функции, которые существуют сегодня — это AI Assistant (ai:chat:use, ai:agents:manage, ai:mcp:manage) и файловое хранилище (files:*) — обе живут под /org/:slug/* и закрыты по организациям, как и задумывался уровень Application изначально.
Почему это важно при чтении остальной вики
Фронтматтер каждого документа модуля перечисляет routes и permissions. Если роут начинается с /platform/ или право с platform: — это поведение уровня Platform, применяется один раз, для всей платформы. Если начинается с /org/:slug/ или portal:/org: — это уровень Organization: та же страница ведёт себя по-разному (или вообще не видна) в зависимости от того, в какой организации ты находишься сейчас.