feat: Update docker-compose configuration to use environment variables for sensitive data, enhance testing documentation with new LaTeX files for capacity planning, and refine README for clarity on compilation and testing processes.

This commit is contained in:
erik
2026-07-17 08:32:00 -05:00
parent e47ef4f8c6
commit dc3fcc2280
89 changed files with 5331 additions and 1210 deletions
@@ -3,24 +3,34 @@
\section{Conclusiones}
\begin{enumerate}
\item IPSExtractor en staging responde correctamente a humo y carga ligera de control (gateway + heartbeats).
\item La calidad de latencia depende cr\'iticamente de no saturar el host compartido.
\item \textbf{100\,000 facturas/mes no son alcanzables} en el laptop Ubuntu actual con el zoo Docker observado.
\item Con infraestructura dedicada y dimensionada, el objetivo es \textbf{condicional\-mente viable}; requiere prueba de carga espec\'ifica por etapa (OCR, LLM, bot).
\item IPSExtractor en staging responde correctamente a humo y carga ligera (gateway + heartbeats).
\item \textbf{Host dedicado vs compartido:} ST-BOT-01 muestra que, con la misma prueba,
un host libre (sin MLflow/swap compitiendo) baja el p95 de 2{,}28\,s a 86\,ms y elimina
el outlier de 23\,s. El comportamiento es claramente mejor en nodo dedicado;
la latencia mala no fue un bug funcional (HTTP 200 en ambas corridas).
\item Agent Selenium ($\approx$422\,fact/h) y LLM ($\approx$506\,fact/h) cubren el objetivo 24$\times$7 \emph{por etapa}.
\item La cola ARQ (ST-EXT-01) dren\'o 30 docs en $\approx$23\,s con mock; arquitectura async validada.
\item OCR bajo 3 concurrentes (ST-COUNT-01): p50 35{,}8\,s; $\approx$100--325 fact/h en shared8g;
degradaci\'on fuerte vs serie ($\sim$2\,s).
\item El pipeline a 100k/mes en el host actual \textbf{no est\'a garantizado}
(ritmo $\approx\min$ etapas $=$ OCR $\sim$100--325/h; piso $\sim$100 $<$ 139);
detalle en \textbf{Capacidad100k\_IPSExtractor.pdf}.
\item Con infra dedicada + OCR dimensionado, 24$\times$7 es \textbf{condicionalmente viable}.
\end{enumerate}
\section{Recomendaciones}
\begin{enumerate}
\item Separar IPS de MLflow/Airflow/n8n en el nodo de producci\'on/staging de rendimiento.
\item Ejecutar ST-COUNT-01 y bench LLM solo con $\geq$3\,GiB libres y sin swap activo.
\item Completar E2E-07 y ST-BOT-03; archivar JSON de k6 en \texttt{informes/}.
\item Dimensionar agents bot ($N$) antes de comprometer vol\'umenes mensuales de descarga.
\item Incorporar CI: pytest agent + store en cada PR.
\item Separar IPSExtractor en un \textbf{host dedicado} (sin MLflow/Airflow/n8n en el mismo nodo
de rendimiento); ST-BOT-01 lo justifica con evidencia.
\item Producci\'on: \texttt{ASYNC\_QUEUE=true} + workers dimensionados a la cuota LLM.
\item Repetir ST-COUNT-01 en perfil lab (m\'as rps / VUs) con $\geq$3\,GiB libres.
\item Completar ST-BOT-03, ST-EXT-01 perfil lab (100--500) y E2E pendientes.
\item Dimensionar agents Selenium ($N$) y workers extraction antes de comprometer vol\'umenes.
\item Incorporar CI: pytest agent Selenium + orquestador \texttt{bot-descarga} en cada PR.
\end{enumerate}
\section{Pr\'oxima campa\~na sugerida}
\section{Documentos relacionados}
\begin{itemize}
\item Ventana con MLflow detenido.
\item Bench: 50--200 PDFs reales por etapa (OCR, LLM) midiendo p50/p95 y coste.
\item Actualizar gr\'afica de capacidad con datos medidos (reemplazar estimaciones).
\item \textbf{Plan de pruebas} --- estrategia e IDs.
\item \textbf{Capacidad 100k/mes} --- modelo, coste LLM, veredicto de volumen.
\end{itemize}