Stavové a sekvenční diagramy¶
Tato sekce obsahuje vizualizaci procesů a stavů v modulu Signi.
Diagram stavů dokumentu¶
Tento diagram znázorňuje životní cyklus dokumentu z pohledu integrace Signi.
stateDiagram-v2
[*] --> Draft: Vytvoření v CRM
Draft --> Sent: Akce "Send to Signi"
state Sent {
[*] --> Waiting: Odesláno do Signi
Waiting --> Signed: Všichni podepsali
Waiting --> Rejected: Někdo odmítl
Waiting --> Expired: Vypršel čas
Waiting --> Storno: Storno uživatelem
}
Sent --> Draft: Storno (Reset)
Sent --> Draft: Rejected/Expired (Reset jobem)
Sent --> Completed: Úspěšné dokončení
Completed --> [*]: Stažení podepsaného PDF
Proces odeslání dokumentu (Sequence Diagram)¶
Detailní pohled na to, co se děje při kliknutí na tlačítko "Send to Signi".
sequenceDiagram
participant User as Uživatel
participant Client as Espo Client (JS)
participant API as Espo Controller
participant Service as Signi Service
participant DB as Databáze
participant Signi as Signi API
User->>Client: Kliknutí na "Send to Signi"
Client->>API: GET signi/send-document/{id}
API->>Service: sendFromDocument(id)
Service->>DB: Načtení dokumentu, souboru a podepisujících
rect rgb(240, 240, 240)
Note over Service, Signi: Validace dat
Service-->>API: Chyba (pokud chybí soubor/podepisující)
end
Service->>Signi: POST /contract/?type=doc (Multipart)
Signi-->>Service: 200 OK {contract_id, ...}
Service->>DB: Update Document (isSend=true, signiId=...)
Service-->>API: Response JSON
API-->>Client: Response JSON
Client->>User: Notifikace "Odesláno"
Client->>Client: Refresh zobrazení
Proces kontroly stavu (Automation)¶
Jak systém automaticky kontroluje stavy odeslaných dokumentů.
sequenceDiagram
participant Cron as Scheduler
participant Job as IsContractSigned Job
participant Service as Signi Service
participant Signi as Signi API
participant DB as Databáze
Cron->>Job: Spuštění jobu
Job->>DB: Find Documents (signiId != null AND isSigned = false)
loop Pro každý dokument
Job->>Service: isSigned(signiId)
Service->>Signi: GET /contract/{signiId}
Signi-->>Service: Status Response
alt Status = COMPLETED
Job->>Signi: GET /contract/{id}/download
Signi-->>Job: PDF Content
Job->>DB: Vytvoření Attachment (signed_*.pdf)
Job->>DB: Update Document (isSigned=true, link to attachment)
else Status = REJECTED / EXPIRED
Job->>DB: Reset Document (isSend=false, signiId=null)
end
end