Vyrenderovany diagram
Diagram sa na tejto stranke renderuje priamo z Mermaid definicie do SVG. Mozes ho priblizovat, oddialovat aj posuvat bez straty ostrosti.
Renderujem diagram...
Zobrazit Mermaid zdroj
flowchart TD
subgraph Triggers["Event Triggers"]
EV1["User Registers"]
EV2["Group Admin Sends Invite"]
EV3["Scheduled Job\n(every minute)"]
EV4["Match status β postponed"]
EV5["is_final = true\n(result entered)"]
EV6["Score Recalculated\n(result corrected)"]
EV7["Tournament status β finished"]
EV8["Postponed match rescheduled\n(new scheduled_at set)"]
end
subgraph Jobs["pg_cron / VPS Scheduled Jobs"]
JOB1{"Match deadline\n- 60 min?\nPlayer has no tip?"}
JOB2{"Match deadline\n- 15 min?\nPlayer has no tip?"}
JOB3{"scheduled_at +\nmatch_duration + 30 min?\nis_final = false?"}
end
subgraph EmailTargets["Email Notifications"]
EM1["π§ Player β Registration Confirm"]
EM2["π§ Invited User β Group Invitation"]
EM3["π§ Player β Reminder (60 min)"]
EM4["π§ Player β Reminder (15 min)"]
EM5["π§ System Admin β Missing Result Alert"]
EM6["π§ All Group Players β Match Result + Points"]
EM7["π§ All Group Players β Result Corrected"]
EM8a["π§ All Group Players β Match Postponed\n(new time: [date])"]
EM8b["π§ All Group Players β Match Postponed\n(new time TBD)"]
EM8c["π§ All Group Players β Match Rescheduled\n(new time confirmed)"]
EM9["π§ All Group Players β Tournament Ended"]
end
subgraph PushTargets["Push Notifications β Phase 2 (Web Push / VAPID)"]
PU1["π Player β Reminder (60 min)"]
PU2["π Player β Reminder (15 min)"]
PU3["π Player β Result + Points Earned"]
PU4["π Player β Leaderboard Position Changed"]
PU5["π Player β Match Postponed"]
end
EV1 --> EM1
EV2 --> EM2
EV3 --> JOB1
EV3 --> JOB2
EV3 --> JOB3
JOB1 -->|"Yes"| EM3
JOB1 -->|"Yes"| PU1
JOB2 -->|"Yes"| EM4
JOB2 -->|"Yes"| PU2
JOB3 -->|"Yes"| EM5
EV4 --> PST_DEC{"scheduled_at\nprovided?"}
PST_DEC -->|"Yes"| EM8a
PST_DEC -->|"No"| EM8b
EV4 --> PU5
EV8 --> EM8c
EV5 --> EM6
EV5 --> PU3
EV5 --> PU4
EV6 --> EM7
EV6 --> PU3
EV6 --> PU4
EV7 --> EM9
subgraph Fallback["Fallback Logic β Phase 2"]
FB["Push fails?\n(e.g. iOS < 16.4)"]
FB --> EM3
FB --> EM4
end
PU1 -.->|"if push unavailable"| FB
PU2 -.->|"if push unavailable"| FB
style Triggers fill:#dbeafe,stroke:#3b82f6
style Jobs fill:#fef9c3,stroke:#eab308
style EmailTargets fill:#dcfce7,stroke:#16a34a
style PushTargets fill:#fce7f3,stroke:#ec4899
style Fallback fill:#f1f5f9,stroke:#64748b