fix: normalize engineering checks across units

Convert pump-depth vs rod-length mismatch gating to meter-equivalent comparisons, add imperial coverage, and correct rod material mapping with exported helper tests while refreshing related GUI/docs copy.

Made-with: Cursor
This commit is contained in:
2026-04-16 23:28:00 -06:00
parent 64e9d31373
commit 2a6cee21f8
8 changed files with 73 additions and 19 deletions

View File

@@ -109,8 +109,7 @@ make smoke
| **Pumping-unit kinematics** (Svinos tables, crank motion from `PumpingUnitID`) | Harmonic default; unit geometry unused |
| **Inverse calibration** | Fit damping / friction to measured downhole card |
| **Fourier** analytical diagnostic | Optional `comparison.fourier` |
| **GUI** 3D survey + layout | **Partial done** — Results tab includes 3D projected wellbore + rod/pump overlay + DLS contour; not a full 3D engine (no camera controls / mesh terrain yet) |
| **GUI diagnostic workflow** | Tabbed UI ships predictive solve end-to-end; diagnostic requires surface-card upload path in Kinematics (calls `POST /solve/validate-card` + `POST /solve` with `workflow=diagnostic`) — not wired in this pass |
| **GUI** 3D survey + layout | **Partial done** — Results tab includes 3D projected wellbore + rod/pump overlay, depth-hue and side-load overlays; not a full 3D engine (no camera controls / mesh terrain yet) |
| **GUI Pump / Fluid / Kinematics first-class mapping** | Tabs render editable fields but rely on `rawFields` round-trip rather than dedicated serializer logic; audit once solver-api adds explicit fields for `PumpFillageOption`, pumping-unit kinematics, etc. |
| **GUI fatigue / API RP 11BR table** | Backend does not emit a fatigue payload yet; surface in Results tab when `solver.fatigue` exists |
@@ -121,15 +120,12 @@ make smoke
- Fixed engineering gate in Solver tab:
- run blocked when `|PumpDepth - sum(TaperLengthArray)| > 15 m`.
- survey MD monotonicity and minimum station-count checks.
- Fixed DLS bad-section threshold:
- warnings + 3D contour use `15 deg/100` as the "bad section" limit.
- Results tab now shows:
- uPlot dynacard overlays,
- 3D projected wellbore with rod gradient and pump marker,
- interactive 3D view controls (rotate, pan, zoom, perspective/orthographic toggle, reset),
- highlighted bad-DLS segments,
- depth-hue and side-load risk overlays,
- segment highlight + clear-highlight controls,
- trajectory analytics table with row↔3D segment cross-highlight,
- side-load overlay mode (when `solver.profiles.sideLoadProfile` is available),
- pump-placement diagnostics panel + navigation actions,
- export actions (3D SVG, 3D PNG, summary JSON).
- keyboard-accessible trajectory segment selection (`Enter`/`Space`) and clear-highlight control.