Canonical reveal mangler som egentlig round-output. Nuværende implementation beregner score, men eksponerer ikke et komplet reveal-datasæt med korrekt svar, løgne og relationen “hvem narrede hvem”, som UI kan bruge direkte.
reveal-data bundet til den konkrete round_question
korrekt svar
alle lies med ophavs-spiller
alle guesses med korrekthed + fooled-relation
session/session-detail eller dedikeret reveal-endpoint giver data nok til host/player reveal-visning
Acceptance criteria
efter guess -> reveal kan klienten hente et komplet reveal-datasæt for aktiv round question
reveal-datasættet indeholder mindst:
correct_answer
lies med player_id eller nickname + text
guesses med player_id eller nickname + selected_text + is_correct + fooled_player_id hvis relevant
reveal-visning kan afgøre både korrekt svar og hvem der narrede hvem uden ekstra heuristik i frontend
tests dækker mindst ét forløb med bluff-point og én spiller, der gætter korrekt
Required artifacts
commit SHA i issue-comment når arbejdet er klart
head SHA / PR-reference hvis arbejdet leveres via branch/PR
eksempel på reveal-payload i issue-comment eller PR-beskrivelse
Parent: #287
## Problem
Canonical reveal mangler som egentlig round-output. Nuværende implementation beregner score, men eksponerer ikke et komplet reveal-datasæt med korrekt svar, løgne og relationen “hvem narrede hvem”, som UI kan bruge direkte.
## Scope
Implementér canonical reveal-output efter #287:
- reveal-data bundet til den konkrete `round_question`
- korrekt svar
- alle lies med ophavs-spiller
- alle guesses med korrekthed + fooled-relation
- session/session-detail eller dedikeret reveal-endpoint giver data nok til host/player reveal-visning
## Acceptance criteria
- efter `guess -> reveal` kan klienten hente et komplet reveal-datasæt for aktiv round question
- reveal-datasættet indeholder mindst:
- `correct_answer`
- lies med `player_id` eller nickname + text
- guesses med `player_id` eller nickname + `selected_text` + `is_correct` + `fooled_player_id` hvis relevant
- reveal-visning kan afgøre både korrekt svar og hvem der narrede hvem uden ekstra heuristik i frontend
- tests dækker mindst ét forløb med bluff-point og én spiller, der gætter korrekt
## Required artifacts
- commit SHA i issue-comment når arbejdet er klart
- head SHA / PR-reference hvis arbejdet leveres via branch/PR
- eksempel på reveal-payload i issue-comment eller PR-beskrivelse
frontend API contract now models canonical reveal payload on GET /lobby/sessions/:code during reveal phase
frontend API contract now models canonical reveal payload on POST /lobby/sessions/:code/questions/:id/scores/calculate
reveal payload includes correct_answer, lies with player_id/nickname/text, and guesses with player_id/nickname/selected_text/is_correct/fooled_player_id (+ fooled_player_nickname when present)
Checks
frontend: npm test -- --run tests/angular-api-client.test.ts✅
backend: python manage.py test lobby.tests.ScoreCalculationTests lobby.tests.SessionDetailRoundQuestionTests✅ (run in local .venv with sqlite-backed default settings; full pip install -r requirements.txt was not possible here because mysqlclient build deps are missing, so I installed the minimal Django deps needed for the targeted tests)
Implemented on branch `dev/issue-289-canonical-reveal-payload` and pushed to origin.
Commit SHA: `f0ebc25da71f362f5157ee2de4e4e119a7d9acfe`
Head SHA: `f0ebc25da71f362f5157ee2de4e4e119a7d9acfe`
PR: not created yet (branch ready: https://gitea.weircon.dk/wpp/weirsoe-party-protocol/pulls/new/dev/issue-289-canonical-reveal-payload)
What changed
- frontend API contract now models canonical `reveal` payload on `GET /lobby/sessions/:code` during reveal phase
- frontend API contract now models canonical `reveal` payload on `POST /lobby/sessions/:code/questions/:id/scores/calculate`
- reveal payload includes `correct_answer`, lies with `player_id`/`nickname`/`text`, and guesses with `player_id`/`nickname`/`selected_text`/`is_correct`/`fooled_player_id` (+ `fooled_player_nickname` when present)
Checks
- `frontend: npm test -- --run tests/angular-api-client.test.ts` ✅
- `backend: python manage.py test lobby.tests.ScoreCalculationTests lobby.tests.SessionDetailRoundQuestionTests` ✅ (run in local `.venv` with sqlite-backed default settings; full `pip install -r requirements.txt` was not possible here because `mysqlclient` build deps are missing, so I installed the minimal Django deps needed for the targeted tests)
Example reveal payload
```json
{
"round_question_id": 77,
"round_number": 1,
"prompt": "Hvem opfandt pæren?",
"correct_answer": "Edison",
"lies": [
{
"player_id": 3,
"nickname": "Bo",
"text": "Tesla",
"created_at": "2026-03-01T16:00:20Z"
}
],
"guesses": [
{
"player_id": 2,
"nickname": "Maja",
"selected_text": "Tesla",
"is_correct": false,
"fooled_player_id": 3,
"fooled_player_nickname": "Bo",
"created_at": "2026-03-01T16:01:00Z"
},
{
"player_id": 4,
"nickname": "Ida",
"selected_text": "Edison",
"is_correct": true,
"fooled_player_id": null,
"created_at": "2026-03-01T16:01:02Z"
}
]
}
```
head SHA: 2c524d7d2d38942137540e8403d62b1a80c752af
branch: dev/issue-289-canonical-reveal-payload
What changed:
added canonical reveal payload builder for the active round_question
exposed reveal from GET /lobby/sessions/{code} during reveal phase
exposed reveal directly from score calculation response after guess -> reveal
included player identity on lies/guesses plus fooled_player_id/nickname for who-fooled-whom rendering
added tests covering a correct guess + bluff points flow and session-detail reveal retrieval
Example reveal payload:
{"reveal":{"round_question_id":42,"round_number":1,"prompt":"Hvilken sport spiller man i Wimbledon?","correct_answer":"Tennis","lies":[{"player_id":9,"nickname":"Nora","text":"Padel","created_at":"2026-03-15T11:20:00+00:00"}],"guesses":[{"player_id":7,"nickname":"Luna","selected_text":"Tennis","is_correct":true,"fooled_player_id":null,"created_at":"2026-03-15T11:21:00+00:00"},{"player_id":8,"nickname":"Mads","selected_text":"Padel","is_correct":false,"fooled_player_id":9,"fooled_player_nickname":"Nora","created_at":"2026-03-15T11:21:05+00:00"}]}}
Implemented on branch `dev/issue-289-canonical-reveal-payload`.
Artifacts:
- commit SHA: `2c524d7d2d38942137540e8403d62b1a80c752af`
- head SHA: `2c524d7d2d38942137540e8403d62b1a80c752af`
- branch: `dev/issue-289-canonical-reveal-payload`
What changed:
- added canonical `reveal` payload builder for the active `round_question`
- exposed `reveal` from `GET /lobby/sessions/{code}` during reveal phase
- exposed `reveal` directly from score calculation response after `guess -> reveal`
- included player identity on lies/guesses plus `fooled_player_id`/nickname for who-fooled-whom rendering
- added tests covering a correct guess + bluff points flow and session-detail reveal retrieval
Example reveal payload:
```json
{
"reveal": {
"round_question_id": 42,
"round_number": 1,
"prompt": "Hvilken sport spiller man i Wimbledon?",
"correct_answer": "Tennis",
"lies": [
{
"player_id": 9,
"nickname": "Nora",
"text": "Padel",
"created_at": "2026-03-15T11:20:00+00:00"
}
],
"guesses": [
{
"player_id": 7,
"nickname": "Luna",
"selected_text": "Tennis",
"is_correct": true,
"fooled_player_id": null,
"created_at": "2026-03-15T11:21:00+00:00"
},
{
"player_id": 8,
"nickname": "Mads",
"selected_text": "Padel",
"is_correct": false,
"fooled_player_id": 9,
"fooled_player_nickname": "Nora",
"created_at": "2026-03-15T11:21:05+00:00"
}
]
}
}
```
Remote head SHA: 7a6eb0b88e0566a370013eb12f5cfb7873b7825b
PR-beskrivelsen indeholder konkret eksempel på canonical reveal-payload og test evidence.
Leveret i PR #297.
- Branch: `dev/issue-289-canonical-reveal-payload-devbot`
- Commit SHA: `7a6eb0b88e0566a370013eb12f5cfb7873b7825b`
- Remote head SHA: `7a6eb0b88e0566a370013eb12f5cfb7873b7825b`
PR-beskrivelsen indeholder konkret eksempel på canonical reveal-payload og test evidence.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent: #287
Problem
Canonical reveal mangler som egentlig round-output. Nuværende implementation beregner score, men eksponerer ikke et komplet reveal-datasæt med korrekt svar, løgne og relationen “hvem narrede hvem”, som UI kan bruge direkte.
Scope
Implementér canonical reveal-output efter #287:
round_questionAcceptance criteria
guess -> revealkan klienten hente et komplet reveal-datasæt for aktiv round questioncorrect_answerplayer_ideller nickname + textplayer_ideller nickname +selected_text+is_correct+fooled_player_idhvis relevantRequired artifacts
Implemented on branch
dev/issue-289-canonical-reveal-payloadand pushed to origin.Commit SHA:
f0ebc25da71f362f5157ee2de4e4e119a7d9acfeHead SHA:
f0ebc25da71f362f5157ee2de4e4e119a7d9acfePR: not created yet (branch ready: https://gitea.weircon.dk/wpp/weirsoe-party-protocol/pulls/new/dev/issue-289-canonical-reveal-payload)
What changed
revealpayload onGET /lobby/sessions/:codeduring reveal phaserevealpayload onPOST /lobby/sessions/:code/questions/:id/scores/calculatecorrect_answer, lies withplayer_id/nickname/text, and guesses withplayer_id/nickname/selected_text/is_correct/fooled_player_id(+fooled_player_nicknamewhen present)Checks
frontend: npm test -- --run tests/angular-api-client.test.ts✅backend: python manage.py test lobby.tests.ScoreCalculationTests lobby.tests.SessionDetailRoundQuestionTests✅ (run in local.venvwith sqlite-backed default settings; fullpip install -r requirements.txtwas not possible here becausemysqlclientbuild deps are missing, so I installed the minimal Django deps needed for the targeted tests)Example reveal payload
Implemented on branch
dev/issue-289-canonical-reveal-payload.Artifacts:
2c524d7d2d38942137540e8403d62b1a80c752af2c524d7d2d38942137540e8403d62b1a80c752afdev/issue-289-canonical-reveal-payloadWhat changed:
revealpayload builder for the activeround_questionrevealfromGET /lobby/sessions/{code}during reveal phaserevealdirectly from score calculation response afterguess -> revealfooled_player_id/nickname for who-fooled-whom renderingExample reveal payload:
Issue #289 implemented via PR #295.
Artifacts:
dev/issue-289-canonical-revealf0e87eb98877601f4c4fa285ce1833258ac6e6d1f0e87eb98877601f4c4fa285ce1833258ac6e6d1Leveret i PR #297.
dev/issue-289-canonical-reveal-payload-devbot7a6eb0b88e0566a370013eb12f5cfb7873b7825b7a6eb0b88e0566a370013eb12f5cfb7873b7825bPR-beskrivelsen indeholder konkret eksempel på canonical reveal-payload og test evidence.