docs-staff-list — сводный список сотрудников
Создавать один .xlsx с колонками:
| № | Сотрудник | Дата рождения | Должность | Подразделение | Филиал |
|---|
Использовать scripts/normalize.py. Не классифицировать форматы вручную до запуска --probe.
1. Определить вход
Собрать переданные .xls/.xlsx. Если для одного филиала есть основной, внешний и объединённый варианты, выбрать один файл с нужным охватом — обычно объединённый. Не включать готовый общий сводный вместе с филиальными файлами.
При новой или непонятной структуре прочитать references/formats.md.
2. Выполнить probe
python3 scripts/normalize.py --probe --input-dir "/path/to/input"
Для выбранных файлов:
python3 scripts/normalize.py --probe \
--input-dir "/path/to/input" \
--files "branch-a.xlsx" "branch-b.xls"
Проверить для каждого файла формат, число строк и источник филиала. Если филиал угадан из имени, задать человекочитаемое значение через --branch-map.
3. Выбрать выход
Прочитать ~/.docs-plugin/org_details.md, если он существует.
- Если
staff_fileуказывает на каталог, создать в нём датированную подпапку и сводный файл:<staff_file>/<ДД.ММ.ГГГГ>/Сводный список сотрудников <ДД.ММ.ГГГГ>.xlsx. - Если
staff_fileуказывает на конкретный файл или не задан, выбрать явный путь в папке текущей задачи. - Всегда передавать итоговый путь через
--output. Не перезаписывать существующий файл без явной просьбы.
4. Создать сводный
python3 scripts/normalize.py \
--input-dir "/path/to/input" \
--files "branch-a.xlsx" "branch-b.xls" \
--branch-map "branch-a.xlsx:Филиал А;branch-b.xls:Филиал Б" \
--title "Сводный список сотрудников 10.08.2026" \
--output "/path/to/output/Сводный список сотрудников 10.08.2026.xlsx"
Переопределения использовать только после ошибочного probe:
--format-map "file.xls:shtatnaya"— задать формат;--year-only "file.xlsx"— сохранить только год рождения;--date-col "file.xls:4"— задать индекс колонки даты;--dedup— удалить повторы по ФИО и дате рождения, только после осмысленной проверки дублей.
По умолчанию дубли сохранять: один человек может занимать несколько должностей.
5. Проверить результат
- Сверить итоговое число строк и разбивку по филиалам с probe.
- Добиться
Верификация: OKлибо разобрать каждую проблему. - Просмотреть все изменённые ФИО и исключить ложные срезы.
- Проверить группы дублей.
- Открыть итоговый
.xlsx: заголовки находятся в строке 3, фильтр включён, закрепление —A4.
Исходники не перемещать и не удалять без явной просьбы.
Зависимости
Python 3.8+, pandas, openpyxl; для чтения .xls также нужен xlrd.