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:
@@ -2,35 +2,47 @@
|
||||
\centering
|
||||
\begin{tikzpicture}[
|
||||
font=\small,
|
||||
box/.style={draw=ipsblue, rounded corners=2pt, align=center, inner sep=4pt, minimum height=0.85cm, minimum width=2.4cm},
|
||||
box/.style={draw=ipsblue, rounded corners=2pt, align=center, inner sep=4pt, minimum height=0.85cm, minimum width=2.3cm},
|
||||
ext/.style={draw=ipsgrey, dashed, rounded corners=2pt, align=center, inner sep=4pt, minimum height=0.85cm},
|
||||
arr/.style={-{Latex}, thick, ipsblue}
|
||||
arr/.style={-{Latex}, thick, ipsblue},
|
||||
dbarr/.style={-{Latex}, thick, ipsgrey}
|
||||
]
|
||||
\node[box, fill=codebg] (desk) {Desktop\\Electron};
|
||||
\node[box, fill=codebg, right=1.8cm of desk] (gw) {api\_gateway\\:8189};
|
||||
\node[box, below=1.1cm of gw] (ext) {extraction\\:8001};
|
||||
\node[box, left=0.8cm of ext] (clean) {cleaning\\:8002};
|
||||
\node[box, right=0.8cm of ext] (count) {count-api\\:8080};
|
||||
\node[box, below=1.1cm of ext] (bot) {bot-descarga\\:8200};
|
||||
\node[box, below left=1.0cm and 0.2cm of bot] (pg) {PostgreSQL};
|
||||
\node[box, below right=1.0cm and 0.2cm of bot] (redis) {Redis};
|
||||
\node[ext, left=1.6cm of desk] (agent) {Agent PC\\Selenium};
|
||||
\node[ext, below=2.6cm of agent] (minio) {MinIO/S3};
|
||||
\node[ext, below=0.9cm of minio] (img) {Imaging};
|
||||
\node[box, fill=codebg, right=1.7cm of desk] (gw) {api\_gateway\\:8189};
|
||||
\node[box, below=1.05cm of gw] (ext) {extraction\\(+ workers)};
|
||||
\node[box, left=0.7cm of ext] (clean) {cleaning\\:8002};
|
||||
\node[box, right=0.7cm of ext] (count) {count-api\\:8080};
|
||||
\node[box, below=1.05cm of ext] (bot) {bot-descarga\\orquestador};
|
||||
\node[box, below left=1.15cm and 1.4cm of bot] (pg) {PostgreSQL};
|
||||
\node[box, below right=1.15cm and 1.4cm of bot] (redis) {Redis};
|
||||
\node[ext, left=1.5cm of desk] (agent) {Agent Selenium\\(PC externo)};
|
||||
\node[ext, below=2.5cm of agent] (minio) {MinIO/S3};
|
||||
\node[ext, below=0.85cm of minio] (img) {Imaging};
|
||||
|
||||
% HTTP via gateway
|
||||
\draw[arr] (desk) -- (gw);
|
||||
\draw[arr] (gw) -- (ext);
|
||||
\draw[arr] (gw) -- (clean);
|
||||
\draw[arr] (gw) -- (count);
|
||||
\draw[arr] (gw) -- (bot);
|
||||
\draw[arr] (bot) -- (pg);
|
||||
\draw[arr] (ext) -- (pg);
|
||||
\draw[arr] (ext) -- (redis);
|
||||
\draw[arr] (agent) |- (gw);
|
||||
|
||||
% PostgreSQL: solo servicios de dominio (NO gateway, NO count-api)
|
||||
\draw[dbarr] (ext) -- (pg);
|
||||
\draw[dbarr] (clean) |- (pg);
|
||||
\draw[dbarr] (bot) -- (pg);
|
||||
|
||||
% Redis: cola ARQ (extraction/workers)
|
||||
\draw[dbarr] (ext) -- (redis);
|
||||
|
||||
% MinIO / Imaging
|
||||
\draw[arr] (agent) -- (minio);
|
||||
\draw[arr] (bot) -| (minio);
|
||||
\draw[arr] (agent) -- (img);
|
||||
\end{tikzpicture}
|
||||
\caption{Arquitectura IPSExtractor bajo prueba.}
|
||||
\caption{Arquitectura bajo prueba. El \textbf{gateway no habla con Postgres}: solo hace proxy HTTP.
|
||||
Usan la BD compartida: \texttt{extraction} (+ workers), \texttt{cleaning} y \texttt{bot-descarga}.
|
||||
\texttt{count-api} hace OCR y \textbf{devuelve JSON} (no escribe en PG); el Desktop/extraction
|
||||
persiste esos resultados con \texttt{POST /count-jobs} en Postgres.}
|
||||
\label{fig:arquitectura}
|
||||
\end{figure}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\resizebox{\textwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
font=\footnotesize,
|
||||
node distance=0.45cm and 0.55cm,
|
||||
box/.style={draw=ipsblue, rounded corners=3pt, align=center, inner sep=4pt,
|
||||
minimum height=0.95cm, minimum width=2.55cm, fill=codebg, text=black},
|
||||
title/.style={font=\small\bfseries, text=ipsblue, anchor=west},
|
||||
arr/.style={-{Latex}, thick, draw=ipsblue}
|
||||
]
|
||||
% --- 1: API Gateway ---
|
||||
\node[title] (t1) at (0,0) {API Gateway};
|
||||
\node[box, below=0.3cm of t1.west, anchor=west] (client) {Desktop / Agent};
|
||||
\node[box, right=of client] (gw) {Gateway :8189};
|
||||
\node[box, right=of gw] (svc) {Microservicios};
|
||||
\draw[arr] (client) -- (gw);
|
||||
\draw[arr] (gw) -- (svc);
|
||||
|
||||
% --- 2: ARQ ---
|
||||
\node[title] (t2) at (0,-2.15) {Cola async (ARQ)};
|
||||
\node[box, below=0.3cm of t2.west, anchor=west] (api) {extraction API};
|
||||
\node[box, right=of api] (redis) {Redis / ARQ};
|
||||
\node[box, right=of redis] (w) {Workers $\times N$};
|
||||
\draw[arr] (api) -- (redis);
|
||||
\draw[arr] (redis) -- (w);
|
||||
|
||||
% --- 3: Claim ---
|
||||
\node[title] (t3) at (0,-4.3) {Claim / lease (orquestaci\'on)};
|
||||
\node[box, below=0.3cm of t3.west, anchor=west] (store) {bot-descarga\\(orquestador)};
|
||||
\node[box, right=of store] (claim) {claim at\'omico};
|
||||
\node[box, right=of claim] (agent) {Agent Selenium\\(PC)};
|
||||
\draw[arr] (store) -- (claim);
|
||||
\draw[arr] (claim) -- (agent);
|
||||
\end{tikzpicture}%
|
||||
}
|
||||
\caption{Patrones: Gateway, cola ARQ y claim. El servicio \texttt{bot-descarga} \textbf{orquesta};
|
||||
el \textbf{agent Selenium} en el PC ejecuta la descarga.}
|
||||
\label{fig:patrones}
|
||||
\end{figure}
|
||||
@@ -0,0 +1,30 @@
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\begin{tikzpicture}[
|
||||
font=\small,
|
||||
stage/.style={draw=ipsblue, rounded corners=3pt, align=center, inner sep=5pt,
|
||||
minimum height=1.0cm, minimum width=2.15cm, fill=codebg},
|
||||
arr/.style={-{Latex}, thick, ipsblue}
|
||||
]
|
||||
\node[stage] (dl) {1. Descarga\\agent Selenium};
|
||||
\node[stage, right=0.5cm of dl] (cnt) {2. Conteo\\OCR/ONNX};
|
||||
\node[stage, right=0.5cm of cnt] (ext) {3. Extracci\'on\\LLM + ARQ};
|
||||
\node[stage, right=0.5cm of ext] (cln) {4. Limpieza\\CSV/reglas};
|
||||
|
||||
\draw[arr] (dl) -- (cnt);
|
||||
\draw[arr] (cnt) -- (ext);
|
||||
\draw[arr] (ext) -- (cln);
|
||||
|
||||
\node[below=0.35cm of dl, font=\footnotesize\itshape, text=ipsgrey, align=center]
|
||||
{orquestado por\\bot-descarga};
|
||||
\node[below=0.35cm of cnt, font=\footnotesize\itshape, text=ipsgrey, align=center]
|
||||
{filtro};
|
||||
\node[below=0.35cm of ext, font=\footnotesize\itshape, text=ipsgrey, align=center]
|
||||
{filas PG};
|
||||
\node[below=0.35cm of cln, font=\footnotesize\itshape, text=ipsgrey, align=center]
|
||||
{lote limpio};
|
||||
\end{tikzpicture}
|
||||
\caption{Pipeline punta a punta. La descarga la hace el \textbf{agent Selenium} (PC);
|
||||
el servicio \texttt{bot-descarga} solo orquesta jobs/claim/heartbeats.}
|
||||
\label{fig:pipeline-negocio}
|
||||
\end{figure}
|
||||
Reference in New Issue
Block a user