food-market/tests/food-market.IntegrationTests
nns 3088237ea7
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
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
feat(telegram): OwnerDailySummaryJob + bot binding (P2-14)
Backend:
- Organization.OwnerTelegramChatId (long?) — миграция Phase9a.
- TelegramOptions / TelegramBotClient (Telegram Bot API sendMessage).
  Disabled-mode когда токен пустой (Dev/CI). HTML parse_mode.
- OwnerDailySummaryJob.RunAsync — пробегает по org с привязанным chatId,
  рендерит сводку (выручка вчера, чеков, средний чек, топ-3 по выручке,
  low-stock 5 строк) и шлёт. Best-effort на каждой org.
  RenderSummaryAsync — publicный для тестов.
- HangfireJobsConfigurator: cron "0 6 * * *" UTC = 09:00 МСК.
- TelegramBindingController: GET /status (botEnabled, username, chatId,
  deepLink), PUT /bind (тестовое сообщение → проверка chatId → save),
  DELETE (unbind).

Конфиг:
- Telegram:BotToken — env Telegram__BotToken.
- Telegram:BotUsername — для deep-link.

UI:
- OrganizationSettings.TelegramSection: показывает статус (bot enabled?
  bound?), deep-link к боту, пошаговая инструкция (start → userinfobot →
  ввести chat_id → проверка). Toast на привязку/отвязку через
  meta.successMessage.

Тесты:
- TelegramOwnerSummaryTests: рендер содержит org_name, метрики, HTML. ✓ 1/1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 19:50:33 +05:00
..
Support feat(reports): отчёт «Продажи» с группировками и экспортом (P1-8) 2026-05-28 11:09:52 +05:00
AbcReportTests.cs feat(reports): ABC-анализ по Парето (P1-11) 2026-05-28 11:24:26 +05:00
ConcurrencyTokenTests.cs feat(concurrency): RowVersion на документах через Postgres xmin (TD-6) 2026-05-28 17:33:01 +05:00
CustomerReturnTests.cs feat(returns): возврат от покупателя (CustomerReturn) (P1-6) 2026-05-28 09:51:04 +05:00
DemandPostUnpostTests.cs feat(demands): оптовая отгрузка контрагенту-юрлицу (P1-5) 2026-05-28 16:18:49 +05:00
EnterPostUnpostTests.cs feat(enters): оприходование товара без поставщика (P1-1) 2026-05-28 09:18:13 +05:00
food-market.IntegrationTests.csproj feat(realtime): SignalR hub /hubs/notifications per-org + dashboard live 2026-05-31 19:29:59 +05:00
HangfireDashboardTests.cs feat(hangfire): dashboard + scheduled cleanup джобы (P1-16) 2026-05-28 10:07:14 +05:00
ImportJobPersistenceTests.cs feat(import-jobs): persisted ImportJobRegistry в БД (TD-5) 2026-05-28 16:45:08 +05:00
InventoryPostUnpostTests.cs feat(inventories): инвентаризация с CSV-импортом факта (P1-4) 2026-05-28 09:39:32 +05:00
LossPostUnpostTests.cs feat(losses): списание со склада с указанием причины (P1-2) 2026-05-28 09:24:40 +05:00
MetricsEndpointTests.cs feat(observability): Prometheus метрики /metrics + бизнес-счётчики (P1-17) 2026-05-28 12:20:01 +05:00
OrgAuditLogTests.cs feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
PermissionTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
PosSyncTests.cs feat(pos-api): GET /sync и POST /sales с двойной идемпотентностью (P1-12b) 2026-05-28 12:10:17 +05:00
ProfitReportTests.cs feat(reports): отчёт «Прибыль» (выручка − COGS) (P1-10) 2026-05-28 11:19:19 +05:00
RetailOversellingTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
SalesReportTests.cs feat(reports): отчёт «Продажи» с группировками и экспортом (P1-8) 2026-05-28 11:09:52 +05:00
SignalRNotificationsTests.cs feat(realtime): SignalR hub /hubs/notifications per-org + dashboard live 2026-05-31 19:29:59 +05:00
SignupFlowTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
StockReportTests.cs feat(reports): отчёт «Остатки на дату» с реконструкцией (P1-9) 2026-05-28 11:14:24 +05:00
SupplierReturnTests.cs feat(supplier-returns): возврат поставщику (P1-7) 2026-05-28 09:58:29 +05:00
SupplyPostUnpostTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
TelegramOwnerSummaryTests.cs feat(telegram): OwnerDailySummaryJob + bot binding (P2-14) 2026-05-31 19:50:33 +05:00
TenantIsolationTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
TransferPostUnpostTests.cs feat(transfers): атомарное перемещение между складами (P1-3) 2026-05-28 09:32:32 +05:00
TwoFactorTests.cs feat(auth): TOTP 2FA для админов через AuthenticatorTokenProvider (P2-4) 2026-05-28 17:57:32 +05:00