You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OTSKVMBot — Telegram-бот для инженеров технического сопровождения конгрессно-выставочных мероприятий СПбПУ. Бот позволяет быстро отмечать состояние аудиторий, отслеживать проблемы, координировать работу и интегрироваться с Google Calendar.
Проект разработан для автоматизации процессов отдела и перехода от реактивного обслуживания к проактивному управлению инфраструктурой.
🎯 Возможности
📊 Учёт статусов аудиторий
✅ Быстрая отметка состояния аудиторий (/status)
✅ Визуальные статусы: 🟢 green (всё ок), 🟡 yellow (проблемы), 🔴 red (не работает)
✅ Комментарии к проблемным статусам
✅ Просмотр текущего статуса при выборе аудитории
✅ История изменений для аналитики
👥 Командная работа
✅ Постоянное меню в отдельном топике
✅ Уведомления об изменениях статусов в общий чат
✅ Назначение ответственных на мероприятия (/assign)
Позволяет проверить формат и содержимое до реальной рассылки
📊 Тест дневного отчёта
Отправляет тестовый дневной отчёт со статистикой
Показывает количество подтверждённых, ожидающих и выполненных мероприятий
🔄 Принудительная синхронизация
Запускает синхронизацию с Google Calendar вне графика
Полезно после добавления новых событий
📋 Статистика базы данных
Показывает текущее состояние всех таблиц:
Количество пользователей
Количество аудиторий
Количество записей статусов
Количество событий календаря
Количество назначений
Количество уведомлений
🔒 Безопасность
Административная панель доступна только пользователям с ролью superadmin.
Для всех остальных ролей (admin, manager, engineer, viewer) эта кнопка не отображается.
🚀 Планы по развитию админ-панели
Управление пользователями (просмотр, изменение ролей)
Редактирование аудиторий через интерфейс
Просмотр логов ошибок
Ручной запуск фоновых задач
Настройка параметров бота на лету
Создание бэкапов базы данных
🛠 Технологический стек
Компонент
Технология
Версия
Язык программирования
Python
3.14
Telegram Bot API
python-telegram-bot
22.2
База данных
PostgreSQL
18.x
Асинхронный драйвер
asyncpg
0.30.0
Google Calendar API
google-api-python-client
2.150.0
Транслитерация
cyrtranslit
0.9.2
Конфигурация
python-dotenv
1.2.0
Детальное описание таблиц
1. users — пользователи системы
Поле
Тип
Описание
telegram_id
BIGINT (PK)
ID пользователя в Telegram
full_name
VARCHAR(100)
Имя для отображения
username
VARCHAR(100)
@username в Telegram
role
VARCHAR(20)
admin / manager / engineer / viewer
created_at
TIMESTAMP
Когда зарегистрировался
last_active
TIMESTAMP
Последняя активность
is_active
BOOLEAN
Не уволен ли
Роли пользователей
Роль
Описание
Доступ
superadmin
Разработчик, администратор системы
🔥 Полный доступ ко всем функциям, включая админ-панель
admin
Начальник управления, проджект-менеджер
📊 Только просмотр статистики
manager
Начальник отдела
🎯 Полное операционное управление
engineer
Инженеры
🔧 Базовые операции
viewer
Внешние наблюдатели
👁️ Только просмотр
2. auditories — аудитории
Поле
Тип
Описание
id
SERIAL (PK)
Внутренний ID
name
VARCHAR(50)
Номер аудитории ('501', '315')
building
VARCHAR(50)
Корпус
floor
INTEGER
Этаж
equipment
TEXT
Описание оборудования
notes
TEXT
Заметки
is_active
BOOLEAN
Не списана ли
3. status_log — история статусов (ядро системы)
Поле
Тип
Описание
id
SERIAL (PK)
auditory_id
INTEGER (FK)
Аудитория
status
VARCHAR(10)
green / yellow / red
comment
TEXT
Описание проблемы
reported_by
BIGINT (FK)
Кто отметил
created_at
TIMESTAMP
Когда отметили
equipment_type
VARCHAR(50)
Тип оборудования
problem_category
VARCHAR(50)
Категория проблемы
resolved_at
TIMESTAMP
Когда починили
resolution_comment
TEXT
Как починили
4. calendar_events — мероприятия из Google Calendar
Поле
Тип
Описание
id
SERIAL (PK)
google_event_id
VARCHAR(255)
ID из Google Calendar
auditory_id
INTEGER (FK)
Аудитория
title
VARCHAR(255)
Название мероприятия
description
TEXT
Описание
start_time
TIMESTAMP
Начало
end_time
TIMESTAMP
Конец
organizer
VARCHAR(255)
Организатор
status
VARCHAR(20)
confirmed / cancelled / tentative
last_sync
TIMESTAMP
Последняя синхронизация
5. event_assignments — кто ответственный за мероприятие
Поле
Тип
Описание
id
SERIAL (PK)
event_id
INTEGER (FK)
Мероприятие
assigned_to
BIGINT (FK)
Инженер
assigned_by
BIGINT (FK)
Начальник
assigned_at
TIMESTAMP
Когда назначили
role
VARCHAR(30)
primary / secondary / trainee / backup
status
VARCHAR(20)
assigned / accepted / done / cancelled
confirmed_at
TIMESTAMP
Когда инженер подтвердил
completed_at
TIMESTAMP
Когда отработал
Уникальность: один инженер не может быть назначен на одно мероприятие дважды
11. problem_categories — справочник категорий проблем
Поле
Тип
Описание
id
SERIAL (PK)
name
VARCHAR(100)
no_power / no_signal / broken_cable / software
equipment_type_id
INTEGER (FK)
Связь с оборудованием
description
TEXT
About
OTSKVMBot — Telegram-бот для инженеров технического сопровождения конгрессно-выставочных мероприятий СПбПУ. Бот позволяет быстро отмечать состояние аудиторий, отслеживать проблемы, координировать работу и интегрироваться с Google Calendar.