Bring docs in sync with recent features (pending balance, SSE, per-player reveal)
CLAUDE.md: bumped the stale test count (54 -> 76), added "Balance display" and "Real-time updates (SSE)" sections, and rewrote the DRAW section's frontend-reveal paragraph to describe the actual current behavior (dual status/result boxes gated by user_played, closes_at-anchored reveal delay, localStorage persistence, the last-round-result backstop) instead of the older single-box design. Refined the "no history endpoints" known gap now that GET /users/me/last-round-result exists (still not general history). README.md: same test count fix, expanded coverage list. docs/: fixed a pre-existing broken link in setup.md (admin-guide.md -> guida-admin.md), added a note in running-the-server.md that editing the bind-mounted Caddyfile needs an explicit `docker compose restart caddy` (discovered while adding the SSE Caddy config in a prior change), and rewrote guida-utente.md's draw/reveal section plus the balance/withdrawal sections to match what the UI actually does now. guida-admin.md was reviewed but needed no changes. app/static/style.css: dropped `.toast.info`, dead since the toast-based loss notification it styled was replaced by the persistent result box. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+40
-15
@@ -40,12 +40,13 @@ subito le nuove giocate, ma il round non chiude immediatamente. Se qualcuno
|
||||
aveva già piazzato una bet negli ultimi istanti (transazione trasmessa ma
|
||||
non ancora confermata), il round aspetta che anche quella si confermi prima
|
||||
di procedere, così nessuna giocata già fatta viene persa al confine del
|
||||
round. Solo a quel punto la card mostra un'animazione ("Estrazione del
|
||||
vincitore in corso…") al posto del timer — la stessa cosa compare nella
|
||||
dashboard di ogni giocatore, non solo la tua. L'animazione resta visibile
|
||||
per almeno un tempo minimo configurabile dall'admin (default 20s), ma può
|
||||
durare più a lungo, perché sotto la copertina servono **fino a tre
|
||||
conferme sulla rete PLM in sequenza**, una diversa dall'altra:
|
||||
round. Solo a quel punto la card mostra un messaggio di stato ("Round
|
||||
chiuso — attesa conferma puntate…", poi "Estrazione in corso…", poi
|
||||
"Pagamento al vincitore in corso…") al posto del timer — la stessa cosa
|
||||
compare nella dashboard di **ogni** utente, anche di chi non ha giocato in
|
||||
questo round. Questo messaggio resta visibile per l'intera durata della fase
|
||||
(chiusura → estrazione → pagamento), perché sotto la copertina servono
|
||||
**fino a tre conferme sulla rete PLM in sequenza**, una diversa dall'altra:
|
||||
|
||||
1. conferma dell'ultima giocata rimasta in sospeso (se ce n'era una proprio
|
||||
allo scadere del timer — altrimenti questo passo è già superato);
|
||||
@@ -59,14 +60,27 @@ c'era una giocata da confermare all'ultimo istante) o **2-4 minuti** (se
|
||||
tutte le giocate erano già confermate prima dello zero) — non pochi
|
||||
secondi, ed è normale.
|
||||
|
||||
Appena il vincitore è determinato, l'animazione lascia spazio a un
|
||||
messaggio:
|
||||
Se **hai giocato in questo round**, appena il vincitore è determinato compare
|
||||
**in aggiunta** (non al posto del messaggio di stato sopra, che resta
|
||||
visibile finché il pagamento non è confermato) un secondo riquadro solo per
|
||||
te:
|
||||
- **"🎉 Hai vinto! +N PLM"** se sei tu il vincitore — l'importo ti verrà
|
||||
accreditato non appena la transazione di payout viene confermata (il
|
||||
round successivo non si apre finché questo non accade)
|
||||
- **"Non hai vinto questa volta."** altrimenti
|
||||
|
||||
Il messaggio resta visibile fino all'apertura del round successivo.
|
||||
Chi non ha giocato in questo round non vede mai questo secondo riquadro,
|
||||
solo il messaggio di stato generico. Il riquadro personale resta visibile
|
||||
anche **dopo un refresh della pagina** (persiste nel browser), fino
|
||||
all'apertura del round successivo — non serve restare sulla pagina per non
|
||||
perderlo, e se hai perso completamente la finestra in tempo reale (es. tab in
|
||||
background per diversi minuti), lo vedrai comunque comparire non appena
|
||||
riapri la dashboard.
|
||||
|
||||
La dashboard si aggiorna anche **in tempo reale**, non solo a intervalli
|
||||
fissi: appena qualcosa cambia sul server (una giocata, un cambio di fase del
|
||||
round, un nuovo blocco confermato...) la pagina lo recepisce quasi subito,
|
||||
senza bisogno di premere "Aggiorna" o ricaricare.
|
||||
|
||||
### Avviso di manutenzione
|
||||
|
||||
@@ -78,15 +92,22 @@ L'avviso sparisce da solo appena l'operatore riprende la lotteria.
|
||||
|
||||
### Deposito
|
||||
|
||||
- Il tuo **saldo interno** (accreditato dopo 1 conferma di rete) con bottone
|
||||
"Aggiorna" per ricontrollarlo
|
||||
- Il tuo **saldo interno**, con bottone "Aggiorna" per ricontrollarlo. Il
|
||||
numero mostrato include anche il resto di una bet o un prelievo appena
|
||||
inviati (non ancora confermato sulla rete) — non solo la parte già
|
||||
confermata — così non sembra che il saldo sia crollato più del dovuto
|
||||
subito dopo un'operazione. Il colore indica lo stato:
|
||||
- **verde**: tutto confermato, il saldo mostrato è quello definitivo
|
||||
- **arancione**: c'è una bet o un prelievo ancora in attesa di conferma —
|
||||
il numero è corretto, ma non ancora "finale"
|
||||
- Il tuo **indirizzo di deposito**, con bottone per copiarlo negli appunti
|
||||
- Il **QR code** dello stesso indirizzo, comodo per inviare PLM da un altro
|
||||
wallet scansionandolo invece di copiare l'indirizzo a mano
|
||||
|
||||
Per depositare, invia PLM (mainnet reale) a quell'indirizzo da un wallet
|
||||
esterno. Il saldo si aggiorna da solo dopo la prima conferma; premi
|
||||
"Aggiorna" per vederlo comparire.
|
||||
esterno. Il saldo si aggiorna da solo dopo la prima conferma (e quasi subito,
|
||||
grazie all'aggiornamento in tempo reale); premi "Aggiorna" se vuoi comunque
|
||||
ricontrollarlo a mano.
|
||||
|
||||
### Bet
|
||||
|
||||
@@ -98,10 +119,14 @@ scalato dal tuo saldo interno.
|
||||
|
||||
Form con due campi:
|
||||
- **Indirizzo esterno**: dove vuoi ricevere i PLM
|
||||
- **Importo (PLM)**: quanto prelevare
|
||||
- **Importo (PLM)**: quanto prelevare, oppure spunta **"Preleva l'intero
|
||||
importo"** per prelevare tutto il saldo confermato senza doverlo
|
||||
ricopiare a mano (il campo importo si disabilita e si aggiorna da solo)
|
||||
|
||||
Il prelievo viene costruito e trasmesso sulla rete; la fee di rete viene
|
||||
scalata dall'importo richiesto (non si aggiunge separatamente).
|
||||
scalata dall'importo richiesto (non si aggiunge separatamente). L'importo
|
||||
minimo prelevabile è pari alla quota fissa di ingresso al round (mostrata
|
||||
nella sezione Bet).
|
||||
|
||||
> **Nota**: attualmente è supportato solo l'indirizzo esterno in formato
|
||||
> **P2WPKH bech32** (quelli che iniziano con `plm1q...`). Non inserire
|
||||
|
||||
@@ -60,6 +60,17 @@ docker compose stop # ferma senza rimuovere i container
|
||||
docker compose down # ferma e rimuove i container (i dati in ./data/ restano)
|
||||
```
|
||||
|
||||
> **Nota sul `Caddyfile`**: è montato in sola lettura nel container `caddy`
|
||||
> (bind mount). Modificarlo non basta a farlo ripartire con la nuova
|
||||
> configurazione — `docker compose up -d --build` non ricrea `caddy` solo
|
||||
> perché il *contenuto* di un file montato è cambiato. Dopo una modifica al
|
||||
> `Caddyfile` serve un passaggio in più:
|
||||
> ```bash
|
||||
> docker compose restart caddy
|
||||
> ```
|
||||
> (oppure, senza interrompere le connessioni esistenti: `docker compose exec
|
||||
> caddy caddy reload --config /etc/caddy/Caddyfile`).
|
||||
|
||||
### ⚠️ Attenzione: riavvii automatici a metà round
|
||||
|
||||
`docker-compose.yml` imposta `restart: unless-stopped` sul container dell'app:
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ pip install -e ".[dev]"
|
||||
## 6. Impostare l'indirizzo delle fee
|
||||
|
||||
Prima che il primo round possa pagare, un admin deve impostare `fee_address`
|
||||
tramite il pannello admin o l'API — vedi [admin-guide.md](admin-guide.md). I
|
||||
tramite il pannello admin o l'API — vedi [guida-admin.md](guida-admin.md). I
|
||||
payout si rifiutano di partire finché non è impostato.
|
||||
|
||||
A questo punto l'istanza è pronta per essere avviata — continua con
|
||||
|
||||
Reference in New Issue
Block a user