Lokál környezet beállítása
1. Előfeltételek
- Git telepítés
- Windows operációs rendszer esetén a Git Bash telepítése is szükséges.
- Node Version Manager telepítés.
- A telepítendő Node/npm verzióról itt található információ.
- Docker Desktop telepítés
- macOS rendszer esetén az itt található beállításokat is végezzük el.
- IntelliJ IDEA Ultimate telepítés
- Az első munkanapon céges emaillel regisztrálva, trial verzióban lehet használni a programot.
- 30 napon belül email értesítésben céges hozzáférést kapunk, amit az emailben kapott utasítások alapján kell aktiválni.
Docker compose V2 használata
Minden esetben győződjünk meg róla, hogy lokálisan is a V2-es verziójú docker compose-t használjuk. Compose verzió ellenőrzése:
Szükség esetén frissítsük a telepített docker/docker-compose-unkat és automatikusan át fog állni a V2-es pluginra.
Alapértelmezetten használandó terminál Windowson
Fontos, hogy a napi munkánk során a Git Bash-t használjuk terminálként Windows-on. Pl.: A Git műveletek parancssori használata során.
Ennek az az oka, hogy mivel a Git Bash egy emulált Unix-os terminál, így kevesebb különbözőséget kell kezelni a Windows és a macOS rendszerek között, illetve csak így tudja a Semi Product biztosítani, hogy a dokumentációban ajánlott parancsok és lépések konzisztensen működjenek.
2. Projekt kód klónozása
2.1 Git és GitLab konfigurálása
A Git használatához szükséges konfigurációt az alábbi oldal tartalmazza:
Git Lokális Környezet Beállítása
2.2 Az api repository klónozása
A következő paranccsal kell klónozni az api repository-t:
Az api repositoryban található a DTO-k generálásához használt openapi.yml fájlunk.
Ezért mindig a fejlesztéshez szükséges branchet kell belőle checkoutolnunk.
Lokális fejlesztés során az api repositoryt fájlrendszeren keresztül oldják fel a frontend és backend projektek.
Ahhoz, hogy ez működjön fontos, hogy az api repository-t ugyanabba a mappába klónozzuk ahová a backend projektet is.
DTO generálás
A projekt specifikus openapi.yml-ből történő kód generálásról részletesebben itt olvashatsz.
Ékezetes betűk a mappák neveiben
A kódgenerálás során problémát okoz, ha a séma definíciós fájlok útvonalában olyan mappák szerepelnek, amik
ékezetes karaktereket is tartalmaznak.
Ennek elkerülése érdekében, amikor létrehozzuk a projekt mappáink struktúráját ügyeljünk arra, hogy ne használjunk ékezetes
karaktereket az útvonalat alkotó mappák neveiben.
2.3 A backend repository klónozása
A következő paranccsal kell klónozni a backend repository-t:
Ugyanazon branch checkoutolása minden repositoryban
Az alábbi scriptet tudjuk használni, hogy 1 lépésben checkoutoljuk ugyanazt a branchet minden repositoryból:
#!/bin/sh
BRANCH=$1
cd api
echo "$PWD"
git fetch
git reset --hard
git checkout $BRANCH
git pull
cd ..
cd backend
echo "$PWD"
git fetch
git reset --hard
git checkout $BRANCH
git pull
cd ..
cd frontend
echo "$PWD"
git fetch
git reset --hard
git checkout $BRANCH
git pull
cd ..
cd python-service
echo "$PWD"
git fetch
git reset --hard
git checkout $BRANCH
git pull
cd ..
- A scriptet abból a mappából kell kiadni, ahová klónoztuk a repositorykat.
- A
BRANCHértékének a checkoutolni kívánt branch nevét kell megadni. amennyiben egyshfájlba mentjük ezt a scriptet (Pl.:checkout-all-repo.sh), úgy a branch nevét argumentumként adhatjuk meg. (Pl.:./checkout-all.sh develop)
Fontos
Windowsos rendszer esetén Git Bashből futtassuk a scriptet!
Ugyanazon branch checkoutolása és buildelése minden repositoryban
Az alábbi scriptet tudjuk használni, hogy 1 lépésben checkoutoljuk és buildeljük ugyanazt a branchet minden repositoryból:
#!/bin/sh
BRANCH=$1
# Function to log messages with a prefix
log_with_prefix() {
local prefix="$1" # Custom prefix
shift # Shift arguments so that $@ contains the message
echo "[$prefix] $@"
}
#Define repository scripts
api_script() {
{
set -e
cd api
git fetch
git reset --hard
git checkout $BRANCH
git pull
cd ..
} 2>&1 | while IFS= read -r line; do
log_with_prefix "API" "$line"
done
}
backend_script() {
{
set -e
cd backend
git fetch
git reset --hard
git checkout $BRANCH
git pull
./mvnw clean install -DskipTests
cd ..
} 2>&1 | while IFS= read -r line; do
log_with_prefix "BACKEND" "$line"
done
}
frontend_script() {
{
set -e
cd frontend
git fetch
git reset --hard
git checkout $BRANCH
git pull
npm run generate:api
cd ..
} 2>&1 | while IFS= read -r line; do
log_with_prefix "FRONTEND" "$line"
done
}
python_script() {
{
set -e
cd python-service
git fetch
git reset --hard
git checkout $BRANCH
git pull
source ~/anaconda3/etc/profile.d/conda.sh
CONDA_BASE=$(conda info --base)
CURRENT_SHELL=$(basename "$SHELL")
conda init $CURRENT_SHELL
conda activate pythonservice
python -m piptools compile
python -m piptools sync requirements.txt requirements-dev.txt
./codegen.sh
cd ..
} 2>&1 | while IFS= read -r line; do
log_with_prefix "PYTHON" "$line"
done
}
# Run scripts
(api_script) &
apiCheckoutPid=$!
wait $apiCheckoutPid
apiExitCode=$?
(backend_script) &
backendCheckoutPid=$!
(python_script) &
pythonCheckoutPid=$!
(frontend_script) &
frontendCheckoutPid=$!
# Wait scripts exit code
wait $backendCheckoutPid
backendExitCode=$?
wait $frontendCheckoutPid
frontendExitCode=$?
wait $pythonCheckoutPid
pythonExitCode=$?
#Log after execute
if [ $apiExitCode -ne 0 ]; then
echo "An error occurred in the api subshell command sequence."
fi
if [ $backendExitCode -ne 0 ]; then
echo "An error occurred in the backend subshell command sequence."
fi
if [ $frontendExitCode -ne 0 ]; then
echo "An error occurred in the frontend subshell command sequence."
fi
if [ $pythonExitCode -ne 0 ]; then
echo "An error occurred in the python subshell command sequence."
fi
if [ $apiExitCode -eq 0 ] && [ $backendExitCode -eq 0 ] && [ $frontendExitCode -eq 0 ] && [ $pythonExitCode -eq 0 ]; then
echo "All commands in the subshell completed successfully."
fi
- A scriptet abból a mappából kell kiadni, ahová klónoztuk a repositorykat.
- A
BRANCHértékének a checkoutolni kívánt branch nevét kell megadni. amennyiben egyshfájlba mentjük ezt a scriptet (Pl.:checkout-all-repo-and-build.sh), úgy a branch nevét argumentumként adhatjuk meg. (Pl.:./checkout-all-repo-and-build.sh develop)
Fontos
Windowsos rendszer esetén Git Bashből futtassuk a scriptet!
Ugyanazon branch checkoutolása minden repositoryban IntelliJ-vel
- Az IntelliJ menüsorból válasszuk a View -> Tool Windows -> Git menüpontot.
- Az így alul megnyíló Git ablakban, bal oldalt nyissuk le a Remote opciót.
-
Az így megjelenő branchek mellett zárójelben láthatjuk, hogy mely projekteken létezik ugyanilyen néven branch. Pl.:
(backend, backend-service/src/main/resources/api).
-
Ezt követően ha a megfelelő branch-re jobb egérgombbal kattintunk, majd kiválasztjuk a Checkout opciót, akkor minden zárójelben felsorolt projektből checkoutolja az IntelliJ a kiválasztott branchet.
3. Projekt/projektek importálása
Az IntelliJ-be ezt a leírást követve importálhatjuk a projektet/projekteket.
3.1 JDK telepítése és beállítása
A projekt importálását követően az IntelliJ-ben le tudjuk tölteni a fejlesztéshez szükséges JDK-t.
- Nyissuk meg a File -> Project Structure… menüpontot.
- A baloldali listából válasszuk ki a Project Settings -> Project menüpontot.
- Az SDK legördülő menüben válasszuk ki a Download JDK opciót.
- A felugró ablakban válasszuk ki a 21-es verziót, vendorként pedig az Amazon Corretto-t, majd kattintsunk a Download gombra.
- A Language level legördülő menüben válasszuk ki a 21-es verziót.
- Mentést követően megtörténhet a
JAVA_HOMEkörnyezeti változó beállítása. A letöltött JDK pontos elérési útvonalát a File -> Project Structure -> Platform Settings -> SDKs menüpont alatt láthatjuk.
4. A projekt build-elése
4.1 A backend projekt build-elése
Fontos
Mindig légy meggyőződve arról, hogy a megfelelő branchen áll-e az api repository.
Például ha módosítottuk az openapi.yml-ben valamelyik DTO-t, akkor valószínűleg azt szeretnénk ha az új DTO-t használná a backend projekt. Ezért álljunk rá az api repositoryban a módosítást tartalmazó branchre (Fontos, hogy legyen up-to-date, amihez használjuk a git pull-t).
Az alábbi parancsot a backend projekt főkönyvtárából kell kiadni parancssorból:
Buildelés IntelliJ-ből
Természetesen a parancssoros buildelés helyett használható az IntelliJ felület is, de amennyiben valamilyen fordítási anomáliát tapasztalsz, akkor mindig érdemes paranccsorból is ellenőrizni, hogy fordul-e az alkalmazás.
Reload all maven projects gomb
Kattints rá az alábbi gombra jobb oldalt a Maven fülön:
A generated-sources beállítása
Amennyiben a projekten egyes Java objektumot a build során generálunk előfordulhat, hogy az IntelliJ még a build után is azt jelzi, hogy nem található/nem létezik az adott objektum.
Ilyen esetben ahhoz, hogy a generált fájlokat is megtalálja source-ként az IntelliJ, hajtsuk végre a következő lépéseket:
- Kattintsunk jobb egérgombbal a
backendprojektre a projekt nézetben. - Válasszuk ki a listából a
maven-t. - Kattintsunk a Generate Sources and Update Folders parancsra.
Előfordulhat, hogy ezt követően sem fogja az IntelliJ megtalálni az objektumokat. Ekkor célszerű megpróbálni az IntelliJ újraindítását cache-k ürítésével. Ehhez válasszuk az IntelliJ menüsorából a File -> Invalidate Caches… menüpontot, majd a felugró ablakban pipáljunk be minden opciót és kattintsunk az Invalidate and Restart gombra. Az újraindítás után próbálkozzunk ismét a Generate Sources and Update Folders paranccsal.
Amennyiben ennek hatására sem oldódik meg a probléma, állítsuk be manuálisan a generált fájlokat source fájlokként. Ennek lépései:
- Kattintsunk jobb egérgombbal a
backendprojektre a projekt nézetben. - Válasszuk ki a listából az
Open Module Settingsopciót. - A
backend-servicemodult kiválasztva atargetmappa alatt a releváns mappákat jelöljük meg forráskódként aMark as: Sourcesopcióval.

