feat(manager): Part 2 — Online Orders page and sidebar integration

- connect_orders.py: add GET /api/connect/orders?status=active|history endpoints
- api/client.js: add getIncomingOrders, getActiveOrders, getOrderHistory,
  acceptOnlineOrder, rejectOnlineOrder, updateOnlineOrderStatus
- OnlineOrdersPage.jsx: three-tab page (Incoming / Active / History) with
  order cards, action buttons (accept/reject/status progression),
  20 s polling, SSE listener for online_order_received/updated events,
  and optimistic UI updates
- App.jsx: add /online-orders route
- Sidebar.jsx: add Online Orders nav item with red badge showing pending count,
  polling every 20 s independently of the page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 09:59:21 +03:00
parent 37fb25c8c2
commit aed71a18d8
5 changed files with 478 additions and 12 deletions

View File

@@ -23,3 +23,18 @@ client.interceptors.response.use(
)
export default client
// ── Online Orders (Xenia Connect) ─────────────────────────────────────────────
export const getIncomingOrders = () => client.get('/api/connect/orders/incoming')
export const getActiveOrders = () => client.get('/api/connect/orders?status=active')
export const getOrderHistory = () => client.get('/api/connect/orders?status=history')
export const acceptOnlineOrder = (id) =>
client.post(`/api/connect/orders/${id}/accept`)
export const rejectOnlineOrder = (id, reason) =>
client.post(`/api/connect/orders/${id}/reject`, { reason })
export const updateOnlineOrderStatus = (id, status) =>
client.post(`/api/connect/orders/${id}/status`, { status })