Proyectos de Subversion LeadersLinked - Services

Rev

Rev 519 | Rev 521 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 519 Rev 520
Línea 255... Línea 255...
255
 
255
 
256
                {
256
                {
257
                \"actualizado\": true o false,
257
                \"actualizado\": true o false,
258
                \"competencias\": [
258
                \"competencias\": [
259
                    {
259
                    {
260
                    \"nombre competencia 1\": \"nombre de la competencia\",
260
                    \"name\": \"nombre de la competencia\",
261
                    \"descripcion\": \"recomendación o análisis de si está o no actualizada, o si falta complementar\"
261
                    \"description\": \"recomendación o análisis de si está o no actualizada, o si falta complementar\"
262
                    }
262
                    }
263
                ]
263
                ]
Línea 264... Línea 264...
264
                }
264
                }
Línea 270... Línea 270...
270
        ];
270
        ];
Línea 271... Línea 271...
271
 
271
 
272
        // 🔹 Consultar OpenAI
272
        // 🔹 Consultar OpenAI
Línea -... Línea 273...
-
 
273
        $response = $this->analyzeCvWithAi($messages);
-
 
274
 
-
 
275
        // 🔹 Validar y retornar
-
 
276
        if (!isset($response['success']) || !$response['success']) {
-
 
277
            return [
-
 
278
                'success' => false,
-
 
279
                'message' => 'Error al consultar la API de OpenAI',
-
 
280
                'data' => $response['message'] ?? null
-
 
281
            ];
-
 
282
        }
-
 
283
 
-
 
284
        // 🔹 Intentar extraer JSON del mensaje generado
-
 
285
        $reply = $this->cleanContent($response['choices'][0]['message']['content'] ?? '{}');
-
 
286
 
-
 
287
        if (!$reply) {
-
 
288
            return [
-
 
289
                'success' => false,
-
 
290
                'message' => 'No se obtuvo una respuesta válida de la IA.',
-
 
291
                'data' => null
-
 
292
            ];
-
 
293
        }
-
 
294
 
-
 
295
        // 🔹 Intentar decodificar respuesta JSON (por si OpenAI responde directamente con JSON)
-
 
296
        $decoded = json_decode($reply, true);
-
 
297
 
-
 
298
        if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) {
-
 
299
            return [
-
 
300
                'success' => true,
-
 
301
                'message' => 'Análisis completado',
-
 
302
                'data' => $decoded
-
 
303
            ];
-
 
304
        }
273
        $response = $this->analyzeCvWithAi($messages);
305
 
-
 
306
        // 🔹 Si no fue posible decodificar, devolver contenido bruto para revisión
-
 
307
        return [
-
 
308
            'success' => false,
-
 
309
            'message' => 'No se pudo decodificar el JSON de la respuesta',
274
 
310
            'data' => $reply
Línea 275... Línea 311...
275
        return $response;
311
        ];
276
    }
312
    }
277
 
313