Page not found

The page you are looking for does not exist or has moved.

Page not found

The page you are looking for does not exist or has moved.

Loading the Policy…

Something went wrong on our side. Try again in a moment.

01.203.2026.004512 · endorsement 201.203.2026.004471 · endorsement 0

In force Not started Cancelled

Toyota Avanza 1.3 G 2021 · B 1234 XYZ · Dimas PrasetyoToyota Raize 1.0 GR Sport 2026 · no plate yet · Agus Wijaya

No plate on this PolicyThe car is new. The Client can't sign in by themselves until an import brings the plate; staff can still register a Claim for them.
Cancelled on 30 Sep 2026The core system puts the cancellation's effective date in the end date. An incident up to that day is still inside the cover period.
Policy Versions

Cover

Product
Demo Auto Protect
Cover
Comprehensive
Extensions
Riot · Flood Rp 10,000,000
Period
12 Mar 2026 – 11 Mar 202712 Mar 2026 – 30 Sep 202620 Oct 2026 – 19 Oct 2027
Status
In forceCancelled (as imported)
Sum insured
Rp 245,000,000
Premium
Rp 6,125,000
Own risk
Rp 300,000 per event · Riot Rp 500,000
Loss payee
PT Demo Multifinance

Vehicle

Plate
B 1234 XYZNot on the Policy yet
Chassis
MHKA1BA1JLJ012345MHKA6GJ6JRJ054321
Engine
1NRF2345671KRF876543
Make, model
Toyota Avanza 1.3 GToyota Raize 1.0 GR Sport
Year, colour
2021 · Silver Metallic2026 · White
Usage
Private

Client

Name
Dimas PrasetyoAgus Wijaya
Type
Individual
NIK
3578 •••• •••• 0001 3578 •••• •••• 0001 3578 0512 9001 0001 This view is on the audit log. Only people with the full-ID Permission can see the whole number.
Something went wrong on our side. Try again in a moment.
Phone
+6281234567890+6285712345678
Email
dimas.prasetyo@customer.test—

Ownership

Branch
Surabaya · code 03
Channel
Agency · AG-0417
Imported
02 Jun 2026, 06:12 WIB · polis-2026-06-02.xlsx01 Oct 2026, 06:14 WIB · polis-2026-10-01.xlsx12 Oct 2026, 06:15 WIB · polis-2026-10-12.xlsx
Versions
EndorsementWhat changedImportedFile
2 Current
Sum insured Rp 260,000,000 → Rp 245,000,000
Premium Rp 6,500,000 → Rp 6,125,000
02 Jun 2026, 06:12 WIBpolis-2026-06-02.xlsx
1—27 Mar 2026, 06:08 WIBpolis-2026-03-27.xlsx
1Loss payee — → PT Demo Multifinance20 Mar 2026, 06:10 WIBpolis-2026-03-20.xlsx
0Policy issued12 Mar 2026, 06:05 WIBpolis-2026-03-12.xlsx

Every accepted change is kept. An older endorsement arriving after a newer one is skipped and reported on its import, never written here.

  • Needs policy.read: without it, the 404 page, as for an unknown or malformed id or a Policy outside the Scope. It shows in the content only; the Shell stays.
  • Read-only, with no Edit: a Policy changes only when an import (Settings › Policy import) writes a new version of it.
  • Two tabs inside the panel, Policy and Versions; the tab is not in the URL.
  • The head's status is read from the period (Ended after it, Not started before it); the Status row shows what the import wrote, with "(as imported)".
  • The NIK (NPWP for a company Client) shows its first four and last four digits, or only bullets at eight characters or fewer. "Show full number" needs policyIdNumber.read (the default Admin; pick the Surveyor under Signed in as for the note); each read writes a policyIdNumber.viewed audit entry, and Hide masks it again.
  • Versions: highest endorsement first, and within one endorsement the last written first; each row lists the fields that differ from the version before it, "—" when none did, and the oldest reads "Policy issued".
  • Branch: a branch's name and code; a head-office Policy reads "Head office" with its code, or "code {code} not set up" when no branch carries it.
  • Extensions and Own risk name the five clauses the platform uses: Riot (KI.KBM-09), Terrorism / sabotage (KI.KBM-10), Earthquake (KI.KBM-11), Flood (KI.KBM-12) and TPL (thirdPartyLiability). Any other clause shows its id as imported.
  • Not drawn: the Versions tab's wording for an extensions change (#762 and #1029, neither settled), and #493's Ownership "Claims" row, "Open" on a version and the dropped-phone note.
  • Laid out by the settled detail rule: a read-only side panel over Policies, 85% wide, a back arrow on the left and each section a titled card. No Edit, since an import is the only writer.
  • Main's header moves into the panel's head: the number with "· endorsement n", the status chip beside it as the Claim's chips sit, the vehicle, plate and Client under it. The breadcrumb goes with the page.
  • The Policy and Versions tabs sit inside the panel under its alerts, as the Claim's sit under its head card; they switch in place, as main's do.
  • Loading and a failed read show inside the panel, as the Claim's: "Loading the Policy…" is drafted, the failed alert takes INTERNAL's text and "Try again".
  • "Show full number" shows a spinner beside its label while it reads; main only disables it.
  • The no-plate state shows another sample Policy (a new Toyota Raize, not started yet), since "The car is new." can't describe the 2021 Avanza.
  • Extension names follow #787's decision of 11 Oct: the mockup's short names, and the loss-type glossary's for the clause the mockup doesn't name (Terrorism / sabotage).
  • The cards' pairs read left to right, a label column then the value, as main's cards and the app's key-value pairs do. Date-times carry WIB.
  • main → spec: a side panel, not a page. The Policy opens over the Policies list and /policies/{id} opens the list with it open; the breadcrumb goes, a back arrow closes it, and its head holds the number, the status chip and the line under them. The tabs sit inside the panel.
  • main → spec: loading and a failed read inside the panel, a spinner card while it loads and "Try again" under the failed read's alert; today loading shows only the breadcrumb.
  • main → spec: the 404 page for an unknown, malformed or out-of-Scope Policy; today an inline NOT_FOUND alert under the breadcrumb.
  • ticket #787 → comment: the five names as drawn, Riot, Terrorism / sabotage, Earthquake, Flood and TPL; the ticket's decision names its sources and lists none.
  • main → spec: "Show full number" shows its progress, a spinner beside the label while the read runs; today it only disables.
  • main → spec: without policy.read the page answers the 404 page in its content, with the Shell around it, in place of main's redirect to the landing page with "You don't have access to that page."
  • No access is the 404 page, in the page's content only: the Shell, and in Settings the tabs and menu, stay around it. Main's redirect with "You don't have access to that page." goes. (12 Oct 2026)

From main's web/src/ui/Policy and PolicyStatusChip; the side panel from claim.html; #787