supersam/docs/architecture.md

4.6 KiB
Raw Blame History

Архитектура фронтенда

Модули

  • src/context/AuthContext.jsx — OTP-аутентификация через Supabase Auth и загрузка профиля пользователя с ролью.
  • src/context/ThemeContext.jsx — управление светлой и тёмной темой через data-theme.
  • src/hooks/usePwaStatus.js — клиентское состояние PWA: online/offline, install prompt, standalone и offline readiness.
  • src/hooks/useOrders.js — локальный state заказов, истории, чатов, фильтров и действий.
  • src/services/orderService.js — чистые функции бизнес-логики заказов, покрытые тестами.
  • src/services/supabase/orderRepository.js — адаптер реальных чтений/записей заказов и чатов в Supabase.
  • src/layouts/AppShell.jsx — общий shell с боковой навигацией, уведомлениями и переключением темы.
  • src/components/orders/* — фильтры, список заказов, карточка заказа, история статусов и поиск по чату.
  • src/components/orders/OrderEditorPanel.jsx — создание и редактирование заказа менеджером или администратором.
  • src/components/dashboard/ProductionQueuePanel.jsx — отдельный блок производственной очереди.
  • src/components/admin/UserDirectoryPanel.jsx — панель пользователей, ролей и последних входов.
  • src/components/logistics/BotControlPanel.jsx — сценарии отправки в чатбот и переноса слотов доставки.
  • src/components/admin/AuditPanel.jsx — журнал ошибок, исключений и обзор последних системных событий.

Ролевой доступ

  • Менеджер видит только свои заказы и может менять статусы на этапах подтверждения.
  • Начальник производства переводит заказ через очередь и производство к готовности.
  • Логист работает только со своими заказами, слотами и сообщениями чатбота.
  • Водитель видит только назначенные ему доставки и может переводить их через статусы Загружен, В пути, Доставлен.
  • Администратор видит весь массив заказов и системные логи.

Ключевые экраны

  • /login — email + OTP flow. При отсутствии VITE_SUPABASE_* включается demo-режим.
  • /dashboard — role-based control center: KPI, фильтры, список заказов, детализация, боты, аудит.
  • public/manifest.webmanifest + public/service-worker.js — installable PWA-оболочка и базовое кеширование shell для demo offline.
  • src/services/orderService.test.js — smoke-проверки фильтрации, статусов, метрик и автодистрибуции.

Дизайн-концепт

  • Минималистичная сетка с крупными панелями, прозрачными поверхностями и мягкими границами.
  • Светлая тема использует холодно-зелёный акцент на светлом фоне.
  • Тёмная тема построена на глубоких графитовых поверхностях с ярким мятным accent.
  • Мобильная версия складывает layout в вертикальный поток; боковая панель становится верхним блоком.

Интеграционный слой

  • src/supabaseClient.js создаёт клиент Supabase через env-переменные.
  • src/services/safeSupabaseCall.js стандартизирует обработку ошибок.
  • Данные UI уже разложены по сущностям, совпадающим с таблицами Supabase: orders, order_history, chat_messages, delivery_slots.
  • В orders синхронизированы поля status, delivery_agreement_status, assigned_driver_id, чтобы backend и demo-режим использовали одну процессную модель.