food-market/docs/sprint8-progress.md
nns 749829c12f
Some checks are pending
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
test(s8-2): telegram stage e2e
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 19:57:03 +05:00

2.8 KiB
Raw Blame History

Sprint 8 — real-time + Telegram-бот владельца + локализация + MinIO

Цель: добавить «живой» опыт (live-обновление виджетов через SignalR), канал для уведомлений владельцу (Telegram-бот с ежедневной сводкой), английский UI (i18n) и перенести uploads в MinIO/S3.

Старт: 2026-05-31. Исполнитель: Claude Opus 4.7 (автономный режим).

Принципы

  • Multi-tenant обязателен — Hub-группы per-org, OwnerTelegramChatId на Organization, MinIO bucket общий но object-key {orgId}/....
  • Каждый пункт: dotnet build + локальные тесты + ~/deploy-stage.sh + retest на https://test.admin.food-market.kz.
  • НЕ трогать: global.json, прод-стек (admin.food-market.kz), POS WPF.

Чек-лист

  • 1. P2-7 SignalR real-time — Hub /hubs/notifications с группами per-org. События SalePosted/SupplyPosted/LowStock. JWT через query ?access_token= (для WebSocket). Дашборд: live-индикатор Wifi, оптимистическое приращение «Выручка сегодня», toast.info на SupplyPosted, toast.error на LowStock. Тесты: SignalRNotificationsTests (multi-tenant 1/1) + stage-ui-signalr.spec.ts (1/1 ✓). Nginx /hubs/ с upgrade-хедерами и 24h read_timeout.
  • 2. P2-14 Telegram-бот владельца — миграция Phase9a_OwnerTelegramChatId. TelegramBotClient (sendMessage HTML), Disabled-mode когда Telegram__BotToken пустой. OwnerDailySummaryJob.RunAsync — cron 0 6 * * * UTC = 09:00 МСК. Сводка: выручка вчера, чеков, средний чек, топ-3 по выручке, low-stock 5. TelegramBindingController (status/bind/unbind). UI секция в OrganizationSettings с deep-link + пошаговой инструкцией. Тесты: TelegramOwnerSummaryTests (рендер ✓), stage-ui-telegram.spec.ts (3/3 ✓ на стейдже).
  • 3. P2-6a Локализация UI (en) — react-i18next, ru.json + en.json, language switcher в header. kz TODO. На стейдже smoke — все страницы переключаются.
  • 4. P2-15 MinIO/S3 для uploadsMinio SDK, bucket food-market-uploads, авто-создание на старте, миграция existing volume. Storage:Type=Local|Minio с fallback на Local. Тесты + UI upload картинки.

Журнал

2026-05-31 — старт

Sprint UI-deep закрыт (docs/sprint-ui-deep-progress.md, 59/59 ✓, 6 багов починены). Перехожу к Sprint 8 пункт 1 (SignalR).