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
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=pgsqldicompose.yamloverride.env— jangan ubahproject_searchkoneksi 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