feat: gate heavy solver JSON, field traceability API, GUI rod/export depth
- C: emit profiles/diagnostics/fourier only when enable flags are set; null otherwise - API: fieldTraceability on case parse/default and solve; fix GET /solve/default options - Tests: golden fingerprint, quality gates, C diagnostics invariants; cardQa mean empty guard - Makefile: test-solver-sanitize ASan/UBSan target; README and COMPUTE_PLAN updates - GUI: taper weight/MTS/guides/sinker round-trip, rod catalog, solver output toggles, results (profiles/diagnostics/Fourier/traceability), engineering checks and tabs - Restore canonical WellName in base-case for regression; trace TaperGuidesCountArray Made-with: Cursor
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
import type { CaseState } from "./caseModel";
|
||||
import { computeDoglegSeverityDegPer100 } from "./trajectoryMetrics";
|
||||
|
||||
export const PUMP_ROD_MISMATCH_M = 15;
|
||||
export const DLS_BAD_SECTION_THRESHOLD = 15;
|
||||
|
||||
export type EngineeringIssue = {
|
||||
severity: "warning" | "error";
|
||||
@@ -42,10 +40,8 @@ export function runEngineeringChecks(state: CaseState): EngineeringChecks {
|
||||
});
|
||||
} else {
|
||||
let nonMonotonic = false;
|
||||
let maxDls = 0;
|
||||
for (let i = 1; i < state.survey.length; i += 1) {
|
||||
if (state.survey[i].md <= state.survey[i - 1].md) nonMonotonic = true;
|
||||
maxDls = Math.max(maxDls, computeDoglegSeverityDegPer100(state.survey[i - 1], state.survey[i]));
|
||||
}
|
||||
if (nonMonotonic) {
|
||||
issues.push({
|
||||
@@ -54,15 +50,6 @@ export function runEngineeringChecks(state: CaseState): EngineeringChecks {
|
||||
message: "Measured depth must strictly increase between survey stations."
|
||||
});
|
||||
}
|
||||
if (maxDls > DLS_BAD_SECTION_THRESHOLD) {
|
||||
issues.push({
|
||||
severity: "warning",
|
||||
code: "DLS_HIGH",
|
||||
message: `High dogleg severity detected (max ${maxDls.toFixed(
|
||||
2
|
||||
)} deg/100 > ${DLS_BAD_SECTION_THRESHOLD} deg/100 bad-section threshold).`
|
||||
});
|
||||
}
|
||||
const maxMd = state.survey[state.survey.length - 1].md;
|
||||
if (pumpDepth > 0 && maxMd > 0 && maxMd < pumpDepth - 10) {
|
||||
issues.push({
|
||||
|
||||
Reference in New Issue
Block a user