@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.
- package/dist/meta/metadata.json +1 -1
- package/dist/report/html.d.ts.map +1 -1
- package/dist/report/html.js +706 -477
- package/dist/report/html.js.map +1 -1
- package/dist/report/ingest-dossier.d.ts +47 -0
- package/dist/report/ingest-dossier.d.ts.map +1 -1
- package/dist/report/ingest-dossier.js +480 -0
- package/dist/report/ingest-dossier.js.map +1 -1
- package/package.json +1 -1
package/dist/report/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,SAAS,UAAU,CAAC,KAAgC;IAClD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,IAAmC;IACpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,mBAAmB,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,MAAwC;IAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO;6BACoB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;mCAChB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;qCACtB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QACrD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;0CACgB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;gCAC9D,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;OAEpD,CAAC,CAAC,CAAC,EAAE;QACJ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;GAE3F,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB;IACpD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACZ,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;YAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;aAC9C,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;;YACrD,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CACrC,CAAC;IAEF,OAAO;;;;;;;UAOC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;;kCAER,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;qBACjC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU,cAAc,CAAC;aAC5F,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;wBAGK,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACjC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAClC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;;GAGtD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG;;YAEV,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;GAEvE,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACvC,CAAC,CAAC,4BAA4B,UAAU,CAAC,KAAK,CAAC,UAAU,IAAI,oBAAoB,CAAC,QAAQ;QAC1F,CAAC,CAAC;;;;kBAIY,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;cAG5E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;KAInH,CAAC;IACJ,MAAM,OAAO,GAAG,GAAG,WAAW,GAAG,SAAS,EAAE,CAAC;IAE7C,IAAI,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;2DACgD,OAAO;;YAEtD,WAAW;;;UAGb,SAAS;;KAEd,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;gDACqC,OAAO;UAC7C,OAAO;;KAEZ,CAAC;IACJ,CAAC;IAED,OAAO;8CACqC,OAAO;QAC7C,OAAO;;GAEZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QAC1E,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO;;;;;WAKE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA6fpB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;eAC1B,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;;;oBAGtB,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;kBAC9B,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;4BACrB,UAAU,CAAC,aAAa,CAAC;8BACvB,UAAU,CAAC,kBAAkB,CAAC;;;;;UAKlD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;kCACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;wCACf,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;wCACvB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;SAEtD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;UAIT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;MAI9C,sBAAsB,CAAC,OAAO,CAAC;;MAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;;;;;YAOxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;2CACD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC5C,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;WAE3E,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;KAGhB,CAAC,CAAC,CAAC,EAAE;;MAEJ,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;;;;;YAOxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;;oBAE1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;WAEtF,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;KAGhB,CAAC,CAAC,CAAC,EAAE;;MAEJ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;MAExC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;;;;;YAOzB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;wCACJ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;4BAGhC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;+BACvB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;;wBAEtC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;;oBAEvE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;kBAExB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;kBACjF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;kBACnF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;kBACvE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAiC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;gBAE/G,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,6FAA6F;gBACjN,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;uCAEJ,IAAI,CAAC,QAAQ,CAAC,MAAM;wBACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;eAEnF,CAAC,CAAC,CAAC,EAAE;;WAET,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;KAGhB,CAAC,CAAC,CAAC,EAAE;;;QAGF,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;;;wBAGP,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;wBAC1C,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;0BAC1C,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;YACvD,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;OAE1G,CAAC,CAAC,CAAC,EAAE;;QAEJ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;;;wBAGH,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;yBACvC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;4BACpC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,aAAa,CAAC;YACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;OAEzF,CAAC,CAAC,CAAC,EAAE;;;;cAIE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;;QAKhF,CAAC;AACT,CAAC"}
|
|
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),
|