GeoNetAgent, LDAPWeb, server-audit, server-connection
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.1 KiB

Architecture — Database Flow

Terakhir Diperbarui: 2026-06-29


Database Connections

geonet-console Laravel
    │
    ├── pgsql (default)     → audit-postgres:5432/databaselist_app
    │   Metadata: ldap_user_meta, service_tokens, api_tokens, database_connections
    │
    ├── audit               → audit-postgres:5432/databaselist_audit
    │   Audit log: audit_logs
    │
    ├── mssql               → 10.100.1.25:1433/master
    │   Read-only: database registry (SQL Server)
    │
    └── project_search      → 10.100.1.25:5432/geonet_project_search
        Vector search index (Fase 4 — Ollama)

Alur Write — API Request

sequenceDiagram
    participant API as API Request
    participant SVC as Service Layer
    participant PGSQL as PostgreSQL (app)
    participant AUDIT as PostgreSQL (audit)

    API->>SVC: Update LDAP user meta
    SVC->>PGSQL: UPDATE ldap_user_meta SET ...
    SVC->>AUDIT: INSERT audit_logs {actor, action, payload}
    PGSQL-->>SVC: OK
    AUDIT-->>SVC: OK
    SVC-->>API: 200 success

Aturan: Semua aksi write wajib log ke audit DB via AuditLogService.


Alur Read — Database Registry

GET /api/v1/databases
  → DatabaseConnectionManager::listAll()
  → mssql connection → SELECT name, state FROM sys.databases
  → PostgreSQL (pgsql) → SELECT * FROM database_connections
  → merge + return

Vector Search (Fase 4 — Belum Aktif)

POST /api/v1/project-search/ask {query}
  → ProjectSearchService::ask()
  → OllamaService::embed(query) → 10.100.1.26:11434
  → project_search DB → SELECT ... ORDER BY embedding <-> $vector
  → OllamaService::generate(context + query)
  → return {answer, sources}

Catatan Penting

  • DB_CONNECTION=pgsql di compose.yaml override .env — jangan ubah
  • project_search koneksi ke 10.100.1.25 external — migration gagal jika unreachable (non-critical)
  • OAuth keys ada di Docker volume app_storage (bukan DB)
  • Audit DB (databaselist_audit) terpisah dari app DB untuk isolasi