Перейти к основному содержимому

SystemRole

@mineflow/client-core


@mineflow/client-core / SystemRole

Type Alias: SystemRole

type SystemRole =
| "CEO"
| "Engineer"
| "Foreman"
| "Mechanic"
| "Admin"
| "OtibSpecialist"
| "Supply"
| "Surveyor"
| "Operator"
| "HrSpecialist"
| "ChiefMechanic";

Defined in: libs/auth/src/types.ts:25

Канонический RBAC-контракт MineFlow — 11 системных ролей в PascalCase.

Единый источник истины для ролей и на бэке (guard'ы @RequiresRole), и на фронте: type-only re-export через @mineflow/api-schemas даёт фронту тип без backend-зависимости, сохраняя compile-time связь (typecheck ловит дрейф ролей). Применение в UI — через useCan из @mineflow/client-react.

  • CEO — генеральный директор (утверждение планов, double-approval).
  • Engineer — инженер (утверждение рапортов, корректировки).
  • Foreman — бригадир / начальник участка (сдача сменных рапортов, вахты, блоки; object-scoped).
  • Mechanic — механик участка (обслуживание техники своего участка, object-scoped).
  • Admin — администратор (учётные записи, роли).
  • OtibSpecialist — специалист ОТиБ (охрана труда).
  • Supply — снабжение (ГСМ, ТМЦ, поставщики).
  • Surveyor — маркшейдер (приёмка/перебур буровзрывных блоков, cross-object; ADR-0094).
  • Operator — буровик/машинист (подача сменного отчёта по своему станку, object-scoped; ADR-0102).
  • HrSpecialist — кадровик (кадровые действия по домену HR, cross-object; ADR-0115). Управление учётными записями и назначение ролей (hr/user-accounts) НЕ входит — остаётся за Admin.
  • ChiefMechanic — главный механик и корпоративные механики АУП / Службы ТО (те же действия, что у Mechanic, но по всем участкам, cross-object; ADR-0117). Отдельная роль нужна потому, что у такого механика нет своего участка: personnel.objectId = NULL — корректные данные ростера, а не пробел, и под object-scoped ролью он не видел НИЧЕГО (fail-closed, ADR-0020).