fix(infra): 3 mejoras críticas — minify script + Quart producción + particionamiento bloqueado

- 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
This commit is contained in:
2026-04-28 06:52:52 +00:00
parent c75e2a75c9
commit b829e4f026
2 changed files with 35 additions and 3 deletions

View File

@@ -13,6 +13,10 @@ upstream nexus_pos {
server 127.0.0.1:5001; server 127.0.0.1:5001;
} }
upstream nexus_quart {
server 127.0.0.1:5002;
}
# Gzip compression # Gzip compression
gzip on; gzip on;
gzip_vary on; gzip_vary on;
@@ -93,6 +97,20 @@ server {
proxy_buffers 8 4k; 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 # Rate limit login endpoint
location /pos/api/auth/login { location /pos/api/auth/login {
limit_req zone=pos_login burst=5 nodelay; limit_req zone=pos_login burst=5 nodelay;

View File

@@ -4,16 +4,23 @@
set -e set -e
echo "=== Minifying JS assets ===" echo "=== Minifying POS JS assets ==="
for f in /home/Autopartes/pos/static/js/*.js; do 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) base=$(basename "$f" .js)
out="/home/Autopartes/pos/static/js/${base}.min.js" out="/home/Autopartes/pos/static/js/${base}.min.js"
echo " $base.js -> ${base}.min.js" echo " $base.js -> ${base}.min.js"
terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out" terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out"
done done
echo "=== Minifying CSS assets ===" echo "=== Minifying POS CSS assets ==="
for f in /home/Autopartes/pos/static/css/*.css; do for f in /home/Autopartes/pos/static/css/*.css; do
case "$f" in
*.min.css) continue ;;
esac
base=$(basename "$f" .css) base=$(basename "$f" .css)
out="/home/Autopartes/pos/static/css/${base}.min.css" out="/home/Autopartes/pos/static/css/${base}.min.css"
echo " $base.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 fi
done done
echo "=== Minifying Dashboard assets ===" echo "=== Minifying Dashboard JS assets ==="
for f in /home/Autopartes/dashboard/*.js; do for f in /home/Autopartes/dashboard/*.js; do
case "$f" in
*.min.js) continue ;;
esac
base=$(basename "$f" .js) base=$(basename "$f" .js)
out="/home/Autopartes/dashboard/${base}.min.js" out="/home/Autopartes/dashboard/${base}.min.js"
echo " $base.js -> ${base}.min.js" echo " $base.js -> ${base}.min.js"
terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out" terser "$f" -o "$out" --compress --mangle 2>/dev/null || cp "$f" "$out"
done done
echo "=== Minifying Dashboard CSS assets ==="
for f in /home/Autopartes/dashboard/*.css; do for f in /home/Autopartes/dashboard/*.css; do
case "$f" in
*.min.css) continue ;;
esac
base=$(basename "$f" .css) base=$(basename "$f" .css)
out="/home/Autopartes/dashboard/${base}.min.css" out="/home/Autopartes/dashboard/${base}.min.css"
echo " $base.css -> ${base}.min.css" echo " $base.css -> ${base}.min.css"