name: telegram-worklog description: Сбор данных о выполненных работах с участков через Telegram-бот. Используй когда пользователь говорит "журнал производства работ", "ежедневный отчёт", "данные с участка", "отчёт прораба", "телеграм журнал", "сбор данных с участков", "электронный журнал работ".
Telegram Work Log — Электронный журнал производства работ
Назначение
Сбор ежедневных отчётов о выполненных работах с участков через Telegram-бот:
- Приём данных от прорабов и мастеров
- Структурирование информации о работах
- Хранение в базе данных
- Экспорт для анализа и отчётов
- Интеграция с progress-tracker для план/факт анализа
Структура отчёта
Обязательные поля
- Проект — название или код проекта
- Участок/Секция — место выполнения работ
- Дата — дата выполнения работ
- Выполненные работы — описание выполненных работ
- Объёмы — количество с единицами измерения (м³, м², м, шт, тонн)
Дополнительные поля
- Персонал — количество человек, ФИО ключевых специалистов
- Техника — используемая техника и оборудование
- Погода — погодные условия (температура, осадки, ветер)
- Проблемы/Риски — выявленные проблемы или риски
- План на завтра — запланированные работы на следующий день
- Фото/Документы — прикреплённые файлы
Формат сообщений в Telegram
Вариант 1: Пошаговый диалог (рекомендуется)
Бот задаёт вопросы последовательно, пользователь отвечает:
Бот: 📝 Начало отчёта о работах
Выберите проект:
[Кнопка: Мост №5] [Кнопка: Развязка] [Кнопка: Другое]
Пользователь: [Нажимает "Мост №5"]
Бот: Укажите участок/секцию:
(например: "Опоры 1-3", "Пролёт 2", "Участок А")
Пользователь: Опоры 1-3
Бот: Какие работы выполнены сегодня?
(опишите подробно)
Пользователь: Бетонирование опор №1 и №2, установка арматуры на опору №3
Бот: Укажите объёмы выполненных работ:
(формат: количество + единица, например: "50 м³", "120 м²")
Пользователь: 45 м³ бетона, 2.5 тонн арматуры
Бот: Количество персонала?
(например: "5 человек" или "Бригада Иванова - 5 чел.")
Пользователь: 5 человек
Бот: Использовалась техника?
(например: "Бетононасос, кран 25т" или "Нет")
Пользователь: Бетононасос, кран 25т
Бот: Погодные условия?
(например: "Ясно, +5°C" или "Дождь, +2°C")
Пользователь: Ясно, +5°C
Бот: Были проблемы или риски?
(опишите или напишите "Нет")
Пользователь: Нет
Бот: План работ на завтра?
(опишите или напишите "Без изменений")
Пользователь: Бетонирование опоры №3, подготовка к монтажу пролёта
Бот: Прикрепите фото (если есть) или нажмите "Пропустить"
Пользователь: [Прикрепляет фото или нажимает "Пропустить"]
Бот: ✅ Отчёт сохранён!
ID: #12345
Проект: Мост №5
Участок: Опоры 1-3
Дата: 26.01.2026
Отчёт будет доступен для просмотра администраторам.
Вариант 2: Структурированное сообщение (для опытных пользователей)
Пользователь отправляет одно сообщение в структурированном формате:
/отчёт
Проект: Мост №5
Участок: Опоры 1-3
Дата: 26.01.2026
Работы: Бетонирование опор №1 и №2, установка арматуры на опору №3
Объёмы: 45 м³ бетона, 2.5 тонн арматуры
Персонал: 5 человек
Техника: Бетононасос, кран 25т
Погода: Ясно, +5°C
Проблемы: Нет
План на завтра: Бетонирование опоры №3, подготовка к монтажу пролёта
Бот парсит структурированное сообщение и сохраняет данные.
Workflow обработки
Шаг 1: Приём данных
- Пользователь запускает бота командой
/startили/отчёт - Бот определяет роль пользователя (прораб, мастер, администратор)
- Для прорабов/мастеров — запускается процесс создания отчёта
- Для администраторов — показывается меню управления
Шаг 2: Валидация данных
Проверка обязательных полей:
- Проект должен существовать в системе
- Дата не может быть в будущем (или не более чем на 1 день вперёд)
- Объёмы должны содержать число и единицу измерения
- Работы не должны быть пустыми
Шаг 3: Сохранение в БД
Структура таблицы work_reports:
CREATE TABLE work_reports (
id INTEGER PRIMARY KEY AUTOINCREMENT,
report_id TEXT UNIQUE NOT NULL, -- Уникальный ID отчёта (#12345)
project_name TEXT NOT NULL,
section TEXT NOT NULL,
report_date DATE NOT NULL,
work_description TEXT NOT NULL,
volumes TEXT, -- JSON: [{"value": 45, "unit": "м³", "material": "бетон"}]
personnel_count INTEGER,
personnel_details TEXT,
equipment TEXT,
weather TEXT,
issues TEXT,
next_day_plan TEXT,
attachments TEXT, -- JSON: [{"type": "photo", "file_id": "..."}]
reporter_telegram_id INTEGER NOT NULL,
reporter_name TEXT,
status TEXT DEFAULT 'submitted', -- submitted, approved, rejected
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
approved_at TIMESTAMP,
approved_by INTEGER
);
Шаг 4: Уведомления
После сохранения:
- Подтверждение пользователю с ID отчёта
- Уведомление администраторам (если настроено)
- Интеграция с progress-tracker для обновления фактических данных
Административные команды
Просмотр отчётов
/reports_today — список всех отчётов за сегодня
/report <ID> — детальная информация об отчёте
/reports_project <название> — отчёты по проекту
/reports_date <дата> — отчёты за дату (формат: ДД.ММ.ГГГГ)
Экспорт данных
/export_today — экспорт всех отчётов за сегодня в CSV
/export_date <дата> — экспорт за дату
/export_project <название> — экспорт по проекту
Управление
/approve <ID> — одобрить отчёт
/reject <ID> <причина> — отклонить отчёт с причиной
/users — список пользователей
/stats — статистика по отчётам
Формат экспорта CSV
ID,Дата,Проект,Участок,Работы,Объёмы,Персонал,Техника,Погода,Проблемы,План на завтра,Автор,Статус
#12345,26.01.2026,Мост №5,Опоры 1-3,"Бетонирование опор №1 и №2, установка арматуры на опору №3","45 м³ бетона, 2.5 тонн арматуры",5 человек,Бетононасос кран 25т,Ясно +5°C,Нет,"Бетонирование опоры №3, подготовка к монтажу пролёта",Иванов И.И.,submitted
Интеграция с другими скиллами
progress-tracker
После сохранения отчёта автоматически:
- Извлекаются объёмы выполненных работ
- Обновляются фактические данные в progress-tracker
- Пересчитываются индексы SPI/CPI
- Генерируются алерты при отклонениях
deviation-alert
При обнаружении проблем в отчёте:
- Автоматическое создание алерта
- Уведомление руководителя проекта
- Эскалация критических проблем
gantt-planner
Объёмы из отчётов используются для:
- Обновления фактического прогресса в графике Ганта
- Корректировки сроков при необходимости
Примеры использования
Пример 1: Создание отчёта
Пользователь: /отчёт
Claude (через бота):
📝 Начало отчёта о работах
Выберите проект:
[Мост №5] [Развязка] [Дорога А-123]
[Пользователь выбирает проект и заполняет данные]
✅ Отчёт сохранён!
ID: #12345
Проект: Мост №5
Участок: Опоры 1-3
Дата: 26.01.2026
Данные переданы в систему мониторинга.
Пример 2: Просмотр отчётов администратором
Администратор: /reports_today
Бот:
📊 Отчёты за сегодня (26.01.2026)
1. #12345 — Мост №5, Опоры 1-3
Работы: Бетонирование опор
Объёмы: 45 м³ бетона
Автор: Иванов И.И.
Статус: ✅ Подтверждён
2. #12346 — Развязка, Участок Б
Работы: Укладка асфальта
Объёмы: 120 м²
Автор: Петров П.П.
Статус: ⏳ На проверке
Всего: 2 отчёта
Пример 3: Экспорт данных
Администратор: /export_today
Бот:
📥 Генерация CSV файла...
[Отправляет файл work_reports_2026-01-26.csv]
✅ Экспортировано 2 отчёта
Файл готов для импорта в Excel или 1С:PM
Выходные документы
- work_reports_[дата].csv — экспорт отчётов за дату
- work_reports_[проект].csv — экспорт по проекту
- work_reports_summary_[период].xlsx — сводный отчёт (через xlsx skill)
Безопасность и права доступа
Роли пользователей
- Прораб/Мастер — может создавать отчёты, просматривать свои отчёты
- Руководитель проекта — может просматривать отчёты по своим проектам, одобрять/отклонять
- PMO/Администратор — полный доступ ко всем отчётам, экспорт, статистика
Валидация
- Проверка существования проекта
- Проверка прав доступа к проекту
- Валидация формата данных
- Защита от дублирования отчётов (один отчёт на участок в день)