Files
plm-lottery/flowchart/round-lifecycle.mmd
davide 8a3dfd4592 Replace flowchart.mmd with per-topic diagrams and a print pipeline
Split the single flowchart.mmd into flowchart/platform-overview.mmd
(all 5 phases) and flowchart/round-lifecycle.mmd (round/draw detail),
plus render-pdf.sh to generate print-ready A4/A3 PDFs with a consistent
theme, header/footer, and legible contrast against the page background.

Also flip the operational policy in CLAUDE.md: the app now always runs
via Docker (dev and prod alike), with the venv reserved for tests,
migration authoring, and one-time secret/key-generation scripts.
2026-07-23 16:24:28 +02:00

51 lines
2.4 KiB
Plaintext

flowchart LR
A["Il round precedente\nsi e' chiuso\n(pagamento vincitore confermato)"] --> B{"Lotteria in pausa\nmanutenzione?"}
B -- "Si'" --> B_WAIT["Si attende"]
B_WAIT --> B
B -- "No" --> C["Breve attesa\n'di raffreddamento'\n(cosi' i giocatori vedono\nil risultato precedente)"]
C --> D["Si apre un nuovo round\n(stato: APERTO)\ncon un limite di tempo\nper scommettere"]
subgraph OPEN["FASE 1 - Round aperto (accetta scommesse)"]
direction TB
D --> F["Un giocatore\npiazza una scommessa"]
F --> G{"E' arrivata prima\ndella scadenza\ndel round?"}
G -- "Si'" --> H["Accettata:\ngiocatore aggiunto\nai partecipanti"]
G -- "No, troppo tardi" --> F2["Rifiutata:\nil round non e' piu'\nin tempo per accettarla"]
H --> F
F2 --> F
end
D -.->|"scade il tempo"| I
subgraph CLOSING["FASE 2 - Chiusura"]
direction TB
I["Il round raggiunge la sua scadenza\n(indipendentemente dalle scommesse\ngia' in corso, che restano valide):\nda questo momento nessuna\nnuova scommessa e' accettata"] --> J{"Ci sono scommesse\ngia' inviate ma non\nancora confermate?"}
J -- "Si'" --> J_WAIT["Si attende qualche secondo\ne si ricontrolla"]
J_WAIT --> J
J -- "No, tutte confermate" --> K["Il round si chiude:\nsi fotografa lo stato\nattuale della blockchain"]
end
subgraph DRAWING["FASE 3 - Estrazione vincitore"]
direction TB
K --> L{"C'e' almeno\nun partecipante?"}
L -- "No" --> M["Round concluso\nsenza vincitore"]
L -- "Si'" --> N["Si attende il primo\nnuovo blocco dopo\nla chiusura del round"]
N --> O["L'hash del blocco\nsceglie il vincitore\nin modo casuale e verificabile\n(stessa probabilita' per tutti)"]
end
subgraph PAYING["FASE 4 - Pagamento"]
direction TB
O --> P["Si calcola\nil montepremi totale"]
P --> Q["Si divide:\n70% al vincitore\n30% alla piattaforma"]
Q --> R["Si prepara e firma\nla transazione di pagamento"]
R --> S["La transazione\nviene inviata"]
S --> T{"Confermata\nsulla rete?"}
T -- "No, troppo tempo" --> T2["Si aumenta la\ncommissione e si reinvia"]
T2 --> S
T -- "Si'" --> U["Vincitore registrato\nnel registro di controllo"]
end
U --> V["Round CHIUSO\n(il ciclo ricomincia\ndall'inizio per\nil round successivo)"]
M --> V