- Детальное описание процесса создания PDF генератора - Решение проблемы с кириллицей (Helvetica → DejaVu) - Статистика по Орловской области - Технические детали и дизайн - Выводы и рекомендации
9.1 KiB
9.1 KiB
Лог сессии: Создание PDF отчётов с графиками
Дата: 28 октября 2025, 00:00 - 00:30
Регион: Орловская область
Задача: Генерация пресс-релиза в формате PDF с графиками и заключением
🎯 Цель
Создать красивый PDF отчёт с графиками и заключением по результатам аудита гостиничной индустрии Орловской области для использования в пресс-релизах и презентациях.
📊 Исходные данные
- Регион: Орловская область
- Всего действующих отелей: 64
- Проведено аудитов: 29
- Средний балл соответствия: 42.1%
- Отелей с сайтами: 29 (100%)
- Отелей с баллом ≥50%: 7 (24.1%)
✅ Выполненные задачи
1. Анализ требований (00:00)
- Пользователь запросил пресс-релиз с графиками и заключением
- Определены требования: Excel + PDF с визуализацией
2. Создание генератора PDF (00:05-00:15)
Файл: create_pdf_report.py
Функционал:
- Подключение к PostgreSQL БД
- Сбор статистики по аудиту
- Генерация 3 типов графиков через matplotlib:
- Pie chart — распределение отелей по баллам соответствия
- Bar chart — топ-10 критериев (найдено/не найдено)
- Summary bar chart — общая статистика аудита
Структура PDF:
- Титульная страница
- Введение с описанием аудита
- Основные результаты (статистика)
- График 1: Распределение по баллам
- Топ-5 успешных критериев
- Топ-5 проблемных критериев
- График 2: Детализация по критериям
- График 3: Сводная статистика
- Заключение с выводами
3. Проблема с кириллицей (00:20)
Проблема:
- Helvetica (стандартный шрифт reportlab) не поддерживает кириллицу
- Текст отображался как чёрные прямоугольники
Решение:
- Подключены системные шрифты DejaVu Sans/DejaVu Serif
- Путь:
/usr/share/fonts/truetype/dejavu/ - Зарегистрированы через
pdfmetrics.registerFont(TTFont(...)) - Обновлены все стили на DejaVu шрифты
Код:
pdfmetrics.registerFont(TTFont('DejaVuSans', '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'))
pdfmetrics.registerFont(TTFont('DejaVuSans-Bold', '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'))
4. Генерация отчётов (00:25)
Созданы файлы:
-
experimental_report_20251027_235235.xlsx— Excel (47 KB)- Дашборд с графиками
- Детальная таблица по 29 отелям
- 18 критериев в горизонтальном формате
-
audit_report_orel_20251028_003022.pdf— PDF (259 KB, 5 страниц)- Шрифт DejaVu Sans с кириллицей
- 3 графика высокого разрешения (150 DPI)
- Профессиональное оформление
5. Отправка в Git (00:30)
Commit: 54e2206
✨ Добавлен генератор PDF отчетов с графиками и поддержкой кириллицы
- Создан create_pdf_report.py для генерации PDF отчётов
- Поддержка кириллицы через DejaVu Sans шрифты
- 3 типа графиков: распределение по баллам, топ-10 критериев, общая статистика
- Отчёт для Орловской области: 259KB, 5 страниц
- Обновлен create_horizontal_report.py
Отправлено в Gitea:
create_pdf_report.py(новый)audit_report_orel_20251028_003022.pdf(новый)create_horizontal_report.py(обновлён)
📈 Статистика по критериям
Топ-5 успешных критериев
- Юридическая идентификация и верификация
- Адрес
- Контакты
- Цены/прайс
- Способы оплаты
Топ-5 проблемных критериев
- Актуальность документов
- Уголок потребителя
- Команда/сотрудники
- Партнеры/бренды
- Доступность для ЛОВЗ
🛠 Технические детали
Используемые библиотеки
psycopg2 # Подключение к PostgreSQL
matplotlib 3.6.3 # Генерация графиков
reportlab # Создание PDF
Pillow # Обработка изображений
Алгоритм генерации
- Подключение к БД и загрузка данных
- Анализ критериев и подсчёт статистики
- Генерация графиков в PNG (temp_chart1/2/3.png)
- Сборка PDF через reportlab platypus
- Удаление временных файлов
Особенности реализации
- Автоматическое определение путей через
os.path.dirname(os.path.abspath(__file__)) - Безопасная очистка временных файлов после создания PDF
- Динамическая генерация контента на основе БД
- Цветовое кодирование: зелёный (успех), жёлтый (средне), красный (проблема)
📁 Структура файлов
Генераторы отчётов
create_horizontal_report.py— универсальный генератор Excel (для любого региона)create_pdf_report.py— генератор PDF с графиками (NEW)
Отчёты
experimental_report_20251027_235235.xlsx— Excel для Орловской областиaudit_report_orel_20251028_003022.pdf— PDF для Орловской области
Утилиты
audit_orel_to_excel.py— запуск аудита через n8n webhookcheck_db.py— проверка статистики в БД
🎨 Дизайн PDF
Цветовая схема
- Заголовки: #1f4788 (тёмно-синий)
- Подзаголовки: #2c5aa0 (синий)
- Акценты: #4a90e2 (голубой)
- Текст: #333333 (тёмно-серый)
Графики
- 0-25%: #ff6b6b (красный)
- 26-50%: #ffa726 (оранжевый)
- 51-75%: #66bb6a (зелёный)
- 76-100%: #42a5f5 (синий)
Размеры
- Формат: A4 (210×297 мм)
- Отступы: 72pt (2.54 см)
- Шрифт заголовка: 20pt DejaVuSans-Bold
- Шрифт текста: 11pt DejaVuSans
- Разрешение графиков: 150 DPI
💡 Выводы и рекомендации
Положительные результаты
- 100% отелей имеют рабочие сайты
- Высокий уровень юридической идентификации
- Хорошая доступность контактной информации
Области для улучшения
- Актуализация документов на сайтах
- Внедрение уголка потребителя
- Информация о сотрудниках и команде
- Партнёрская информация
- Доступность для маломобильных групп
Средний балл 42.1%
Указывает на необходимость дальнейшей работы по совершенствованию доступности информации для гостей.
🔗 Ссылки
- Gitea: http://147.45.146.17:3002/negodiy/hotels
- Commit:
54e2206 - БД: 147.45.189.234:5432/default_db
📝 Примечания
- PDF файл подготовлен для печати и презентаций
- Все данные актуальны на момент формирования отчёта
- Шрифты DejaVu обеспечивают корректное отображение кириллицы
- Графики сохраняются в высоком разрешении для качественной печати
Статус: ✅ Завершено
Время выполнения: ~30 минут
Результат: 2 файла отчётов (Excel + PDF) готовы к публикации