Fix avanzamento quarto basket e regia senza cronometro.

Normalizza il periodo nel backend quando l'app invia "Q1" via cable, così advance_period aggiorna regia e overlay; rimuove i controlli cronometro dalla regia e rende più tollerante il decode iOS al resume sessione.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Emiliano Frascaro
2026-06-20 16:15:44 +02:00
parent c92099a41b
commit 793cfaaaf1
18 changed files with 861 additions and 452 deletions

View File

@@ -98,7 +98,37 @@ score = s.get("score") or {}
assert s.get("status") in ("live", "connecting", "reconnecting", "idle"), s.get("status")
assert score.get("board_type") in ("volley", "racket", "basket", "timed", "generic", "timer"), score
assert score.get("current_set") == 2, score
print("GET /sessions/:id OK — Riprendi diretta payload valido")
print("GET /sessions/:id OK — Riprendi diretta payload valido (volley)")
PY
echo "== API: sessione basket in pausa + Riprendi diretta =="
BASKET_MATCH=$(curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \
"$API/api/v1/teams/$TEAM_ID/matches" \
-d '{"opponent_name":"E2E Basket","sport_key":"basket"}')
BASKET_MATCH_ID=$(echo "$BASKET_MATCH" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
BASKET_SESSION=$(curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \
"$API/api/v1/matches/$BASKET_MATCH_ID/sessions" \
-d '{"platform":"matchlivetv","privacy_status":"unlisted","quality_preset":"720p_30_2.5mbps"}')
BASKET_SESSION_ID=$(echo "$BASKET_SESSION" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
curl -sf -X PATCH -H "$AUTH" "$API/api/v1/sessions/$BASKET_SESSION_ID/start" > /dev/null
for _ in $(seq 1 5); do
curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \
"$API/api/v1/sessions/$BASKET_SESSION_ID/score_action" \
-d '{"score_action":"home_point"}' > /dev/null
done
curl -sf -X PATCH -H "$AUTH" "$API/api/v1/sessions/$BASKET_SESSION_ID/pause" > /dev/null
BASKET_RESUME=$(curl -sf -H "$AUTH" "$API/api/v1/sessions/$BASKET_SESSION_ID")
python3 - <<PY
import json
s = json.loads('''$BASKET_RESUME''')
score = s.get("score") or {}
assert s.get("status") == "paused", s.get("status")
assert score.get("board_type") == "basket", score
assert score.get("home_points") == 5, score
assert score.get("period", "").startswith("Q"), score.get("period")
print("GET /sessions/:id OK — Riprendi diretta payload valido (basket)")
PY
echo "== E2E iOS completato: app avviata sul simulatore, API scoring/resume OK =="