alerta: true informativo. Mobile puede continuar al checkout.cp7_service.py · checkpoint_records.py · test_cp7_suma_guard.py
prendas_primera = qty_primeras + manchas + zurcido + composturas. No requiere entrada manual del operario.cp7_service.py · checkpoint_records.py
(10)OP-6989(240)T001-22621 — busca por Costura.guia_servicio_costura antes del fallback GTIN.cp7_service.py · gs1_lookup.pyinspecciones_por_color: {color → primeras_efectivas} + totales + porcentaje. Precargado enriquecido.cp7_service.py · cp7_inspeccion.py (schema)POST /cp7/aql-archivos + sección multi-upload PDF en inspeccion-calidad.astro. Metadata en upload_audits.colores_cp8: lista por color con primeras_efectivas (cp7_inspecciones) vs qty_pedido (ProdDatosBultoPedidoDetalle — packing list FINAL Trento) + diferencia.Q_CP8_PACKING_POR_COLOR agrupado por NomColor. Fallback si Trento no disponible.
cp8_verificar_service.py · cp8.py (schema) · trento_queries_cp6_9.py
despachos. Índice en codigo_expediente. Aplicada en Railway.cp9_despacho.py (model) · 075_despachos_expediente.py{documentos: {factura, guia_remision, bill_of_lading, dam, booking}, puede_cerrar} consultando upload_audits.batch_id.cp9_despacho.py (router)despacho_id explícito al backend, evitando smart lookup.
documentos-exportacion.astro · /api/cp9/despachos.ts · /api/cp9/documentos.ts · upload.ts (proxy)
porcentaje_primeras < 95%.
Datos en PrecargadoResponse.inspecciones_por_color.
VerificarFragment.java · PrecargadoResponse.javaresultado_calidad como dos botones toggle verde/rojo.desglose.alerta == true: Snackbar informativo con diferencia vs CP6.
CompletarFragment.java · CheckpointConfig.javaVerificarFragment.javahandoff-mobile-cp7-cp8.htmlcp9-documentos-despacho.html