Buildelés checkstyle validáció nélkül
Fejlesztés közben előfordulhat, hogy szeretnénk az alkalmazást kivételesen checkstyle validáció nélkül buildelni ezt a következő paranccsal tudjuk megtenni:
5. Adatbázis
5.1 Az adatbázis futtatása
Lokális fejlesztői környezet esetén az adatbázist docker-ben futtattjuk.
Az adatbázis elindításához egyszerűen csak adjuk ki az alábbi parancsot a backend repository infrastructure mappájában:
Vector objektum definíciók létrehozása
Miután beállítottuk az adatbázist, semmiképp ne a teszteket futtassuk, hanem az alkalmazást indítsuk el először! Máskülönben rossz sémára fognak létrejönni a vector objektum definíciók.
A docker compose up -d parancs kiadása során felmerülő hibák
Amennyiben a fenti parancs kiadásakor valamilyen hibaüzenetet kapunk, akkor itt találhatunk segítséget.
Fontos
A fenti parancs az infrastructure mappán belüli docker-compose.yml fájlban definiált összes docker image-t elindítja. Így ha már a ClamAV szekcióban egyszer elindítottuk, itt már nem szükséges megtennünk.
Fontos
Az email-ek küldésére és kezelésére MailDevet használunk. Ez szintén el fog indulni a docker compose up -d paranccsal. Ezután a localhost:1080 porton lesz elérhető a szerver. Bővebb információ: MailDev
5.2 Adatbázis beállítása IntelliJ-ben
Az adatbázis típusa
A projekteken változó lehet, hogy milyen adatbázist kell használni. Pl.: DB2, SQL Server stb. A lent leírt lépéseket természetesen projekt specifikusan, a projekten használt adatbázis fajtáját figyelembe véve kell elvégezni.
Database fül jobb oldalt -> '+' gomb -> Data Source -> PostgreSQL

