Modelo de dominio
De la organización al reporte firmado, y qué gobierna cada salto.
El mapa, por área de permiso
El producto de un vistazo: cuatro áreas de permiso alrededor de un solo eje — un evento produce detecciones sobre los AOIs de tu cartera, una detección puede abrir un peritaje dentro de un siniestro, y el peritaje termina en un reporte firmado verificable offline. Cada área lleva los permisos del catálogo canónico que gobiernan sus endpoints.
La referencia exhaustiva
El detalle completo, entidad por entidad y con sus cardinalidades:
Fuente del diagrama (mermaid)
erDiagram
ORGANIZATION ||--o{ PORTFOLIO : "tiene"
ORGANIZATION ||--o{ CLIENT : "tiene"
ORGANIZATION ||--|| ORG_BRANDING : "se ve como"
PORTFOLIO ||--o{ AOI : "agrupa"
CLIENT ||--o{ POLICY : "contrata"
POLICY }o--o{ AOI : "cubre"
EVENT ||--o{ DETECTION : "produce"
AOI ||--o{ DETECTION : "sobre"
AOI ||--o{ CLAIM : "sobre"
CLAIM ||--o{ PERITAJE : "se perita en"
DETECTION ||--o{ PERITAJE : "mide"
CLAIM ||--o{ REPORT : "se reporta en"
REPORT ||--o| SIGNATURE : "firmado con"
AOI ||--o{ WATCH_SUBSCRIPTION : "vigilado por"
WATCH_SUBSCRIPTION ||--o{ ALERT : "emite"
ALERT ||--o{ WEBHOOK_DELIVERY : "notifica por"
Las cuatro reglas que el modelo impone
Todo cuelga de una organización. No hay entidad sin tenant. Es lo que hace que un recurso de otra organización pueda responder 404 en vez de 403: el runtime siempre sabe de quién es lo que le están pidiendo.
Un peritaje necesita una detección. No es una relación opcional: un peritaje sin medición no es evidencia, es una opinión con formato. El contrato lo valida.
Un reporte aprobado necesita firma. Aprobado sin firma no es evidencia verificable, y publicarlo como si lo fuera es peor que no tener firma.
Un AOI tiene versión de geometría. Redibujar el lote es otro cálculo:
aoiVersion entra en el hash de contenido de /v1/jobs para que un footprint
viejo no se reuse con una geometría nueva.
Qué gobierna cada área
Cada entidad se lee y se escribe con el permiso de su área del catálogo canónico (ADR 0006), no con uno global:
| Entidad | Permisos |
|---|---|
| Portfolio, AOI | portfolio:read / portfolio:write |
| Client | clients:read / clients:write |
| Policy | underwriting:read / underwriting:write |
| Event, Detection | events:read / events:write |
| Claim, Peritaje | claims:read / claims:write |
| Report | reports:read / reports:write |
| Watch, Alert | alerting:read / alerting:write |
| Webhook | notifications:read / notifications:write |
| Org branding | admin:read / admin:write |
El copiloto y el buscador vuelven a chequear el permiso del área antes de leer. Una puerta única alcanzaría para que alguien con permiso de cartera leyera siniestros por una ventana lateral, sin dejar rastro en ninguna pantalla.