Skip to content

July 3, 2026 — Backend

Release date: Friday, July 3, 2026

Summary

This week introduced the building special tariff workflow: a dedicated table and API for requesting, approving, and rejecting manual risk multipliers on insurance rates. Special tariff was extracted from the insurance workbook so issued coverages stay immutable for external sync (e.g. PARIS), while approved multipliers apply to new issuance and are copied to PROJECTED years when approved on the ACTIVE year.

Shipped

  • Special tariff API: GET/POST/PATCH /api/v1/buildings/:id/special-tariff/:year/... for request, approve, and reject, plus approver-facing routes; OpenAPI and http/api.http updated.
  • ACTIVE-year-only mutations: Request, approve, and reject are allowed only when :year is the ACTIVE insurance year (409 otherwise); GET works for any year including PROJECTED for display.
  • Immutability preserved: Approving a special tariff writes the multiplier to SpecialTariff for ACTIVE and all PROJECTED years for that building but does not reprice existing CoverageLine / CoverageRate rows.
  • Permissions and notifications: New permission keys, role assignments, notification templates, and audit actions (special_tariff.*) for the approval flow.
  • Schema migration: SpecialTariff table added; special tariff removed from workbook sync path; renewal and coverage-line services updated to read the new source.

Engineering (commit recap)

Backend — week of June 28 – July 3, 2026

Window: 2026-06-27 < commit date < 2026-07-04 (git log --no-merges).

Summary

One non-merge commit landed, delivering the full building special tariff feature. The multiplier moved from the insurance workbook profile into a SpecialTariff entity with its own service, controllers (requester and approver), value resolver, and profile-tariff context loader. Coverage-line and renewal logic were adjusted so future rating uses the approved value without mutating issued snapshots. Documentation in INSURANCE_MODULE_OPTIONS.md and AUDIT_LOG.md describes the immutability contract and cross-year copy behavior.

Themes

  • Special tariff module: New special-tariff service, controllers, DTOs, approver endpoints, value resolver, and comprehensive unit/controller specs; wired into InsuranceModule.
  • Data model and migration: SpecialTariff(buildingId, year) Prisma model with approval workflow fields; workbook no longer stores the multiplier; building insurance profile DTO/sync updated accordingly.
  • ACTIVE-year governance: Mutations restricted to the ACTIVE insurance year; approve copies the approved value to every PROJECTED year for the same building so renewal drafts stay aligned.
  • Issued coverage immutability: Approve updates SpecialTariff only—existing CoverageLine and CoverageRate rows are untouched; new issuance, previews, and renewal projection pick up the new multiplier.
  • Auth, audit, and notifications: Permission keys and role-permission seeds; audit action types for special-tariff events; notification templates for approver alerts; OpenAPI contract regenerated.

Notable fixes or risks (if any)

  • External sync: Clients and integrations must use the new special-tariff endpoints—not workbook PATCH—to change multipliers; issued coverages will not retroactively reprice on approve.
  • PROJECTED years: Underwriters cannot start a separate special-tariff workflow on a PROJECTED year; changes must go through the ACTIVE year and copy forward on approve.
  • Mid-year premium adjustments: Changing premium on already-issued in-force cover still requires a separate endorsement/replacement workflow—not special-tariff approval alone.