@geotechcli/core 0.4.35 → 0.4.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,49 @@ export interface IngestDossierNarrativeSection {
43
43
  title: string;
44
44
  paragraphs: string[];
45
45
  }
46
+ export interface IngestDossierExecutiveItem {
47
+ label: string;
48
+ value: string;
49
+ detail?: string;
50
+ tone?: IngestDossierTone;
51
+ }
52
+ export interface IngestDossierInsightCard {
53
+ title: string;
54
+ body: string;
55
+ tone: IngestDossierTone;
56
+ detail?: string;
57
+ }
58
+ export interface IngestDossierTrustItem {
59
+ item: string;
60
+ value: string;
61
+ sourcePage: string;
62
+ confidence: string;
63
+ review: string;
64
+ evidence: string;
65
+ tone: IngestDossierTone;
66
+ }
67
+ export interface IngestDossierBoreholeProfileLayer {
68
+ depthFrom: number;
69
+ depthTo: number;
70
+ label: string;
71
+ description: string;
72
+ uscsSymbol?: string | null;
73
+ tone: IngestDossierTone;
74
+ uncertain?: boolean;
75
+ }
76
+ export interface IngestDossierBoreholeProfileColumn {
77
+ boreholeId: string;
78
+ totalDepth: number | null;
79
+ waterTableDepth: number | null;
80
+ layers: IngestDossierBoreholeProfileLayer[];
81
+ }
82
+ export interface IngestDossierBoreholeProfile {
83
+ title: string;
84
+ maxDepth: number;
85
+ depthUnit: string;
86
+ columns: IngestDossierBoreholeProfileColumn[];
87
+ notes: string[];
88
+ }
46
89
  export interface IngestDossierStoredReview {
47
90
  projectId: string;
48
91
  datasetName: string;
@@ -68,6 +111,10 @@ export interface IngestDossier {
68
111
  tables: IngestDossierTable[];
69
112
  pageCards: IngestDossierPageCard[];
70
113
  sections: IngestDossierNarrativeSection[];
114
+ executiveItems: IngestDossierExecutiveItem[];
115
+ insightCards: IngestDossierInsightCard[];
116
+ trustItems: IngestDossierTrustItem[];
117
+ boreholeProfile?: IngestDossierBoreholeProfile;
71
118
  storedReview?: IngestDossierStoredReview;
72
119
  approval?: IngestDossierApproval;
73
120
  footerNotes: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-dossier.d.ts","sourceRoot":"","sources":["../../src/report/ingest-dossier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest-dossier.d.ts","sourceRoot":"","sources":["../../src/report/ingest-dossier.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,174 @@ function sourcePageText(value) {
99
99
  .filter((entry) => Boolean(entry));
100
100
  return matches.length > 0 ? [...new Set(matches)].join(', ') : '-';
101
101
  }
102
+ function normalizeBoreholeId(value) {
103
+ const match = value.match(/\bBH[-\s]?0*(\d+)\b/i);
104
+ return match ? `BH${match[1]}` : value.trim().toUpperCase();
105
+ }
106
+ function inferBoreholeIdsFromText(...values) {
107
+ const text = values.filter(Boolean).join('\n');
108
+ const patterns = [
109
+ /\bB\.?\s*H\.?\s*(?:NO\.?)?\s*[:#-]?\s*0*(\d{1,3})\b/gi,
110
+ /\bBORE\s*HOLE\s*NO\.?\s*[:#-]?\s*0*(\d{1,3})\b/gi,
111
+ /\bBOREHOLE\s*NO\.?\s*[:#-]?\s*0*(\d{1,3})\b/gi,
112
+ /\bBOREHOLENO\s*[:#-]?\s*0*(\d{1,3})\b/gi,
113
+ ];
114
+ const ids = patterns.flatMap((pattern) => [...text.matchAll(pattern)]
115
+ .map((match) => `BH${match[1]}`)
116
+ .filter((id) => !/^BH0$/.test(id)));
117
+ return [...new Set(ids)].sort((left, right) => left.localeCompare(right, undefined, { numeric: true }));
118
+ }
119
+ function readDepthMeters(value) {
120
+ if (typeof value === 'number') {
121
+ return Number.isFinite(value) ? value : null;
122
+ }
123
+ if (!value) {
124
+ return null;
125
+ }
126
+ const text = String(value);
127
+ const match = text.match(/(-?\d+(?:\.\d+)?)\s*m\b/i)
128
+ ?? text.match(/\b(?:depth|termination|terminating)\b[^0-9-]{0,40}(-?\d+(?:\.\d+)?)/i);
129
+ const numeric = Number(match?.[1] ?? text);
130
+ return Number.isFinite(numeric) ? numeric : null;
131
+ }
132
+ function collectDepthMetersFromText(value) {
133
+ if (!value) {
134
+ return [];
135
+ }
136
+ const normalized = value.replace(/\s+/g, ' ');
137
+ const depths = [
138
+ ...[...normalized.matchAll(/\b(\d{1,3}(?:\.\d+)?)\s*m\b/gi)].map((match) => Number(match[1])),
139
+ ...[...normalized.matchAll(/\b(?:maximum\s+depth|termination)\b[^0-9]{0,60}(\d{1,3}(?:\.\d+)?)\b/gi)].map((match) => Number(match[1])),
140
+ ].filter((depth) => Number.isFinite(depth) && depth > 0 && depth <= 120);
141
+ return depths;
142
+ }
143
+ function collectPreferredBoreholeDepthsFromText(value) {
144
+ if (!value) {
145
+ return [];
146
+ }
147
+ const normalized = value.replace(/\s+/g, ' ');
148
+ return [
149
+ ...[...normalized.matchAll(/\bmaximum\s+depth\s+(?:of\s+)?(\d{1,2}(?:\.\d+)?)\s*m\b/gi)].map((match) => Number(match[1])),
150
+ ...[...normalized.matchAll(/\bBH\s*[-:]?\s*0*\d{1,3}\s+(\d{1,2}(?:\.\d+)?)\s+(?:not\s+found|nil|no\b|\d{1,2}[./-]\d{1,2}[./-]\d{2,4})/gi)].map((match) => Number(match[1])),
151
+ ...[...normalized.matchAll(/\bTERMINATION\s*[:#-]?\s*(\d{1,2}(?:\.\d+)?)\b/gi)].map((match) => Number(match[1])),
152
+ ].filter((depth) => Number.isFinite(depth) && depth > 0 && depth <= 60);
153
+ }
154
+ function formatDepthMeters(value) {
155
+ return value != null && Number.isFinite(value) ? `${value.toFixed(2)} m` : 'Unavailable';
156
+ }
157
+ function materialTone(description, uscsSymbol) {
158
+ const text = `${description ?? ''} ${uscsSymbol ?? ''}`.toLowerCase();
159
+ if (/rock|shale|limestone|sandstone|fractured|weathered/.test(text))
160
+ return 'neutral';
161
+ if (/clay|ci|cl|ch/.test(text))
162
+ return 'warning';
163
+ if (/sand|sm|sp|sw|gravel|gm|gp|gw/.test(text))
164
+ return 'accent';
165
+ return 'good';
166
+ }
167
+ function humanDocumentType(value) {
168
+ if (!value) {
169
+ return 'Geotechnical document';
170
+ }
171
+ return value
172
+ .split(/[-_]+/g)
173
+ .filter(Boolean)
174
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
175
+ .join(' ');
176
+ }
177
+ function includesParameter(result, pattern) {
178
+ return result.parameters.some((parameter) => pattern.test(`${parameter.name} ${parameter.valueText} ${parameter.unit ?? ''} ${parameter.material ?? ''} ${parameter.context ?? ''}`));
179
+ }
180
+ function buildMissingCriticalItems(result) {
181
+ const missing = [];
182
+ if (!includesParameter(result, /ground\s*water|water\s*table/i))
183
+ missing.push('groundwater level');
184
+ if (!includesParameter(result, /\bspt\b|standard\s*penetration/i))
185
+ missing.push('SPT N-values');
186
+ if (!includesParameter(result, /\brqd\b/i))
187
+ missing.push('RQD');
188
+ if (!includesParameter(result, /cohesion|\bc\b/i))
189
+ missing.push('cohesion');
190
+ if (!includesParameter(result, /friction|phi|angle/i))
191
+ missing.push('friction angle');
192
+ return missing;
193
+ }
194
+ function firstMeaningful(values, maxLength) {
195
+ return values
196
+ .map((value) => cleanNarrativeText(value, maxLength))
197
+ .find(Boolean)
198
+ ?? 'No concise evidence item was retained.';
199
+ }
200
+ function geotechEvidenceTexts(result) {
201
+ return [
202
+ result.title,
203
+ result.summary,
204
+ ...result.materials.flatMap((material) => [material.description, material.uscsSymbol, material.lithology]),
205
+ ...result.parameters.flatMap((parameter) => [parameter.name, parameter.valueText, parameter.material, parameter.context]),
206
+ ...result.classifications.flatMap((classification) => [classification.system, classification.value, classification.context]),
207
+ ...result.risks,
208
+ ...result.recommendations,
209
+ ...(result.synthesis
210
+ ? [
211
+ ...result.synthesis.takeaways,
212
+ ...result.synthesis.groundModel,
213
+ ...result.synthesis.keyParameters,
214
+ ...result.synthesis.interpretation,
215
+ ...result.synthesis.limitations,
216
+ ]
217
+ : []),
218
+ ...(result.contentChunks ?? []).flatMap((chunk) => [
219
+ ...chunk.headingAncestry,
220
+ chunk.text,
221
+ ]),
222
+ ...(result.inspection?.pages ?? []).flatMap((page) => [
223
+ page.normalizedText,
224
+ page.extractedText,
225
+ page.normalizedArtifact?.nativeText,
226
+ ]),
227
+ ]
228
+ .map((value) => typeof value === 'string' ? value : '')
229
+ .filter(Boolean);
230
+ }
231
+ function inferGeotechBoreholeIds(result) {
232
+ return inferBoreholeIdsFromText(...geotechEvidenceTexts(result));
233
+ }
234
+ function inferGeotechMaxDepth(result) {
235
+ const depths = result.parameters
236
+ .filter((parameter) => /depth|elevation|thickness/i.test(parameter.name))
237
+ .map((parameter) => readDepthMeters(parameter.numericValue ?? parameter.valueText))
238
+ .filter((value) => value != null && value >= 0);
239
+ const preferredDepths = [];
240
+ for (const text of geotechEvidenceTexts(result)) {
241
+ preferredDepths.push(...collectPreferredBoreholeDepthsFromText(text));
242
+ depths.push(...collectDepthMetersFromText(text));
243
+ }
244
+ if (preferredDepths.length > 0) {
245
+ return Math.max(...preferredDepths);
246
+ }
247
+ const fallbackDepth = readDepthMeters(result.summary);
248
+ if (fallbackDepth != null) {
249
+ depths.push(fallbackDepth);
250
+ }
251
+ return depths.length > 0 ? Math.max(...depths) : null;
252
+ }
253
+ function inferKeyConcern(result) {
254
+ const weatheredRock = result.materials.find((material) => /weathered|fractured|rock/i.test(material.description));
255
+ return firstMeaningful([
256
+ result.risks[0],
257
+ weatheredRock ? `${weatheredRock.description} may affect bearing capacity, excavation stability, or foundation selection.` : null,
258
+ result.synthesis?.interpretation[0],
259
+ ], 180);
260
+ }
261
+ function inferMainLimitation(result) {
262
+ const missing = buildMissingCriticalItems(result);
263
+ return firstMeaningful([
264
+ result.synthesis?.limitations[0],
265
+ missing.length > 0 ? `Missing or unverified: ${missing.join(', ')}.` : null,
266
+ result.reviewReasons[0],
267
+ result.warnings[0],
268
+ ], 180);
269
+ }
102
270
  function countGeotechPageStatuses(result) {
103
271
  return result.pageAudits.reduce((counts, audit) => {
104
272
  counts[audit.parseStatus] += 1;
@@ -449,6 +617,310 @@ function buildBoreholeBadges(result) {
449
617
  { label: 'Auto proceed', value: result.canAutoProceed ? 'Yes' : 'No', tone: toneFromBoolean(result.canAutoProceed) },
450
618
  ];
451
619
  }
620
+ function buildGeotechExecutiveItems(result, sourceLabel) {
621
+ const boreholeIds = inferGeotechBoreholeIds(result);
622
+ const maxDepth = inferGeotechMaxDepth(result);
623
+ return [
624
+ { label: 'Project/report', value: result.title ?? sourceLabel, detail: sourceLabel, tone: 'accent' },
625
+ { label: 'Document type', value: humanDocumentType(result.documentClass ?? result.documentType), tone: 'accent' },
626
+ {
627
+ label: 'Processing status',
628
+ value: result.reviewRequired ? 'Parsed, review required' : 'Parsed',
629
+ detail: result.parseStatus,
630
+ tone: result.reviewRequired ? 'warning' : 'good',
631
+ },
632
+ { label: 'Confidence', value: `${result.confidence}%`, tone: toneFromParseStatus(result.parseStatus, result.confidence) },
633
+ { label: 'Boreholes detected', value: boreholeIds.length > 0 ? boreholeIds.join(', ') : 'Not explicitly detected', tone: boreholeIds.length > 0 ? 'good' : 'warning' },
634
+ { label: 'Max depth', value: formatDepthMeters(maxDepth), tone: maxDepth != null ? 'good' : 'warning' },
635
+ { label: 'Key engineering concern', value: inferKeyConcern(result), tone: 'warning' },
636
+ { label: 'Main limitation', value: inferMainLimitation(result), tone: result.reviewRequired ? 'warning' : 'neutral' },
637
+ ];
638
+ }
639
+ function buildBoreholeExecutiveItems(result, sourceLabel) {
640
+ const boreholeIds = result.boreholes.map((borehole) => borehole.boreholeId).filter(Boolean);
641
+ const maxDepth = result.boreholes
642
+ .map((borehole) => borehole.totalDepth)
643
+ .filter((value) => value != null && Number.isFinite(value))
644
+ .reduce((max, value) => max == null ? value : Math.max(max, value), null);
645
+ const firstWarning = result.reviewReasons[0] ?? result.warnings[0] ?? null;
646
+ return [
647
+ { label: 'Project/report', value: result.boreholes[0]?.projectName ?? sourceLabel, detail: sourceLabel, tone: 'accent' },
648
+ { label: 'Document type', value: 'Borehole log', tone: 'accent' },
649
+ {
650
+ label: 'Processing status',
651
+ value: result.reviewRequired ? 'Parsed, review required' : 'Parsed',
652
+ tone: result.reviewRequired ? 'warning' : 'good',
653
+ },
654
+ { label: 'Confidence', value: `${result.confidence}%`, tone: result.confidence >= 70 ? 'good' : 'warning' },
655
+ { label: 'Boreholes detected', value: boreholeIds.length > 0 ? boreholeIds.join(', ') : 'Not explicitly detected', tone: boreholeIds.length > 0 ? 'good' : 'warning' },
656
+ { label: 'Max depth', value: formatDepthMeters(maxDepth), tone: maxDepth != null ? 'good' : 'warning' },
657
+ { label: 'Key engineering concern', value: firstMeaningful([firstWarning, result.boreholes[0]?.summary], 180), tone: firstWarning ? 'warning' : 'neutral' },
658
+ { label: 'Main limitation', value: firstWarning ? cleanNarrativeText(firstWarning, 180) : 'No blocking limitation retained.', tone: firstWarning ? 'warning' : 'good' },
659
+ ];
660
+ }
661
+ function buildGeotechInsightCards(result) {
662
+ const groundConditions = firstMeaningful([
663
+ result.synthesis?.groundModel[0],
664
+ result.synthesis?.takeaways[0],
665
+ result.summary,
666
+ result.materials.length > 0
667
+ ? `${result.materials.map((material) => material.description).slice(0, 4).join(', ')}.`
668
+ : null,
669
+ ], 260);
670
+ const designImplications = firstMeaningful([
671
+ result.synthesis?.interpretation[0],
672
+ result.risks[0],
673
+ result.recommendations[0],
674
+ ], 260);
675
+ const missing = buildMissingCriticalItems(result);
676
+ const verificationFocus = result.reviewRequired
677
+ ? 'Human verification is recommended before this extraction is reused for design, reporting, or approval.'
678
+ : 'No retained review gate blocks downstream use, but source-page verification is still recommended.';
679
+ return [
680
+ { title: 'Ground conditions', body: groundConditions, tone: 'accent' },
681
+ { title: 'Design implications', body: designImplications, tone: 'warning' },
682
+ {
683
+ title: 'Missing critical data',
684
+ body: missing.length > 0 ? `Not extracted or not corroborated: ${missing.join(', ')}.` : 'No common critical parameter gap was detected in the retained extraction.',
685
+ tone: missing.length > 0 ? 'warning' : 'good',
686
+ },
687
+ { title: 'Verification focus', body: verificationFocus, tone: result.reviewRequired ? 'warning' : 'good' },
688
+ ];
689
+ }
690
+ function buildBoreholeInsightCards(result) {
691
+ const summaries = result.boreholes.map((borehole) => borehole.summary).filter(Boolean);
692
+ const missingWater = result.boreholes.filter((borehole) => borehole.waterTableDepth == null).length;
693
+ return [
694
+ { title: 'Ground conditions', body: firstMeaningful(summaries, 260), tone: 'accent' },
695
+ {
696
+ title: 'Design implications',
697
+ body: result.reviewRequired
698
+ ? 'At least one borehole or page needs verification before the extracted profile is used as engineering input.'
699
+ : 'The borehole profile is ready for engineering review against the source log.',
700
+ tone: result.reviewRequired ? 'warning' : 'good',
701
+ },
702
+ {
703
+ title: 'Missing critical data',
704
+ body: missingWater > 0 ? `Groundwater was not extracted for ${missingWater} borehole(s).` : 'Groundwater was retained where available.',
705
+ tone: missingWater > 0 ? 'warning' : 'good',
706
+ },
707
+ { title: 'Verification focus', body: result.reviewReasons[0] ?? 'Check layer boundaries, depth scale, and any low-confidence borehole metadata.', tone: result.reviewRequired ? 'warning' : 'neutral' },
708
+ ];
709
+ }
710
+ function buildGeotechTrustItems(result) {
711
+ const visualExtractionUsed = result.pageAudits.some((audit) => audit.textHintSource === 'vision-visual' || audit.textHintSource === 'vision-ocr');
712
+ const rows = result.parameters.slice(0, 16).map((parameter) => {
713
+ const sourcePage = sourcePageText(parameter.context);
714
+ const reviewNeeded = result.reviewRequired || sourcePage === '-' || visualExtractionUsed;
715
+ const valueText = displayTableText(parameter.valueText, 80);
716
+ const unitText = displayTableText(parameter.unit, 28);
717
+ const valueWithUnit = unitText !== '-' && valueText !== '-' && !valueText.toLowerCase().includes(unitText.toLowerCase())
718
+ ? `${valueText} ${unitText}`
719
+ : valueText;
720
+ return {
721
+ item: displayTableText(parameter.name, 80),
722
+ value: valueWithUnit || '-',
723
+ sourcePage,
724
+ confidence: `${result.confidence}%`,
725
+ review: reviewNeeded ? (visualExtractionUsed ? 'Visual verification recommended' : 'Manual review recommended') : 'Ready for review',
726
+ evidence: displayTableText(parameter.context, 180),
727
+ tone: reviewNeeded ? 'warning' : 'good',
728
+ };
729
+ });
730
+ for (const missing of buildMissingCriticalItems(result).slice(0, 6)) {
731
+ rows.push({
732
+ item: missing,
733
+ value: 'Not extracted',
734
+ sourcePage: '-',
735
+ confidence: 'Low',
736
+ review: 'Required',
737
+ evidence: 'No corroborated value was retained in the extraction.',
738
+ tone: 'warning',
739
+ });
740
+ }
741
+ return rows;
742
+ }
743
+ function buildBoreholeTrustItems(result) {
744
+ const rows = [];
745
+ for (const borehole of result.boreholes.slice(0, 8)) {
746
+ rows.push({
747
+ item: `${borehole.boreholeId} total depth`,
748
+ value: formatDepthMeters(borehole.totalDepth),
749
+ sourcePage: borehole.pageNumber != null ? String(borehole.pageNumber) : '-',
750
+ confidence: `${borehole.confidence}%`,
751
+ review: borehole.parseStatus === 'parsed' && !result.reviewRequired ? 'Ready for review' : 'Manual review recommended',
752
+ evidence: cleanNarrativeText(borehole.summary, 180) || 'Borehole depth retained from structured extraction.',
753
+ tone: borehole.parseStatus === 'parsed' && borehole.confidence >= 70 ? 'good' : 'warning',
754
+ });
755
+ rows.push({
756
+ item: `${borehole.boreholeId} groundwater`,
757
+ value: borehole.waterTableDepth != null ? formatDepthMeters(borehole.waterTableDepth) : 'Not extracted',
758
+ sourcePage: borehole.pageNumber != null ? String(borehole.pageNumber) : '-',
759
+ confidence: borehole.waterTableDepth != null ? `${borehole.confidence}%` : 'Low',
760
+ review: borehole.waterTableDepth != null ? 'Verify against source log' : 'Required',
761
+ evidence: borehole.waterTableDepth != null ? 'Groundwater value retained from structured extraction.' : 'No groundwater value was retained.',
762
+ tone: borehole.waterTableDepth != null ? 'good' : 'warning',
763
+ });
764
+ }
765
+ return rows;
766
+ }
767
+ function inferLayerLabel(description, fallback) {
768
+ if (/clayey\s+silt|silty\s+clay/i.test(description))
769
+ return 'CI/CL';
770
+ if (/silty\s+sand/i.test(description))
771
+ return 'SM';
772
+ if (/gravel/i.test(description))
773
+ return 'GM';
774
+ if (/weathered|fractured|rock|gneiss/i.test(description))
775
+ return 'WR';
776
+ if (/sand/i.test(description))
777
+ return 'SP/SM';
778
+ if (/clay/i.test(description))
779
+ return 'CL';
780
+ if (/silt/i.test(description))
781
+ return 'ML';
782
+ return fallback;
783
+ }
784
+ function cleanLayerDescriptionText(value) {
785
+ return cleanNarrativeText(value, 150)
786
+ .replace(/^generalized\s+sub\s+soil\s+profile\s+/i, '')
787
+ .replace(/^the\s+soil\s+in\s+this\s+layer\s+consists\s+of\s+/i, '')
788
+ .replace(/^it\s+can\s+be\s+described\s+as\s+/i, '')
789
+ .trim();
790
+ }
791
+ function extractConceptualLayerDescriptions(result) {
792
+ const corpus = geotechEvidenceTexts(result).join('\n');
793
+ const canonical = [
794
+ /hard[^.\n]{0,50}clayey\s+silt/i.test(corpus)
795
+ ? 'hard clayey silt with sand mixture'
796
+ : null,
797
+ /medium\s+dense[^.\n]{0,80}silty\s+sand/i.test(corpus)
798
+ ? 'medium dense reddish silty sand'
799
+ : null,
800
+ /dense\s+to\s+very\s+dense[^.\n]{0,80}silty\s+sand/i.test(corpus)
801
+ ? 'dense to very dense yellowish silty sand'
802
+ : null,
803
+ /weathered[^.\n]{0,80}(?:fractured\s+)?rock/i.test(corpus)
804
+ ? 'weathered fractured rock'
805
+ : null,
806
+ /gneiss/i.test(corpus)
807
+ ? 'gneissic rock'
808
+ : null,
809
+ ].filter((value) => value != null);
810
+ const candidates = [
811
+ ...[...corpus.matchAll(/\bstratum\s*[-–]?\s*(?:iv|iii|ii|i|[1-4])\s*:\s*([^.\n]{18,220})[.\n]/gi)]
812
+ .map((match) => match[1]),
813
+ ...[...corpus.matchAll(/((?:hard|stiff|medium\s+dense|dense|very\s+dense|completely|highly|weathered|fractured)[^.\n]{0,180}?(?:clayey\s+silt|silty\s+sand|weathered\s+rock|fractured\s+rock|rock|sand|silt|clay)[^.\n]{0,120})[.\n]/gi)]
814
+ .map((match) => match[1]),
815
+ ...[...corpus.matchAll(/\b((?:clayey\s+silt|silty\s+sand|weathered\s+fractured\s+rock|weathered\s+rock|gneiss)[^.\n]{0,160})/gi)]
816
+ .map((match) => match[1]),
817
+ ...result.materials.map((material) => material.description),
818
+ ]
819
+ .map((value) => cleanLayerDescriptionText(value))
820
+ .filter((value) => value.length >= 4
821
+ && !/^(clay|silt|sand|rock|water table|the soil in this layer)$/i.test(value)
822
+ && !/\d{2,}\s+\d{2,}\s+\d{2,}/.test(value));
823
+ const canonicalUnique = [...new Set(canonical)];
824
+ if (canonicalUnique.length >= 2) {
825
+ return canonicalUnique.slice(0, 5);
826
+ }
827
+ return [...new Set([...canonicalUnique, ...candidates])].slice(0, 5);
828
+ }
829
+ function buildConceptualGeotechLayers(result, maxDepth) {
830
+ const descriptions = extractConceptualLayerDescriptions(result);
831
+ if (descriptions.length === 0) {
832
+ return [];
833
+ }
834
+ const layerHeight = maxDepth / descriptions.length;
835
+ return descriptions.map((description, index) => ({
836
+ depthFrom: Number((index * layerHeight).toFixed(2)),
837
+ depthTo: Number(((index + 1) * layerHeight).toFixed(2)),
838
+ label: inferLayerLabel(description, `L${index + 1}`),
839
+ description,
840
+ uscsSymbol: inferLayerLabel(description, `L${index + 1}`),
841
+ tone: materialTone(description, inferLayerLabel(description, '')),
842
+ uncertain: true,
843
+ }));
844
+ }
845
+ function buildGeotechBoreholeProfile(result) {
846
+ const boreholeIds = inferGeotechBoreholeIds(result);
847
+ const maxDepth = inferGeotechMaxDepth(result);
848
+ if (boreholeIds.length === 0 || maxDepth == null || maxDepth <= 0) {
849
+ return undefined;
850
+ }
851
+ const conceptualLayers = buildConceptualGeotechLayers(result, maxDepth);
852
+ if (conceptualLayers.length === 0) {
853
+ return undefined;
854
+ }
855
+ const depthsByBorehole = new Map();
856
+ for (const parameter of result.parameters) {
857
+ if (!/depth/i.test(parameter.name)) {
858
+ continue;
859
+ }
860
+ const id = inferBoreholeIdsFromText(parameter.material, parameter.context)[0];
861
+ const depth = readDepthMeters(parameter.numericValue ?? parameter.valueText);
862
+ if (id && depth != null) {
863
+ depthsByBorehole.set(id, Math.max(depthsByBorehole.get(id) ?? 0, depth));
864
+ }
865
+ }
866
+ return {
867
+ title: 'Borehole Stratigraphy Visualization',
868
+ maxDepth,
869
+ depthUnit: 'm',
870
+ columns: boreholeIds.map((boreholeId) => ({
871
+ boreholeId,
872
+ totalDepth: depthsByBorehole.get(boreholeId) ?? maxDepth,
873
+ waterTableDepth: null,
874
+ layers: conceptualLayers,
875
+ })),
876
+ notes: [
877
+ 'Conceptual visualization from retained material observations.',
878
+ 'Dashed layer boundaries indicate missing or unverified stratum intervals.',
879
+ 'Use source logs before treating the profile as design-grade stratigraphy.',
880
+ ],
881
+ };
882
+ }
883
+ function buildBoreholeProfile(result) {
884
+ if (result.boreholes.length === 0) {
885
+ return undefined;
886
+ }
887
+ const maxDepth = result.boreholes.reduce((max, borehole) => {
888
+ const layerMax = Math.max(0, ...borehole.layers.map((layer) => layer.depthTo ?? layer.depthFrom ?? 0));
889
+ return Math.max(max, borehole.totalDepth ?? 0, layerMax);
890
+ }, 0);
891
+ if (maxDepth <= 0) {
892
+ return undefined;
893
+ }
894
+ return {
895
+ title: 'Borehole Stratigraphy Visualization',
896
+ maxDepth,
897
+ depthUnit: 'm',
898
+ columns: result.boreholes.map((borehole) => ({
899
+ boreholeId: borehole.boreholeId,
900
+ totalDepth: borehole.totalDepth,
901
+ waterTableDepth: borehole.waterTableDepth,
902
+ layers: borehole.layers
903
+ .map((layer, index) => {
904
+ const depthFrom = layer.depthFrom ?? (index === 0 ? 0 : null);
905
+ const depthTo = layer.depthTo ?? borehole.totalDepth ?? maxDepth;
906
+ if (depthFrom == null || depthTo == null || depthTo <= depthFrom) {
907
+ return null;
908
+ }
909
+ return {
910
+ depthFrom,
911
+ depthTo,
912
+ label: layer.uscsSymbol ?? layer.notes ?? `Layer ${index + 1}`,
913
+ description: displayTableText(layer.description, 140),
914
+ uscsSymbol: layer.uscsSymbol ?? null,
915
+ tone: materialTone(layer.description, layer.uscsSymbol),
916
+ uncertain: layer.depthFrom == null || layer.depthTo == null,
917
+ };
918
+ })
919
+ .filter((layer) => layer != null),
920
+ })),
921
+ notes: ['Layer blocks are scaled to extracted depth intervals. Missing boundaries are shown as uncertain.'],
922
+ };
923
+ }
452
924
  function buildFooterNotes(result) {
453
925
  return uniqueStrings([
454
926
  result.source.fileName ?? result.source.filePath ?? null,
@@ -489,6 +961,10 @@ export function buildIngestDossier(result, options) {
489
961
  tables: buildGeotechTables(geotechResult),
490
962
  pageCards: buildGeotechPageCards(geotechResult),
491
963
  sections: buildGeotechSections(geotechResult),
964
+ executiveItems: buildGeotechExecutiveItems(geotechResult, sourceLabel),
965
+ insightCards: buildGeotechInsightCards(geotechResult),
966
+ trustItems: buildGeotechTrustItems(geotechResult),
967
+ boreholeProfile: buildGeotechBoreholeProfile(geotechResult),
492
968
  storedReview,
493
969
  approval,
494
970
  footerNotes: buildFooterNotes(geotechResult),
@@ -512,6 +988,10 @@ export function buildIngestDossier(result, options) {
512
988
  tables: buildBoreholeTables(boreholeResult),
513
989
  pageCards: buildBoreholePageCards(boreholeResult),
514
990
  sections: buildBoreholeSections(boreholeResult),
991
+ executiveItems: buildBoreholeExecutiveItems(boreholeResult, sourceLabel),
992
+ insightCards: buildBoreholeInsightCards(boreholeResult),
993
+ trustItems: buildBoreholeTrustItems(boreholeResult),
994
+ boreholeProfile: buildBoreholeProfile(boreholeResult),
515
995
  storedReview,
516
996
  approval,
517
997
  footerNotes: buildFooterNotes(boreholeResult),