48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# Zadanie rekrutacyjne
|
|
|
|
## Opis projektu
|
|
Aplikacja służy do przetwarzania zgłoszeń serwisowych z pliku JSON, ich klasyfikacji (Przeglądy vs. Awarie) oraz walidacji danych. Wynikiem działania są trzy pliki JSON podzielone według typu oraz poprawności danych.
|
|
|
|
### Kluczowe funkcjonalności:
|
|
- **Klasyfikacja**: Automatyczne rozróżnianie typu zgłoszenia na podstawie fraz w opisie.
|
|
- **Logika Priorytetów**: Dynamiczne przypisywanie priorytetów (krytyczny, wysoki, normalny) na podstawie treści zgłoszenia.
|
|
- **Obsługa Dat**: Obliczanie numeru tygodnia ISO dla przeglądów oraz ustalanie statusów na podstawie dostępności daty.
|
|
- **Walidacja**: Restrykcyjne podejście do formatu numerów telefonów i poprawności dat.
|
|
- **Obsługa Duplikatów**: Pomijanie powtarzających się zgłoszeń o tym samym opisie.
|
|
- **Logging**: Dedykowany kanał logów storage/logs/parser.log dla błędów procesowania.
|
|
|
|
## Architektura
|
|
Projekt został przygotowany zgodnie z zasadami SOLID i czystego kodu:
|
|
- **InputEntity (DTO)**: Warstwa walidacji i czyszczenia surowych danych wejściowych.
|
|
- **Service Layer**: Centralne miejsce logiki biznesowej, niezależne od interfejsu (CLI).
|
|
- **Entities**: Obiekty Inspection i FailureReport hermetyzują logikę specyficzną dla danego typu zgłoszenia.
|
|
- **Enums**: Wykorzystanie PHP Enums dla statusów i priorytetów (bezpieczeństwo typów).
|
|
|
|
## Wymagania
|
|
- Docker & Docker Compose (zalecany Docker Desktop v2.x)
|
|
- *Alternatywnie: PHP 8.3+, Composer*
|
|
|
|
## Uruchomienie (Docker - zalecane)
|
|
|
|
1. **Budowa obrazu:**
|
|
docker compose build
|
|
|
|
2. **Przetworzenie pliku:**
|
|
Umieść plik źródłowy w katalogu projektu i uruchom:
|
|
docker compose run --rm app php artisan app:parse-entries {nazwa_pliku.json}
|
|
*Wyniki pojawią się w katalogu ./output/.*
|
|
|
|
3. **Uruchomienie testów:**
|
|
docker compose run --rm app php artisan test
|
|
|
|
## Uruchomienie lokalne
|
|
- composer install
|
|
- php artisan app:parse-entries {path_to_file.json}
|
|
- php artisan test
|
|
|
|
## Testy
|
|
Projekt posiada wysokie pokrycie testami, podzielone na:
|
|
- **Unit Tests**: Walidacja pól, logika priorytetów, obliczanie tygodni roku.
|
|
- **Feature Tests**: Procesowanie plików przez komendę Artisan, obsługa błędów pliku, generowanie wyników output/.
|
|
|