2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00
2026-01-12 12:37:16 +01:00

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/.
Description
No description provided
Readme 111 KiB
Languages
Blade 51.1%
PHP 48.2%
JavaScript 0.3%
CSS 0.2%
Dockerfile 0.2%