System Interaction Map (Integrated vs Not Integrated)
This map explains how the platform currently interacts end-to-end and where modules are still partial.
1) Runtime topology
flowchart LR
CW["Client Web (3101)"] -->|"/data/*"| GW["API Gateway (8080)"]
AW["Admin Web (3100)"] -->|"/data/*"| GW
GW --> DP["Data Plane API (8082)"]
GW --> CP["Control Plane API (8081)"]
DP --> PG[("PostgreSQL/PostGIS")]
DP --> S3[("MinIO S3")]
DP --> Q[("ops.jobs queue")]
Q --> WI["worker-ingest"]
Q --> WA["worker-audit"]
Q --> WC["worker-crs"]
WI --> PG
WI --> S3
WA --> PG
WC --> PG
2) Upload and point-cloud flow (implemented)
- Client UI uploads file by
POST /uploads/direct(or/uploads/presign). - Data API writes object to MinIO and session metadata to
ops.upload_sessions. - Client queues ingest via
POST /jobs/ingest. - Data API enqueues job in
ops.jobs(pointcloud_process). worker-ingestclaims job, processes LAS/LAZ, runs CRS/ECEF validation, stores result inops.job_results.- Metadata APIs expose processed outputs:
GET /projects/{project_id}/metadataGET /projects/{project_id}/metadata/{job_id}
- Client WebGL viewer loads selected metadata rows and renders points.
3) Storage browsing flow (implemented)
- Client UI
Review Uploadedcalls:
GET /projects/{project_id}/uploadsGET /bucket/list?prefix=<project>/raw/
- Finder UI converts object keys into folder-level entries.
- Selected file can be pushed into
object_keyinput for ingest/export. - Admin UI manages storage by API:
GET /storage/objectsDELETE /storage/objectDELETE /storage/prefix
4) Export and 2D map flow (implemented)
- Client queues export via
POST /jobs/export/autodesk(pts|asc|csv|jsonl). worker-ingestexports artifacts and uploads to MinIO underderived/.../autodesk/.GET /jobs/statusreturns artifact object keys.- For ASC,
GET /maps/terrain/previewbuilds hillshade + contours for 2D map overlays.
5) Well data processing visibility flow (implemented)
- Datasets are uploaded with metadata tags (
source_tag,processing_stage,dataset_kind). - Register jobs are created by
POST /processing-datasets/jobs/register. - UI shows live status via
GET /projects/{project_id}/processing-datasets. - Audit compare run uses
POST /projects/{project_id}/processing/audit-validate.
6) Well-log interpretation flow (partially implemented)
Implemented:
- Queue APIs exist:
POST /well-logs/jobs/normalizePOST /well-logs/jobs/interpretPOST /well-logs/jobs/bypassed-pay
worker-ingesthas handlers for all three job types.- Query APIs exist for QC/status/portfolio summary.
Not yet fully integrated in UI:
- Client web does not yet have a dedicated well-log stage runner page.
- Status-pack/report visualization is still API-first.
7) Open-data scraper flow (implemented with practical limits)
Implemented:
data-scraper/search,download, and statistics endpoints.- Auto-search can trigger from processed upload metadata centroid.
Limits:
- Protected-source downloads still require manual/human handling.
- Some WCR/OCR source links return HTML/non-PDF and are correctly marked failed.
8) Modules currently present but still lightweight/stubbed
worker-crs: currently only processescrs_checkqueue events at a basic level.worker-audit: evidence pack generation exists, but advanced lineage packaging remains limited.- Risk engine (commercial/pressure/profit scoring), uncertainty cone, and seismic tie-in are still planned.
9) Data stores and ownership
- Postgres/PostGIS stores operational records (
ops.*) and audit/core schemas. - MinIO stores raw and derived artifacts.
- Client data should remain tenant-scoped.
- Open/public data can be retained as global platform asset class (policy goal defined, incremental implementation).
10) What is connected vs disconnected right now
Connected:
- Upload -> ingest -> metadata -> viewer.
- Export -> object storage -> 2D map preview.
- Processing dataset status -> audit validation UI.
- Admin storage management via API.
Disconnected or partially connected:
- Well-log lifecycle is not fully represented in client UI workflows.
- Risk scoring + uncertainty cone + seismic overlays are not yet an operational runtime path.
- Protected-source queue UX is not yet first-class in the web apps.