Well-Log POC Operator Manual
Purpose
This manual describes how to run the new well-log POC workflow end-to-end:
- Normalize legacy LAS logs.
- Run deterministic pay interpretation.
- Classify/rank bypassed-pay candidates.
- Read QC cards, status packs, and portfolio summary.
Prerequisites
- APIs and worker running:
- data-plane API on
http://localhost:8082 - API gateway on
http://localhost:8080(recommended browser/UI endpoint) - ingest worker process running (
apps/worker-ingest) - MinIO bucket configured and reachable.
- A LAS file uploaded via existing upload path (
/uploads/presign) or with known object key.
Auth Header
All calls below use a proxy-subject header in this POC:
H='x-proxy-subject: admin'
1) Queue Well-Log Normalization
curl -s -X POST "http://localhost:8082/well-logs/jobs/normalize" \
-H "$H" -H "Content-Type: application/json" \
-d '{
"project_id": "demo_tenant",
"object_key": "demo_tenant/raw/<upload_id>/Legacy-17.las",
"well_id": "Legacy-17",
"file_format": "las",
"kb_elevation_m": 120.0,
"resample_step_m": 0.15,
"deviation_survey": [
{"md": 1000.0, "inclination_deg": 0.0, "azimuth_deg": 0.0},
{"md": 1300.0, "inclination_deg": 8.5, "azimuth_deg": 120.0}
]
}'
Save task_id from response.
2) Poll Job Status
curl -s "http://localhost:8082/jobs/status?task_id=<normalize_task_id>" -H "$H"
Wait for state = SUCCESS.
3) Queue Interpretation
curl -s -X POST "http://localhost:8082/well-logs/jobs/interpret" \
-H "$H" -H "Content-Type: application/json" \
-d '{
"project_id": "demo_tenant",
"well_id": "Legacy-17",
"cutoffs": {
"vsh_max": 0.35,
"phie_min": 0.08,
"rt_min_ohm_m": 10.0,
"net_thickness_min_m": 1.0
},
"formula_config": {
"rho_matrix": 2.65,
"rho_fluid": 1.0
}
}'
Poll status again via /jobs/status.
4) Queue Bypassed-Pay Classification
curl -s -X POST "http://localhost:8082/well-logs/jobs/bypassed-pay" \
-H "$H" -H "Content-Type: application/json" \
-d '{
"project_id": "demo_tenant",
"well_id": "Legacy-17",
"completion_intervals": [
{"top_tvdss_m": 2410.0, "base_tvdss_m": 2411.5, "perforated": true, "tested": true}
]
}'
Poll status via /jobs/status.
5) Retrieve Well QC Card
curl -s "http://localhost:8082/projects/demo_tenant/wells/Legacy-17/qc-card" -H "$H"
6) Retrieve Well Status Pack
curl -s "http://localhost:8082/projects/demo_tenant/wells/Legacy-17/status-pack" -H "$H"
Status pack includes:
- latest well-log run metadata
- QC card
- interpretation summary
- pay events table
- bypassed-pay candidates
- data gaps
7) Retrieve Portfolio Bypassed-Pay Summary
curl -s "http://localhost:8082/projects/demo_tenant/portfolio/bypassed-pay-summary?limit=100" -H "$H"
Operational Notes
- Current POC supports
LASonly for this module;DLISis planned next. - Depth output prefers TVDSS when enough inputs are provided; otherwise MD-based confidence is downgraded and data gaps are emitted.
- All three stages are queued jobs and executed by
worker-ingest.
Real LAZ End-to-End Workflow Test Script
You can run a complete upload/list/ingest/metadata/export workflow test with real files:
python3 scripts/dev/run_real_laz_workflow.py \
--output docs/operations/WORKFLOW_TEST_REAL_LAZ_RESULTS.json \
"/absolute/path/file1.laz" \
"/absolute/path/file2.laz"
This script writes a JSON report with:
- upload + ingest job states
- metadata listing verification
- export artifact verification
- grid tile count summary