====== Flujo clave: entrega ====== ===== Propósito ===== Describir el recorrido real de una entrega desde la detección de peso hasta el guardado local y sincronización. ===== Resumen ===== - ''WaitingForWeight'': espera peso estable para iniciar un intento. - ''CaptureImages'': toma snapshot de frente y trasera en ''NV21'' desde ''CameraFramesChannel''. - ''ComparingWeights'': valida rangos de peso contra configuración. - ''CaptureFace'': detecta rostro sobre ''NV21'' frontal y valida cobertura (muy lejos/muy cerca). - ''GenerateEmbedding'': genera embedding facial desde ''NV21'' (sin pasar por bitmap en el camino principal). - ''VerifyInDatabase'': busca candidatos por similitud y aplica estrategia de match por intentos y fallbacks. - ''WaitForWeightRemoved'': espera retiro del ítem para cerrar correctamente la transacción. - ''SaveDelivery'': guarda entrega en DB local y persistencia de evidencia (conversión a bitmap solo al guardar). ===== Secuencia de estados ===== ''DomainManager'' arma y ejecuta esta secuencia: - ''WaitingForWeight'' - ''CaptureImages'' - ''ComparingWeights'' - ''CaptureFace'' - ''GenerateEmbedding'' - ''VerifyInDatabase'' - ''WaitForWeightRemoved'' - ''SaveDelivery'' ===== Validación de identidad (resumen operativo) ===== - Usa umbral base ''Model.UMBRAL'' y lo relaja por intento. - Busca top-k de candidatos y prioriza candidatos del ''shift'' activo. - Intenta resolver match estricto. - Si falla, aplica fallbacks para enrolados (rápido, directo, ultra y temporal). - Si no hay match confiable, crea beneficiario local no enrolado. ===== Evidencias y formatos ===== - Captura y procesamiento: ''NV21'' (''YUV_420_888'' convertido a ''NV21'' en cámara). - Embedding: se calcula sobre ''NV21'' con recorte facial. - Guardado de fotos: se convierte a ''Bitmap'' al persistir en disco. - Formato de archivo: ''PNG'' para foto de rostro y foto de alimento. ===== Fuentes de verdad ===== * ''MachineDomain/src/main/java/co/ada/domain/DomainManager.kt'' * ''MachineDomain/src/main/java/co/ada/domain/state/StateManager.kt'' * ''MachineDomain/src/main/java/co/ada/domain/state/states/*.kt'' * ''MachineDomain/src/main/java/co/ada/domain/state/states/GenerateEmbedding.kt'' * ''MachineDomain/src/main/java/co/ada/domain/state/states/VerifyInDatabase.kt'' * ''MachineDomain/src/main/java/co/ada/domain/state/states/SaveDelivery.kt'' ===== Ultima verificacion ===== * Fecha: ''2026-05-05'' * Verificado contra secuencia activa en ''DomainManager'' y estados de captura/embedding/verificación.