Spring Boot backend для логістичної системи сортування посилок.
Призначення — обробка Excel-файлів, сканування посилок та надання даних через REST API.
- Java 17+
- Spring Boot
- Spring Data JPA
- Spring Security (JWT)
- Lombok
- PostgreSQL / MongoDB (TBD)
- Apache POI (для Excel)
- Logback (логування)
src/ ├── main/java/idhub/sortinpackage/ │ ├── controller/ │ ├── model/ │ ├── repository/ │ ├── service/ │ └── config/ ├── resources/ │ ├── application.yml │ └── logback-spring.xml
- User — користувач системи
- Parcel — посилка
- ScanRecord — запис сканування
| Метод | Ендпоінт | Опис |
|---|---|---|
POST |
/api/auth/login |
Авторизація |
POST |
/api/parcels/upload |
Завантаження Excel |
GET |
/api/parcels/{trackingNumber} |
Отримати посилку |
POST |
/api/scans |
Зберегти сканування |
Ivan Dobroznai
Start: 23.10.2025
- Створено структуру проєкту
- Моделі
- Репозиторії
- Контролери
- Інтеграція Excel
- Авторизація (JWT)
-
Завантаження Excel-файлу
- Оператор завантажує Excel-файл із посилками.
- Поля у файлі:
trackingNumber | gibitNumber | tourNumber. - Посилки імпортуються у базу даних із статусом
PENDING.
-
Відображення списку посилок
- Всі посилки, які ще не відскановані, відображаються у списку.
- Коли оператор сканує посилку, вона змінює статус і переміщується у список відсканованих.
-
Сканування посилки
- Сканер надсилає
trackingNumberна бекенд. - Якщо посилка є в базі, її статус змінюється на
SCANNED. - Повертається інформація про посилку, наприклад,
tourNumber.
- Сканер надсилає
-
Відображення відсканованих посилок
- Повертаються всі посилки зі статусом
SCANNED.
- Повертаються всі посилки зі статусом
-
Очищення бази
- Для тестів або нового завантаження можна очистити всі записи.
| Метод | Ендпоінт | Опис | Відповідь |
|---|---|---|---|
POST |
/api/parcels/upload |
Завантаження Excel-файлу | "Successfully uploaded 256 parcels" |
GET |
/api/parcels/pending |
Отримати всі посилки, які ще не відскановані | [ { trackingNumber, tourNumber, status } ] |
POST |
/api/parcels/scan/{trackingNumber} |
Сканування посилки (оновлення статусу) | { message: "Parcel scanned", tourNumber: "T123" } |
GET |
/api/parcels/scanned |
Повернути всі відскановані посилки | [ { trackingNumber, status: "SCANNED" } ] |
DELETE |
/api/parcels/clear |
Очистити всі записи | "Database cleared" |
Цей опис можна додатково інтегрувати зі Swagger/OpenAPI, щоб одразу тестувати ендпоінти у браузері чи Postman.