# Fase B1 — Base del Maestro de Activos Versión: `0.8.0` ## Objetivo Reemplazar el placeholder de Activos por el primer núcleo funcional del Maestro de Activos, sin fijar niveles como Empresa, Área, Yacimiento o Pozo. ## Modelo incorporado - `asset_types`: tipos configurables y activables/desactivables; - `asset_type_parent_rules`: múltiples tipos padre permitidos por tipo hijo; - `asset_attribute_definitions`: atributos configurables por tipo; - `assets`: entidades administrables con identidad y padre opcional; - `asset_attribute_values`: valores tipados de cada activo. La jerarquía se controla con dos reglas: 1. un tipo puede o no permitir activos raíz; 2. un tipo puede aceptar cero, uno o varios tipos padre. La API también evita ciclos en la jerarquía real de activos. ## Atributos dinámicos Tipos iniciales de dato: - texto; - número; - verdadero/falso; - fecha; - fecha y hora; - selección con opciones configurables. Los atributos pueden ser obligatorios, tener unidad, orden e inactivarse sin borrar valores existentes. ## Estados de información - `DRAFT`; - `PENDING_SURVEY`; - `SURVEYED`; - `VALIDATED`; - `OBSERVED`; - `OUTDATED`; - `INACTIVE`. Estos estados describen la calidad o vigencia de la información. No representan el estado operativo o mecánico del activo. ## API Tipos y atributos: - `GET /api/v3/asset-types`; - `GET /api/v3/asset-types/:id`; - `POST /api/v3/asset-types`; - `PATCH /api/v3/asset-types/:id`; - `POST /api/v3/asset-types/:id/attributes`; - `PATCH /api/v3/asset-types/:id/attributes/:attributeId`. Activos: - `GET /api/v3/assets`; - `GET /api/v3/assets/parent-options`; - `GET /api/v3/assets/:id`; - `POST /api/v3/assets`; - `PATCH /api/v3/assets/:id`; - `PATCH /api/v3/assets/:id/information-status`. No se implementa borrado físico. ## Permisos - `asset_types.read`; - `asset_types.manage`; - `assets.read`; - `assets.create`; - `assets.update`; - `assets.change_status`. La migración los asigna a los roles de sistema según su alcance y entrega todos al rol `admin`. ## Interfaz web - `/activos`: búsqueda, filtros, tabla y jerarquía visible; - `/activos/nuevo`: alta con atributos dinámicos; - `/activos/:id`: consulta/edición y cambio de estado según permiso; - `/admin/asset-types`: configuración de tipos, padres y atributos. ## Trazabilidad Se auditan altas y cambios de tipos, atributos, activos y estado de información. Los valores dinámicos quedan incluidos en el antes/después sanitizado. ## Fuera de B1 Quedan para próximas subfases: - geometrías PostGIS y edición en mapa; - fotografías y media versionada; - versiones históricas y consulta temporal; - importaciones/procedencia avanzada; - relevamiento de campo.