82 lines
3.4 KiB
TeX
82 lines
3.4 KiB
TeX
\documentclass[11pt,a4paper,oneside]{report}
|
|
|
|
\input{preamble}
|
|
|
|
\begin{document}
|
|
|
|
\makecover
|
|
|
|
\chapter*{Resumen ejecutivo}
|
|
Este documento define la \textbf{estrategia y la matriz de pruebas} del monorepo IPSExtractor:
|
|
API Gateway, extraction/workers ARQ, cleaning, count-api, bot-descarga (API + agent Selenium),
|
|
PostgreSQL, Redis, MinIO y la aplicaci\'on de escritorio.
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Objetivo:} cerrar el gap entre unitarias aisladas y un plan trazable
|
|
(UT / IT / E2E / ST / CH) con SLOs y scripts k6.
|
|
\item \textbf{Arquitectura:} microservicios + API Gateway + cola ARQ + claim del bot
|
|
(cap.~\ref{ch:arquitectura}).
|
|
\item \textbf{Entorno de referencia:} host Ubuntu 8\,GiB compartido (sec.~\ref{sec:host-pruebas});
|
|
perfiles \texttt{shared8g} / \texttt{lab}.
|
|
\item \textbf{Estado campa\~na:} smoke PASS; ST-GW-01 PASS; ST-BOT-01 PASS (reintento);
|
|
ST-EXT-02 LLM medido --- detalle en el \emph{Informe de Pruebas}.
|
|
\item \textbf{Volumen 100k/mes:} modelo y veredicto en el PDF \emph{Capacidad 100k}.
|
|
\end{itemize}
|
|
|
|
\tableofcontents
|
|
\clearpage
|
|
|
|
\input{sections/01_introduccion}
|
|
\input{sections/02_arquitectura}
|
|
\input{sections/03_estrategia}
|
|
\input{sections/04_unitarias}
|
|
\input{sections/05_integracion}
|
|
\input{sections/06_e2e}
|
|
\input{sections/07_estres}
|
|
\input{sections/08_resiliencia}
|
|
\input{sections/09_datos_entornos}
|
|
\input{sections/10_herramientas_ci}
|
|
\input{sections/11_cronograma_aceptacion}
|
|
\input{sections/12_informe_2026_07_13}
|
|
|
|
\appendix
|
|
\chapter{Glosario}
|
|
\begin{description}[style=nextline,leftmargin=2.2cm,labelwidth=2cm]
|
|
\item[ARQ] Cola as\'incrona de workers de extracci\'on sobre Redis.
|
|
\item[Claim] Operaci\'on at\'omica que asigna un job \texttt{pending} a un worker.
|
|
\item[Gateway] \texttt{api\_gateway}, \'unica puerta HTTP expuesta en el host (:8189).
|
|
\item[Imaging] Portal web automatizado por Selenium en el PC del bot.
|
|
\item[k6] Herramienta profesional de pruebas de carga (Grafana Labs).
|
|
\item[MinIO] Almacenamiento S3-compatible para Excel y PDFs del bot.
|
|
\item[SLO] Objetivo de nivel de servicio (latencia, error rate, etc.).
|
|
\end{description}
|
|
|
|
\chapter{Checklist de release}
|
|
\begin{enumerate}
|
|
\item Unitarios verdes: bots, bot-descarga store, Vitest, \texttt{go test}.
|
|
\item Migraciones Alembic en BD limpia.
|
|
\item Smoke Compose: \texttt{GET /health/live} y \texttt{GET /health}.
|
|
\item E2E-01 a E2E-05 ejecutados en staging (E2E-05 con agent real si hay Imaging).
|
|
\item Al menos ST-GW-01, ST-BOT-01, ST-COUNT-01 y ST-EXT-01 con umbrales cumplidos.
|
|
\item Informe de resultados + PDF Capacidad 100k actualizados si aplica.
|
|
\item Entorno citado: hostname, \texttt{free -h}, \texttt{docker stats}, perfil k6.
|
|
\item Sin secretos hardcodeados en compose de prueba.
|
|
\end{enumerate}
|
|
|
|
\chapter{Mapa de rutas relevantes}
|
|
\section*{Gateway (\texttt{:8189})}
|
|
\begin{itemize}
|
|
\item \texttt{GET /health/live}, \texttt{GET /health}
|
|
\item Proxy: \texttt{/tasks/*}, \texttt{/cleaning/*}, \texttt{/count/*}, \texttt{/bot-descarga/*}
|
|
\item Timeout JSON 30\,s; uploads (incl.\ \texttt{POST /bot-descarga/jobs}) 600\,s
|
|
\end{itemize}
|
|
|
|
\section*{Bot-descarga API (\texttt{:8200}, v\'ia gateway)}
|
|
\begin{itemize}
|
|
\item Workers: \texttt{POST /workers/register}, \texttt{POST /workers/heartbeat}
|
|
\item Workers: \texttt{GET /workers}, \texttt{GET /workers/me/pending}
|
|
\item Jobs: \texttt{POST /jobs}, \texttt{GET/PATCH /jobs/\{id\}}, events, cancel, file, files MinIO
|
|
\end{itemize}
|
|
|
|
\end{document}
|