BUILD119 — ручной счёт + SQL + составы

This commit is contained in:
2026-08-26 13:54:47 +03:00
parent c5b25c23e2
commit fb422d5bf8
10 changed files with 544 additions and 16 deletions

View File

@@ -624,6 +624,13 @@ class MappingDataService:
context.setdefault("team1_id", game.home_team_external_id or "")
context.setdefault("team2_id", game.away_team_external_id or "")
control = session.scalar(select(GameControlState).where(GameControlState.game_external_id == resolved_game_id))
if game is not None:
score_control = HockeyDataService._score_control_payload(game, control)
context.setdefault("score_home", str(score_control["home"]))
context.setdefault("score_away", str(score_control["away"]))
context.setdefault("score_external_home", str(score_control["external_home"]))
context.setdefault("score_external_away", str(score_control["external_away"]))
context.setdefault("score_manual", "1" if score_control["manual"] else "0")
if control is not None:
runtime_values = HockeyDataService._runtime_values_from_row(control)
player_panel_labels: dict[str, str] = {}
@@ -871,6 +878,24 @@ class MappingDataService:
language=language,
)
result: list[dict[str, Any]] = []
score_control = HockeyDataService._score_control_payload(game, control)
score_fields = (
("home", "Счёт HOME · LIVE", score_control["home"], "Оперативный счёт HOME. После первого ручного +/- становится главным до синхронизации."),
("away", "Счёт AWAY · LIVE", score_control["away"], "Оперативный счёт AWAY. После первого ручного +/- становится главным до синхронизации."),
("external_home", "Счёт HOME · SQL/API", score_control["external_home"], "Последний счёт HOME из базы/API; используется для первоначальной и ручной повторной синхронизации."),
("external_away", "Счёт AWAY · SQL/API", score_control["external_away"], "Последний счёт AWAY из базы/API; используется для первоначальной и ручной повторной синхронизации."),
("manual", "Ручной режим счёта", "1" if score_control["manual"] else "0", "1 — LIVE счёт зафиксирован оператором; 0 — LIVE следует SQL/API."),
)
for key, label, value, description in score_fields:
result.append({
"key": f"score.{key}",
"label": label,
"category": "Матч · Оперативный счёт",
"value": value,
"kind": "number" if key != "manual" else "text",
"source_code": "live_control",
"description": description,
})
period_fields = (
("key", "Ключ периода", "text"),
("number", "Номер периода / овертайма", "number"),