Files
gorilla/README.md
2026-01-12 12:37:16 +01:00

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