Текущая версия: 3.4
toir_tra_report — настольное приложение на Tkinter для подготовки пакетов документов ТОиР. Программа обрабатывает каталоги с исходными файлами, использует Excel-шаблоны и формирует целевые структуры для передачи в смежные команды.
- v3.4: Изменена логика формирования префиксов (
-MOM-,-C-): теперь они добавляются к имени файла вне зависимости от наличия индекса документа вTZ_glob.xlsx. Исправлена опечатка в префиксе-MOM-. - v3.3: Добавлена логика обработки файлов с меткой
-MOM-(добавление префикса "Записник са састанка Организација рада"). Обновлен список отправителей. - v3.2: Добавлен выбор отправителя трансмиттала с сохранением справочника в
settings.jsonи автозаполнением именованной ячейкиpripmemв шаблоне. - v2.7: Учтена периодичность из
TZ_glob.xlsx(колонка E) при подборе суффиксов и транслитерация значенийМ/Г→M/G. - v2.6: Актуализированы шаблоны формирования документов и настройки UI.
- Подготовка Excel-пакетов (
CT-*-TRA-PRM-*.xlsx) по выбранным статусам. - Выбор и сохранение отправителя трансмиттала с автоматическим заполнением шаблонов.
- Формирование индексных папок: группировка файлов
CT-DR-*по ключам, основанным на колонках B/E/H файлаTZ_glob.xlsxс привязкой суффиксов из колонки G. - Создание ZIP-архивов и опциональное удаление исходных файлов после выгрузки.
- Генерация CMM-комментариев с шаблоном
Template/CommentSheet_Template.xltx. - Быстрый выбор компаний и статусов, сохранение пользовательских путей в
settings.json.
-
Установите Python 3.11+ и создайте виртуальное окружение:
python -m venv .venv .\.venv\Scripts\activate -
Установите зависимости:
pip install -r requirements.txtПри необходимости используйте
pip-compile requirements.inдля обновленияrequirements.txt. -
Запустите приложение:
python toir_tra_report_v1.py
toir_tra_report_v1.py— основной GUI.index_folder_builder.py— логика формирования индексных папок и работы сTZ_glob.xlsx.cmm_builder.py— помощник по CMM-отчётам.Template/— исходные шаблоны и справочникTZ_glob.xlsx.settings.json— пользовательские настройки путей, компаний (company_names) и отправителей трансмитталов (senders).tests/— модульные тесты (pytest).
- Выберите исходный каталог (
CT-DR-*) и целевую папку назначения. - Укажите режим копирования или перемещения файлов.
- При нажатии «Сформировать» выполняется группировка по шаблону
IV.2.3-02-6M:- Колонка B
TZ_glob.xlsx— базовый индекс (с учётом латиницы/кириллицы). - Колонка E — периодичность. Значения
М/мпреобразуются вM,Г/г— вG, остальные символы оставляются как есть. - Колонка H — код Reserved (нормализуется до двух символов).
- Колонка G — возвращаемый суффикс, добавляемый к названию каталога.
- Колонка B
- Итоговая папка формируется как
<индекс>-<reserved>-<periodicity>_<суффикс>, например:I.5.8-02-6M_CT. - Если опция «Группировать по суффиксу» активна, создаются подпапки по суффиксу (например,
CT/I.5.8-02-6M_CT). - При отсутствии строки в
TZ_glob.xlsxдля комбинации (B, E, H) приложение сообщает об ошибке и пропускает группу.
- Выберите папку с шаблонами (должна содержать
Template/template_tra). - Отметьте статус и шаблон для генерации.
- Укажите параметры: архивирование, удаление исходников, выбор компании.
- Выполните запуск и дождитесь сообщений о готовности.
from pathlib import Path
from index_folder_builder import prepare_index_folders
prepare_index_folders(
source_dir=Path("input"),
destination_dir=Path("output"),
tz_file_path=Path("Template/TZ_glob.xlsx"),
use_copy=True,
group_by_suffix=True,
)pyinstaller --onefile --windowed
--name toir_tra_report_v3.4
--icon=assets/icon_toir_tra_report.ico
--add-data "Template;Template"
toir_tra_report_v1.pyПеред сборкой убедитесь, что settings.json и папка Template находятся рядом с исполняемым файлом: приложение ожидает эти данные по относительным путям.
- Запуск модульных тестов:
pytest -q - Линтер:
ruff check . - Форматирование:
black --check . - Статический анализ:
mypy .(потребуются типы дляopenpyxl, напримерpip install types-openpyxl)
- При расхождении между данными
TZ_glob.xlsxи именами файлов цепочка сопоставления потребует ручной корректировки справочника. - Расширенные обозначения периодичности (отличные от
M/G) нужно добавить в таблицу соответствий вindex_folder_builder.py. black --checkиmypyмогут сообщать о проблемах в legacy-модулях (cmm_builder.py,toir_tra_report_v1.py) — устраните их перед публика