6.3 KiB
6.3 KiB
PRD — «График отпусков»
Продуктовый документ (Product Requirements Document). Описывает, зачем нужен проект, что он делает и как устроен.
1. Цель проекта
Автоматизировать учёт отпусков сотрудников по приказам (PDF). Раньше приходилось открывать каждый приказ вручную и выписывать данные; теперь приказы складываются в папку, а система сама извлекает ФИО, период отпуска, тип и показывает сводный график.
Кому нужно: HR-отдел / отдел кадров, который ведёт график отпусков по приказам.
2. Что делает система (функциональность)
- Читает приказы на отпуск из папки
orders/(файлы PDF). - Извлекает данные автоматически: ФИО, должность, отдел, дата начала и конца отпуска, количество дней, номер и дата приказа, тип отпуска (ежегодный / социальный / экологический).
- Сохраняет данные в файл
vacations.json— переживают перезапуск. - Показывает сводку в браузере:
- статистика сверху (всего сотрудников, в отпуске сейчас, планируется, приказов обработано);
- таблица всех отпусков с поиском по ФИО/должности/отделу и фильтром по типу отпуска;
- карточки сотрудников с полным списком их отпусков.
3. Как устроено (технически)
| Часть | Что это |
|---|---|
server.js |
Сервер на Node.js (стандартный node:http), разбирает PDF и отдаёт данные через API |
orders/ |
Папка, куда кладутся приказы на отпуск (PDF) |
vacations.json |
Файл-хранилище распознанных данных |
index.html |
Интерфейс (статистика, поиск, фильтры, таблица, карточки сотрудников) |
package.json |
Конфигурация запуска (node server.js) |
Данные об одном отпуске (запись в vacations.json)
fullName— ФИО сотрудникаposition— должностьdepartment— отдел (например, «Служба активации сетевых сервисов»)startDate/endDate— начало и конец отпуска (ДД.ММ.ГГГГ)days— количество календарных днейorderNumber/orderDate— номер и дата приказаtype— тип отпуска: «Ежегодный оплачиваемый», «Социальный», «Экологический»fileName— имя исходного PDF-файла
4. Основные сценарии
- Сотрудник выходит в отпуск по приказу. HR кладёт приказ (PDF) в папку
orders/и нажимает в интерфейсе «обновить» → система разбирает приказ и добавляет запись в график. - Проверить, кто в отпуске сейчас. Открывается страница — наверху счётчик «В отпуске сейчас».
- Найти отпуск конкретного человека. Ввод в поиск ФИО → таблица и карточки фильтруются.
- Посмотреть все отпуска одного типа (например, социальные) — фильтр-кнопки над таблицей.
5. API сервера
| Метод | Путь | Что делает |
|---|---|---|
| GET | /api/vacations |
Возвращает список всех отпусков (JSON) |
| GET | /api/refresh |
Заново сканирует папку orders/, перечитывает PDF, сохраняет в vacations.json и возвращает обновлённый список |
6. Известные ограничения (текущая версия)
- Приказ должен быть PDF с текстовым слоем — отсканированные без распознавания PDF распознаются не полностью.
- Распознавание полей (должность, отдел, номер приказа) срабатывает для типовых формулировок приказов; при другой форме текста часть полей может остаться пустой (ФИО, даты и тип обычно заполняются всегда).
- Автозагрузки новых приказов пока нет — после добавления PDF нужно нажать обновление.
- Нет выгрузки в Excel (планируется как доработка).
7. Планы на развитие (backlog)
- Кнопка «Выгрузить в Excel / CSV» для переноса графика в отчётность.
- Улучшенное распознавание должностей, отделов и номеров приказов.
- Поддержка отсканированных PDF (OCR).
- Автоматическое отслеживание новых файлов в папке.
- Редактирование записи вручную (если приказ распознался неточно).
8. Запуск
- Проект запускается командой
run(сервер поднимается на порту3000). - Интерфейс — обычная веб-страница в браузере; данные из API.
- После ~20 минут простоя сервер засыпает — повторный
runснова поднимает всё с сохранёнными данными.