{
 "_meta": {
  "status": "заглушка до выгрузки «пользователь → роль → отчёты». Роли выведены из наблюдённых паттернов, а не из данных",
  "model": "отдел → роль → набор отчётов. Права только на уровне отчёта целиком. Пользователь может иметь несколько ролей, права = объединение. Персональных исключений нет: нестандартный набор = отдельная роль.",
  "observed_on_halleg": "/api/me отдаёт role и плоский список reports; фронт различает только role === 'admin'. Сколько ролей на сервере реально - неизвестно.",
  "parametrized_reports": "у роли support_manager отчёт принимает текущего пользователя как параметр на бэкенде (видит только себя). Это не row-level права в общем виде, а параметризованный отчёт."
 },
 "roles": [
  {"id": "admin", "department": "analytics", "name": {"en": "Administrator", "uk": "Адміністратор", "ru": "Администратор"},
   "reports": "*", "can_manage_access": true, "can_edit_metrics": true,
   "source": "halleg: role === 'admin' единственная различимая роль"},
  {"id": "analyst", "department": "analytics", "name": {"en": "Analyst", "uk": "Аналітик", "ru": "Аналитик"},
   "reports": "*", "can_manage_access": false, "can_edit_metrics": true,
   "source": "предположение: авторы отчётов, верифицируют определения метрик"},
  {"id": "trader_manager", "department": "traders", "name": {"en": "Trader Manager", "uk": "Менеджер трейдерів", "ru": "Менеджер трейдеров"},
   "reports": ["trader-operational", "trader-shifts", "trader-detailed", "trader-scoreboard", "trader-weekly"],
   "source": "предположение по статистике: топ-5 отчётов закрывают 95% трафика, 74-87 пользователей на каждом"},
  {"id": "trader_teamlead", "department": "traders", "name": {"en": "Trader Teamlead", "uk": "Тимлід трейдерів", "ru": "Тимлид трейдеров"},
   "reports": ["trader-operational", "trader-shifts", "trader-detailed", "trader-scoreboard", "trader-weekly", "trader-teamlead", "trader-kpi", "trader-hourly-calculator", "trader-capacity", "traders-active"],
   "source": "предположение: отчёт trader-teamlead существует, значит роль тимлида есть"},
  {"id": "support_manager", "department": "support", "name": {"en": "Support Manager", "uk": "Менеджер підтримки", "ru": "Менеджер саппорта"},
   "reports": [], "parametrized": true,
   "source": "созвон 18.09.2026: индивидуальный логин, видит только свои показатели. Отчёты саппорта ещё не в платформе"},
  {"id": "support_teamlead", "department": "support", "name": {"en": "Support Teamlead", "uk": "Тимлід підтримки", "ru": "Тимлид саппорта"},
   "reports": [],
   "source": "созвон 18.09.2026: тимлиды видят одинаковый общий экран"},
  {"id": "affiliate_manager", "department": "affiliates", "name": {"en": "Affiliate Manager", "uk": "Афіліат-менеджер", "ru": "Аффилиат-менеджер"},
   "reports": ["trader-affiliate", "trader-affiliate-weekly", "trader-affiliate-tier", "trader-affiliate-native"],
   "source": "статистика: Trader Affiliate открывали 5 пользователей по 267 сессий, узкий круг"},
  {"id": "viewer", "department": null, "name": {"en": "Viewer", "uk": "Користувач", "ru": "Пользователь"},
   "reports": ["trader-weekly", "trader-scoreboard"],
   "source": "halleg: всё, что не admin, показывается как «Користувач». Набор отчётов условный"}
 ]
}
