Robusteciendo la generación de CVs en devlog-ist/landing: manejo de fallos y contexto
En el proyecto devlog-ist/landing, hemos trabajado recientemente en la mejora de la estabilidad y fiabilidad de nuestro endpoint de generación de CVs (/portfolio/generate-cv). El objetivo principal ha sido eliminar errores inesperados (HTTP 500) causados por dependencias inconsistentes en la entrada de datos y asegurar que la extracción del contexto laboral sea resiliente.
Desafíos en la extracción de contexto
Anteriormente, el controlador de CV dependía de parámetros de entrada directos que fueron eliminados, lo que provocaba errores de tipo al intentar procesar valores nulos. Para solucionar esto, hemos unificado la lógica de extracción de contexto, delegando la responsabilidad a un servicio compartido que ya se utiliza en nuestros paneles de administración de Filament.
Implementación defensiva
Para evitar que un fallo en el proveedor de datos bloquee la generación del documento, hemos implementado bloques try/catch con respaldos seguros. Esto garantiza que, incluso ante problemas inesperados, el proceso pueda continuar de manera controlada.
public function generate(Request $request): JsonResponse
{
try {
$context = $this->jobContextService->extract($request->all());
} catch (ContextExtractionException $e) {
$this->logger->error('Fallo al extraer contexto', ['error' => $e->getMessage()]);
$context = $this->getDefaultContext();
}
return response()->json($this->cvGenerator->build($context));
}
Mejoras en calidad y pruebas
Además de la lógica de recuperación, hemos fortalecido la capa de pruebas utilizando PHPUnit. Ahora, los tests de unidad incluyen el uso de stubs para simular la extracción de datos, permitiéndonos validar escenarios de éxito, normalización de idiomas y comportamientos ante fallos de manera aislada. Estas medidas aseguran que nuestro flujo de trabajo sea robusto y cumpla con los estándares de calidad esperados.