Задачи чат-бота: информирование клиентов, сбор информации, ответы на типовые вопросы, интерактивное меню или каталог, автоматическое бронирование. Продукт: Афиша мероприятий города в телеграмм боте. Техзадания нет. Переход с JSON на БД Выбрать: PostgreSQL (предпочтительно) или SQLite как временный шаг. ORM: SQLAlchemy 2.0 async (или Tortoise) + миграции (Alembic, если SQLAlchemy). Реализовать транзакционность и конкурентную запись без потерь данных. Минимальные сущности БД: users (гости) organizers (профиль, is_blocked) events (поля события + is_active, is_archived, timestamps) registrations (user_id, event_id, status, created_at) (опционально позже: reviews) Результат: JSON больше не используется как источник истины. 2.3 Миграция данных Одноразовый скрипт миграции: JSON ? БД. Валидация: количество событий/регистраций совпадает до/после. Результат: перенос данных без потерь. 2.4 Админ-панель (полностью рабочая) В админке должны работать действия: События список событий (активные/скрытые/архив/все) карточка события действия: скрыть / показать архивировать / разархивировать редактировать все поля полное удаление (из БД) Организаторы список организаторов блокировка / разблокировка при блокировке: запрет создания новых событий (минимум) (опционально: скрывать все активные события организатора) Статистика всего/активных/архивных/скрытых событий всего регистраций, уникальных гостей всего организаторов, заблокированных 2.5 Устранение ошибок и качество Исправить текущие баги (по логам и воспроизведению). Добавить базовые проверки прав (admin/organizer). Добавить безопасную обработку ошибок Telegram (RetryAfter, сетевые ошибки) минимум в местах рассылок/напоминаний. 3) Нагрузочные ожидания (прямо в требованиях) 1000+ пользователей зарегистрировано. Пики: 300 регистраций за 1–10 минут без потерь. Время ответа на основные действия: < 1 сек. Никаких “битых данных” при параллельных действиях. 4) Формат сдачи Разработчик должен предоставить: Рабочий код (git) + инструкция деплоя (README). Скрипт миграции данных. systemd unit + инструкция обновления (git pull ? restart). Список переменных окружения .env.example. Краткий список “что сделано” + “как тестировать”. 5) Критерии приёмки Бот работает на VPS и переживает перезапуск сервера. Все записи/создания/редактирования пишутся в БД, JSON не используется. Админ-кнопки реально выполняют действия и отражаются в карточке. Организатор блокируется и не может создавать события. Тест: массовые регистрации (скрипт/ручной прогон) не ломают данные.