G

grafikus

📊 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):

  1. АДМ — администрация (первой строкой после даты, жирным в Word, со звёздочкой * в TXT).
  2. ОТВ → ПО → ОАР → ХИР → ГН ХИР → ГИН → УРО → ТРАВМ → ТР П → ЛАБ → РЕНТ → НЕВР → ТЕР → МХГ.

Интерфейс

  • Заголовок, поле «Папка с графиками» + кнопка «Обзор…».
  • Период: месяц + год (год по умолчанию: текущий, с поправкой на конец декабря — следующий).
  • Руководитель и площадка — выпадающие списки из справочников.
  • Список файлов в папке + кнопка «Обновить список».
  • Большая зелёная кнопка «🚀 Составить сводный график».
  • Статусная строка: цветовая индикация (синий/зелёный/красный/оранжевый), клик по успешному статусу открывает папку результата, кнопка «Очистить».

Запуск из исходников

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.

Автор