Expediente del caso
IA Licita
- Periodo
- 2024-09 — presente
- Estado
- active
- Visibilidad
- private
- Stack
- Odoo 17, Python, pandas, OCA queue_job, Telegram
Evidencias · IA-LICITA
En producción
- SaaS en produccion en ialicita.com
Métricas
- 8 modulos Odoo custom
- ~4400 lineas de Python
- 177 commits
Expediente del caso
Motivación
Las licitaciones publicas llegan en formatos dispares: hojas Excel, portales de datos abiertos y APIs. Un equipo comercial necesita cruzarlas, buscarlas y no perderse ninguna apertura. La motivacion fue construir un SaaS que normalice esas fuentes en un unico portal con alertas e informes, en lugar de seguir pegando datos en hojas.
El reto
El reto no era un solo conector, sino hacer crecer el numero de fuentes sin reescribir el resto del sistema. Cada origen tiene su esquema, su paginacion y sus limites de rate limit. Ademas, un mismo dominio de busqueda debia alimentar al portal, a las notificaciones por email y a los informes sin triplicar la logica.
Enfoque
La solucion fue un patron de plugin: `AbstractDataSource`/`AbstractImporter` define el contrato y cada fuente (Excel, Socrata, API) aporta su implementacion. Un `APIClient` generico centraliza retry y rate limiting. Los dominios de busqueda se serializan en JSON y se comparten por portal, notificaciones e informes. La importacion masiva de Excel va en lotes de 2.500 filas por colas OCA `queue_job`.
Aprendizaje
Un patron de plugin bien definido permite sumar fuentes de datos sin tocar el nucleo. Serializar los dominios de busqueda evito triplicar la logica de filtrado y mantuvo coherentes portal, alertas e informes. Las colas asincronas convierten una importacion que bloquea en un proceso que avisa por Telegram cuando termina.
Estado actual
Activo y en produccion en ialicita.com. El producto suma 8 modulos Odoo custom, alrededor de 4.400 lineas de Python y 177 commits. La linea de trabajo sigue abierta: nuevas fuentes de datos, informes y canales de notificacion.