# 🚨 КРИТИЧЕСКИЕ ПРАВИЛА РАБОТЫ ## ПРАВИЛО №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 на русском - Тегами версий при релизах --- ## ПРАВИЛО №3: ЕДИНАЯ НАВИГАЦИЯ В ВЕБ-ПАНЕЛИ Боковое меню должно быть **ОДИНАКОВЫМ** на ВСЕХ страницах: - Определяется в `web/templates/base.html` - Каждый шаблон наследует `{% extends "base.html" %}` - Активный пункт задаётся через `{% block nav_* %}active{% endblock %}` - **ЗАПРЕЩЕНО** создавать отдельные меню для отдельных страниц - **ЗАПРЕЩЕНО** удалять пункты из меню не удалив ссылки на них **Структура меню (5 разделов):** 1. **ПОЛЬЗОВАТЕЛИ** — Все жильцы, Верификация, Телефоны 2. **КОММУНИКАЦИИ** — Рассылки, Запланированные посты, Дайджесты, Опросы, Объявления 3. **КОНТЕНТ** — События, Расписания отключений 4. **СИСТЕМА** — Экспорт данных --- ## ПРАВИЛО №4: ТЕХНИЧЕСКАЯ ЗАЩИТА (SAFETY MODE) Проект имеет встроенную защиту от случайных рассылок: ### Модуль безопасности: `services/safety_guard.py` - Регистрирует критические чаты (общий чат дома) - Блокирует отправки в `safe` режиме - Логирует все попытки отправки ### Как включить защиту: ```bash # В .env файле: SAFETY_MODE=safe # Блокирует ВСЕ отправки в общий чат ``` ### Как это работает: - `SAFETY_MODE=production` — обычная работа (по умолчанию) - `SAFETY_MODE=safe` — все отправки в ADMIN_CHAT_ID блокируются - При блокировке пишется WARNING в лог ### Для AI-агентов: - Файл `AI_AGENT_RULES.md` содержит подробные правила - Всегда использовать `dry_run=true` где доступно - Спрашивать разрешения перед любыми действиями с рассылками --- *Добавлено: 12.04.2026 после серии инцидентов с тестовыми рассылками* --- *Добавлено: 12.04.2026 после инцидента с тестовой рассылкой*