Skip to content

Issue: Erottele “Opetusdemo” ja “Avoin pelidemo” serverillä (tilit + ympäristö + resetointi) / Task update: Separate Teaching Demo and Open Demo on the server #765

@psykkis

Description

@psykkis

Tausta

Pelissä on kaksi demomoodia:

Pelitaiteen opetusdemo (käytetään opetustilanteissa)

Pelaajien tilit / data poistetaan opetusjakson päätyttyä

Kaikille avoin pelidemo (open demo for all)

Pysyvämpi testausympäristö kaikille testaajille

Kuvassa UI:ssa nämä kuvataan erillisinä “pelimuotoina”.

Tavoite

Serverin tulee tukea kahta erillistä “environmentia” niin, että:

Opetusdemo ei sekoitu avoimeen demoon (data, leaderboardit, klaanit, matchit)

Opetusdemo voidaan resetata (tai poistaa käyttäjät) hallitusti opetuksen jälkeen

Avoin demo säilyttää datansa normaalisti (tai eri omalla reset-aikataululla)

Vaatimukset (server)

  1. Environment / Mode -tunniste

Lisätään selkeä ympäristö-/mooditunniste (esim. enum):

TEACHING_DEMO

OPEN_DEMO

Tämän tulee kulkea läpi kaikissa oleellisissa entiteeteissä tai ainakin niiden “namespace”-tasolla:

user/account

clan

match/battle results

leaderboard entries

inventory/assets

soulhome / jukebox / fleamarket

Hyvä periaate: mikään haku ei saa vahingossa palauttaa toisen ympäristön dataa.

  1. Tilien elinkaari (TTL / deletion policy)

Teaching demo:

Tilit ja niihin liittyvä data ovat tilapäisiä

Kun opetusjakso päättyy → tilit poistetaan tai nollataan (valitkaa malli)

Ehdotus toteutusvaihtoehdoiksi:

A) expiresAt-kenttä userille + taustaprosessi joka poistaa/nollaa

B) “session/batch id” (esim. teachingBatchId), jonka perusteella admin voi tehdä resetin

C) manuaalinen admin-endpoint: “delete all teaching demo accounts created after X”

Open demo:

Tilit säilyvät normaalisti (ei automaattipoistoa oletuksena)

  1. Resetointikyvykkyys (Teaching demo)

Tarvitaan serverille hallittu tapa siivota opetusdemon data, vähintään:

käyttäjätilit (TEACHING_DEMO)

klaanit ja klaanidata (TEACHING_DEMO)

leaderboardit (TEACHING_DEMO)

matchit ja tulokset (TEACHING_DEMO)

Mahdolliset endpointit:

POST /admin/demo/teaching/reset

poistaa/nollaa kaiken TEACHING_DEMO -datan

tai turvallisemmin:

POST /admin/demo/teaching/reset?batchId=...

(Autentikointi: admin token / internal-only.)

  1. Leaderboard-erottelu

Leaderboardin on oltava ympäristökohtainen:

leaderboard (TEACHING_DEMO) ≠ leaderboard (OPEN_DEMO)

Sama koskee klaanien leaderboardia / tilastoja:

klaanin voitot/tappiot ja rankingit eivät saa sekoittua ympäristöjen välillä.

Definition of Done / Acceptance Criteria

Client voi kirjautua / luoda tilin valitun moodin alle, ja serveri merkitsee tilin environmentilla.

Kaikki serverin haut (clan, leaderboard, match history, inventory) palauttavat vain saman environmentin dataa.

Teaching demo voidaan resetata: resetin jälkeen opetusdemon tilit ja niihin liittyvä data eivät ole enää saatavilla.

Open demo -data säilyy resetistä muuttumattomana.

“Cross-environment” viittauksia ei synny (esim. OPEN_DEMO -klaani ei voi sisältää TEACHING_DEMO -jäsentä).

Huomio (implementaatiovinkki)

Helpoin tapa estää vahinkosekoitukset on tehdä environment pakolliseksi:

joko kaikissa primääriavaimellisissa tauluissa (environment-sarake + indeksit)

tai erillisissä skeemoissa / tietokannoissa (isompi muutos, mutta “idiot-proof”)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No fields configured for Task.

Projects

Status
Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions