Android CI / RC / Android · lint, tests, debug APK, release compile (push) Failing after 1m25s
DH V2 CI / API · typecheck, tests, build (push) Successful in 34s
DH V2 CI / WEB · typecheck, build (push) Successful in 20s
Production dependency audit / API · production dependencies (push) Successful in 9s
Production dependency audit / WEB · production dependencies (push) Successful in 9s
DH V2 CI / Docker / scripts contract (push) Successful in 1m16s
129 lines
8.1 KiB
Markdown
129 lines
8.1 KiB
Markdown
# DH Inspección Android · release final de campo 0.19.3
|
|
|
|
## Candidata vigente
|
|
|
|
- Fase funcional: **Flujo final de campo · Inspección → Acta → Hallazgos → Firma**.
|
|
- `versionName`: **0.19.3**.
|
|
- `versionCode`: **31**.
|
|
- Application ID release: `com.korexlabs.dhinspeccion`.
|
|
- Application ID debug/QA: `com.korexlabs.dhinspeccion.debug`.
|
|
- API: `https://dhv2.korexlabs.com/api/v3/`.
|
|
- Servidor compatible de esta candidata: **API 0.29.0-4 / WEB 0.23.0-3**.
|
|
|
|
La variante debug es independiente de la app productiva y puede instalarse para QA/presentación sin sobrescribir una instalación release histórica.
|
|
|
|
## Procedimiento operativo validado
|
|
|
|
La APK 0.19.3 fija como recorrido principal de campo:
|
|
|
|
1. **Iniciar Inspección**. Al iniciarla se habilita el circuito de **Actas y Hallazgos**; Inventario no es una acción independiente de la Inspección.
|
|
2. **Crear o abrir un Acta**. Puede haber varias Actas dentro de una misma Inspección, pero sólo una puede permanecer en elaboración al mismo tiempo. La urgencia todavía no se define.
|
|
3. **Agregar Hallazgos**. Recién desde esta acción se selecciona la Instalación/Subinstalación afectada.
|
|
4. Si el elemento ya existe, se lo selecciona desde el Inventario del Área/Yacimiento de la Inspección.
|
|
5. Si no existe, se da de alta desde campo sin abandonar el Acta.
|
|
6. Un elemento nuevo debe completar **GPS + fotografía** antes de poder recibir Hallazgos.
|
|
7. Antes del cierre se identifican, para esa Acta, los datos del **Representante de la empresa** que acompañó el recorrido: nombres y apellidos, DNI, cargo/función y email. Si coincide con el Acta anterior, la APK puede precargarlos, pero deben confirmarse nuevamente.
|
|
8. Al terminar el contenido del Acta se elige **Urgente / No urgente** y luego se usa **Cerrar Acta y dejar pendiente de firma**. La urgencia pertenece al Acta completa, nunca a cada Hallazgo; desde ese momento el contenido queda inmutable y el estado visible es **Pendiente de firma**.
|
|
9. La firma del Inspector y la manifestación del representante completan el Acta: **conformidad**, **disconformidad con motivo obligatorio** o **negativa a firmar con motivo obligatorio**. La firma se registra Acta por Acta aunque sea la misma persona.
|
|
10. La Inspección sólo puede cerrarse cuando todas sus Actas no canceladas están firmadas y cerradas.
|
|
|
|
La nomenclatura técnica interna de API (`DRAFT`, `LOCKED`, `SEALED`, etc.) no se muestra al inspector: la interfaz usa textos operativos en castellano.
|
|
|
|
## Alta de Instalaciones y Subinstalaciones
|
|
|
|
El alta móvil queda alineada con el Dashboard y con las validaciones del servidor.
|
|
|
|
### Instalación
|
|
|
|
- contexto territorial: Yacimiento/Área de la Inspección;
|
|
- clasificación técnica compatible;
|
|
- **Nombre técnico** obligatorio;
|
|
- Nombre habitual opcional;
|
|
- Descripción opcional;
|
|
- atributos técnicos definidos por el tipo; sólo los marcados como obligatorios bloquean el guardado;
|
|
- código DH generado por el sistema cuando corresponde;
|
|
- GPS de la tablet;
|
|
- fotografía obligatoria antes de crear Hallazgos.
|
|
|
|
### Subinstalación
|
|
|
|
Además de lo anterior requiere elegir primero la **Instalación padre**. El buscador consulta mientras se escribe y cada resultado es seleccionable tocando la tarjeta.
|
|
|
|
La clasificación y los atributos se obtienen dinámicamente desde el mismo catálogo administrado por el Dashboard; la APK no mantiene listas técnicas paralelas.
|
|
|
|
## Actas y firma
|
|
|
|
La terminología visible se simplifica:
|
|
|
|
- `DRAFT` → **En elaboración**;
|
|
- `LOCKED` → **Pendiente de firma**;
|
|
- `SEALED` → **Firmada y cerrada**.
|
|
|
|
Cerrar el contenido no cierra automáticamente la Inspección y tampoco obliga a terminar la firma en ese instante: puede continuarse con otra Acta. La urgencia se decide en ese cierre, nunca al crear el borrador. Una vez cerrado el contenido, el Acta es inmutable.
|
|
|
|
Después de la firma/cierre definitivo se mantiene el circuito documental existente: PDF del Acta e informe INF editable (DOCX) para oficina.
|
|
|
|
## Castellano e identidad visual
|
|
|
|
Se revisaron las pantallas activas de campo para evitar exponer estados y opciones internas en inglés. Entre otros cambios: Pasaporte/Otro en documentos, estados de Inspección/Acta/Hallazgo en castellano, Correo electrónico, Huella de integridad y terminología de cierre orientada al usuario.
|
|
|
|
La pantalla de ingreso y el desbloqueo biométrico utilizan la identidad visual de Mendoza ya incorporada al proyecto.
|
|
|
|
## Barrera obligatoria
|
|
|
|
Todo cambio Android o de API que pueda afectar al cliente móvil debe pasar `Android CI / RC`:
|
|
|
|
1. validación de identidad, HTTPS y políticas básicas del manifest;
|
|
2. Android lint;
|
|
3. pruebas unitarias Android reales, con verificación de que exista al menos una prueba ejecutada;
|
|
4. `assembleDebug`;
|
|
5. `assembleRelease` para comprobar que la variante productiva compile;
|
|
6. empaquetado del APK debug con SHA-256 y metadata de commit/versionado.
|
|
|
|
Además, `DH V2 CI` debe mantener verdes API, WEB y contrato Docker/migraciones antes de promover cambios que afecten al servidor.
|
|
|
|
## Firma release
|
|
|
|
La clave histórica de firma **no se versiona ni se reemplaza**. La CI compila la variante release para detectar roturas, pero una APK productiva que deba actualizar `com.korexlabs.dhinspeccion` tiene que firmarse con la clave histórica.
|
|
|
|
No se debe crear una clave nueva para resolver una falta de acceso: eso rompería la continuidad de actualización de tablets que ya tengan una versión firmada con la clave anterior.
|
|
|
|
## Criterio de distribución
|
|
|
|
Antes de distribuir una APK productiva:
|
|
|
|
- todas las barreras de CI del SHA exacto deben estar verdes;
|
|
- comprobar certificado/huella de firma contra la versión histórica si se distribuirá como actualización productiva;
|
|
- realizar actualización sobre al menos una tablet con la versión productiva anterior cuando corresponda;
|
|
- ejecutar smoke funcional: ingreso, iniciar Inspección, crear Acta, seleccionar/crear Instalación o Subinstalación, GPS/foto, Hallazgo, cerrar Acta → Pendiente de firma, firma/manifestación, cierre de Acta y cierre de Inspección;
|
|
- registrar el SHA Git y SHA-256 de la APK distribuida.
|
|
|
|
## Revisión 0.19.1
|
|
|
|
- Renovación de sesión coordinada entre los cuatro clientes API; no cierra sesión por pérdida de red, HTTP 429/500 o cancelación.
|
|
- Una respuesta tardía no puede restaurar una sesión cerrada ni usar la de otro inspector.
|
|
- Guardia de escrituras contra doble toque y conteo correcto de operaciones pendientes.
|
|
- Búsquedas descartan respuestas antiguas. Cambio de inspección limpia el Acta anterior.
|
|
- Mensajes visibles de permisos/GPS en evidencia y respeto de barras de sistema/teclado.
|
|
- Diez nuevas pruebas de comportamiento sobre sesión y concurrencia.
|
|
|
|
### Alcance real
|
|
|
|
Esta candidata requiere conexión. No implementa trabajo offline ni cola persistente de sincronización; un fallo de red no equivale a guardado. Tras un timeout de escritura debe verificarse el registro antes de repetir. No se presenta el artefacto debug como una release productiva. La firma histórica y el smoke en tablet siguen siendo requisitos para distribuir la release final.
|
|
|
|
### Segunda pasada funcional
|
|
|
|
- Coordenadas normalizadas al contrato API (6 decimales, precisión 3).
|
|
- Yacimiento seleccionable para Hallazgos y como padre explícito de nuevas Instalaciones. Se elimina el fallback que podía presentar un tipo Yacimiento como alta de Instalación.
|
|
- Formulario Datos técnicos sobre el elemento seleccionado: carga y guarda las definiciones/valores por familia mediante los endpoints existentes del Dashboard; valida obligatorios, números, Sí/No, fechas y opciones. Es un paso separado del alta estructural y GPS/foto.
|
|
- Se agregan siete pruebas para coordenadas y valores técnicos.
|
|
|
|
|
|
## Revisión 0.19.3 · flujo conceptual corregido
|
|
|
|
- Se elimina **Inventario de campo** como acción independiente de la pantalla de Inspección.
|
|
- El alta o selección de Inventario existe únicamente dentro de **Agregar Hallazgo**.
|
|
- El borrador de Acta nace vacío, sin Inventario y sin urgencia predeterminada.
|
|
- La urgencia se exige al cerrar el Acta y se persiste en la misma operación que la vuelve inmutable.
|
|
- `inspection_acts.urgency` puede quedar pendiente durante el borrador; el bloqueo exige la decisión y calcula el vencimiento desde allí.
|