fix(db): auto-derive quarter_cad_number trigger (on-demand ingest 500) #1042

Merged
bot-backend merged 1 commit from fix/cad-parcels-quarter-cad-trigger into main 2026-06-04 07:19:28 +00:00
Collaborator

PROD bug (NEW, not from Leha's list): on-demand НСПД ingest of a real parcel NOT pre-loaded fails with NotNullViolation on cad_parcels.quarter_cad_number -> geometry never persists -> POST /analyze stuck 'Геометрия загружается' forever (re-enqueues). Repro: 66:41:0610029:83 (real parcel, valid geom, only quarter_cad_number null). Code derives quarter but NULL still reaches INSERT via a runtime path.

Migration 129: BEFORE INSERT OR UPDATE trigger auto-deriving quarter_cad_number from cad_num (>=3 segments) when NULL — fixes ALL write paths at DB level. <3-seg garbage still rejected (no masking). Dry-run-verified on prod catalog. Verification = re-fetch 0610029:83 post-deploy.

PROD bug (NEW, not from Leha's list): on-demand НСПД ingest of a real parcel NOT pre-loaded fails with NotNullViolation on cad_parcels.quarter_cad_number -> geometry never persists -> POST /analyze stuck 'Геометрия загружается' forever (re-enqueues). Repro: 66:41:0610029:83 (real parcel, valid geom, only quarter_cad_number null). Code derives quarter but NULL still reaches INSERT via a runtime path. Migration 129: BEFORE INSERT OR UPDATE trigger auto-deriving quarter_cad_number from cad_num (>=3 segments) when NULL — fixes ALL write paths at DB level. <3-seg garbage still rejected (no masking). Dry-run-verified on prod catalog. Verification = re-fetch 0610029:83 post-deploy.
bot-backend added 1 commit 2026-06-04 07:19:24 +00:00
fix(db): auto-derive cad_parcels.quarter_cad_number trigger (on-demand ingest 500)
All checks were successful
Deploy / changes (push) Successful in 5s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Successful in 29s
Deploy / build-worker (push) Successful in 29s
Deploy / deploy (push) Successful in 58s
45d5a338ea
PROD bug: on-demand НСПД ingest (bulk_harvest.upsert_parcel, for parcels NOT
pre-loaded) intermittently inserts quarter_cad_number=NULL at runtime →
NotNullViolation → geometry never persists → POST /analyze for a real new parcel
stuck "Геометрия загружается из НСПД…" forever (re-enqueues each call). Repro:
66:41:0610029:83 (real НСПД parcel; failing row had valid geom + props, only
quarter_cad_number null). Code derives quarter_cad but NULL still reaches the
INSERT via some runtime path (grid-walk).

Migration 129: BEFORE INSERT OR UPDATE trigger on cad_parcels — when
quarter_cad_number IS NULL and cad_num has >=3 colon-segments, derive it
(first 3 segments: 66:41:0610029:83 → 66:41:0610029). Fixes ALL write paths at
the DB level (quarter_cad_number is a pure derivation of cad_num). <3-segment
cad_num intentionally left NULL → NOT NULL still rejects genuine garbage (no
masking). Coexists with m.92 set_updated_at trigger. Idempotent.

Dry-run-verified on prod catalog: null-quarter insert → derived 66:41:0610029;
garbage <3seg still rejected. Verification = re-fetch 0610029:83 post-deploy.
bot-backend merged commit 45d5a338ea into main 2026-06-04 07:19:28 +00:00
bot-backend deleted branch fix/cad-parcels-quarter-cad-trigger 2026-06-04 07:19:28 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1042
No description provided.