%%{init: {
"theme": "base",
"themeVariables": {
"fontSize": "18px",
"background": "transparent",
"primaryColor": "#ffffff",
"primaryBorderColor": "#64748b",
"lineColor": "#64748b",
"edgeLabelBackground": "#ffffff",
"actorBkg": "#038851",
"actorTextColor": "#ffffff",
"actorBorder": "#026139",
"actorLineColor": "#94a3b8",
"signalColor": "#64748b",
"signalTextColor": "#059669",
"noteBkgColor": "#e6f4ee",
"noteTextColor": "#02502f",
"noteBorderColor": "#038851",
"activationBkgColor": "#c6ebdc",
"activationBorderColor": "#026139",
"sequenceNumberColor": "#ffffff"
}
}}%%
flowchart TD
A([NEW ORDER]):::start --> B[ORDER WEBHOOK SENT]
B --> C[Connection attempted<br/>for 3 seconds]
C --> D{🟢 Connection Made?}
C --> E{🔴 No Connection?}
C --> F["Error 502, 503, 504"]
D --> G["Response time ≤ 30s"]
D --> H["Response time > 30s<br/><b>Read Timeout</b>"]
E --> I
F --> I["<b>RETRY</b><br/>Initial retry after 10s<br/>exponential backoff<br/>of factor 2"]:::retry
I --> J["Fifth retry without<br/>connection<br/><b>Connection Timeout</b>"]
J -->|loop back| C
G --> K([ORDER RECEIVED]):::success
H --> L([FAILED ORDER]):::failed
J --> L
K --> M[CHANNEL STATUS UPDATE]
L --> M
classDef start fill:#038851,color:#ffffff,stroke:#026139
classDef success fill:#ffffff,stroke:#038851,stroke-width:2px,color:#02502f
classDef failed fill:#ffffff,stroke:#e35d3a,stroke-width:2px,color:#7a2c15
classDef retry fill:#038851,color:#ffffff,stroke:#026139