feat(f6.8): harden offline field flow and act documents
Android CI / RC / Android · lint, tests, debug APK, release compile (push) Successful in 3m41s
DH V2 CI / API · typecheck, tests, build (push) Successful in 31s
DH V2 CI / WEB · typecheck, build (push) Successful in 19s
Production dependency audit / API · production dependencies (push) Successful in 9s
Production dependency audit / WEB · production dependencies (push) Successful in 8s
DH V2 CI / Docker / scripts contract (push) Successful in 1m14s
Android CI / RC / Android · lint, tests, debug APK, release compile (push) Successful in 3m41s
DH V2 CI / API · typecheck, tests, build (push) Successful in 31s
DH V2 CI / WEB · typecheck, build (push) Successful in 19s
Production dependency audit / API · production dependencies (push) Successful in 9s
Production dependency audit / WEB · production dependencies (push) Successful in 8s
DH V2 CI / Docker / scripts contract (push) Successful in 1m14s
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# Auditoría integral DH V2 · F6.8 · 15/09/2026
|
||||
|
||||
## Alcance
|
||||
Revisión del árbol activo API V3, WEB V2 y Android de campo contra el modelo funcional vigente. La auditoría distingue superficie activa, compatibilidad histórica y código fuente retirado/no enrutable para no confundir legado con funcionalidad productiva.
|
||||
|
||||
## 1. Acceso, usuarios, roles y perfil
|
||||
- El acceso autenticado, permisos y cambio de contraseña siguen aislados por permisos.
|
||||
- La firma reutilizable del inspector se administra en Mi perfil y se consulta desde Android antes del cierre del Acta.
|
||||
- Corrección F6.8: Android ya no presume que existe la firma. Si se configura después de haber guardado un cierre pendiente, “Volver a verificar” reintenta automáticamente la sincronización.
|
||||
- Corrección F6.8: cola y caché offline están separadas por `userId`; un segundo usuario del mismo dispositivo no puede sincronizar ni reutilizar datos locales del anterior.
|
||||
|
||||
## 2. Planificación e Inspecciones
|
||||
- Flujo activo: oficina planifica; la APK inicia y cierra la ejecución física.
|
||||
- Contexto vigente: Departamento → Área → Yacimiento; Operadora temporal del Área; el Yacimiento fija el alcance físico.
|
||||
- La planificación activa no usa fecha de fin prevista. Las referencias `plannedEndAt` encontradas pertenecen al subsistema Survey retirado y no están en rutas activas.
|
||||
- Corrección F6.8: inicio y cierre de Inspección quedan persistidos localmente si se pierde conectividad y se sincronizan en orden al recuperarla. Un rechazo funcional del servidor revierte el estado optimista local.
|
||||
|
||||
## 3. Actas
|
||||
- Una Inspección puede contener múltiples Actas, manteniendo como máximo una en borrador simultáneamente.
|
||||
- La urgencia se define al bloquear/cerrar el contenido del Acta completa; no pertenece individualmente a cada Hallazgo.
|
||||
- El Acta bloqueada es inmutable y pasa a firma. La firma del inspector proviene del perfil; la persona acompañante firma por cada Acta.
|
||||
- Flujo activo de acompañante: conforme, disconformidad con motivo o negativa a firmar con motivo. La opción de crear nuevas ausencias fue retirada de la interfaz; `ABSENT` se conserva únicamente para leer registros históricos.
|
||||
- Corrección crítica F6.8: Android enviaba `uploadMode=ONLINE`, valor inválido para la API. Se reemplazó por `IMMEDIATE` y la cola offline usa `DEFERRED`.
|
||||
- Corrección F6.8: alta, bloqueo, responsable, manifestación, firma y sellado pueden quedar en cola local sin perderse.
|
||||
|
||||
## 4. Hallazgos y evidencia
|
||||
- Los Hallazgos pertenecen a un Acta explícita y a un elemento de Inventario incluido en ella.
|
||||
- El catálogo se resuelve por Tipo de instalación/subinstalación y mantiene OTROS como salida no restrictiva.
|
||||
- Corrección F6.8: alta de Hallazgo y carga de evidencia usan UUID de cliente para que un reintento offline no duplique registros.
|
||||
- Corrección F6.8: cada fotografía se revisa antes de incorporarse: usar, volver a tomar o eliminar; conserva GPS y fecha de captura.
|
||||
- Se mantienen múltiples fotografías por Hallazgo.
|
||||
|
||||
## 5. Inventarios
|
||||
- Jerarquía activa: Departamento → Área → Yacimiento → Instalación → Subinstalación.
|
||||
- Corrección de nomenclatura: la antigua expresión visible “clasificación técnica/familia técnica” se presenta como “Tipo de instalación” o “Tipo de subinstalación”. Los nombres físicos internos de tablas/variables se conservan para evitar migraciones destructivas.
|
||||
- Altas en campo conservan GPS y foto obligatoria antes de habilitar Hallazgos.
|
||||
- Corrección F6.8: creación, selección, foto y asociación al Acta pueden persistirse offline con identidad estable e idempotencia de servidor.
|
||||
- Historial, dossier y consulta temporal siguen separados del estado actual para no reescribir historia.
|
||||
|
||||
## 6. Acta documental, fotos y Dashboard
|
||||
- Desvío corregido: la ficha de Acta mezclaba demasiada información administrativa y el PDF/fotos no eran contenido principal.
|
||||
- F6.8 agrega “Documento del Acta” con apertura y descarga del PDF real sellado.
|
||||
- Las fotos de Hallazgos se muestran como miniaturas dentro del Acta.
|
||||
- Las fotos de Inventario se limitan a eventos de campo de la misma Inspección y a elementos incluidos en esa Acta; no se mezclan fotos históricas de otras visitas.
|
||||
- La proyección documental anterior queda sólo como referencia colapsada, no como sustituto del PDF oficial.
|
||||
|
||||
## 7. Seguimiento, verificaciones y vencimientos
|
||||
- El seguimiento administrativo permanece separado de la captura de campo.
|
||||
- Respuesta de empresa, documentación, fechas informadas y verificación física conservan trazabilidad sin reabrir el Acta.
|
||||
- La planificación de verificaciones continúa basada en Hallazgos abiertos y no reemplaza el plazo administrativo del Acta.
|
||||
- No se detectaron rutas activas que vuelvan a asignar la urgencia al Hallazgo.
|
||||
|
||||
## 8. Informes, GEDO y entrega documental
|
||||
- Flujo activo confirmado: Acta → INF → oficialización GEDO/IF.
|
||||
- Un INF corresponde a una sola Acta; una Inspección con varias Actas puede producir varios INF.
|
||||
- El circuito legacy de aprobación/firma final por Director fue retirado de la superficie activa; sus menciones permanecen sólo en migraciones reversibles/historia.
|
||||
- La entrega documental y SMTP continúan bajo permisos administrativos y trazabilidad.
|
||||
|
||||
## 9. Importaciones y compatibilidad histórica
|
||||
- El módulo API de importaciones se conserva, pero la antigua pantalla de importación fue retirada deliberadamente de las rutas WEB en F5; no se reactivó durante F6.8 para no mezclar el contrato anterior con el modelo autoritativo actual.
|
||||
- Las páginas Survey y campos como `plannedEndAt` existen como fuente histórica sin ruta activa; los módulos Survey tampoco están registrados en `AppModule`.
|
||||
- Se mantienen redirects `/activos` → `/inventarios` y valores históricos de estados de Acta únicamente para compatibilidad de enlaces/datos existentes.
|
||||
|
||||
## 10. Offline, consistencia y seguridad de sincronización
|
||||
- Room persiste operaciones y contexto descargado; WorkManager reintenta sólo con red disponible.
|
||||
- Las operaciones dependientes se procesan en orden estable y la cola se detiene ante un error funcional permanente para no ejecutar hijos sobre un padre rechazado.
|
||||
- Las operaciones críticas usan identificadores de cliente y columnas de idempotencia para evitar duplicados tras cortes/reintentos.
|
||||
- Los archivos pendientes se almacenan dentro del espacio privado de la aplicación hasta quedar sincronizados.
|
||||
|
||||
## Barreras de aceptación F6.8
|
||||
- API: build + suite integral de contratos/unidad.
|
||||
- WEB: typecheck/build de producción.
|
||||
- Android: compilación Debug/Release, tests unitarios, APK Debug instalable y lint por variante dentro de los límites del VPS.
|
||||
- Deploy productivo: backup previo, migraciones, recreación API/WEB, health/versiones y ausencia de migraciones pendientes.
|
||||
|
||||
## Compatibilidad intencional que NO debe eliminarse a ciegas
|
||||
- Estados/eventos históricos de Acta (`READY`, `CLOSED`, `RECTIFIED`, `ABSENT`) para lectura de expedientes existentes.
|
||||
- Rutas antiguas `/activos` como redirección de compatibilidad.
|
||||
- Migraciones históricas y textos de rollback: no se reescriben.
|
||||
- Fuentes Survey/legacy no enrutadas: no forman parte del producto activo, pero sirven a contratos históricos y rollback.
|
||||
Reference in New Issue
Block a user