A megnyíló Data Sources and Drivers képernyőn a General lapon következő értékeket kell beállítani:
- Host:
localhost - Port:
5432 - User:
postgres - Password:
Asdf1234 - Database:
postgres
Read-only mód beállítása
Fontos, hogy biztosan ne hajtsunk végre módosításokat olyan adatbázisban amibe nem szabad kézzel belenyúlnunk (UAT/PROD). Amennyiben szükséges ilyen adatbázishoz kapcsolódni IntelliJ-ből, azt mindenképp Read-only módban tegyük.
Ezt az alábbi módon tehetjük meg:
- A Data Sources and Drivers képernyőn kattintsunk az Options lapra.
- A Connection szekcióban pipáljuk be a Read-only opciót.
- Amikor végeztünk az adatbáziskapcsolat konfigurációjával kattintsunk az Apply majd az OK gombra.
Csatlakozás Remote adatbázishoz - SSH tunnel-en keresztül
Amennyiben szeretnénk valamilyen remote adatbázishoz csatlakozni, például az AWS DEV környezet adatbázisához, használjuk az SSH Tunnel funkciót. Ezt az alábbi módon tudjuk bekonfigurálni IntelliJ-ből:
Databasefül jobb oldalt ->'+'gomb ->Data Source->PostgreSQL-
A megnyíló Data Sources and Drivers képernyőn a General lapon következő értékeket kell beállítani:
- Host:
localhost - Port:
5432 - User:
postgres - Password: A remote adatbázis postgres felhasználójának jelszavát kell itt megadni.
- Database:
postgres
- Host:
-
Ezután az SSH/SSL képernyőn pipáljuk be a Use SSH tunnel opciót és az SSH configuration sorban kattintsunk a jobb szélen található ikonra:

