- Odpowiada na pytanie czy projekt się kompiluje
- Odpowiada na pytanie czy projekt przechodzi testy
- Pokazuje % pokrycia testami kodów źródłowych w /src
Projektem jest aplikacja pozwalająca na tworzenie grafu obrazującego rozwój algorytmów sztucznej inteligencji. Aplikacja umożliwia dodawanie/usuwanie ręczne elementów grafu oraz oferuje sposób na dodawania elementów automatycznie na podstawie ich nazwy np. ilSHADE jest być podłączany do węzła SHADE. Interfejs aplikacji jest graficzny (przeglądarkowy) a logika operacji na grafie jest zaimplementowana w C++.
- Boost 1.71+, wraz z skompilowanymi:
- Boost.Python
- Boost.Test
- CMake
- python3 wraz z:
- python3-dev
- pip3
- pipenv
- Django (instalowane później w pipenv)
Instalacja wszystkich zależności:
sudo apt-get install libboost-all-dev # Boost
sudo apt-get install cmake # cmake
sudo apt-get install python3-dev # python3-dev
sudo apt-get install python3-pip # pip3
pip3 install pipenv # pipenv
Uwaga, na dzień dzisiejszy libboost-all-dev zainstaluje Boost 1.71 jedynie na ubuntu 20.04 z aktualnym apt-get.
Przy pomocy cmake:
cd methodDevelopment ; mkdir build ; cd build ; cmake .. ; make
Alternatywnie w celu wygenerowania testów
cd methodDevelopment ; mkdir build ; cd build ; cmake -D TEST:BOOL=TRUE .. ; make
# uruchomienie testów
ctest
Istnieje jeszcze trzecia opcja generująca dodatkowo pliki coverage, wymaga ona: cmake -D TEST:BOOL=TRUE -D ENABLE_COVERAGE:BOOL=TRUE ..
W katalogu projektu:
cd web
pipenv install --dev
pipenv shell
# następnie wewnąrz wirtualnej powłoki:
python3 manage.py runserver
Po wykonaniu powyższych kroków, poniższy adres powinien zwrócić przykładową strukturę (GET):
Powinien on zwrócić dane w formacie:
{
"nodes": [
{
"name": "DE",
"description": "Opis algorytmu DE",
"parent": "",
"aliases": [
"de",
"De",
"De."
]
},
{
"name": "SHADE",
"description": "Opis algorytmu SHADE",
"parent": "DE",
"aliases": [
"Shade",
"SHA-DE"
]
}
]
}
Lista wszystkich endpointów:
- api/graph/ (GET) - zwraca strukturę grafu aktualnie znajdującej się w bazie danych w formacie JSON.
- api/node/<str:name>/
- GET - zwraca informacje o podanym węźle w formacie JSON.
- DELETE - zwraca informacje o podanym węźle w formacie JSON.
- api/add/manual/ (POST) - Dodaję węzeł do struktury grafu.
- api/add/auto/ (POST) - Dodaję węzeł do struktury grafu automatycznie dedukując rodzica na podstawie nazwy.
Reqesty do endpointów w api/add/ wymagają ustawionych nagłówków X-CSRFToken
i Cookie
.
Format body
dla reqestów do endpointów w api/add/
{
"name": "JADE",
"description": "Opis algorytmu JADE",
"parent": "DE",
"aliases": ["jade", "ja-de"]
}
Uwaga, część kodu źródłowego części Python została wygenerowana przez Django. Wykorzystane zostały komendy:
django-admin startproject web_config .
python3 manage.py startapp web_api
W razie problemów z instalacją manualną gotową aplikację można zainstalować za pomocą obrazu ianczyko/method-development-visualizer-backend.
docker run -i -p 8000:8000/tcp -t --entrypoint /bin/bash ianczyko/method-development-visualizer-backend
# następnie wewnątrz powłoki kontenera (uruchomienie serwera Django)
cd web
pipenv run python3 manage.py runserver
Po skonfigurowaniu backendu, można uruchomić przeglądarkowy interfejs aplikacji, który pobiera dane z endpointów wyżej opisanego bacendu i wyświetla je z pomocą biblioteki cytoscape.js. Po naciśnięciu na węzeł wyświetlają się jego szczegółowe informacje.
Uruchomienie interfejsu wymaga otworzenia client/index.html w przeglądarce.