stats: síň slávy a kariérní statistiky

- rekordy: nejvyšší tah, nejvyšší konečné skóre, nejrychlejší výhra
- kariéra: počet her, výher, úspěšnost, průměrné pořadí, průměr na tah
  a kolikrát koho postihlo vynulování
- do statistik jdou jen dohrané hry, nedohrané a opuštěné se ignorují
- celkové skóre počítá SQL stejným pravidlem jako core.Game.totals(),
  tedy součet tahů po posledním vynulování; testem ověřeno, že se obě
  cesty shodují
- vědomě chybí celkový součet bodů napříč hrami — cílové skóre je u každé
  hry jiné, metrika by odměňovala jen toho, kdo hrál nejvíc
- README se spuštěním a přehledem modulů

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
gitea-actionsandClaude Opus 5 committed 2026-08-20 19:04:50 +02:00
1 parent bcbbede258
commit d7c63cf98b
9 files changed
+474 -1

No files matched your search

+16
View File
@@ -175,3 +175,19 @@ def test_tabule_presmeruje_na_rozehranou_hru(client):
def test_neexistujici_hra(client):
assert client.get("/game/999").status_code == 404
def test_sin_slavy(client):
game_id = start_game(client, "Adam", "Eva", final_score=500)
score(client, game_id, 500)
score(client, game_id, 100)
page = text(client.get("/stats"))
assert "Nejvyšší tah" in page
assert "Kariéra" in page
assert "Vyhrává Adam" in page
def test_sin_slavy_bez_her(client):
assert "Rekordy přibudou po první hře" in text(client.get("/stats"))