📊 Grafikus — Сводный график дежурств
Настольное приложение для автоматической сборки графиков дежурств врачей стационара из разрозненных файлов (Excel, CSV, PDF, TXT) в единый документ Word с трёхколоночным форматом, готовый к печати и утверждению. Работает портативно: папку с программой и справочниками можно носить с собой.
Возможности
- Сбор данных из файлов отделений:
.xlsx,.xls,.csv,.pdf,.txt. - Автоопределение отделения по содержимому файла и имени (15 отделений с сокращениями: АДМ, ОТВ, ПО, ОАР, ХИР, ГН ХИР, ГИН, УРО, ТРАВМ, ТР П, ЛАБ, НЕВР, РЕНТ, МХГ, ТЕР).
- Специальные парсеры: администрация (площадки, без времени),
ОАР (буквы А/Р/Э + время из предпоследней строки),
хирургия (PDF →
extract_tables), многостраничный Excel (Володарского — листы по месяцам). - Строгая валидация имён врачей (
is_valid_doctor_name) — защита от ложных срабатываний на заголовках («Код» не удаляет «Кодирова»). - Нормализация времени:
9\8,9/8,9-8,09:00-18:00→09-08. - Проверка соответствия месяца и года; список исключённых файлов показывается в интерфейсе и в логе.
- Экспорт: Word (
сводный_график_<месяц>_<год>.docx) + TXT для быстрой проверки + Excel (плоская таблица для аудита). - Печатная форма: 3 колонки, ~48 строк на первой странице, ~59 на остальных; шапка с утверждением, руководителем, площадкой и месяцем.
- Справочники руководителей и площадок — текстовые файлы рядом с exe, правятся в Блокноте.
Порядок отделений в сводном графике
Фиксированный (см. core/config.DEPARTMENT_ORDER):
-
АДМ — администрация (первой строкой после даты, жирным в Word,
со звёздочкой
*в TXT). - ОТВ → ПО → ОАР → ХИР → ГН ХИР → ГИН → УРО → ТРАВМ → ТР П → ЛАБ → РЕНТ → НЕВР → ТЕР → МХГ.
Интерфейс
- Заголовок, поле «Папка с графиками» + кнопка «Обзор…».
- Период: месяц + год (год по умолчанию: текущий, с поправкой на конец декабря — следующий).
- Руководитель и площадка — выпадающие списки из справочников.
- Список файлов в папке + кнопка «Обновить список».
- Большая зелёная кнопка «
🚀 Составить сводный график». - Статусная строка: цветовая индикация (синий/зелёный/красный/оранжевый), клик по успешному статусу открывает папку результата, кнопка «Очистить».
Запуск из исходников
pip install -r requirements.txt
python main.py
Сборка exe
pyinstaller "Сводный график.spec"
Результат: dist/Сводный график.exe. Рядом должны лежать:
spravochnik_rukovoditeli.txt, spravochnik_ploshadki.txt, icon.ico
(или assets/project_logo.ico).
Документация
-
ARCHITECTURE.md— слои, потоки данных, парсеры. -
DIGEST.md— короткая сводка в один экран (для быстрого входа в контекст). -
AI_BRIEF.md— правила и табу для ИИ-ассистента. -
CHANGELOG.md— история версий. -
DEVLOG.md— журнал сессий разработки (включая неудачные ветки). -
TODO.md— открытые задачи. -
QWEN.md— контекст и маркеры целостности для AI-ассистента. -
project_info/manuals/USER_MANUAL.md— инструкция пользователя (markdown). -
project_info/manuals/USER_MANUAL.docx— Word-версия инструкции. -
project_info/manuals/USER_MANUAL.pdf— PDF-инструкция.
Генераторы документации
-
service/docs/make_docs.py— собирает .md и (при возможности) docx+pdf инструкции. -
service/docs/manuals_to_pdf.py— fallback-конвертер md→pdf без Word (fpdf2). -
service/docs/ai_pack.py— упаковка проекта для передачи в чат с ИИ. -
service/run.py— запускатель служебных скриптов из любых папок проекта.
Важно
- Папка
data/(тестовые графики с реальными ФИО) не коммитится в git. - Один входной файл = одно отделение (за редким исключением многостраничного Excel Володарского, где отделения внутри листа).
- Word-файл не перезаписывается, если открыт в Microsoft Word — программа сообщит об этом.
- Документы проекта генерируются скриптами; правятся только в словаре DOCS
файла
service/docs/make_docs.py.
Автор
- Скоков Семён Олегович
- Репозиторий: https://gitverse.ru/skokovso/grafikus