Polska wersja - Hogs-Co/Firebase-Location-Emulation-MandP-subproject GitHub Wiki

Witaj w wiki projektu Firebase-Location-Emulation-MandP-subproject!

1. Sklad grupy

1.1. Caly projekt

1.2. Osoby odpowiedzialne za ta czesc projektu

2. Tematyka projektu

Stworzenie aplikacji srodowiska testowego, ktora emuluje klientow dla apliakcji Meet'and'Party zawartej w https://github.com/Hogs-Co/Kotlin-Meet-and-Party (nazwa moze ulec zmianie).

3. Rodzaj aplikacji

Desktop lub Mobile - decyzja do podjecia

4. Rozwiazania programistyczne

4.1. Srodowiska

Android Studio (mobile) lub PyCharm (desktop)

4.2. Jezyki, technologie

Kotlin (mobilna) lub Python (desktop), Firebase

5. Opis projektu

Aplikacja srodowiska testowego bedzie dostarczac funkcjonalosci testowe dla funkcji zawartych w glownej czesci projektu tj. aplikacji Meet'n'Party https://github.com/Hogs-Co/Kotlin-Meet-and-Party (nazwa moze ulec zmianie).


5.1. Uzyte dane

Aplikacja bedzie tworzyc i wykorzystywac w celach testowania obiekty nazywane Profilami. Ich elementy to:

1. Nazwa profilu

Format "xxxx" gdzie "x" to cyfra z zakresu [0 - 9]

2. Symulowany wiek

W postaci 4 bucketow o zakresach:

  • bucket 1: 18 - 25 lat
  • bucket 2: 25 - 35 lat
  • bucket 3: 35 - 45 lat
  • bucket 4: 45 - 150 lat (ludzie nie zyja dluzej niz 150 lat)

3. Uzyte tagi

3 lub 4 tagi na raz losowane z poli tagow (wstepnie pola nie przekroczy 200)

4. Lokalizacja

Zbior danych z urzadzen geolokalizacyjnych (glownie czujnik gps, mozliwe uzycie bluetooth (krotki zasieg) i polaczenia wifi (sredni zasieg)) do okreslenia pozycji uztykownika

5. Promien wyszukiwania

Fizyczny promien wyrazany w metrach gdzie punkt poczatkowy promienia to aktualna lokalizacja uzytkownika. Buckety promieni (max wartosc do ustalenia):

  • 0 - 500
  • 500 - 1000
  • 1000 - 2000
  • 2000 - 5000
  • 5000 - 10000
  • 10000 - 25000

5.2. Funkcjonalnosci

1. Automatyczne generowanie profili

Generowanie profili o nastepnym dostepnym numerze nazwy profilu, wylosowanych tagach (3 - 4 tagi zainteresowan + 2 tagi wiekowe), wylosowanym wieku i wygenerowanie punktu startowego i koncowego z bazy dostenych punktow dla algorytmu znajdowania sciezki na mapie

2. Wyznaczenie sciezki i plynna symuacja podrozy po sciezce z wylosowana predkoscia

Najpierw dochodzi do znalezienia opytmalnej sciezki przez algorytm szukajacy sciezek dla punktu startowego i koncowego. Nastepnie dochodzi do symulacji poruszania sie uzytkownika po wybranej sciezce z okresolna predkoscia. Predkosc wachac sie miedzy wartosciami 5 km/h a 10 km/h (zakladamy ze nasi uzytkownicy chodza jednostajnym tempem). Mozliwe ze dojdzie do zmain w projekcie i dodamy dynamiczne zmienianie promienia, predkosci oraz tagow w trakcie symulowania podrozy po sciezce (time will tell)

3. GUI oraz logowanie i wizualizacja wynikow testu w czasie rzeczywistym

GUI aplikacji bedzie dostarczac dostep do wyznaczania pozycji startowych zmieniania parametrow poszczegolnych klientow wygenerowanych przez funkcje generujaca oraz zmiany parametrow domyslnych tych funckji. W momencie rozpoczecia symulacji GUI pozwoli sledzic wszyskie lub wybrane profile na mapie wraz z wyswietlaniem takich elementow jak:

  • promien interakcji
  • ktore profile sie nawzajem widza
  • jakich tagow uzywaja
  • ich predkosc
  • ich dokladna aktualna lokalizacja (potrzebny color-coding) Aby doszlo do znalezienia sie dwoch profili promien profilu 0001 musi pokrywac sie z lokalizacja profilu 0002 i vice versa.

Test dobiego konca kiedy wszystkie profile przebyly swoje sciezki i osiagnely punkt koncowy lub w momencie odebrania syngalu stop-test z poziomu GUI. Po zakonczeniu testu wszystkie informacje o poszczegolnych klientach zostaja zapisane do plikow .log, a wiec kazdy klient o nazwie "xxxx" tworzy swoj wlasny plik o nazwie "xxxx.log" a w nim mozna znalezc informacje:

Podstawowe
  • o nazwie profilu
  • uzytych tagach
  • predkosci
  • wieku
  • punkcie startowym
  • punkcie koncowym
Zaawansowane
  • wszystkich interwalach 10 sekundowych w ktorych profil mial dostep do innych profili wraz z nazwami tych profili oraz ich danymi podstawowymi
  • czasie podrozy i ilosci interwalow 10 sekundowych w ktorych nie doszlo do interkacji w raz z powodem (niekompatybilne tagi czy brak profili w promienu szukania badz inne informacje - wraz z developementem okaze sie co jest potrzebne)