Техническое задание (ТЗ)
Желаемый срок выполнения - 24 часа (СРОЧНО!)
Бэкенд для публичного веб-приложения с модерацией текстовых сообщений
1. Общая информация
Необходимо разработать бэкенд для веб-приложения, которое работает в одном экземпляре, размещенном в публичном пространстве (экран / терминал / установка).
Клиентское приложение отправляет короткие текстовые сообщения (аналог SMS), которые проходят модерацию и после одобрения отображаются на экране.
Бэкенд устанавливается на отдельный ПК и работает:
в локальной сети вместе с клиентским приложением;
или с доступом через интернет (опционально).
2. Архитектурные и технологические требования
2.1 Общие требования
Технологии должны быть распространены и легко поддерживаемы.
Запрещено использование экзотических или узкоспециализированных фреймворков, которые усложняют передачу проекта другому разработчику.
Решение должно быть понятным стороннему разработчику без длительного онбординга.
2.2 Деплой и поддержка
Обязательно:
возможность быстрого развертывания системы;
возможность простого обновления.
Допустимые и желательные варианты:
хранение кода в GitHub;
деплой через Docker / Docker Compose;
минимальное количество ручных шагов при обновлении.
Бэкенд должен запускаться:
на обычном ПК (Windows / Linux);
без зависимости от специфической серверной инфраструктуры.
3. Роли и доступы
3.1 Клиентское приложение
Доступ:
отправка сообщений;
получение списка одобренных сообщений;
получение системного статуса.
Авторизация:
не обязательна или реализуется через простой механизм (API-key, токен).
3.2 Админка (модерация)
Единственная роль — модератор.
Реализация админки — на выбор разработчика:
отдельная веб-админка;
готовая админ-панель;
или другой стандартный подход.
❗ Наличие отдельного публичного API для админки не является обязательным.
Главное требование — функциональность и простота поддержки.
Функции модератора:
просмотр всех сообщений;
изменение статуса сообщения;
редактирование текста перед одобрением;
управление системным состоянием приложения.
4. Данные и модель сообщения
4.1 Сообщение (Message)
Поле Тип Описание
id string / UUID / int Уникальный идентификатор
original_text string Оригинальный текст от клиента
approved_text string | null Текст после модерации
status enum pending / approved / rejected
created_at datetime Дата и время получения
reviewed_at datetime | null Дата модерации
ai_checked boolean Прошел ли проверку ИИ
ai_result string | null Комментарий или результат проверки ИИ
5. Системное состояние
5.1 SystemState
Поле Тип Описание
is_blocked boolean Заблокирован ли экран
system_message string Системное сообщение
updated_at datetime Дата последнего изменения
6. API для клиентского приложения (обязательно)
6.1 Отправка сообщения
POST /api/messages
{
"text": "Короткое текстовое сообщение"
}
{
"success": true,
"message_id": "12345"
}
6.2 Получение одобренных сообщений
GET /api/messages/approved
{
"messages": [
{
"id": "123",
"text": "Одобренный или отредактированный текст",
"created_at": "2026-01-08T10:15:00Z"
}
]
}
Возвращаются исключительно сообщения со статусом approved.
6.3 Получение системного статуса
GET /api/system/status
{
"is_blocked": true,
"system_message": "Временно недоступно"
}
7. Автоматическая проверка сообщений через ИИ (опционально)
Автоматическая проверка текстов через OpenAI API.
Результат проверки сохраняется и доступен модератору.
ИИ не принимает окончательного решения, лишь помогает модерации.
8. Ограничения и защита
Ограничение длины сообщения (рекомендуется до 160–240 символов).
Базовая защита от спама (rate-limit).
Валидация входных данных.
9. Ожидаемый результат (MVP)
Работающий бэкенд с минимальным API для клиента.
Простая админка с одной ролью.
Быстрое развертывание на ПК.
Возможность легко передать поддержку другому разработчику.
Готовность к работе как в локальной сети, так и через интернет.