Update all documentation for 3-level roles, organismos, and Histórico
Reflect current project state across all 8 docs: ADMIN/ORGANISMO_OPERADOR/OPERATOR role hierarchy, scope filtering, organismos_operadores table, Histórico de Tomas page, new SQL migrations, and updated API endpoints with auth requirements. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
│ │ │ - meters │ │ - meter │ │ - meter │ │ │
|
||||
│ │ │ - readings │ │ - reading │ │ - reading │ │ │
|
||||
│ │ │ - users │ │ - user │ │ - user │ │ │
|
||||
│ │ │ - organismos│ │ - organismo │ │ - organismo │ │ │
|
||||
│ │ │ - csv-upload│ │ - etc... │ │ - csv-upload│ │ │
|
||||
│ │ │ - webhooks │ │ │ │ - tts │ │ │
|
||||
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
||||
@@ -83,6 +84,7 @@
|
||||
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
||||
│ │ │ users │ │ projects │ │concentrators│ │ │
|
||||
│ │ │ roles │ │ gateways │ │ meters │ │ │
|
||||
│ │ │ organismos │ │ │ │ │ │ │
|
||||
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
||||
│ │ │ │
|
||||
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
||||
@@ -125,11 +127,24 @@
|
||||
│ id (PK) │──┐ │ id (PK) │ ┌──│ id (PK) │
|
||||
│ name │ └───▶│ role_id (FK) │ │ │ name │
|
||||
│ description │ │ project_id (FK) │◀───┤ │ description │
|
||||
│ permissions │ │ email │ │ │ area_name │
|
||||
└─────────────┘ │ password_hash │ │ │ status │
|
||||
│ name │ │ │ created_by (FK) │──▶ users
|
||||
│ is_active │ │ │ meter_type_id │──▶ meter_types
|
||||
└─────────────────┘ │ └─────────────────┘
|
||||
│ permissions │ │ organismo_op_id │──┐ │ │ area_name │
|
||||
└─────────────┘ │ email │ │ │ │ status │
|
||||
│ password_hash │ │ │ │ organismo_op_id │──┐
|
||||
│ name │ │ │ │ created_by (FK) │──▶ users
|
||||
│ is_active │ │ │ │ meter_type_id │──▶ meter_types
|
||||
└─────────────────┘ │ │ └─────────────────┘ │
|
||||
│ │ │
|
||||
┌─────────────────┐ │ │ │
|
||||
│ organismos_ │◀─┘─┼───────────────────────┘
|
||||
│ operadores │ │
|
||||
├─────────────────┤ │
|
||||
│ id (PK) │ │
|
||||
│ name │ │
|
||||
│ code │ │
|
||||
│ contact_name │ │
|
||||
│ contact_email │ │
|
||||
│ is_active │ │
|
||||
└─────────────────┘ │
|
||||
│ │
|
||||
│ │
|
||||
┌─────────────────┐ │ │
|
||||
@@ -183,6 +198,36 @@
|
||||
└─────────────────┘
|
||||
|
||||
|
||||
## Scope Filtering (Control de Acceso por Datos)
|
||||
|
||||
Todos los servicios del backend aplican filtrado automatico basado en el rol del usuario autenticado:
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────┐
|
||||
│ Scope Filtering │
|
||||
├──────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ADMIN (roleName = 'ADMIN') │
|
||||
│ └── Sin filtro, ve TODOS los registros │
|
||||
│ │
|
||||
│ ORGANISMO_OPERADOR (organismoOperadorId = X) │
|
||||
│ └── WHERE project_id IN ( │
|
||||
│ SELECT id FROM projects │
|
||||
│ WHERE organismo_operador_id = X │
|
||||
│ ) │
|
||||
│ │
|
||||
│ OPERATOR (projectId = Y) │
|
||||
│ └── WHERE project_id = Y │
|
||||
│ │
|
||||
├──────────────────────────────────────────────────────────┤
|
||||
│ Utility: water-api/src/utils/scope.ts │
|
||||
│ Se aplica en: meter, reading, project, user, │
|
||||
│ concentrator, notification services │
|
||||
└──────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ audit_logs │ │ notifications │ │ meter_types │
|
||||
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
|
||||
@@ -206,7 +251,7 @@
|
||||
| Campo | Tipo | Descripcion |
|
||||
|-------|------|-------------|
|
||||
| id | UUID | Identificador unico |
|
||||
| name | ENUM | ADMIN, OPERATOR, VIEWER |
|
||||
| name | ENUM | ADMIN, ORGANISMO_OPERADOR, OPERATOR |
|
||||
| description | TEXT | Descripcion del rol |
|
||||
| permissions | JSONB | Permisos detallados |
|
||||
|
||||
@@ -219,9 +264,23 @@
|
||||
| name | VARCHAR | Nombre completo |
|
||||
| role_id | UUID FK | Rol asignado |
|
||||
| project_id | UUID FK | Proyecto asignado (OPERATOR) |
|
||||
| organismo_operador_id | UUID FK | Organismo asignado (ORGANISMO_OPERADOR) |
|
||||
| is_active | BOOLEAN | Estado de la cuenta |
|
||||
| last_login | TIMESTAMP | Ultimo acceso |
|
||||
|
||||
#### `organismos_operadores`
|
||||
| Campo | Tipo | Descripcion |
|
||||
|-------|------|-------------|
|
||||
| id | UUID | Identificador unico |
|
||||
| name | VARCHAR | Nombre del organismo |
|
||||
| code | VARCHAR | Codigo unico (ej: CESPT-TJ) |
|
||||
| contact_name | VARCHAR | Nombre del contacto |
|
||||
| contact_email | VARCHAR | Email de contacto |
|
||||
| contact_phone | VARCHAR | Telefono de contacto |
|
||||
| is_active | BOOLEAN | Estado activo |
|
||||
| created_at | TIMESTAMP | Fecha de creacion |
|
||||
| updated_at | TIMESTAMP | Fecha de actualizacion |
|
||||
|
||||
#### `refresh_tokens`
|
||||
| Campo | Tipo | Descripcion |
|
||||
|-------|------|-------------|
|
||||
@@ -244,6 +303,7 @@
|
||||
| area_name | VARCHAR | Nombre del area |
|
||||
| location | TEXT | Ubicacion |
|
||||
| status | ENUM | ACTIVE, INACTIVE, COMPLETED |
|
||||
| organismo_operador_id | UUID FK | Organismo operador propietario |
|
||||
| meter_type_id | UUID FK | Tipo de medidor por defecto |
|
||||
| created_by | UUID FK | Usuario creador |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user