@actuarial-ts/data 0.5.0 → 0.6.1
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/README.md +45 -127
- package/dist/casualtyDiagnosticReview.d.ts +46 -0
- package/dist/casualtyDiagnosticReview.d.ts.map +1 -0
- package/dist/casualtyDiagnosticReview.js +23 -0
- package/dist/casualtyDiagnosticReview.js.map +1 -0
- package/dist/diagnosticDefinition.d.ts +4 -0
- package/dist/diagnosticDefinition.d.ts.map +1 -0
- package/dist/diagnosticDefinition.js +6 -0
- package/dist/diagnosticDefinition.js.map +1 -0
- package/dist/diagnosticInput.d.ts +97 -13
- package/dist/diagnosticInput.d.ts.map +1 -1
- package/dist/diagnosticInput.js +403 -43
- package/dist/diagnosticInput.js.map +1 -1
- package/dist/diagnosticPreparedReview.d.ts +46 -0
- package/dist/diagnosticPreparedReview.d.ts.map +1 -0
- package/dist/diagnosticPreparedReview.js +449 -0
- package/dist/diagnosticPreparedReview.js.map +1 -0
- package/dist/exposure.d.ts.map +1 -1
- package/dist/exposure.js +25 -9
- package/dist/exposure.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lossRun.d.ts.map +1 -1
- package/dist/lossRun.js +31 -8
- package/dist/lossRun.js.map +1 -1
- package/dist/review.d.ts +16 -3
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +35 -5
- package/dist/review.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -4
- package/src/casualtyDiagnosticReview.ts +17 -0
- package/src/diagnosticDefinition.ts +6 -0
- package/src/diagnosticInput.ts +600 -57
- package/src/diagnosticPreparedReview.ts +653 -0
- package/src/exposure.ts +61 -16
- package/src/index.ts +4 -1
- package/src/lossRun.ts +55 -13
- package/src/review.ts +194 -42
- package/src/version.ts +1 -0
- package/dist/diagnosticReview.d.ts +0 -68
- package/dist/diagnosticReview.d.ts.map +0 -1
- package/dist/diagnosticReview.js +0 -370
- package/dist/diagnosticReview.js.map +0 -1
- package/src/diagnosticReview.ts +0 -547
package/dist/lossRun.js
CHANGED
|
@@ -49,29 +49,48 @@ function isValidIsoDate(value) {
|
|
|
49
49
|
// preserve leapness for every year except 0000, so this is a correctness-of-
|
|
50
50
|
// form consolidation rather than a live-bug fix.
|
|
51
51
|
const leap = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;
|
|
52
|
-
const daysInMonth = [
|
|
52
|
+
const daysInMonth = [
|
|
53
|
+
31,
|
|
54
|
+
leap ? 29 : 28,
|
|
55
|
+
31,
|
|
56
|
+
30,
|
|
57
|
+
31,
|
|
58
|
+
30,
|
|
59
|
+
31,
|
|
60
|
+
31,
|
|
61
|
+
30,
|
|
62
|
+
31,
|
|
63
|
+
30,
|
|
64
|
+
31,
|
|
65
|
+
][m - 1];
|
|
53
66
|
return d <= daysInMonth;
|
|
54
67
|
}
|
|
55
68
|
/** Parses a loss-run CSV into ClaimSnapshots plus per-row validation errors. */
|
|
56
69
|
export function parseLossRunCsv(text) {
|
|
57
70
|
const { rows: grid, rowLines, warnings: csvWarnings } = parseCsv(text);
|
|
58
71
|
const headers = (grid[0] ?? []).map(normalizeHeader);
|
|
72
|
+
const duplicateHeaders = [
|
|
73
|
+
...new Set(headers.filter((header, index) => header !== "" && headers.indexOf(header) !== index)),
|
|
74
|
+
].sort();
|
|
75
|
+
if (duplicateHeaders.length > 0) {
|
|
76
|
+
throw new ReservingError("SHAPE", `Duplicate normalized column(s): ${duplicateHeaders.join(", ")}`);
|
|
77
|
+
}
|
|
59
78
|
const missing = REQUIRED_COLUMNS.filter((c) => !headers.includes(c));
|
|
60
79
|
if (missing.length > 0) {
|
|
61
80
|
throw new ReservingError("SHAPE", `Missing required column(s): ${missing.join(", ")}. Found: ${headers.filter(Boolean).join(", ") || "(none)"}`);
|
|
62
81
|
}
|
|
63
82
|
const columnIndex = new Map();
|
|
64
|
-
headers.forEach((h, idx) =>
|
|
65
|
-
if (!columnIndex.has(h))
|
|
66
|
-
columnIndex.set(h, idx);
|
|
67
|
-
});
|
|
83
|
+
headers.forEach((h, idx) => columnIndex.set(h, idx));
|
|
68
84
|
const claims = [];
|
|
69
85
|
const errors = [];
|
|
70
86
|
for (const warning of csvWarnings) {
|
|
71
87
|
// Structural CSV problems surface through the same channel as row errors:
|
|
72
88
|
// partial loading is intended behavior here, silent partial loading is not.
|
|
73
89
|
const lineMatch = warning.match(/line (\d+)/);
|
|
74
|
-
errors.push({
|
|
90
|
+
errors.push({
|
|
91
|
+
row: lineMatch ? Number(lineMatch[1]) : 1,
|
|
92
|
+
message: `CSV structure: ${warning}`,
|
|
93
|
+
});
|
|
75
94
|
}
|
|
76
95
|
for (let r = 1; r < grid.length; r++) {
|
|
77
96
|
// Physical 1-based line in the file where this row starts — NOT r + 1:
|
|
@@ -109,7 +128,9 @@ export function parseLossRunCsv(text) {
|
|
|
109
128
|
"parentheses and spaces");
|
|
110
129
|
return null;
|
|
111
130
|
}
|
|
112
|
-
const n = /^-?\d+(\.\d+)?$/.test(value.trim())
|
|
131
|
+
const n = /^-?\d+(\.\d+)?$/.test(value.trim())
|
|
132
|
+
? Number(value.trim())
|
|
133
|
+
: NaN;
|
|
113
134
|
if (!Number.isFinite(n)) {
|
|
114
135
|
rowErrors.push(`${name} must be a finite decimal number (got "${value}")`);
|
|
115
136
|
return null;
|
|
@@ -124,7 +145,9 @@ export function parseLossRunCsv(text) {
|
|
|
124
145
|
rowErrors.push(`status must be "open" or "closed" (got "${cell("status")}")`);
|
|
125
146
|
}
|
|
126
147
|
// Cross-field checks need all three dates to be individually valid.
|
|
127
|
-
if (accidentDate !== null &&
|
|
148
|
+
if (accidentDate !== null &&
|
|
149
|
+
reportDate !== null &&
|
|
150
|
+
evaluationDate !== null) {
|
|
128
151
|
if (reportDate < accidentDate)
|
|
129
152
|
rowErrors.push("report_date precedes accident_date");
|
|
130
153
|
if (evaluationDate < reportDate)
|
package/dist/lossRun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lossRun.js","sourceRoot":"","sources":["../src/lossRun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,QAAQ;CACA,CAAC;AAaX,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,iDAAiD;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"lossRun.js","sourceRoot":"","sources":["../src/lossRun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,QAAQ;CACA,CAAC;AAaX,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,iDAAiD;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG;QAClB,EAAE;QACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACd,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;KACH,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;IACV,OAAO,CAAC,IAAI,WAAW,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG;QACvB,GAAG,IAAI,GAAG,CACR,OAAO,CAAC,MAAM,CACZ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CACtE,CACF;KACF,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,cAAc,CACtB,OAAO,EACP,mCAAmC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,cAAc,CACtB,OAAO,EACP,+BAA+B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAC/C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QACxC,EAAE,CACH,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAErD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,EAAE,kBAAkB,OAAO,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,iDAAiD;QACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CACpC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,EAAE;YAAE,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,CAAC,IAAY,EAAiB,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CACZ,GAAG,IAAI,0DAA0D,KAAK,IAAI,CAC3E,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,CAAC,IAAY,EAAiB,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,kEAAkE;YAClE,iEAAiE;YACjE,oEAAoE;YACpE,kEAAkE;YAClE,iEAAiE;YACjE,4DAA4D;YAC5D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,SAAS,CAAC,IAAI,CACZ,GAAG,IAAI,yCAAyC,KAAK,mCAAmC;oBACtF,wBAAwB,CAC3B,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,CAAC,CAAC,GAAG,CAAC;YACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CACZ,GAAG,IAAI,0CAA0C,KAAK,IAAI,CAC3D,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,MAAM,GACV,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CACZ,2CAA2C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9D,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,IACE,YAAY,KAAK,IAAI;YACrB,UAAU,KAAK,IAAI;YACnB,cAAc,KAAK,IAAI,EACvB,CAAC;YACD,IAAI,UAAU,GAAG,YAAY;gBAC3B,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACvD,IAAI,cAAc,GAAG,UAAU;gBAC7B,SAAS,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO;YACP,YAAY,EAAE,YAAa;YAC3B,UAAU,EAAE,UAAW;YACvB,cAAc,EAAE,cAAe;YAC/B,UAAU,EAAE,UAAW;YACvB,WAAW,EAAE,WAAY;YACzB,MAAM,EAAE,MAAO;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/review.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ClaimSnapshot, type Triangle } from "@actuarial-ts/core";
|
|
2
2
|
/**
|
|
3
3
|
* ASOP No. 23 (Data Quality)-oriented data review.
|
|
4
4
|
*
|
|
@@ -22,12 +22,25 @@ import type { ClaimSnapshot, Triangle } from "@actuarial-ts/core";
|
|
|
22
22
|
*/
|
|
23
23
|
export type DataCheckStatus = "pass" | "warning" | "fail" | "not-evaluated";
|
|
24
24
|
export interface DataFindingContext {
|
|
25
|
+
ruleId?: string;
|
|
26
|
+
measureId?: string;
|
|
27
|
+
expressionPath?: string;
|
|
28
|
+
offendingKey?: string;
|
|
29
|
+
groupingKey?: string;
|
|
30
|
+
cachedEvidenceId?: string;
|
|
31
|
+
sourceGroup?: string;
|
|
25
32
|
origin?: string;
|
|
26
33
|
valuation?: string;
|
|
27
|
-
|
|
34
|
+
developmentAge?: number;
|
|
35
|
+
ageUnit?: string;
|
|
36
|
+
recordId?: string;
|
|
37
|
+
claimId?: string;
|
|
38
|
+
exposureKey?: string;
|
|
28
39
|
group?: string;
|
|
29
40
|
sourceFile?: string;
|
|
30
41
|
sourceRow?: number;
|
|
42
|
+
sources?: readonly import("@actuarial-ts/core").DiagnosticSourceLocation[];
|
|
43
|
+
reviewScope?: import("@actuarial-ts/core").DiagnosticReviewEvaluationScope;
|
|
31
44
|
}
|
|
32
45
|
export interface DataFinding {
|
|
33
46
|
/** Stable machine-readable finding code, usually the containing check id. */
|
|
@@ -41,7 +54,7 @@ export interface DataCheck {
|
|
|
41
54
|
status: DataCheckStatus;
|
|
42
55
|
details: string[];
|
|
43
56
|
/** Additive structured detail for consumers that should not parse prose. */
|
|
44
|
-
findings
|
|
57
|
+
findings: DataFinding[];
|
|
45
58
|
}
|
|
46
59
|
export interface DataReviewReport {
|
|
47
60
|
checks: DataCheck[];
|
package/dist/review.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;IAC3E,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,+BAA+B,CAAC;CAC5E;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqDD,yFAAyF;AACzF,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,GAAG,MAAM,EACnC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B,SAAS,CAeX;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAEzE;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,SAAS,CAEX;AAoBD,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,GAAE,sBAA2B,GAChC,gBAAgB,CAwLlB;AAsFD,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CA6GlB"}
|
package/dist/review.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { isRealIsoDate, } from "@actuarial-ts/core";
|
|
1
2
|
/** At most this many offending items are listed per check, then "+N more". */
|
|
2
3
|
const MAX_DETAILS = 20;
|
|
3
4
|
function capDetails(items) {
|
|
4
5
|
if (items.length <= MAX_DETAILS)
|
|
5
6
|
return items;
|
|
6
|
-
return [
|
|
7
|
+
return [
|
|
8
|
+
...items.slice(0, MAX_DETAILS),
|
|
9
|
+
`+${items.length - MAX_DETAILS} more`,
|
|
10
|
+
];
|
|
7
11
|
}
|
|
8
12
|
function makeCheck(id, description, statusWhenFound, findings) {
|
|
9
13
|
return {
|
|
@@ -11,12 +15,19 @@ function makeCheck(id, description, statusWhenFound, findings) {
|
|
|
11
15
|
description,
|
|
12
16
|
status: findings.length > 0 ? statusWhenFound : "pass",
|
|
13
17
|
details: capDetails(findings),
|
|
18
|
+
findings: [],
|
|
14
19
|
};
|
|
15
20
|
}
|
|
16
21
|
function notEvaluated(id, description, reason) {
|
|
17
22
|
// A check that could not run is REPORTED as such - counting it as "pass"
|
|
18
23
|
// would overstate the review in the very disclosure this feeds.
|
|
19
|
-
return {
|
|
24
|
+
return {
|
|
25
|
+
id,
|
|
26
|
+
description,
|
|
27
|
+
status: "not-evaluated",
|
|
28
|
+
details: [`not evaluated: ${reason}`],
|
|
29
|
+
findings: [],
|
|
30
|
+
};
|
|
20
31
|
}
|
|
21
32
|
function summarize(checks) {
|
|
22
33
|
const summary = { pass: 0, warning: 0, fail: 0, notEvaluated: 0 };
|
|
@@ -30,7 +41,9 @@ function summarize(checks) {
|
|
|
30
41
|
}
|
|
31
42
|
/** Builds a structured check while retaining the established status/details contract. */
|
|
32
43
|
export function createStructuredDataCheck(id, description, statusWhenFound, findings) {
|
|
33
|
-
const capped = findings.length <= MAX_DETAILS
|
|
44
|
+
const capped = findings.length <= MAX_DETAILS
|
|
45
|
+
? [...findings]
|
|
46
|
+
: [...findings.slice(0, MAX_DETAILS)];
|
|
34
47
|
const details = capped.map((finding) => finding.message);
|
|
35
48
|
if (findings.length > MAX_DETAILS)
|
|
36
49
|
details.push(`+${findings.length - MAX_DETAILS} more`);
|
|
@@ -39,7 +52,7 @@ export function createStructuredDataCheck(id, description, statusWhenFound, find
|
|
|
39
52
|
description,
|
|
40
53
|
status: findings.length > 0 ? statusWhenFound : "pass",
|
|
41
54
|
details,
|
|
42
|
-
findings:
|
|
55
|
+
findings: [...findings],
|
|
43
56
|
};
|
|
44
57
|
}
|
|
45
58
|
/** Public report summarizer for additive review suites. */
|
|
@@ -57,6 +70,7 @@ const CLAIM_DESCRIPTIONS = {
|
|
|
57
70
|
"paid-decreasing": "Cumulative paid never decreases across a claim's snapshots ordered by evaluation date",
|
|
58
71
|
"date-order": "accident_date <= report_date <= evaluation_date on every snapshot",
|
|
59
72
|
"duplicate-snapshot": "No claim has two snapshots at the same evaluation date",
|
|
73
|
+
"claim-identity": "Every snapshot for one claim has the same accident and report identity",
|
|
60
74
|
"future-dated": "No claim date exceeds the as-of date",
|
|
61
75
|
"closed-with-case": "Closed claims carry no outstanding case reserve",
|
|
62
76
|
};
|
|
@@ -75,6 +89,14 @@ export function reviewClaimData(claims, opts = {}) {
|
|
|
75
89
|
// pointed auditors at the wrong line; an identifier we cannot compute is
|
|
76
90
|
// one we must not print.
|
|
77
91
|
const where = `claim ${c.claimId} (eval ${c.evaluationDate})`;
|
|
92
|
+
for (const [name, value] of [
|
|
93
|
+
["accident_date", c.accidentDate],
|
|
94
|
+
["report_date", c.reportDate],
|
|
95
|
+
["evaluation_date", c.evaluationDate],
|
|
96
|
+
]) {
|
|
97
|
+
if (!isRealIsoDate(value))
|
|
98
|
+
dateOrder.push(`${where}: ${name} is not a real yyyy-mm-dd calendar date`);
|
|
99
|
+
}
|
|
78
100
|
if (c.paidToDate < 0) {
|
|
79
101
|
negativePaid.push(`${where}: paid_to_date ${c.paidToDate}`);
|
|
80
102
|
}
|
|
@@ -114,7 +136,11 @@ export function reviewClaimData(claims, opts = {}) {
|
|
|
114
136
|
}
|
|
115
137
|
const paidDecreasing = [];
|
|
116
138
|
const duplicates = [];
|
|
139
|
+
const identityConflicts = [];
|
|
117
140
|
for (const [claimId, snaps] of byClaim) {
|
|
141
|
+
const identities = new Set(snaps.map((snap) => `${snap.accidentDate}|${snap.reportDate}`));
|
|
142
|
+
if (identities.size > 1)
|
|
143
|
+
identityConflicts.push(`claim ${claimId}: snapshots contain conflicting accident_date or report_date values`);
|
|
118
144
|
const sorted = [...snaps].sort((a, b) => a.evaluationDate.localeCompare(b.evaluationDate));
|
|
119
145
|
const seenEvals = new Set();
|
|
120
146
|
for (const s of sorted) {
|
|
@@ -153,6 +179,7 @@ export function reviewClaimData(claims, opts = {}) {
|
|
|
153
179
|
makeCheck("paid-decreasing", CLAIM_DESCRIPTIONS["paid-decreasing"], "fail", paidDecreasing),
|
|
154
180
|
makeCheck("date-order", CLAIM_DESCRIPTIONS["date-order"], "fail", dateOrder),
|
|
155
181
|
makeCheck("duplicate-snapshot", CLAIM_DESCRIPTIONS["duplicate-snapshot"], "fail", duplicates),
|
|
182
|
+
makeCheck("claim-identity", CLAIM_DESCRIPTIONS["claim-identity"], "fail", identityConflicts),
|
|
156
183
|
futureCheck,
|
|
157
184
|
makeCheck("closed-with-case", CLAIM_DESCRIPTIONS["closed-with-case"], "warning", closedWithCase),
|
|
158
185
|
]);
|
|
@@ -242,7 +269,10 @@ export function reviewTriangles(paid, incurred) {
|
|
|
242
269
|
if (!sameAges) {
|
|
243
270
|
shapeFindings.push(`ages differ: paid [${paid.ages.join(", ")}] vs incurred [${incurred.ages.join(", ")}]`);
|
|
244
271
|
}
|
|
245
|
-
const nonFiniteCheck = makeCheck("non-finite-value", TRIANGLE_DESCRIPTIONS["non-finite-value"], "fail", [
|
|
272
|
+
const nonFiniteCheck = makeCheck("non-finite-value", TRIANGLE_DESCRIPTIONS["non-finite-value"], "fail", [
|
|
273
|
+
...nonFiniteTriangleFindings(paid),
|
|
274
|
+
...nonFiniteTriangleFindings(incurred),
|
|
275
|
+
]);
|
|
246
276
|
const shapeCheck = makeCheck("shape-mismatch", TRIANGLE_DESCRIPTIONS["shape-mismatch"], "fail", shapeFindings);
|
|
247
277
|
if (shapeFindings.length > 0) {
|
|
248
278
|
// Cell-level comparisons are meaningless across mismatched grids; the
|
package/dist/review.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UAAU,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuarial-ts/data",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Data ingestion and ASOP No. 23
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "Data ingestion and ASOP No. 23 support for actuarial-ts: loss/exposure preparation, atomic generalized diagnostic validation, declarative review, and triangle assembly.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -45,10 +45,11 @@
|
|
|
45
45
|
"test": "vitest run",
|
|
46
46
|
"test:watch": "vitest",
|
|
47
47
|
"typecheck": "tsc --noEmit",
|
|
48
|
-
"prepack": "tsc -p tsconfig.build.json"
|
|
48
|
+
"prepack": "tsc -p tsconfig.build.json",
|
|
49
|
+
"prepublishOnly": "node ../../tools/release/verify-release-attestation.mjs @actuarial-ts/data"
|
|
49
50
|
},
|
|
50
51
|
"dependencies": {
|
|
51
|
-
"@actuarial-ts/core": "^0.
|
|
52
|
+
"@actuarial-ts/core": "^0.6.1",
|
|
52
53
|
"zod": "^3.25.76"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CasualtyCountBindings, DiagnosticControlTotalProjection, DiagnosticMeasureExpression, DiagnosticReviewFilter, DiagnosticReviewRule } from "@actuarial-ts/core";
|
|
2
|
+
|
|
3
|
+
export interface CasualtyMonotonicReviewBinding { readonly id:string;readonly expression:DiagnosticMeasureExpression;readonly direction:"nondecreasing"|"nonincreasing";readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
|
|
4
|
+
export interface CasualtyLayerOrderReviewBinding { readonly id:string;readonly narrower:DiagnosticMeasureExpression;readonly broader:DiagnosticMeasureExpression;readonly comparability:{readonly kind:"compiler-proven"}|{readonly kind:"caller-asserted";readonly rationaleArtifactId:string};readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
|
|
5
|
+
export interface CasualtyControlTotalReviewBinding { readonly id:string;readonly expression:DiagnosticMeasureExpression;readonly expected:number;readonly filter?:DiagnosticReviewFilter;readonly projection:DiagnosticControlTotalProjection;readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
|
|
6
|
+
export interface CreateCasualtyDiagnosticReviewRulesInput { readonly counts:CasualtyCountBindings;readonly exposure:string;readonly monotonicMeasures:readonly CasualtyMonotonicReviewBinding[];readonly layerOrders:readonly CasualtyLayerOrderReviewBinding[];readonly controlTotals:readonly CasualtyControlTotalReviewBinding[];readonly severityOverrides?:Readonly<Record<string,"warning"|"fail">> }
|
|
7
|
+
const m=(measureId:string)=>({op:"measure" as const,measureId});const tolerance=(value:{absolute?:number;relative?:number}|undefined)=>({absolute:value?.absolute??0,relative:value?.relative??0});
|
|
8
|
+
export function createCasualtyDiagnosticReviewRules(input:CreateCasualtyDiagnosticReviewRulesInput):readonly DiagnosticReviewRule[]{
|
|
9
|
+
const fixed:DiagnosticReviewRule[]=[
|
|
10
|
+
{kind:"reconcile",id:"casualty/review/count-reconciliation",code:"count-reconciliation",description:"Reported count must equal open plus closed-no-pay plus closed-with-pay count",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},actual:m(input.counts.reported),expected:{op:"add",terms:[m(input.counts.open),m(input.counts.closedNoPay),m(input.counts.closedWithPay)]}},
|
|
11
|
+
{kind:"compare",id:"casualty/review/closed-no-pay-bound",code:"closed-no-pay-bound",description:"Closed-no-pay count must not exceed reported count",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},when:{left:m(input.counts.closedNoPay),operator:"gt",right:m(input.counts.reported)}},
|
|
12
|
+
{kind:"compare",id:"casualty/review/positive-exposure",code:"positive-exposure",description:"Exposure must be strictly positive",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},when:{left:m(input.exposure),operator:"lte",right:{op:"constant",value:0}}},
|
|
13
|
+
{kind:"monotonic",id:"casualty/review/closed-reopen-signal",code:"closed-reopen-signal",description:"Closed count must be nondecreasing across valuations",severity:"warning",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},expression:{op:"add",terms:[m(input.counts.closedNoPay),m(input.counts.closedWithPay)]},direction:"nondecreasing"},
|
|
14
|
+
];
|
|
15
|
+
const dynamic:DiagnosticReviewRule[]=[...input.monotonicMeasures.map((item):DiagnosticReviewRule=>({kind:"monotonic",id:item.id,code:item.id,description:`Expression must be ${item.direction} across valuations`,severity:"warning",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),expression:item.expression,direction:item.direction})),...input.layerOrders.map((item):DiagnosticReviewRule=>({kind:"layer-order",id:item.id,code:item.id,description:"Narrower amount expression must not exceed broader amount expression",severity:"fail",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),narrower:item.narrower,broader:item.broader,comparability:item.comparability})),...input.controlTotals.map((item):DiagnosticReviewRule=>({kind:"control-total",id:item.id,code:item.id,description:"Expression must reconcile to the declared control total",severity:"fail",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),expression:item.expression,expected:item.expected,...(item.filter?{filter:item.filter}:{}),projection:item.projection}))];
|
|
16
|
+
const all=[...fixed,...dynamic];const ids=new Set<string>();for(const rule of all){if(ids.has(rule.id))throw new Error(`Duplicate review rule ID ${rule.id}`);ids.add(rule.id)}for(const key of Object.keys(input.severityOverrides??{}))if(!ids.has(key))throw new Error(`Unknown severity override ${key}`);return Object.freeze(all.map((rule)=>Object.freeze({...rule,severity:input.severityOverrides?.[rule.id]??rule.severity}) as DiagnosticReviewRule));
|
|
17
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { compileDiagnosticDefinition, type CompiledDiagnosticDefinition, type DiagnosticDefinition } from "@actuarial-ts/core";
|
|
2
|
+
|
|
3
|
+
/** Validates unknown authored definition data through core's single semantic compiler. */
|
|
4
|
+
export function validateDiagnosticDefinition(value: unknown): CompiledDiagnosticDefinition {
|
|
5
|
+
return compileDiagnosticDefinition(value as DiagnosticDefinition);
|
|
6
|
+
}
|