# 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/.