Store Service — POS Phase 1
Что сделано
Расширен InternalZalTableController для покрытия manager-операций со столами с POS BFF (через X-Service-Token, без отдельного JWT-flow):
| Endpoint | Что делает |
|---|---|
POST /internal/tables/by-store/{storeId} | Create стол. 409 при дубликате number. Default capacity=4, position=(0,0), status=free. |
PATCH /internal/tables/{id} | Update любого подмножества: number/label/capacity/position_x/y. 409 при коллизии number. |
DELETE /internal/tables/{id} | Soft delete (deleted_at). 409 если стол current_order_id != null (нельзя удалить занятый). |
PATCH /internal/tables/{id}/waiter | BR 3.2 — assign/unassign current_waiter_id (null = снять). |
Бизнес-правила (TABLE_NUMBER_DUPLICATE, TABLE_OCCUPIED) уже в ZalTableService — internal controller только проксирует.
Не трогали
ZalTableentity / migration — без измененийZalTableService— без изменений (все методы уже были)ZalTableController(public) — без измененийOrderStatusConsumer(auto-release при закрытии заказа) — без изменений
Файлы
src/main/java/com/erp/store/controller/InternalZalTableController.java— extended
Тесты
- Smoke на VPS:
curl -H "X-Service-Token: $SVC" -X POST $STORE/internal/tables/by-store/$STORE_ID -d '{"number":99,"capacity":2}' - Полная цепочка проверена через UI desktop-pos (ниже в Desktop POS)