SGSESSION: ********************SGGUEST: ********************{
"mode": "baduanjin",
"outcome": "completed",
"score": null,
"activeDurationMs": 120000,
"trackingDurationMs": 110000,
"metrics": {
"attempts": [
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "ready",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "raise",
"side": "both",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "hold",
"side": "both",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "recover",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "ready",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "raise",
"side": "left",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "hold",
"side": "left",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "recover",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
}
],
"actions": [
{
"actionCode": "tuotian",
"leftCount": 1,
"rightCount": 1,
"completeCycles": 1
},
{
"actionCode": "danju",
"leftCount": 1,
"rightCount": 0,
"completeCycles": 1
}
]
}
}curl --location --request PUT '/games/baduanjin/sessions/22222222-2222-4222-8222-222222222222/result' \
--header 'X-CSRF-Token: demo_csrf_token_not_for_production_123456' \
--header 'Content-Type: application/json' \
--data '{
"mode": "baduanjin",
"outcome": "completed",
"score": null,
"activeDurationMs": 120000,
"trackingDurationMs": 110000,
"metrics": {
"attempts": [
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "ready",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "raise",
"side": "both",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "hold",
"side": "both",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "recover",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "ready",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "raise",
"side": "left",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "hold",
"side": "left",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "recover",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
}
],
"actions": [
{
"actionCode": "tuotian",
"leftCount": 1,
"rightCount": 1,
"completeCycles": 1
},
{
"actionCode": "danju",
"leftCount": 1,
"rightCount": 0,
"completeCycles": 1
}
]
}
}'{
"code": "OK",
"message": "OK",
"data": {
"id": "22222222-2222-4222-8222-222222222222",
"sessionId": "22222222-2222-4222-8222-222222222222",
"userId": null,
"submittedAt": "2026-10-11T10:00:00Z",
"source": "client_reported",
"payload": {
"mode": "baduanjin",
"outcome": "completed",
"score": null,
"activeDurationMs": 120000,
"trackingDurationMs": 110000,
"metrics": {
"attempts": [
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "ready",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "raise",
"side": "both",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "hold",
"side": "both",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "tuotian",
"ruleVersion": "v1",
"stage": "recover",
"side": "both",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "ready",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "raise",
"side": "left",
"completed": true,
"holdDurationSec": 0.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "hold",
"side": "left",
"completed": true,
"holdDurationSec": 1.5,
"rejectionReason": null
},
{
"actionCode": "danju",
"ruleVersion": "v1",
"stage": "recover",
"side": "left",
"completed": true,
"holdDurationSec": 0.8,
"rejectionReason": null
}
],
"actions": [
{
"actionCode": "tuotian",
"leftCount": 1,
"rightCount": 1,
"completeCycles": 1
},
{
"actionCode": "danju",
"leftCount": 1,
"rightCount": 0,
"completeCycles": 1
}
]
}
},
"savedToHistory": false,
"savedAt": null
}
}