init
This commit is contained in:
47
README.md
Normal file
47
README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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/.
|
||||
|
||||
Reference in New Issue
Block a user