# irwanbc79/ceisa architecture

> Architecture diagram of the GitHub repository irwanbc79/ceisa, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/irwanbc79/ceisa
- Repository: https://github.com/irwanbc79/ceisa

## Overview

This is a Laravel web application for host-to-host customs-document handling through CEISA 4.0. Users create, validate, submit, track, and archive documents; CEISA responses can also arrive through a webhook or be reconciled by polling. The application additionally exposes manifests, reference synchronization, AI-assisted validation, notifications, and administrative account and CEISA-credential management. The graph reflects the supplied source excerpts and file tree; several listed capabilities have no sampled implementation, so their internal wiring is left unspecified.

Main entry points: [`app/Http/Controllers/DocumentController.php`](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/DocumentController.php) (Document controller), [`app/Services/CeisaService.php`](https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaService.php) (CEISA client), [`app/Http/Controllers/Api/WebhookController.php`](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/Api/WebhookController.php) (Webhook receiver), [`app/Models/Document.php`](https://github.com/irwanbc79/ceisa/blob/main/app/Models/Document.php) (Customs documents)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_documents["Document operations"]
  node_document_ui["Document screens"]
  node_document_controller["Document controller"]
  node_document_request["Document validation"]
  node_document_validator["Document validator"]
  node_ai_client["Hybrid AI client<br/>[HybridAiClient.php]"]
  node_documents_store[("Customs documents<br/>[Document.php]")]
  node_timeline["Document timeline"]
end

subgraph group_integration["CEISA integration"]
  node_ceisa_controller["CEISA settings"]
  node_ceisa_service["CEISA client<br/>[CeisaService.php]"]
  node_payload_builder["Payload builder"]
  node_status_mapper["Status mapper"]
  node_credentials_store[("CEISA credentials")]
  node_webhook_controller["Webhook receiver"]
  node_webhook_logs[("Webhook audit log<br/>[WebhookLog.php]")]
  node_reference_sync["Reference sync"]
  node_document_sync["Document sync"]
end

subgraph group_support["Operational support"]
  node_manifest_controller["Manifest views"]
  node_manifest_store[("Manifests<br/>[Manifest.php]")]
  node_dashboard_controller["Dashboard"]
  node_notification_controller["Notifications"]
end

subgraph group_admin["Administration"]
  node_user_controller["User administration<br/>[UserController.php]"]
  node_users_store[("User accounts<br/>[User.php]")]
  node_admin_ui["Admin screens<br/>[index.blade.php]"]
end

node_user(("Operator"))
node_ceisa{{"CEISA service"}}
node_ai_services{{"AI providers"}}

node_user -->|"uses"| node_document_ui
node_document_ui -->|"submits"| node_document_controller
node_document_controller -->|"validates input"| node_document_request
node_document_controller -->|"builds payload"| node_payload_builder
node_document_controller -->|"validates AI"| node_document_validator
node_document_validator -->|"requests analysis"| node_ai_client
node_ai_client -.->|"queries providers"| node_ai_services
node_document_controller -->|"creates and updates"| node_documents_store
node_document_controller -->|"submits and queries"| node_ceisa_service
node_ceisa_service -->|"uses credentials"| node_credentials_store
node_ceisa_controller -->|"reads and updates"| node_credentials_store
node_ceisa_controller -->|"tests connection"| node_ceisa_service
node_ceisa_service -->|"sends requests"| node_ceisa
node_ceisa -->|"posts callbacks"| node_webhook_controller
node_webhook_controller -->|"records events"| node_webhook_logs
node_webhook_controller -->|"matches document"| node_documents_store
node_webhook_controller -->|"maps status"| node_status_mapper
node_status_mapper -->|"updates status"| node_documents_store
node_reference_sync -->|"fetches references"| node_ceisa_service
node_document_sync -->|"reconciles status"| node_ceisa_service
node_document_sync -->|"updates documents"| node_documents_store
node_user -->|"views manifests"| node_manifest_controller
node_manifest_controller -->|"reads manifests"| node_manifest_store
node_user -->|"views dashboard"| node_dashboard_controller
node_user -->|"views notifications"| node_notification_controller
node_user -->|"manages accounts"| node_admin_ui
node_admin_ui -->|"submits changes"| node_user_controller
node_user_controller -->|"creates and updates"| node_users_store

click node_document_ui "https://github.com/irwanbc79/ceisa/tree/main/resources/views/documents"
click node_document_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/DocumentController.php"
click node_document_request "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Requests/StoreDocumentRequest.php"
click node_document_validator "https://github.com/irwanbc79/ceisa/blob/main/app/Services/DocumentValidator.php"
click node_ai_client "https://github.com/irwanbc79/ceisa/blob/main/app/Services/AI/HybridAiClient.php"
click node_documents_store "https://github.com/irwanbc79/ceisa/blob/main/app/Models/Document.php"
click node_timeline "https://github.com/irwanbc79/ceisa/blob/main/app/Models/Concerns/HasDocumentTimeline.php"
click node_ceisa_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/CeisaSettingController.php"
click node_ceisa_service "https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaService.php"
click node_payload_builder "https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaPayloadBuilder.php"
click node_status_mapper "https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaStatusMapper.php"
click node_credentials_store "https://github.com/irwanbc79/ceisa/blob/main/app/Models/CeisaCredential.php"
click node_webhook_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/Api/WebhookController.php"
click node_webhook_logs "https://github.com/irwanbc79/ceisa/blob/main/app/Models/WebhookLog.php"
click node_reference_sync "https://github.com/irwanbc79/ceisa/blob/main/app/Console/Commands/SyncCeisaReferences.php"
click node_document_sync "https://github.com/irwanbc79/ceisa/blob/main/app/Console/Commands/SyncCeisaDocuments.php"
click node_manifest_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/ManifestController.php"
click node_manifest_store "https://github.com/irwanbc79/ceisa/blob/main/app/Models/Manifest.php"
click node_dashboard_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/DashboardController.php"
click node_notification_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/NotificationController.php"
click node_user_controller "https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/Admin/UserController.php"
click node_users_store "https://github.com/irwanbc79/ceisa/blob/main/app/Models/User.php"
click node_admin_ui "https://github.com/irwanbc79/ceisa/blob/main/resources/views/admin/users/index.blade.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_document_ui,node_document_controller,node_document_request,node_document_validator,node_ai_client,node_documents_store,node_timeline toneBlue
class node_ceisa_controller,node_ceisa_service,node_payload_builder,node_status_mapper,node_credentials_store,node_webhook_controller,node_webhook_logs,node_reference_sync,node_document_sync toneAmber
class node_manifest_controller,node_manifest_store,node_dashboard_controller,node_notification_controller toneMint
class node_user_controller,node_users_store,node_admin_ui toneRose
class node_user,node_ceisa,node_ai_services toneIndigo
```

## Components

### Document operations

- [Document screens](https://github.com/irwanbc79/ceisa/tree/main/resources/views/documents): `resources/views/documents`
- [Document controller](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/DocumentController.php): `app/Http/Controllers/DocumentController.php`
- [Document validation](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Requests/StoreDocumentRequest.php): `app/Http/Requests/StoreDocumentRequest.php`
- [Document validator](https://github.com/irwanbc79/ceisa/blob/main/app/Services/DocumentValidator.php): `app/Services/DocumentValidator.php`
- [Hybrid AI client](https://github.com/irwanbc79/ceisa/blob/main/app/Services/AI/HybridAiClient.php): `app/Services/AI/HybridAiClient.php`
- [Customs documents](https://github.com/irwanbc79/ceisa/blob/main/app/Models/Document.php): `app/Models/Document.php`
- [Document timeline](https://github.com/irwanbc79/ceisa/blob/main/app/Models/Concerns/HasDocumentTimeline.php): `app/Models/Concerns/HasDocumentTimeline.php`

### CEISA integration

- [CEISA settings](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/CeisaSettingController.php): `app/Http/Controllers/CeisaSettingController.php`
- [CEISA client](https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaService.php): `app/Services/CeisaService.php`
- [Payload builder](https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaPayloadBuilder.php): `app/Services/CeisaPayloadBuilder.php`
- [Status mapper](https://github.com/irwanbc79/ceisa/blob/main/app/Services/CeisaStatusMapper.php): `app/Services/CeisaStatusMapper.php`
- [CEISA credentials](https://github.com/irwanbc79/ceisa/blob/main/app/Models/CeisaCredential.php): `app/Models/CeisaCredential.php`
- [Webhook receiver](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/Api/WebhookController.php): `app/Http/Controllers/Api/WebhookController.php`
- [Webhook audit log](https://github.com/irwanbc79/ceisa/blob/main/app/Models/WebhookLog.php): `app/Models/WebhookLog.php`
- [Reference sync](https://github.com/irwanbc79/ceisa/blob/main/app/Console/Commands/SyncCeisaReferences.php): `app/Console/Commands/SyncCeisaReferences.php`
- [Document sync](https://github.com/irwanbc79/ceisa/blob/main/app/Console/Commands/SyncCeisaDocuments.php): `app/Console/Commands/SyncCeisaDocuments.php`

### Operational support

- [Manifest views](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/ManifestController.php): `app/Http/Controllers/ManifestController.php`
- [Manifests](https://github.com/irwanbc79/ceisa/blob/main/app/Models/Manifest.php): `app/Models/Manifest.php`
- [Dashboard](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Notifications](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/NotificationController.php): `app/Http/Controllers/NotificationController.php`

### Administration

- [User administration](https://github.com/irwanbc79/ceisa/blob/main/app/Http/Controllers/Admin/UserController.php): `app/Http/Controllers/Admin/UserController.php`
- [User accounts](https://github.com/irwanbc79/ceisa/blob/main/app/Models/User.php): `app/Models/User.php`
- [Admin screens](https://github.com/irwanbc79/ceisa/blob/main/resources/views/admin/users/index.blade.php): `resources/views/admin/users/index.blade.php`

### Other components

- **Operator**
- **CEISA service**
- **AI providers**

## Connections

- Operator → Document screens: uses
- Document screens → Document controller: submits
- Document controller → Document validation: validates input
- Document controller → Payload builder: builds payload
- Document controller → Document validator: validates AI
- Document validator → Hybrid AI client: requests analysis
- Hybrid AI client → AI providers: queries providers
- Document controller → Customs documents: creates and updates
- Document controller → CEISA client: submits and queries
- CEISA client → CEISA credentials: uses credentials
- CEISA settings → CEISA credentials: reads and updates
- CEISA settings → CEISA client: tests connection
- CEISA client → CEISA service: sends requests
- CEISA service → Webhook receiver: posts callbacks
- Webhook receiver → Webhook audit log: records events
- Webhook receiver → Customs documents: matches document
- Webhook receiver → Status mapper: maps status
- Status mapper → Customs documents: updates status
- Reference sync → CEISA client: fetches references
- Document sync → CEISA client: reconciles status
- Document sync → Customs documents: updates documents
- Operator → Manifest views: views manifests
- Manifest views → Manifests: reads manifests
- Operator → Dashboard: views dashboard
- Operator → Notifications: views notifications
- Operator → Admin screens: manages accounts
- Admin screens → User administration: submits changes
- User administration → User accounts: creates and updates
