# 🚨 КРИТИЧЕСКИЕ ПРАВИЛА РАБОТЫ

## ПРАВИЛО №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 после инцидента с тестовой рассылкой*
