Wiki: https://wiki.eduuni.fi/display/OPHPALV/LUDOS
http://localhost:8000/api/test/mocklogin/YLLAPITAJA
https://trivy.util.yleiskayttoiset.opintopolku.fi/muut.html
Keskeiset entiteetit, ja järjestelmät, joihin nämä tallennetaan.
| käsite | selite | tunniste | tallennuspaikka |
|---|---|---|---|
| Koodisto | Kooditus objekteille, esim tutkintonimikkeet | id (tekstiä) | Koodistopalvelu |
| Koodi | Yksittäisen objektin koodi koodistossa | id (tekstiä) | Koodistopalvelu |
| Exam | Koe tyyppi (SUKO / LD / PUHVI) | - | - |
| ContentType | Sisältö tyyppi (koetehtävä / ohje / todistus) | ||
| Assignment | Koetehtävä | ||
| Instruction | Ohjeet ja tukimateriaalit |
Nämä ovat keskeiset LUDOS-järjestelmässä käytettävät teknologiat. Lista kuvaa järjestelmän nykytilaa ja muuttuu matkan varrella tarpeen mukaan.
- PostgreSQL xx.xx -tietokanta
- Palvelinteknologiat
- Kotlin (Java 25)
- Spring boot
- Flyway-migraatiotyökalu kannan skeeman rakentamiseen ja päivittämiseen kehityksessä ja tuotannossa
- Gradle buildaa
- Web-sovelluksen frontend-teknologiat
- npm-työkalu riippuvuuksien hakuun
- Vite
- TypeScript
- React
- Tailwind
- Playwright e2e-testaukseen
- Tiptap tekstieditori
Minimissään tarvitset nämä:
- JDK 25
- Docker PostgreSQL:n
- Node ^20.0.0
- Tarvittaessa tmux
start-local.sh-skriptiä varten
- Hanki käyttäjätunnukset OPH:n AWS:ään (oph-aws-sso). Käyttäjätunnuksen tulee kuulua LudosAdmins-ryhmään tai muuten omata AdministratorAccess-policy seuraavilla tileillä:
- oph-ludos-dev, accountId = 782034763554
- oph-ludos-qa, accountId = 260185049060
- oph-ludos-prod, accountId = 072794607950
- oph-ludos-utility, accountId = 505953557276
- Asenna AWS CLI ja konffaa tilit siihen tiedostoon ~/.aws/config. Esimerkki:
[sso-session oph-federation]
sso_session=oph-federation
sso_region=eu-west-1
sso_start_url = https://oph-aws-sso.awsapps.com/start
sso_registration_scopes = sso:account:access
[profile oph-ludos-dev]
sso_session = oph-federation
sso_account_id = 782034763554
sso_role_name = AdministratorAccess
region = eu-west-1
output = json
[profile oph-ludos-qa]
sso_session = oph-federation
sso_account_id = 260185049060
sso_role_name = AdministratorAccess
region = eu-west-1
output = json
[profile oph-ludos-prod]
sso_session = oph-federation
sso_account_id = 072794607950
sso_role_name = AdministratorAccess
region = eu-west-1
output = json
[profile oph-ludos-utility]
sso_session = oph-federation
sso_account_id = 505953557276
sso_role_name = AdministratorAccess
region = eu-west-1
output = json
- Kirjaudu sisään:
aws --profile oph-ludos-dev sso login - Testaa:
aws --profile oph-ludos-dev s3 lspitäisi listata bucketit
- aja projektin juuressa
./start-local.sh
Käynnistä ensin PostgreSQL tietokanta Dockerissa projektin juuressa: docker compose up
Backendiä ajettaessa on valittava sopiva ympäristöprofiili:
local= devaus ja testaus osoitteessa localhost:8000 (vite) tai localhost:8080 (buildattu)untuva= https://ludos.untuvaopintopolku.fi/ = AWS Fargatessa pyörivä Untuva-LUDOSqa= https://ludos.testiopintopolku.fi/ = AWS Fargatessa pyörivä QA-LUDOSprod= https://ludos.opintopolku.fi/ = AWS Fargatessa pyörivä Tuotanto-LUDOS
Salaisuuksien hakeminen:
- luo
server/.envjaplaywright/.env, jossa tarvittavat salaisuudet serverin ajamiseen ja testaamiseen:aws --profile oph-ludos-dev sso login && aws --profile oph-ludos-utility sso login && scripts/fetch_secrets.sh
Vaihtoehtoja backendin ajamiseen:
- Luo Spring Boot run configuration IDEAssa

- Aja
LudosApplication.kt:n main-metodi IDEAsta. Lisää run configurationiin halutut profiilit, esim.localja lisää working directoryserver SPRING_PROFILES_ACTIVE=local server/gradlew bootRun -p server bootRunyarn build:docker:local+yarn run:docker(profiili kovakoodattulocal)cd server && ./gradlew build -x test && LUDOS_PROFILES=local ../docker-build/run.sh- Tää buildaa myös frontendin, joka tarjoillaan osoitteesta https://localhost:8080/ spring bootin kautta kuten tuotannossa.
- 8080-portissa frontti ei kuitenkaan päivity itsestään vaikka
yarn dev:webois päällä, vaan on ajettavayarn build:weberikseen joka kerta. - Fronttia devatessa onkin suositeltavaa ajaa
yarn dev:webja käyttää selaimessa porttia8000eikä8080niin autoreloadid yms toimii
Backend-testit ajetaan esim. komennolla yarn test:server.
- run-tests.sh
fetch_secrets.shhakee AWS-secrets-managerista backendin tarvitsemat salaisuudet ja tallentaa ne.env-tiedostoihinupdate_backups.shkopio lokalisaatio ja koodisto palveluista Ludokseen tarvittavat datat/server/src/main/resources/backup_data-kansioon. Skripti ajautuu git on-push hookissa.localizations.tskomentorivi wrapperi lokalisaatio palvelulle. Käyttohjeet:yarn localizations, sekä käyttö esimerkkejä: https://wiki.eduuni.fi/pages/viewpage.action?pageId=380016595
cd server./gradlew refreshVersionslisää saatavilla olevat uudemmat versiot versions.propertiesiin kommentteina- Päivitä versiot muokkaamalla versions.properties-tiedostoa
./gradlew clean test --rerun-tasks
cd webyarn upgrade --latest- Jos major-päivitys rikkoi softan etkä ehdi/jaksa korjata, niin reverttaa ja aja ilman
--latest
- Jos major-päivitys rikkoi softan etkä ehdi/jaksa korjata, niin reverttaa ja aja ilman
cd .. && yarn playwright
eduuni-wikissä: https://wiki.eduuni.fi/display/OPHPALV/LUDOS_tekninen+dokumentaatio (vaatii kirjautumisen)
