Home Projects Portfolio Dashboard Export PDF Log in

Robusteciendo la generación de CVs en devlog-ist/landing

En el proyecto devlog-ist/landing, hemos realizado una actualización crítica para mejorar la fiabilidad del endpoint de generación de CVs. El objetivo principal fue resolver errores de ejecución causados por la desalineación entre el formulario de entrada y los datos esperados por el controlador.

El Problema: Inconsistencia de datos

Detectamos que el CvController intentaba acceder a campos que ya no existían en el objeto de solicitud, lo que provocaba errores fatales (HTTP 500) cuando los valores esperados eran nulos. Este comportamiento ocurría especialmente al procesar perfiles que no contenían toda la información de contexto necesaria.

La Solución: Centralización y Robustez

Para solucionar esto, refactorizamos la lógica para derivar el contexto a través de un método compartido, extractJobContext, asegurando que la lógica sea consistente tanto en el panel de administración (Filament) como en la API pública.

Implementamos las siguientes mejoras:

  • Validación Proactiva: Envuelto el proceso de extracción en bloques try/catch con valores predeterminados seguros.
  • Consistencia: Normalización del formato de salida del modelo para cumplir con estándares estrictos de tipo (PHPStan nivel 9).
  • Pruebas unitarias: Actualizamos el suite de pruebas en PHPUnit para simular fallos en la extracción de contexto y verificar que el sistema maneje correctamente los errores de formato o idioma.
public function extractJobContext(array $data): array
{
    try {
        return [
            'role' => $data['role'] ?? 'General',
            'locale' => $data['language'] ?? 'es',
        ];
    } catch (Throwable $e) {
        Log::error('Error extrayendo contexto: ' . $e->getMessage());
        return ['role' => 'Default', 'locale' => 'es'];
    }
}

Con estos cambios, el flujo de generación de documentos ahora es mucho más resistente a entradas inesperadas, garantizando que los usuarios reciban un CV válido o un mensaje de error controlado en lugar de un fallo en el servidor.

Robusteciendo la generación de CVs en devlog-ist/landing
Gerardo Ruiz

Gerardo Ruiz

Author

Share: