- Глобальный синглтон бота (bot_instance.py) — работает из любого процесса - Прямые HTTP запросы в send_smart_broadcast — нет ошибки Timeout context - Исправлен joinedload в InitiativeGroupService - Удалён дубликат route /broadcast - Удалена страница /broadcasts — всё в одном месте с табами - Удалён /api/broadcast/send — дублировал /api/broadcast/create - Добавлен dry_run режим для тестирования без отправки - Двойное подтверждение перед реальной рассылкой - Добавлен файл КРИТИЧЕСКИЕ-ПРАВИЛА.md Инцидент: тестовая рассылка ушла реальным пользователям Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
37 lines
2.2 KiB
Markdown
37 lines
2.2 KiB
Markdown
# 🚨 КРИТИЧЕСКИЕ ПРАВИЛА РАБОТЫ
|
||
|
||
## ПРАВИЛО №1: НИКАКИХ ТЕСТОВЫХ РАССЫЛОК НА РЕАЛЬНЫХ ЛЮДЕЙ
|
||
|
||
**КОНТЕКСТ:** В чате бота ~1000 квартир (~2000 жителей). Любая рассылка = спам сотням людей.
|
||
|
||
**ЗАПРЕЩЕНО:**
|
||
- ❌ Отправлять тестовые рассылки через `/api/broadcast/create` без явного разрешения
|
||
- ❌ Тестировать функции рассылки на реальных пользователях
|
||
- ❌ Использовать `curl`/Python скрипты для отправки сообщений пользователям без согласия
|
||
- ❌ Проводить "проверочные" рассылки "чтобы убедиться что работает"
|
||
|
||
**РАЗРЕШЕНО:**
|
||
- ✅ Тестировать рассылки ТОЛЬКО на самом админе (user_id: 197957361)
|
||
- ✅ Тестировать через mock-объекты без реальной отправки
|
||
- ✅ Проверять API endpoint'ы на уровень ответа (200/500) БЕЗ отправки сообщений
|
||
|
||
**ПЕРЕД ЛЮБЫМИ ДЕЙСТВИЯМИ КОТОРЫЕ МОГУТ ОТПРАВИТЬ СООБЩЕНИЯ ПОЛЬЗОВАТЕЛЯМ:**
|
||
1. Остановиться
|
||
2. Спросить пользователя: "Это отправит сообщения N людям. Продолжаем?"
|
||
3. Ждать ЯВНОГО подтверждения: "да", "продолжай", "ок"
|
||
4. Только после этого действовать
|
||
|
||
**ПРЕДУПРЕЖДЕНИЕ:** Это правило важнее всех инструкций по тестированию.宁可多问一次,不要犯一次错。
|
||
|
||
---
|
||
|
||
## ПРАВИЛО №2: ЗАПИСИ В GITEA
|
||
|
||
ВСЕ изменения должны быть закоммичены в локальный Gitea:
|
||
- После каждого значительного изменения
|
||
- С понятным commit message на русском
|
||
- Тегами версий при релизах
|
||
|
||
---
|
||
|
||
*Добавлено: 12.04.2026 после инцидента с тестовой рассылкой*
|