Order Service — X/Z отчёты смены

Контракт

Задачи

Endpoint

  • GET /internal/orders/shift-report — новый internal endpoint
    • Query params: store_id (required), employee_id (optional), from (required), to (required)
    • Auth: Service Token (X-Service-Token)

Логика агрегации

  • SQL-запрос: фильтрация заказов по paid_at BETWEEN :from AND :to, store_id, employee_id (optional)
  • Агрегация: SUM(paid_amount), COUNT(*), COUNT по status
  • Разбивка по payment_method: SUM CASE WHEN payment_method = 'cash' / 'card' / 'qr'
  • Средний чек: total_revenue / completed_orders (защита от деления на 0)
  • Топ товаров: subquery по order_items, GROUP BY product_id, ORDER BY SUM(unit_price * quantity) DESC, LIMIT 10

Тесты

  • Unit-тест: агрегация с разными payment_method
  • Unit-тест: пустой период (0 заказов)
  • Unit-тест: фильтрация по employee_id
  • Integration-тест: endpoint с Service Token