modcomms/documentation/architecture/diagrams/03_websocket_flow.mmd
michael b6078cf534 Add comprehensive Technical Architecture PDF documentation
Generate a professional 22-page A4 PDF covering the full ModComms system
architecture including: system overview, multi-agent AI pipeline, WebSocket
analysis flow, database schema (15 tables), frontend component hierarchy,
Azure AD authentication & RBAC, knowledge base processing pipeline,
deployment architecture, REST API reference, and appendices.

Includes 8 Mermaid diagrams rendered to high-res PNGs, styled tables,
and consistent Barclays design tokens throughout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:42:59 -06:00

63 lines
2.3 KiB
Text

sequenceDiagram
participant C as React Client
participant WS as WebSocket Server
participant AUTH as Auth Service
participant DB as PostgreSQL
participant AS as Analysis Service
participant A1 as Legal Agent
participant A2 as Brand Agent
participant A3 as Channel BP Agent
participant A4 as Channel TS Agent
participant LA as Lead Agent
participant GEM as Gemini API
C->>WS: Connect /ws/analyze
WS-->>C: Connection established
C->>WS: {"type":"analyze", "file_data":"base64...", "access_token":"jwt..."}
WS->>AUTH: verify_access_token(jwt)
AUTH-->>WS: claims {oid, name, role}
WS->>DB: Fetch previous version analysis
DB-->>WS: previous_analysis (if revision)
par Parallel Agent Execution
WS-->>C: {"type":"agent_started", "agent_name":"Legal Agent"}
AS->>A1: analyze(images, prev_review)
A1->>GEM: Gemini API call
GEM-->>A1: Response
A1-->>AS: SubReview
WS-->>C: {"type":"agent_completed", "agent_name":"Legal Agent", "review":{...}}
and
WS-->>C: {"type":"agent_started", "agent_name":"Brand Agent"}
AS->>A2: analyze(images, prev_review, brand)
A2->>GEM: Gemini API call
GEM-->>A2: Response
A2-->>AS: SubReview
WS-->>C: {"type":"agent_completed", "agent_name":"Brand Agent", "review":{...}}
and
WS-->>C: {"type":"agent_started", "agent_name":"Channel BP Agent"}
AS->>A3: analyze(images, prev_review)
A3->>GEM: Gemini API call
GEM-->>A3: Response
A3-->>AS: SubReview
WS-->>C: {"type":"agent_completed", "agent_name":"Channel BP Agent", "review":{...}}
and
WS-->>C: {"type":"agent_started", "agent_name":"Channel TS Agent"}
AS->>A4: analyze(images, prev_review)
A4->>GEM: Gemini API call
GEM-->>A4: Response
A4-->>AS: SubReview
WS-->>C: {"type":"agent_completed", "agent_name":"Channel TS Agent", "review":{...}}
end
AS->>LA: synthesize(all_reviews)
LA->>GEM: Gemini API call
GEM-->>LA: Summary + RAG status
LA-->>AS: overall_status, summary
AS->>DB: Persist proof + version + agent_review
AS->>DB: Store file to disk
WS-->>C: {"type":"complete", "result":{...}, "proof_id":"uuid", "version_id":"uuid"}