minmon/docs/diagrams/sequence.mmd

29 lines
1.1 KiB
Text

sequenceDiagram
actor Admin
participant UI as Web UI React
participant TRPC as tRPC Client
participant API as domainsRouter
participant DB as PostgreSQL/Drizzle
participant Checker as domain-check module
participant DNS as DNS Resolver
Admin->>UI: Isi form domain dan pilih service
UI->>TRPC: domains.create({ serviceId, name, expectedServerIp? })
TRPC->>API: Kirim request create domain
API->>DB: Validasi service dan server parent
API->>DB: Insert domain, default expected IP dari server parent jika kosong
DB-->>API: Domain berhasil dibuat
API-->>TRPC: Data domain baru
TRPC-->>UI: Data domain baru
UI->>TRPC: domains.check({ id: created.id }) otomatis
TRPC->>API: Kirim request DNS check
API->>DB: Ambil domain berdasarkan id
API->>Checker: runAndPersistDomainCheck(...)
Checker->>DNS: resolve4(domain.name)
DNS-->>Checker: Daftar IPv4 atau error
Checker->>DB: Update resolutionStatus dan hasil check
DB-->>Checker: Domain terbaru
Checker-->>API: { domain, result }
API-->>TRPC: { domain, check }
TRPC-->>UI: Hasil DNS check
UI->>UI: Invalidate domains.list, navigate detail, tampilkan toast