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

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions