Modificacion #3644
Actualizado por Admin Savia Web Admin hace 4 meses
Deberiamos crear una sección en savia que se llame credenciales IA y que diga Gemini y allí peguen la api key.
Cuando el usuario pegue la clave en el panel de administración, el backend debe proteger ese dato.
*Frontend*: El input del formulario debe ser de tipo password (<input type="password">) para que no quede expuesto en la pantalla.
*Backend*: No guardamos la API Key en texto plano. Porque si alguien accede a la base de datos, podría usar las claves de todos las agencias. Tenemos que cifrarla usando un algoritmo como AES-256 utilizando una clave maestra interna de Savia antes de insertarla en la tabla o algo asi lei.
*Como seria el flujo cuando el usuario sube el PDF*
Cuando el usuario hace clic agregar nuevo aereo al costado de Multidestino, ponemos un boton en color que se vea y diga "Interpretar PDF con IA" y se ejecuta el siguiente proceso:
*Paso 1*: Recuperar y descifrar la clave
El backend recibe el archivo PDF, identifica a qué agencia pertenece el usuario, busca la API Key cifrada en la base de datos y la descifra en memoria para usarla en esa única petición.
*Paso 2*: Llamada a la API de Gemini
Para leer PDFs, el modelo que podemos usar es el *Gemini 2.5 Flash*.
La ventaja de Gemini frente a otros (como ChatGPT) es que acepta archivos nativamente (soporta PDFs directamente, sin necesidad de extrer el texto con librerías raras).
*La petición HTTP estructurada a la API de Google se hace de la siguiente manera:*
*URL*: [https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AQUI_VA_LA_API_KEY_DEL_CLIENTE]
(https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AQUI_VA_LA_API_KEY_DEL_CLIENTE)
*Headers*: Content-Type: application/json
En el cuerpo (body) de la petición JSON que le mandás a Google, debés pasarle el archivo PDF (codificado en Base64) y configurar el objeto generationConfig para exigir un esquema de respuesta. El JSON que debés enviarle a la API tiene este formato: (adjunto archivo JSON)
*Paso 3*. El Frontend recibe y dibuja los datos
Google te va a devolver exactamente el JSON limpio con las variables estructuradas.
Tomamos ese JSON y se lo mandamos de vuelta a la pantalla del navegador del agente de viajes.
Con Javascript (o el framework que uses en el front de Savia), hacés el mapeo directo a los inputs de la pantalla que vimos en la imagen:
Si json.trayecto == "ROUND_TRIP", seleccionás el botón de opción correspondiente de forma automática.
Buscás el input de número de vuelo de ida y le asignás json.vuelo_ida.numero_vuelo.
Asignás los campos de fecha y hora directamente en las cajas de texto respectivas del formulario.