-
A megnyíló SSH Configurations képernyőn állítsuk be az alábbiakat:
- Host: A remote adatbázis gép IPv4-es címét kell itt megadni.
- Port:
22 - Username: Az SSH felhasználónk nevét kell itt megadni.
- Authentication type: A legördülő menüben a
Key pairopciót válasszuk. - Private key file: Mezőben adjuk meg az SSH-hoz használt privátkulcsunk elérési útvonalát.

-
Végezetül kattintsunk az SSH Configurations képernyő alján található Apply majd OK gombokra.
-
Ha mindent jól csináltunk, akkor a Data Sources and Drivers képernyőn a General lapon a Test connection gombra nyomva az alábbi üzenetet kell kapnunk:

Az adatbázisok jelölése színekkel
Amennyiben több adatbázis kapcsolatot is beállítunk az IntelliJ-ben, hasznos funkció, hogy színeket rendelhetünk az egyes adatbázisokhoz. Pl.: lokális adatbázis: zöld, DEV adatbázis: narancssárga UAT adatbázis: piros.
Ennek köszönhetően a Database fülön belül mindig a kiválasztott színnel lesznek jelölve az adott adatbázishoz tartozó adatbázis objektumok, illetve az adatbázishoz nyitott Query console-ok fejléce is.
Ezáltal pedig magabiztosabbak lehetünk, hogy biztosan abban az adatbázisban hajtunk-e végre módosításokat amelyikben gondoljuk.
Az adatbázis beállítása során, a Name input mező jobb sarkában található kör ikonra kattintva rendelhetünk színeket az adatbázishoz:

Download missing driver files figyelmeztető üzenet esetén
Amennyiben a lenti képen található üzenetet látjuk az adatbázis beállítása során, egyszerűen kattintsunk az üzenetben található Download linkre.

