Instruction file imported from nerwitojiji/Tesis-Werner (
.github/instructions/responder-en-espanol.instructions.md). Copyright stays with the author.
Responder en espanol
- Regla estricta: responde en espanol en todas las respuestas al usuario.
- Mantiene nombres de archivos, comandos, APIs y codigo sin traducir.
- Si un termino tecnico es mas claro en ingles, mantenlo y agrega una breve aclaracion en espanol.
- Cuando generes contenido nuevo en archivos, usa espanol en comentarios, README, mensajes visibles y texto funcional para usuarios.
- No traduzcas identificadores tecnicos del codigo (funciones, clases, variables, rutas, librerias, APIs).
- Si el pedido es ambiguo, haz una sola pregunta de aclaracion antes de editar.
- Al finalizar cambios de codigo, resume que cambiaste y donde.
Contexto detallado del proyecto
- Objetivo: sistema de web scraping con IA para licitaciones publicas de MercadoPublico.cl.
- Flujo principal del pipeline (
main.py):- Descargar CSV de licitaciones publicadas.
- Cargar CSV en SQLite.
- Ejecutar matching y mostrar Top 10.
- Solicitar IDs de interes.
- Descargar y normalizar detalle OCDS.
- Descargar anexos y registrar metadatos.
- Mostrar resumen/estadisticas finales.
- Entrypoints importantes:
main.py: orquestador del pipeline completo.scraper_mercadopublico.py: descarga CSV.scraper_details.py: obtiene detalle OCDS.scraper_anexos.py: descarga anexos.llm_matcher.py: CLI de matching de licitaciones (MVP).
- Capa de datos:
- Base de datos SQLite en
data/licitaciones.db. - Tablas esperadas:
licitaciones,licitacion_raw,licitacion_index,anexos,pipeline_control,matching_results. - Archivos JSON por licitacion en
data/licitaciones/{id}/y anexos endata/anexos/{id}/.
- Base de datos SQLite en
- Infraestructura en
utils/:config.py: rutas y parametros de ejecucion.logging_config.py: logging unificado.retry_utils.py: reintentos con backoff.pipeline_control_store.py: estado del pipeline.monitor.py: estadisticas de avance.
- Modulo de matching en
matching/:schemas.py: dataclasses para perfil y resultados.data_extractor.py: extractor de candidatos desde SQLite.scoring.py: scoring semantico y reglas.llm_reranker.py: reranker multi-provider (mock/openai/groq/xai/compatible/claude).results_store.py: persistencia de resultados de matching.
- Stack tecnico principal: Python 3.13+, Selenium, requests, pandas, SQLite.
- Dependencias LLM:
openai,anthropic. - Sistema operativo objetivo: Windows (PowerShell), con compatibilidad posible en Linux/macOS con ajustes.
- Convencion de salida:
- Mensajes al usuario y documentacion en espanol.
- Nombres tecnicos, comandos y codigo se mantienen en su idioma original.
Matching (MVP) - reglas actuales
- El matching inicial evalua el universo completo de
licitaciones(no exigelicitacion_raw). licitacion_rawse usa como enriquecimiento opcional si existe.- El reranker LLM devuelve
analisis_rubro,llm_score,reasonysaludoen JSON. analisis_rubrose guarda enmatching_resultscomo columna nueva.- La salida Top 10 muestra
Analisis rubroy el saludo del LLM si viene presente. - Provider estandarizado via CLI:
--provider mock|openai|groq|xai|compatible|claude. - Configuracion por entorno:
- Groq:
GROQ_API_KEY,GROQ_MODEL,GROQ_BASE_URL. - OpenAI:
OPENAI_API_KEY,OPENAI_MODEL,OPENAI_BASE_URL. - Compatible:
LLM_API_KEY,LLM_MODEL,LLM_API_BASE_URL. - Claude:
ANTHROPIC_API_KEY,ANTHROPIC_MODEL.
- Groq: