forked from Yara724/api
Implement role-complete inquiry participants
This commit is contained in:
@@ -1,19 +1,25 @@
|
||||
# Inquiry participant identity proposal
|
||||
|
||||
Status: proposed
|
||||
Status: implemented on 2026-09-13
|
||||
Scope: every user, expert, FileMaker, and call-center inquiry flow
|
||||
Persian version: [inquiry-participants-proposal.fa.md](./inquiry-participants-proposal.fa.md)
|
||||
|
||||
## Implemented interface
|
||||
|
||||
The role fields and optional `vehicle` object shown below are accepted directly in every existing inquiry request body. This covers V2 user and expert/registrar mirror initial forms, V3 expert flow, V4/V5 FileMaker flows, V6 call-center flow, and the one-shot in-person completion paths. Plate and VIN routes share the same participant rules.
|
||||
|
||||
Existing flat fields remain accepted during migration. Responses and file-detail views for operational actors expose normalized `participants`, `participantRoles`, `vehicle.registrationState`, and `vehicle.previousPlateId` where available.
|
||||
|
||||
## Problem
|
||||
|
||||
The current inquiry contract mainly models a driver and a value named `insurer`. That is incomplete and the name is misleading: a person is the **policyholder**; the **insurer** is the insurance company.
|
||||
|
||||
Each vehicle-side `Party` can have these identity roles:
|
||||
|
||||
| Case type | Required roles |
|
||||
| --- | --- |
|
||||
| `THIRD_PARTY` | Driver, vehicle owner, third-party policyholder |
|
||||
| `CAR_BODY` | Driver, vehicle owner, third-party policyholder, car-body policyholder |
|
||||
| Case type | Required roles |
|
||||
| ------------- | ---------------------------------------------------------------------- |
|
||||
| `THIRD_PARTY` | Driver, vehicle owner, third-party policyholder |
|
||||
| `CAR_BODY` | Driver, vehicle owner, third-party policyholder, car-body policyholder |
|
||||
|
||||
One person may hold several roles, but the system must not assume that they do.
|
||||
|
||||
@@ -42,6 +48,8 @@ Use explicit role references instead:
|
||||
|
||||
`carBodyPolicyholder` is forbidden for `THIRD_PARTY` and required for `CAR_BODY`. A role is either a new person's identity or a `sameAs` reference, never both. The backend should normalize this input into unique participants plus role assignments.
|
||||
|
||||
For Driver, `hasDrivingLicense` is required. When it is `true`, both `licenseNumber` and `licenseType` are required; when it is `false`, the licence inquiry is intentionally skipped.
|
||||
|
||||
## Recent ownership transfer and previous plate
|
||||
|
||||
Participant roles and vehicle identifiers are separate concerns. When a vehicle has recently been sold or purchased, the current official record or policy may still be connected to its previous plate. Model this explicitly instead of replacing the current plate:
|
||||
|
||||
Reference in New Issue
Block a user