nns
|
3088237ea7
|
feat(telegram): OwnerDailySummaryJob + bot binding (P2-14)
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
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 |
|