BUG-020: Карточка сотрудника — UUID вместо названий ТТ и ролей

Описание

В карточке просмотра сотрудника (/employees/:id) торговые точки и permissions-роли отображаются как UUID вместо человекочитаемых названий. Два проблемных места:

  1. Торговые точки — показываются как bf5291f8-58e5-429b-8156-77beadd06fb4, f34092f4-485d-4a4c-a0b1-17067c83da60 вместо «Шаурма Арбат, Шаурма Тверская»
  2. Permissions-роли → Магазины — в блоке роли показываются как Магазины: bf5291f8-..., f34092f4-... вместо названий ТТ. Также не видно название роли и непонятно какая роль в каком магазине

Шаги воспроизведения

  1. Залогиниться как ip@erp.local
  2. Создать сотрудника с ролью «Кассир» → ТТ «Шаурма Арбат» + «Шаурма Тверская»
  3. Открыть карточку созданного сотрудника (/employees/:id)
  4. Посмотреть блок «Торговые точки» и «Permissions-роли»

Ожидаемое поведение

Торговые точки:  Шаурма Арбат, Шаурма Тверская

Permissions-роли:
  ┌────────────────────────────────────────┐
  │ Кассир                                 │
  │ Магазины: Шаурма Арбат, Шаурма Тверская│
  │                    [Изменить] [Удалить]│
  └────────────────────────────────────────┘

Фактическое поведение

Торговые точки:  bf5291f8-58e5-429b-8156-77beadd06fb4, f34092f4-485d-4a4c-a0b1-17067c83da60

Permissions-роли:
  ┌────────────────────────────────────────────────────────────────────────┐
  │ (роль)                                                                │
  │ Магазины: bf5291f8-58e5-429b-8156-77beadd06fb4, f34092f4-485d-4a4c...│
  └────────────────────────────────────────────────────────────────────────┘

Причина

Две проблемы:

1. Backend: GET /employees/{id} возвращает store_ids как UUID, без имён

Response содержит roles: [{ role_id, store_ids: [uuid] }] — только ID магазинов, без названий. Фронт не может отобразить текстом потому что не знает названия по UUID.

Нужно: backend должен возвращать roles: [{ role_id, role_name, store_ids: [{ id, name }] }] — с именами ролей и магазинов.

2. Frontend: ViewPage не резолвит UUID → имена

Фронт получает массив UUID и отображает их как строки. Нужно либо:

  • Бэкенд отдаёт имена (правильнее)
  • Фронт делает дополнительные запросы на /stores/{id} и /roles/{id} (костыль)

Затронутые сервисы

СервисПроблема
User ServiceGET /employees/{id} response: roles[].role_name пустой или отсутствует; roles[].store_ids — плоский массив UUID без имён
Admin WebViewPage.tsx — отображает UUID напрямую, не резолвит в имена; ListPage.tsx — колонка «Торговые точки» тоже может показывать UUID