\begin{figure}[ht] \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}, ext/.style={draw=ipsgrey, dashed, rounded corners=2pt, align=center, inner sep=4pt, minimum height=0.85cm}, arr/.style={-{Latex}, thick, ipsblue} ] \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}; \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); \draw[arr] (agent) -- (minio); \draw[arr] (bot) -| (minio); \draw[arr] (agent) -- (img); \end{tikzpicture} \caption{Arquitectura IPSExtractor bajo prueba.} \label{fig:arquitectura} \end{figure}