48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
# Issue #188 Artifact — SPA cutover hardening (asset versioning + rollback)
|
|
|
|
## Scope
|
|
Acceptance for `[READY][SPA][P11] Cutover hardening`:
|
|
1. Dokumenteret strategi for cache-busting/versionering af SPA assets i Django staticfiles/reverse proxy setup.
|
|
2. Konfigurerbar rollback-procedure for `USE_SPA_UI` (trin-for-trin, target <10 min).
|
|
3. Smoke-artefakt for både SPA on/off i samme release-vindue.
|
|
4. Ingen gameplay-ændringer.
|
|
|
|
## 1) Asset versioning/cache-busting strategi
|
|
Implementeret i SPA shell render-path:
|
|
|
|
- Konfiguration i `partyhub/settings.py`:
|
|
- `WPP_SPA_ASSET_BASE` (eksisterende)
|
|
- `WPP_SPA_ASSET_VERSION` (ny)
|
|
- `lobby/ui_views.py` injicerer `spa_asset_version` til template-context.
|
|
- `lobby/templates/lobby/spa_shell.html` appender `?v={{ spa_asset_version }}` på:
|
|
- `styles.css`
|
|
- `main.js`
|
|
|
|
Effekt:
|
|
- Ny release-version (fx SHA/tag) kan tvinge cache-miss i browser/proxy uden ændring af route.
|
|
- Rollback kan pege på tidligere stabil version-token med samme mekanisme.
|
|
|
|
## 2) Rollback playbook (`USE_SPA_UI`) — target <10 min
|
|
Dokumenteret i `docs/spa-cutover-flag.md`:
|
|
|
|
1. Sæt `USE_SPA_UI=false`.
|
|
2. Sæt `WPP_SPA_ASSET_VERSION` til sidste stabile release-token.
|
|
3. Deploy/reload app-processer.
|
|
4. Verificér legacy routes (`/lobby/ui/host` + `/lobby/ui/player`).
|
|
5. Kør hurtig smoke sanity.
|
|
6. Log trigger/timestamp/resultat i smoke artifact.
|
|
|
|
## 3) Smoke artifact for SPA OFF/ON i samme release-vindue
|
|
Dokumenteret i:
|
|
- `docs/UI_SMOKE.md` (sektion: "Samme release-vindue: SPA OFF + ON verifikation")
|
|
- `docs/STAGING_GAMEPLAY_SMOKE_ARTIFACT.md` (template udvidet med release-window check + `WPP_SPA_ASSET_VERSION`)
|
|
|
|
Krav:
|
|
- OFF-pass (legacy) og ON-pass (SPA) køres i samme deploy/release-vindue.
|
|
- Begge passes logges i samme artifact med UTC timestamps og version-token.
|
|
|
|
## Non-goals bekræftet
|
|
- Ingen gameplay-regler ændret.
|
|
- Ingen API-kontrakter ændret.
|
|
- Ingen UX-redesign; kun drift/cutover-hardening.
|