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