prd: документ с требованиями проекта
This commit is contained in:
parent
7df7002b1a
commit
db4a0527fd
77
prd.md
Normal file
77
prd.md
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# 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` снова поднимает всё с сохранёнными данными.
|
||||||
Loading…
Reference in New Issue
Block a user