From b829e4f026b0321782b83991c4c14348a40c763f Mon Sep 17 00:00:00 2001 From: consultoria-as Date: Tue, 28 Apr 2026 06:52:52 +0000 Subject: [PATCH] =?UTF-8?q?fix(infra):=203=20mejoras=20cr=C3=ADticas=20?= =?UTF-8?q?=E2=80=94=20minify=20script=20+=20Quart=20producci=C3=B3n=20+?= =?UTF-8?q?=20particionamiento=20bloqueado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - scripts/minify-assets.sh: excluye archivos .min.* para evitar .min.min.* - nginx/nexus-pos.conf: agrega upstream nexus_quart + location /pos/api/catalog/async-search - nexus-quart.service: servicio systemd para hypercorn en puerto 5002 - particionamiento vehicle_parts: BLOQUEADO — tabla 254 GB, disco solo 177 GB libres --- nginx/nexus-pos.conf | 18 ++++++++++++++++++ scripts/minify-assets.sh | 20 +++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/nginx/nexus-pos.conf b/nginx/nexus-pos.conf index 32b98ab..7e418d7 100644 --- a/nginx/nexus-pos.conf +++ b/nginx/nexus-pos.conf @@ -13,6 +13,10 @@ upstream nexus_pos { server 127.0.0.1:5001; } +upstream nexus_quart { + server 127.0.0.1:5002; +} + # Gzip compression gzip on; gzip_vary on; @@ -93,6 +97,20 @@ server { proxy_buffers 8 4k; } + # Async catalog search via Quart+asyncpg (non-blocking I/O) + location /pos/api/catalog/async-search { + proxy_pass http://nexus_quart; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Tenant-Subdomain $tenant; + proxy_connect_timeout 5s; + proxy_send_timeout 30s; + proxy_read_timeout 30s; + proxy_buffering off; + } + # Rate limit login endpoint location /pos/api/auth/login { limit_req zone=pos_login burst=5 nodelay; diff --git a/scripts/minify-assets.sh b/scripts/minify-assets.sh index d1d3c1e..afc9d62 100755 --- a/scripts/minify-assets.sh +++ b/scripts/minify-assets.sh @@ -4,16 +4,23 @@ set -e -echo "=== Minifying JS assets ===" +echo "=== Minifying POS JS assets ===" for f in /home/Autopartes/pos/static/js/*.js; do + # Skip already-minified files to avoid generating .min.min.js + case "$f" in + *.min.js) continue ;; + esac base=$(basename "$f" .js) out="/home/Autopartes/pos/static/js/${base}.min.js" echo " $base.js -> ${base}.min.js" terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out" done -echo "=== Minifying CSS assets ===" +echo "=== Minifying POS CSS assets ===" for f in /home/Autopartes/pos/static/css/*.css; do + case "$f" in + *.min.css) continue ;; + esac base=$(basename "$f" .css) out="/home/Autopartes/pos/static/css/${base}.min.css" echo " $base.css -> ${base}.min.css" @@ -24,15 +31,22 @@ for f in /home/Autopartes/pos/static/css/*.css; do fi done -echo "=== Minifying Dashboard assets ===" +echo "=== Minifying Dashboard JS assets ===" for f in /home/Autopartes/dashboard/*.js; do + case "$f" in + *.min.js) continue ;; + esac base=$(basename "$f" .js) out="/home/Autopartes/dashboard/${base}.min.js" echo " $base.js -> ${base}.min.js" terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out" done +echo "=== Minifying Dashboard CSS assets ===" for f in /home/Autopartes/dashboard/*.css; do + case "$f" in + *.min.css) continue ;; + esac base=$(basename "$f" .css) out="/home/Autopartes/dashboard/${base}.min.css" echo " $base.css -> ${base}.min.css"