Appearance
July 31, 2026 — Backend
Release date: Friday, July 31, 2026
Summary
This week adds tender management end-to-end, Geonorge address lookup for building forms, and a major coverage portfolio upgrade: drift detection for outdated ACTIVE-year lines, bulk reissue and mid-term expire, future-start coverage with prorated premiums, and cleaner list responses without server-side aggregates.
Shipped
- Tender management — new module with CRUD, building assignments, supplier activity, documents, reinsurers, permissions, audit actions, and Prisma schema/migration.
- Geonorge address registry search —
GET /api/v1/address-registry/searchfor building address autocomplete with postal code, municipality, and coordinates. - Coverage drift detection — ACTIVE-year issued lines compared against current rating inputs;
isOutdatedflag, snapshot persistence, and list filter support. - Bulk coverage reissue — portfolio reissue for ACTIVE-year lines; each line must declare
isOutdated; projected-renewal copy andshouldRenewhonored on reissue. - Bulk coverage expire — mid-term expiry for selected portfolio lines; voids projected renewal children on expire.
- Future-start coverage — coverage lines may start in the future; partial-year issue premiums prorated from start date.
- Coverage list API cleanup — server-side aggregate totals removed from list response (clients derive totals from returned rows).
Engineering (commit recap)
Backend — week of July 27 – August 2, 2026
Window: after 2026-07-24, before 2026-08-01 (--no-merges).
Summary
The largest addition is the tender module: Prisma models, permissions, audit events, and REST surface for tenders, buildings, reinsurers, documents, and supplier activity. Insurance coverage work spans drift detection (rating-input snapshots and isOutdated), bulk reissue/expire for ACTIVE-year portfolios, future-start dates with prorated premiums, and removal of list-response aggregates. Building address forms gain Geonorge registry search. OpenAPI contract regenerated throughout.
Themes
- Tender module: New
tender.prismaschema, migration, permissions/role seeds,TenderServicewith building seed util, controllers for tenders and reinsurers, DTOs, audit action types, anddocs/TENDER.md. - Coverage drift:
CoverageDriftServiceand logic compare issued lines to current building/rating inputs;CoverageRatingInputsSnapshotbuilder;isOutdatedon list items;outdatedOnlyquery filter; Prisma migration for snapshot storage. - Bulk portfolio operations:
bulkReissueCoveragesandbulkExpireCoverageson insurance-year controller; reissue requiresisOutdatedper line; expiry persistence and projected-renewal void/sync on expire; shared projected-copy util with renewal service. - Coverage period and premiums: Future
startDateallowed;coverage-period.validationand reissue logic prorate partial-year issue premiums; building-on-risk validation extended. - List API shape: Removed server-computed aggregates from
GETcoverage-lines-for-year response; drift fields remain on list items. - Geonorge address search:
GeonorgeAddressServiceandAddressRegistryControllerwith search query/result DTOs; wired into building module. - OpenAPI contract: Regenerated for tender endpoints, coverage bulk/drift APIs, address registry search, and
TablePreferenceDtoexport.
Notable fixes or risks (if any)
- Bulk reissue guard — backend rejects lines without
isOutdated: true; frontend must send the flag explicitly. - Mid-term expire side effects — expiring a line voids its projected renewal children; confirm portfolio renewal views reflect voided projections.
- List aggregates removed — clients that relied on server-side totals must compute from row data (frontend now does this in-table).
- Geonorge dependency — address search calls the external Geonorge API; monitor availability and rate limits in production.