ya-zagruzil-fayly-prikaz-na/prd.md

6.3 KiB
Raw Permalink Blame History

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. Основные сценарии

  1. Сотрудник выходит в отпуск по приказу. HR кладёт приказ (PDF) в папку orders/ и нажимает в интерфейсе «обновить» → система разбирает приказ и добавляет запись в график.
  2. Проверить, кто в отпуске сейчас. Открывается страница — наверху счётчик «В отпуске сейчас».
  3. Найти отпуск конкретного человека. Ввод в поиск ФИО → таблица и карточки фильтруются.
  4. Посмотреть все отпуска одного типа (например, социальные) — фильтр-кнопки над таблицей.

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 снова поднимает всё с сохранёнными данными.