docs(policy-ocr): vigencia/agente/prima are keyed in by hand on the PVL layout
Confirmed with Luz, who handles GMX policies at the office: the three
fields the especificación does not carry are entered manually. The review
screen already supports it — all three are editable and `postPremium`
enables off the typed premium, so no code change was needed.
The parser's note said "esos datos están en la carátula de la póliza",
which now sends the reviewer looking for the wrong document. It says
"captúrelos a mano" instead, and names the consequence of leaving the
vigencia blank: `Policy.policyTo` is nullable and the renewals window
filters `policyTo: { gte, lte }`, so a policy confirmed without one never
matches and never gets a renewal notice — silently, permanently, with
nothing downstream erroring.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -310,7 +310,13 @@ describe("parsePolicy / GMX especificación (PVL Hogar)", () => {
|
||||
expect(p.agentName).toBeNull();
|
||||
expect(p.netPremium).toBeNull();
|
||||
expect(p.total).toBeNull();
|
||||
expect(p.notes.join(" ")).toMatch(/no trae vigencia, agente ni prima/i);
|
||||
// The note must tell the reviewer to key them in — those three are
|
||||
// captured by hand on this layout — and must say what silently breaks if
|
||||
// the vigencia is left empty.
|
||||
const notes = p.notes.join(" ");
|
||||
expect(notes).toMatch(/no trae vigencia, agente ni prima/i);
|
||||
expect(notes).toMatch(/captúrelos a mano/i);
|
||||
expect(notes).toMatch(/avisos de renovación/i);
|
||||
});
|
||||
|
||||
it("takes the currency from the printed limits, not from the M.N. sublimits", () => {
|
||||
|
||||
@@ -603,9 +603,15 @@ function parseGmxEspecificacion(page: OcrPage): ParsedPolicy {
|
||||
const { coverages, currency } = parseEspecificacionCoverages(lines, notes);
|
||||
|
||||
// These are absent by design on this document, not failures to read. Say so
|
||||
// explicitly, or the reviewer reads four empty fields as a broken parse.
|
||||
// explicitly, or the reviewer reads three empty fields as a broken parse.
|
||||
//
|
||||
// The renewal consequence is spelled out rather than left implied: a Policy
|
||||
// confirmed with a null `policyTo` never matches the renewals window query
|
||||
// (`renewals.service.ts`, `policyTo: { gte, lte }`), so it drops out of the
|
||||
// renewal notices silently and stays out. Nothing downstream errors.
|
||||
notes.push(
|
||||
"la especificación PVL no trae vigencia, agente ni prima; esos datos están en la carátula de la póliza",
|
||||
"la especificación PVL no trae vigencia, agente ni prima; captúrelos a mano " +
|
||||
"(sin vigencia la póliza no entra en los avisos de renovación)",
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user