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.
51 lines
2.4 KiB
Plaintext
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
|