feature/capturar errores, evitar duplicados, eliminar manejar nuevas flags para descargar datos de vucem
This commit is contained in:
@@ -277,6 +277,7 @@ async def change_edocument_status(edoc: dict, status: bool, pedimento: dict):
|
||||
data = {
|
||||
"id": edoc.get("id"),
|
||||
"edocument_descargado": status,
|
||||
"edocument_estado": "descargado" if status else "pendiente",
|
||||
"numero_edocument": edoc.get("numero_edocument"),
|
||||
"pedimento": pedimento.get("id"),
|
||||
"organizacion": pedimento.get("organizacion"),
|
||||
@@ -284,6 +285,36 @@ async def change_edocument_status(edoc: dict, status: bool, pedimento: dict):
|
||||
|
||||
response = await edocs_rest_controller.put_edocument(edocument_id=edoc.get("id"), data=data)
|
||||
|
||||
# Nunca reportar éxito si el estatus no quedó persistido (T2026-05-027)
|
||||
if response is None:
|
||||
logger.error(f"No se pudo actualizar el estatus del EDocument {edoc.get('numero_edocument')} en la API")
|
||||
raise Exception(f"Fallo al actualizar el estatus del EDocument {edoc.get('numero_edocument')}")
|
||||
|
||||
return response
|
||||
|
||||
|
||||
async def marcar_error_edocument(edoc: dict, pedimento: dict, mensaje: str, definitivo: bool = False):
|
||||
"""
|
||||
Reporta un fallo de descarga al registro de negocio (T2026-05-027).
|
||||
|
||||
- definitivo=False (fallo transitorio): solo registra ultimo_error; el registro
|
||||
permanece 'pendiente' y el tope de intentos automáticos del backend gobierna
|
||||
la transición a 'error'.
|
||||
- definitivo=True (fallo permanente): transiciona de inmediato a 'error';
|
||||
queda fuera del ciclo automático, solo reproceso manual o reset.
|
||||
"""
|
||||
data = {
|
||||
"id": edoc.get("id"),
|
||||
"ultimo_error": (mensaje or "Error de descarga en VUCEM")[:2000],
|
||||
"numero_edocument": edoc.get("numero_edocument"),
|
||||
"pedimento": pedimento.get("id"),
|
||||
"organizacion": pedimento.get("organizacion"),
|
||||
}
|
||||
if definitivo:
|
||||
data["edocument_estado"] = "error"
|
||||
response = await edocs_rest_controller.put_edocument(edocument_id=edoc.get("id"), data=data)
|
||||
if response is None:
|
||||
logger.error(f"No se pudo registrar el error del EDocument {edoc.get('numero_edocument')} en la API")
|
||||
return response
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user