flowchart TD
S1["1 · Intelligent Textbook
sends statement
POST one xAPI statement"]:::ingest
S2["2 · Gateway validates
structure
actor, verb, object, timestamp"]:::ingest
S3["3 · Gateway queues
statement
hands to queue, responds at once"]:::ingest
S4["4 · Durable Event Queue
holds in order
preserves per-learner sequence"]:::process
S5["5 · Stream Processor
enriches
resolve learner, add context, pseudonymize"]:::process
S6["6 · Writes to Event Store
durable, queryable log"]:::store
Down["If the Stream Processor is down
the statement waits safely in the queue — the textbook already got its response in step 3"]:::branch
S1 --> S2 --> S3 --> S4 --> S5 --> S6
S3 -.-> Down
classDef ingest fill:#12695f,stroke:#0c4a43,color:#fff,font-size:14px
classDef process fill:#2a9d8f,stroke:#1f7a6f,color:#fff,font-size:14px
classDef store fill:#8fd3c9,stroke:#3bab9d,color:#0c2f2b,font-size:14px
classDef branch fill:#e9e2d0,stroke:#b3a67e,color:#4a4326,font-size:13px
linkStyle default stroke:#999,stroke-width:2px