BUG-015 — Декомпозиция
Код
Order Service (erp-order-service)
- Заменить
findFilteredвOrderRepositoryнаSpecification<Order>+JpaSpecificationExecutor<Order> - Реализовать
OrderSpecificationsс предикатами:byFranchise,byStoreIds,byStatus,createdAtGte,createdAtLte - Обновить
OrderService.list()— собирать Specification черезSpecification.allOf(...), non-null-фильтры попадают в WHERE, null игнорируются - Edge case: empty
storeIds(non-franchise без ТТ) →cb.disjunction()(match nothing) — не допускает утечку чужих заказов - Smoke test после деплоя: GET
/api/v1/admin/orders?store_id=...&status=ready→ 200 - Smoke test: комбинации фильтров (без, только store, store+status, store+status+даты)
Admin (erp-admin)
- Нет изменений — бэкенд-фикс автоматически починит фронт
Спеки
-
03-Services/Order Service/API.md— параметры фильтрации описаны корректно, правок не требуется
Верификация
- Деплой
erp-order-serviceчерез/deploy-all order-service - Открыть
https://erp-test.nirbi.ru/admin/orders/activeпод франшизой → выбрать ТТ → список должен загрузиться (пустой или с данными, но без 500) - Открыть
/admin/orders/history→ выбрать даты + статус → 200 - Ручной curl:
curl -H "Authorization: Bearer $JWT" \ "https://erp-test.nirbi.ru/api/v1/admin/orders?store_id=9051b882-371b-412d-a88a-c2a5d357152c&status=ready&per_page=100"