POS BFF — Phase 2
Что сделано
NEW routes/staff.ts
GET /api/v1/pos/staff → user-service /internal/users/by-store/{activeStoreId}/pos-employeesВозвращает [{ id, first_name, last_name, role_names[] }] — все активные сотрудники ТТ с pin_hash и pos.access. Используется WaiterPickerModal на desktop-pos.
Auth: requireCashier (видеть список нужно всем, кто работает за кассой).
server.ts — registered prefix /api/v1/pos/staff
Reused (без изменений из Phase 1)
POST /api/v1/pos/orders/:id/add-items— proxy/internal/orders/:id/add-itemsPOST /api/v1/pos/orders/:id/close-with-payment— proxy/internal/orders/:id/close-with-paymentGET /api/v1/pos/orders/by-table/:tableId— proxy/internal/orders/by-table/:tableIdPATCH /api/v1/pos/tables/:id/waiter— proxy/internal/tables/:id/waiter(BR 3.2)
Файлы
- NEW
bff/src/routes/staff.ts bff/src/server.ts— добавлены import + register
Smoke
# на VPS
docker exec erp-nginx wget -qO- --header='Authorization: Bearer dev-cashier-1' \
http://erp-pos-bff:3022/api/v1/pos/staff
# → 401 (AUTH_STUB=false в prod, нужен реальный JWT)
# user-service напрямую
curl http://localhost:3002/internal/users/by-store/$STORE_ID/pos-employees \
-H "X-Service-Token: $SVC"
# → {"data":[{Мария Петрова, Кассир}, {Дмитрий Сидоров, Менеджер ТТ+Кассир}]}