6. ClamAV
A projektek többségében előbb utóbb funkcionális követelmény lesz a fájlok fel-, illetve letöltésének lehetősége.
A kliens által feltöltött fájlokat minden esetben vírusellenőrzésnek kell alávetni.
Ehhez a ClamAV-ot használjuk amit az adatbázishoz hasonlóan lokálisan szintén docker-rel futtatunk.
Az ClamAV elindításához egyszerűen csak adjuk ki az alábbi parancsot a backend repository infrastructure mappájában:
A docker compose up -d parancs kiadása során felmerülő hibák
Amennyiben a fenti parancs kiadásakor valamilyen hibaüzenetet kapunk, akkor itt találhatunk segítséget.
Fontos
A fenti parancs az infrastructure mappán belüli docker-compose.yml fájlban definiált összes docker image-t elindítja. Így ha már az Adatbázis szekcióban egyszer elindítottuk, itt már nem szükséges megtennünk.
Fontos
Az email-ek küldésére és kezelésére MailDevet használunk. Ez szintén el fog indulni a docker compose up -d paranccsal. Ezután a localhost:1080 porton lesz elérhető a szerver. Bővebb információ: MailDev
Vírusnak látszó fájlok
A vírusellenőrzés teszteléséhez úgynevezett EICAR fájlt használunk a projekten amit a vírusírtó kártékony fájlként azonosít ezért karanténba helyez: malicius_test_file.txt
Ezt a fájlt nyugodtan adjuk hozzá a vírusirtó kivételeihez, nem okoz kárt a rendszerben.
Az EICAR-ról részletesebben olvashatsz itt.
7. Az IntelliJ IDEA beállításai
IntelliJ Cache eldobása
A lenti lépések végrehajtása során előfordulhat, hogy látszólag nem lép érvényre egy beállítás. Ez az esetek nagy százalékában amiatt történik, mert az IntelliJ becachelt valami korábbi konfigurációt. Épp ezért mielőtt bármi mást próbálnánk, első lépésként használjuk az „Invalidate Caches and Restart“ funkciót:
- Az IntelliJ menüsorából válasszuk a File -> Invalidate Caches… menüpontot.
- A felugró Invalidate Caches ablakban, az Optional szekcióban pipáljunk be mindent, majd kattintsunk az Invalidate and Restart gombra.
7.1 Checkstyle és Code Style
Checkstyle és Code Style hibák kezelése
Amennyiben a lokális build, vagy a CI futása során Checkstyle vagy Code Style specifikus hibával szembesülünk, akkor az érintett fájlokat az IntelliJ „Reformat Code“ funkcióját használva tudjuk formázni:
- Jobb egérgombbal kattintsunk a formázni kívánt fájlra, vagy arra a mappára amiben az összes fájlt szeretnénk formázni.
- Kattintsunk a Reformat Code opcióra.
7.1.1 Intuitech intellij_codestyle.xml importálása
-
Navigáljunk az
IntelliJ IDEA code style XMLmenüpontra:File->Settings->Editor->Code Style->Fogaskerék->Import Scheme->IntelliJ IDEA code style XMLIntelliJ IDEA->Settings->Editor->Code Style->Fogaskerék->Import Scheme->IntelliJ IDEA code style XML
-
A
build-tools/codestyle/mappában található aintellij_codestyle.xmlkonfiguráció amit be kell tölteni. -
A felugró Import Scheme ablakban a To mezőben adjuk meg milyen néven szeretnénk importálni a code style sémát, majd kattintsunk az OK gombra.

-
Ellenőrizzük a
Settings->Code Stylemenüpontban, hogy azEnable EditorConfig Supportne legyen bepipálva!

7.1.2 Intuitech inspections.xml importálása
Alapértelmezetten nem jelzi az IDEA a Code Style hibákat. Az ehhez szükséges konfigurációt importáljuk be az alábbi lépésekkel:
-
Navigáljunk az
Import Profile...menüpontra:File->Settings->Editor->Inspections->Fogaskerék->Import Profile...IntelliJ IDEA->Settings->Editor->Inspections->Fogaskerék->Import Profile... -
A
build-tools/codestyle/mappában található ainspections.xmlkonfiguráció amit be kell tölteni.
7.1.3 Intuitech checkstyle.xml importálása és értesítések bekapcsolása
Be kell állítani az IDE-t, hogy szóljon hangosan, ha probléma van.
- Elősször is IntelliJ-ben le kell tölteni a CheckStyle plugint.
-
Navigáljunk a
Checkstylemenüpontra:File->Settings->Tools->CheckstyleIntelliJ IDEA->Settings->Tools->Checkstyle -
A Checkstyle version legördülő menüben válasszuk ki a legfrissebb elérhető verziót.
- A Configuration File szekcióban meg kell nyomni a
+gombot oldalt és hozzáadni abuild-tools/checkstylemappából acheckstyle.xml-t.
7.1.4 Method arrangement módosítása
Töröljük ki az IntelliJ statikus metódusokra vonatkozó arrangement szabályt:
-
Navigáljunk a
Java/Code Stylemenüpontra:File->Settings->Editor->Code Style->JavaIntelliJ IDEA->Settings->Editor->Code Style->Java -
Válasszuk ki az Arrangement tabot, és keressük meg a
methodstaticsort. - Kattintsunk rá, majd nyomjuk meg Del gombot.
- Végül kattintsunk az Apply, majd az OK gombra.

