Modificacion #3644
abiertaHacer un intereprte de pdf para aereos.
0%
*
Descripción
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.
Ficheros
AA Actualizado por Admin Savia Web Admin hace 4 meses
- Se actualizó Descripción (diferencias)
- Asignado a establecido a Emiliano Bianchetti
AA Actualizado por Admin Savia Web Admin hace 4 meses
- Añadido Fichero gemini-code-1782385689899.json gemini-code-1782385689899.json
- Se actualizó Descripción (diferencias)
AA Actualizado por Admin Savia Web Admin hace 4 meses
- Se actualizó Descripción (diferencias)