Silesian SolutionsPorozmawiajmy o projekcie
Wszystkie realizacje

System dedykowany

Best Assistance

Obsługa zgłoszeń szkody dla firmy assistance: aplikacja działająca w przeglądarce telefonu, panel operacyjny zespołu i strona firmowa. Wszystkie trzy powierzchnie działają na jednym zapleczu i jednym modelu danych, więc zgłoszenie z terenu i sprawa prowadzona przy biurku to ten sam rekord. Ceną tego wyboru jest to, że żadnej z trzech nie da się zmodernizować bez ruszania pozostałych.

Strona firmowa Best Assistance: zakres likwidacji szkód majątkowych i komunikacyjnych.
Strona firmowa. Treści prowadzi ten sam panel, w którym zespół prowadzi sprawy.

Trzy powierzchnie, jedno zaplecze i jeden model danych: aplikacja do zgłaszania szkody, panel operacyjny zespołu i strona firmowa Best Assistance działają na tej samej aplikacji serwerowej. Zgłoszenie z terenu i sprawa prowadzona przy biurku to więc ten sam rekord. Nikt go po drodze nie eksportuje ani nie przepisuje.

Aplikacja w przeglądarce, nie w sklepie

Aplikacja terenowa to PWA w Angularze, na komponentach PrimeNG, z Service Workerem. Działa bez Cordovy, Capacitora czy Ionica. Otwiera się pod adresem i można ją dodać do ekranu głównego telefonu.

Ten wybór zdjął z projektu trzy koszty: osobne wydania na dwa sklepy, kolejkę recenzyjną między poprawką a jej dostarczeniem i drugi zespół do kodu natywnego. Jedno wydanie obsługuje telefon w terenie i komputer w biurze.

Ekran logowania aplikacji Best Assistance Mobile na telefonie
Aplikacja terenowa na telefonie. Za logowaniem zaczyna się obszar, którego publicznie nie pokazujemy.

Service Worker pobiera z góry powłokę aplikacji, czyli dokument startowy, skrypty i arkusze stylów, a resztę dociąga leniwie. Aplikacja startuje więc od razu i nie ściąga się od nowa przy każdym wejściu, co przy słabym zasięgu na miejscu zdarzenia widać natychmiast.

Zasięg jest potrzebny dopiero przy wysyłce. Powłoka jest w pamięci podręcznej, ale samo zgłoszenie idzie na serwer.

Jedno zaplecze pod trzy adresy

Backend to aplikacja w Symfony, z Doctrine i bazą MySQL, podzielona na moduły rozdzielone prefiksem trasy. Pod prefiksem panelu pracują moduły zgłoszeń, użytkowników, korespondencji, raportów i treści, a pod głównym adresem działa strona firmowa razem z modułem CMS. API dla aplikacji terenowej wystawia FOSRestBundle, z dokumentacją generowaną z kodu.

Diagram systemu Best Assistance: aplikacja terenowa, panel i strona firmowa na jednej aplikacji Symfony, z jednym schematem bazy MySQL
Trzy powierzchnie wchodzą do jednego zaplecza. Zgłoszenie zostaje tym samym rekordem niezależnie od tego, skąd przyszło.
Ekran logowania do panelu operacyjnego Best Assistance
Wejście do panelu, oznaczone na stronie jako S.L.S. Kolejka spraw zaczyna się za logowaniem.

Zdjęcia i dokumenty dopina się do zgłoszenia osobnym punktem w API, z podziałem na typ załącznika. Przy szkodzie zdjęcie z miejsca zdarzenia jest materiałem dowodowym i trafia do sprawy od razu, a nie mailem po powrocie do biura.

Monolit, który był właściwym wyborem

Trzy powierzchnie na jednej aplikacji serwerowej nazwałoby się dziś monolitem, ale dla zespołu tej wielkości była to decyzja słuszna: jeden schemat bazy, jeden model uprawnień, jedno wdrożenie i jeden zestaw zależności. Sprawy nie trzeba synchronizować między systemami, bo nie ma między czym.

Ta decyzja ma też swoją cenę. Jednej powierzchni nie da się zmodernizować bez ruszania pozostałych, a wspólny schemat bazy wiąże ze sobą trzy interfejsy, które mogłyby zmieniać się każdy w swoim tempie. Rachunek, przy którym scalone zaplecze zaczyna kosztować więcej, niż oszczędza, prowadzimy w architekturze IT i modernizacji.

Co z tego wynika

Szkodę da się zgłosić na miejscu zdarzenia, z przeglądarki w telefonie, bez instalowania czegokolwiek ze sklepu, a zdjęcia trafiają do zgłoszenia od razu.

Zgłoszenie z telefonu wchodzi do tej samej kolejki co zgłoszenie ze strony i przez cały czas zostaje w tej samej bazie, więc nie ma momentu, w którym trzeba je przenosić między systemami.

Zespół prowadzi sprawę dalej z panelu, na tych samych danych, a jedno wydanie obsługuje telefon w terenie i komputer przy biurku.

Wykorzystane technologie

  • Angular
  • Symfony
  • Service Worker
  • MySQL
  • Doctrine
  • PrimeNG
  • Twig

Zobacz wdrożenie