7.1.5 Sor végi karakterek konfigurálása
Fontos
Windows operációs rendszer esetén a line ending-et is be kell állítani:
File->Settings->Editor->Code Stylealatt aLine separator-t állítsdUnix and macOS (\n)-re.- Amennyiben a Git konfigurálása lépésben nem tettük volna meg, akkor adjuk ki az alábbi parancsot:
7.2 Autobuild beállítása
File -> Settings -> Build, Excecution, Deployment -> Compiler menüpontban a BUILD PROJECT AUTOMATICALLY beállítás legyen bepipálva.
IntelliJ IDEA -> Settings -> Build, Excecution, Deployment -> Compiler menüpontban a BUILD PROJECT AUTOMATICALLY beállítás legyen bepipálva.
7.3 Heap méret beállítások
Amennyiben korábban még nem tettük meg az itt található IntelliJ memória beállításokat is hajtsuk végre.
Fordítási / alkalmazás indítási idő lassulás kezelése
A memóriabeállítások mellett célszerű észbentartani, hogy amennyiben a megfelelő memóriabeállítások ellenére is lassulásokat tapasztalunk a fordítás és/vagy alkalmazás indítás során, akkor az itt található lépéseket célszerű lehet végrehajtani.
7.4 A *.properties fájlok encodings beállítása
-
Nyissuk meg a File -> Settings menüpontot.
Nyissuk meg a IntelliJ IDEA -> Settings menüpontot.
-
A megnyíló ablakban bal oldalt válasszuk ki az Editor -> File Encodings opciót.
- Keressük meg a Properties files (*.properties) szekciót.
- A Default encoding for properties files beállításnál válasszuk ki az
UTF-8-at.
- Végül kattintsunk az Apply, majd az OK gombra.
7.5 Mjml plugin letöltése
A plugin a notification template-ek létrehozásánál lehet hasznos.
-
Nyissuk meg a File -> Settings menüpontot.
Nyissuk meg a IntelliJ IDEA -> Settings menüpontot.
-
A megnyíló ablakban bal oldalt válasszuk ki a Plugins opciót.
- Fent válasszuk ki a Marketplace fület.
- A keresőbe írjuk be:
MJML Support. - Telepítés után szükséges újraindítani az IntelliJ-t.
Az MJML Support plugin-nal láthatjuk, hogy fog kinézni az email desktop, illetve mobil nézetben, valamint megnézhetjük a generált html-t is.
A dinamikus paraméterek ebben a nézetben nem jelennek meg, ezért előfordulhatnak üres helyek az emailben.
7.6 Alapértelmezett terminál beállítása
Windows operációs rendszer esetén állítsuk be, hogy az IntelliJ-ben nyitott terminálok Git Bash-es terminálok legyenek.
- Navigáljunk az
Terminalmenüpontra:File->Settings->Tools->Terminal - Az Application Settings szekció alatti Shell path legördülő menüből válasszik ki a telepített Git Bash elérési útvonalát.

- Ezt követően ha a Terminal tetején a “+“ ikonra kattintunk, akkor az újonnan nyílt terminál már Git Bash-es terminál lesz.
7.7 Commit checkstyle ellenőrzés
Javasolt minden commit előtt a Checkstyle ellenőrzéseket futtatni.
Az automatikus futtatáshoz kapcsoljuk be a Git ablakban található beállításoknál a Scan with Checkstyle opciót.

