v1.4.0
Рефакторинг слоёв core / utils без изменения поведения: вывод отчётов .txt/.csv/.html
идентичен побайтово, все тесты и ruff зелёные. Публичные команды и точки входа не менялись.
Изменено
- Устранено дублирование между утилитами; общий код вынесен в переиспользуемые модули:
core/report_html.py— единая тема HTML (BASE_CSS) и каркас страницы (page,tile)
для отчётов статистики и экономики;core/format.py(money/csv_num/pct) иcore/cli.py(run_or_exit);resolve_dbf_pathперенесён вomsreg.coreкак доменно-нейтральный резолвер DBF-пути;utils/_shared/— вспомогательные модули (не вкладки): общий словарь стационара
(stat_common), помощники утилит удаления (removal_common) и построители отчётов
(stat_stacionar_report,stat_economics_report).
stat_economicsбольше не зависит отstat_stacionar(была связь util→util): общий
словарь домена берётся из нейтрального_shared/stat_common.- Рендеринг отчётов отделён от утилит-вкладок:
stat_stacionar.py644→134 строки,
stat_economics.py894→378 (тяжёлый HTML/текст — в_shared/*_report).
Исправлено
- Единые коды возврата CLI: некорректный ввод →
2, выполнено с ошибками по части
файлов →1, успех →0. Раньше утилиты удаления и статистики возвращали разные коды,
а статистика могла дважды печатать текст ошибки (в лог и в stderr). - Синхронизированы докстринг и
--helpстатистики: коды дневного стационара по умолчанию
—10,15,12(справка показывала устаревшее10,15).
Скачайте duct-tape.exe ниже — Python не нужен.
Full Changelog: v1.3.1...v1.4.0