4. База Данных (Схема)
Используется PostgreSQL. Основные таблицы:
events (Главная таблица событий)
- id: Primary Key
- event_type: Тип (ДТП, Работы, Погода...)
- road_name, km: Местоположение
- description: Текст описания
- status: Статус (Новое, В работе, Завершено)
- injured, dead: Статистика пострадавших (Integer) — Важно!
- tg_message_id: ID сообщения в ТГ (для связки Reply)
- tg_chat_id: ID чата
- created_at: Таймштамп
event_updates (История переписки)
- event_id: FK на events
- text: Текст уточнения
event_attachments (Фото)
- event_id: FK на events
- file_path: Путь к файлу на диске (например uploads/uuid.jpg)
5. Ключевая логика работыА. Ввод данных (Bot)
- Создание: Диспетчер нажимает кнопку, выбирает тип и трассу, вводит КМ.
- Парсинг: Бот ищет в описании фразы типа "пострадавших 2", "погибших 1" и пишет их в колонки injured/dead.
- Уточнения: Диспетчер делает Reply (Ответ) на сообщение бота.
- Если текст — добавляется запись в историю + обновляется статус (если есть слова "устранено", "в работе").
- Если фото — сохраняется в папку uploads/ и привязывается к событию.
Б. Отображение (Frontend + API)
- Frontend опрашивает API (/events и /stats/chart) каждые 3 секунды.
- Плитки KPI: Фильтруют таблицу по клику (ДТП, Работы, Погода и т.д.).
- Модальное окно: При клике на строку таблицы открывается попап с деталями, фото и историей переписки.