8. Lombok
A projekten a boiler plate kódok limitálása érdekében Lombok -ot használunk.
8.1 Lombok plugin telepítése
A Lombok plugin a 2020.3-as verziótól automatikusan települ az IntelliJ-vel így nem szükséges kézzel telepíteni.
8.2 Lombok konfiguráció
A File -> Settings -> Build, Excecution, Deployment -> Compiler -> Annotation Processors menüpont alatt az Enable annotation processing beállítást pipáljuk be.
A IntelliJ IDEA -> Settings -> Build, Excecution, Deployment -> Compiler -> Annotation Processors menüpont alatt az Enable annotation processing beállítást pipáljuk be.
Gyakori probléma
Ha a következő hibával találkozol:
Fontos, hogy amennyiben nem jelentkezik nálunk a fent említett hiba, akkor az alábbi beállítást ne végezzük el!
Akkor állítsd be az alábbi értéket:
Settings -> Build, Excecution, Deployment -> Compiler -> Shared build process VM options: -Djps.track.ap.dependencies=false

9. Az alkalmazás indítása
9.1 Alapértelmezett Run configuration létrehozása
Egy új konfigurációt a Run -> Edit configurations... menüből hozhatunk létre.
A lenti felsorolás 4-es pontjától a következőre kell figyelni!
Amikor megnyílik a felület az Edit configurations... után, akkor
a kitöltendő sorok nem biztos, hogy ott lesznek. Ennek megoldásához a jobb oldalt lévő és
kékkel kiemelt Modify Options legördülő menüpontra kell kattintani.
A listából kell kiválasztani a szükséges menüt. Pl: Add VM options
- A bal felső sarokban kattintsunk a
+gombra és a legördülő menüből válasszuk ki a Spring Boot opciót. - A
Namemezőbe adjuk meg a konfiguráció nevét:app :8080/ - A
Main classmezőnél tallózzuk ki a main class-t:io.gbsolutions.BackendServiceApplication. - Az
Add VM optionsmezőben adjuk meg az alábbi sort:--add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED - Az
Active profilesmezőben adjuk meg adevértéket. - A
Shorten command linemezőben válasszuk ki az@argfile (Java 9+) - java @argfile className [args]értéket. - A
Working directorymezőnél tallózzuk ki abackend-servicemappát. Pl.:C:\Work\Projects\ProjectName\backend\backend-service. - Az
Environment variablesmezőbe közvetlenül vagy a mező jobb szél találhatóEdit environment variablesgomb megnyomásával adjuk meg az OpenAI API kulcsát:project_openai_access-token=MEGSZERZETT_API_TOKEN.
Az OpenAI API kulcsát az itt leírtak szerint szerezzük be. - Az OK gombra kattintva adjuk hozzá az új konfigurációt.
- Ezt követően az új konfiguráció meg is jelenik a
Servicesablakban.

Demó adatok betöltése
Amennyiben szeretnénk, hogy a demo adatok is be legyenek szúrva az adatbázisba az alkalmazás indulásakor, akkor az Active profiles mezőben adjuk meg a demodata értéket is. (Ha egyszerre több profillal indítjuk az alkalmazást, akkor az egyes profilokat neveit ,-vel elválasztva kell az Active profiles mezőben megadni.)
9.2 Speciális Run configuration-ök létrehozása
Az itt leírt speciális konfigurációkat minden esetben a korábban létrehozott app :8080/ konfigurációt felhasználva hozzuk létre.
Ehhez mindig másoljuk le az app :8080/ konfigurációt az alábbi módon:
- Nyissuk meg a
Run->Edit configurations...menüpontot. - Bal oldalt válasszuk ki előbb a Spring Boot-ot, majd azon belül válasszuk ki az
app :8080/konfigurációt. - Bal felül kattintsunk a Copy configuration… gombra.

9.2.1 Az app drop db konfiguráció
Amennyiben induláskor szeretnénk eldobni a lokális adatbázisunk tartalmát, akkor ezt a konfigurációt tudjuk használni.
- Másoljuk le az
app :8080/konfigurációt. - A másolat Name mezőjében adjuk meg az
app drop dbértéket. - Az Environment variables mező jobb szélén kattintsunk az
Edit environment variablesgombra. - A felugró Environment Variables képernyő bal felső sarkában található
+gomb segítségével adjuk meg azSPRING_LIQUIBASE_DROP_FIRSTváltozót:- Name :
SPRING_LIQUIBASE_DROP_FIRST - Value :
true
- Name :
- Végül kattintsunk az Apply majd az OK gombra.

