zov-tech/miniapp/assets
wasrusgen d859e9791c roles: multi-role foundation (manager / client / measurer / assembler)
Users.role теперь хранит CSV-список ролей: 'manager,measurer'.
Парсим, добавляем, отзываем — все через sheets.parse_roles / grant_role /
revoke_role / list_users_with_role. Старые однострочные значения работают
как раньше (legacy compat).

Backend:
- /api/me возвращает roles[] (массив), role (главная для legacy-UI),
  plus capabilities {measurer, assembler} для staff
- /api/grant_role (admin-only) — добавить/отозвать роль
- /api/staff_list (manager-only) — список сотрудников по роли
  (будет использоваться в dropdown «выбрать замерщика»)
- При role=staff отдаём отдельный кабинет; если у юзера нет measurer/
  assembler — возвращаем error=no_staff_role

Bot:
- /start — 3-я reply-кнопка [🔧 Я сотрудник]. При тапе MiniApp получает
  ?role=staff и решает кабинет по capabilities.
- /whoami — сотрудник присылает свой Telegram ID, пересылает куратору
  чтобы тот выдал роль через /api/grant_role.

MiniApp:
- renderStaff() — заглушка кабинета сотрудника с шапкой (имя, аватар,
  список ролей) и пустым inbox («Пока пусто»). Если есть measurer —
  быстрая кнопка «Сделать новый замер».
- При error=no_staff_role — экран с инструкцией как получить роль.
- CSS .staff-head / .staff-no-role.

Cache bust v=20260513f.
2026-05-12 19:14:39 +03:00
..
app.js roles: multi-role foundation (manager / client / measurer / assembler) 2026-05-12 19:14:39 +03:00
clients.js measurements: photo upload + measurement detail page + PDF/print 2026-05-12 18:11:29 +03:00
icons.js feat(miniapp): «Подбор техники» screen — 7-step picker (categories/niches/budget/infra/scenario/brands/summary) wired to /api/podbor 2026-05-09 13:34:46 +03:00
measurements.js measurements: photo upload + measurement detail page + PDF/print 2026-05-12 18:11:29 +03:00
podbor.config.js simplify: remove 'features' step from all 8 categories 2026-05-11 23:37:41 +03:00
podbor.css roles: multi-role foundation (manager / client / measurer / assembler) 2026-05-12 19:14:39 +03:00
podbor.js measurements: photo upload + measurement detail page + PDF/print 2026-05-12 18:11:29 +03:00
podbor.picts.js measurements: kitchen layout wizard + 5 layout pictograms + profile integration 2026-05-12 17:41:01 +03:00
styles.css bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00
zov-logo.svg bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00