Skip to content

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