9.3 A backend alkalmazás indítása
Ahhoz, hogy a backend alkalmazás minden funkcióját az elvártaknak megfelelően tudjuk tesztelni, fontos, hogy a python-service alkalmazás már el legyen indítva a gépünkön.
-
IntelliJ-ben adjuk hozzá a
Servicesablakot az alsó eszközsávhoz. Kétféleképp tehető meg:- Menüből:
View->Tool Windows->Services - Billentyű kombinációval:
Alt+8
- Menüből:
-
Bal oldalt nyissuk le a “+“ jelet.
- Kattintusnk a Run Configuration Type-ra és a legördülő menüből válasszuk ki a Spring Boot-ot.
- Ezt követően megjelennek a definiált Run Configuration-jeink.
- Jobb gombbal kattintsunk a futtatni kívánt configuration-re és válasszunk a Run vagy a Debug opciók közül.
- Ezt követően a config-nak megfelelő Spring Boot alkalmazás el fog indulni.
Preferáljuk a Debug módot!
Általában véve inkább Debug módban érdemes elindítani az alkalmazásokat, ugyanis az indítási időt nem befolyásolja, viszont amennyiben szükség van debuggolásra, akkor nem lesz szükségünk egy extra újraindításra csak a Debug mód miatt.
10. Teszt konfiguráció
A tesztek futtatása során is kaphatunk command line is too long hibaüzenetet.
Ebben az esetben a megoldás az, hogy létrehozunk egy JUnit Run konfigurációt is az IntelliJ-ben, ahol beállítjuk a megfelelő Shorten command line opciót, amit az alábbi lépsekkel tehetünk meg:
- Az IntelliJ menüsorából válasszuk a Run -> Edit configurations… menüpontot.
- A felugró Run/Debug Configurations ablakban a bal felső sarokban kattintsunk a
+gombra, és a legördülő menüből válasszuk ki a JUnit opciót. - A Name mezőbe adjuk meg a konfiguráció nevét. Pl.:
BackendServiceTest. -
A Build and run szekcióban:
- A
-cpkapcsolónál válasszuk ki abackend-service-t. - A legördülő menüből válasszuk ki az All in directory opciót és tőle jobbra tallózzuk is ki a
backend/backend-service/src/test/javaútvonalat.
- A
-
Végül a Shorten command line mezőben válasszuk ki az
@argfile (Java 9+)opciót. (Amennyiben nem jelenik meg ez a mező, a Modify options linkre kattintva tudjuk hozzáadni.)
11. A rendszer betanítása
A rendszer betanítása, dokumentum feltöltés és publikálás.
11.1. Bejelentkezés & Navigáció
- Lépj be az admin oldalra.
- Navigálj a Tartalommenedzsment menüpontra.
- Válaszd ki a Dokumentum menedzsment oldalt, ahol láthatod a jelenlegi aktív/nem aktív dokumentumokat.

11.2. Dokumentum Feltöltése
- Kattints a Dokumentum feltöltés gombra.
- Tallózd be a betanítani kívánt dokumentumokat (többet is kiválaszthatsz egyszerre).
- Adj meg minden dokumentumhoz:
- Lejárati dátum
- Aktiválási dátum (opcionális)
- Kategória
- Szubkategória
- Kattints a Feltöltés gombra.
- Sikeres feltöltés után visszakerülsz a dokumentumlistára.

11.3. Dokumentumok Feldarabolása (Chunkolás)
- A dokumentumok feldarabolása automatikusan elindul a fájl feltöltésével.
- Amennyiben a dokumentum feldarabolása hibára futna, van lehetőség a manuális újraindításra.
- Az újraindítani kívánt rekordok sorában lévő Eredmények gombra kattints,
majd Chunkolás eredménye rész alatt a Szerkesztés gombra. - Itt kattints a Chunkolás újraindítása gombra.

Kötelező
A dokumentumok feldarabolása kötelező lépés a publikálás előtt.
11.4. Kérdés–válasz párosok létrehozása
- A dokumentumok sikeres feldarabolása után automatikusan elindul a kérdés–válasz párosok generálása.
- Amennyiben a kérdés–válasz párosok generálása hibára futna, van lehetőség újak létrehozására.
- Ehhez az adott rekordok sorában lévő Eredmények gombra kattints, majd Kérdés–válasz generálás gombra.

11.5. Dokumentumok Közzététele
- Kattints a Közzététel indítása gombra, hogy publikáld a kiválasztott dokumentumokat.

Mikor válaszol a dokumentumból a rendszer?
Csak akkor válaszol a rendszer egy dokumentumból, ha egy dokumentum státusza aktiv és az aktuális dátum beleesik a dokumentumhoz beállított időtartományba! Megfelelő kategória választása szintén szükséges a dokumentum feltöltés során.