Zadanie:
Zaprojektuj i zaimplementuj system do rozwiązywania problemu komiwojażera.
System powinien się składać z klienta oraz serwera do przetwarzania zapytań.
Problem komiwojażera może występować w różnych wariantach: z oknamy czasowymi dla punktów oraz załadunkami.
Algorytm znajdujący rozwiązanie może być prosty (np. heurystyczne generowanie pierwszego rozwiązania i próby wymian wierzchołków) - oceniana
będzie jakość architektury.
Podstawowe założenia:
1) Rozszerzalność formatu danych wejściowych (domyślnie JSON zawierający odległości między punktami).
Dodanie dodatkowych danych do zapytania powinno być proste (nie naruszać istniejącego kodu).
Aby zachować spójność wygenerowanych typów należy użyć abstrakcyjnej fabryki do generowania obiektów
walidujących przychodzące/wychodzące dane oraz klasy rdzenia aplikacji.
2) Swobodny zapis wyników/problemów. Interfejsy zapisu do bazy danych.
3) Bezsesyjność - klient dostaje token na podstawie którego można pobrać po pewnym czasie wyniki.
4) Możliwość dekorowania rozwiązań informacjami o czasie przejazdu itp.

Projekt powinien zawierać zrzut z repozytorium (bądź dostęp do niego), nawet jeśli jest wykonywany przez jedną osobę.
Dodatkowo należy stworzyć dokumentację (UML) oraz przprowadzić testy (jednostkowe i integracyjne).