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

@@ -0,0 +1,32 @@
module Scoring
# Normalizza `score_states.data["period"]` (intero o etichetta "Q2" / "2° tempo").
module PeriodData
module_function
def number_from(raw)
case raw
when Integer, Float
value = raw.to_i
value.positive? ? value : nil
when String
text = raw.strip
return nil if text.empty?
if (match = text.match(/\AQ(\d+)\z/i))
match[1].to_i
elsif (match = text.match(/\A(\d+)\s*°/))
match[1].to_i
elsif (value = text.to_i).positive?
value
end
end
end
def normalize_hash!(data)
number = number_from(data["period"])
data["period"] = number if number&.positive?
data["period"] = 1 unless data["period"].to_i.positive?
data
end
end
end