feat(reports): add simplified report builder, fix nan/inf crash and separate unhired/no-pass staff
This commit is contained in:
@@ -2,6 +2,33 @@
|
||||
|
||||
Все важные изменения проекта документируются в этом файле.
|
||||
|
||||
## [3.3.0] — 2026-09-24
|
||||
|
||||
### ✨ Добавлено (Added)
|
||||
- **Генератор «Упрощенного отчета» (`services/reports/simplified_builder.py`):**
|
||||
- Формирование суточного файла `Упрощенный отчет за ДД.ММ.ГГГГг..xlsx` с выгрузкой на сетевую шару параллельно с детальным отчетом.
|
||||
- Сокращение полных ФИО до эталонного формата с инициалами (`Иванов И.И.`).
|
||||
- Подстановка официальных текстовых заглушек СКУД `Нет входа (0:00)` и `Нет выхода (23:59)` при отсутствии отметок.
|
||||
- Алфавитная сортировка по подразделениям и сотрудникам, форматирование сетки `Calibri 11` с числовым форматом времени `h:mm`.
|
||||
- **Разделы сводки «Не приняты на работу» и «Нет пропуска»:**
|
||||
- В `services/scud_etl/merger.py` и `services/reports/svodka_builder.py` выделена категория физлиц, присутствующих в СКУД, но еще не оформленных в 1С:ЗУП (`not_hired_yet`).
|
||||
- Сотрудники штата без карт доступа теперь явно направляются в блок «Нет пропуска» (`no_scud_pass`).
|
||||
|
||||
### 🔧 Изменено (Changed)
|
||||
- **Исключение не принятых на работу из табеля:**
|
||||
- В `services/reports/otchet_builder.py` сотрудники без проведенного приказа о приеме в 1С исключены из таблицы детального суточного отчета за вчера.
|
||||
- **Восстановление аббревиатур подразделений:**
|
||||
- В `merger.py` восстановлен приоритет компактных названий отделов из базы СКУД Орион (`ОАН`, `ПУ`, `ОИЗ`, `ОА`, `ИГТЛЛ` и др.) взамен длинных кадровых формулировок 1С.
|
||||
- **Инфраструктура нового сервера (Debian 12):**
|
||||
- Исправлены пути виртуального окружения `/home/apushkov/projects/scud_ai/venv/bin/python` в cron-скриптах.
|
||||
- Настроено автоматическое CIFS-монтирование шары отчетов в `/etc/fstab` с правами пользователя `apushkov`.
|
||||
|
||||
### 🛡️ Исправлено (Fixed)
|
||||
- **Сбой генерации детального отчета (`TypeError: NAN/INF not supported`):**
|
||||
- В `otchet_builder.py` включен параметр книги `nan_inf_to_errors: True` и внедрена санитизация пустых ячеек `NaN`/`None`, исключающая аварийное завершение `write_number()`.
|
||||
- **Предупреждения Pandas в логах:**
|
||||
- Устранены ошибки `Boolean Series key will be reindexed to match DataFrame index` в `merger.py` за счет изоляции расчета масок от `df_staff_only`.
|
||||
|
||||
## [2.5.8] - 2026-09-10
|
||||
|
||||
### Добавлено (Added)
|
||||
|
||||
@@ -193,4 +193,24 @@
|
||||
- Настройка безопасного монтирования только необходимых CSV/Parquet-файлов данных в режиме Read-Only[cite: 2].
|
||||
- [ ] **Динамические Python/Pandas вычисления:**
|
||||
- Инструмент генерации и безопасного выполнения скриптов агрегации и аналитики данных СКУД / 1С на лету[cite: 2].
|
||||
- Перехват stdout/stderr, сбор результатов расчетов и графиков с передачей в UI-чата[cite: 2].
|
||||
- Перехват stdout/stderr, сбор результатов расчетов и графиков с передачей в UI-чата[cite: 2].
|
||||
|
||||
---
|
||||
|
||||
## 17. Миграция инфраструктуры, отказоустойчивость отчетов и Упрощенный отчет `[ЗАВЕРШЕНО]`
|
||||
- [x] **Миграция на новый сервер (Debian 12):**
|
||||
- Актуализация путей виртуального окружения в cron-скриптах (`scripts/cron/*.sh`).
|
||||
- Восстановление прямого подключения к базе 1С:ЗУП (MS SQL Server `ACCOUNT-01`).
|
||||
- Настройка автоматического CIFS-монтирования шары отчетов `//storage/SCUD/Отчеты` в `/etc/fstab` с правами пользователя.
|
||||
- [x] **Разделение статусов наличия в кадровых реестрах (`merger.py`):**
|
||||
- Выделение сотрудников, заведенных в СКУД, но не принятых в ЗУП (`not_hired_yet = True`), в отдельный раздел сводки **«Не приняты на работу»**.
|
||||
- Полное исключение непринятых сотрудников из детального суточного табеля за прошлые смены.
|
||||
- Обособление штатных сотрудников без карт СКУД (`no_scud_pass = True`) в раздел **«Нет пропуска»** с исключением их из «Неизвестных».
|
||||
- Устранение предупреждений `UserWarning: Boolean Series key will be reindexed` при вычислении метрик штата.
|
||||
- [x] **Стабилизация генерации Excel-книг (`otchet_builder.py`):**
|
||||
- Включение защитной опции `nan_inf_to_errors: True` в `xlsxwriter.Workbook`.
|
||||
- Полная санитарная очистка ячеек от значений `NaN` / `None` / `pd.NA` перед записью, устранившая критический сбой `TypeError: NAN/INF not supported in write_number()`.
|
||||
- [x] **Генератор «Упрощенного отчета» (`services/reports/simplified_builder.py`):**
|
||||
- Создание нового генератора по эталонному формату: заголовок `Упрощенный отчет: c ДД.ММ.ГГГГ по ДД.ММ.ГГГГ`, сокращение ФИО до инициалов (`Фамилия И.О.`), отображение времени с текстовыми заглушками (`Нет входа (0:00)`, `Нет выхода (23:59)`).
|
||||
- Сортировка по подразделениям и алфавиту сотрудников.
|
||||
- Интеграция этапа сборки упрощенного отчета за вчера в ETL-конвейер (`main_etl.py`).
|
||||
Reference in New Issue
Block a user