CreaRack-SL

Auditoría Exhaustiva Abril 2026 — v1.0.58

Funcionalidadactiveverificado 2026-04-21#refactor#audit#performance#ruff#ci

Auditoría Exhaustiva Abril 2026

User value

No entrega funcionalidad visible directamente, pero impacto concreto: páginas cargan más rápido (−70 KB fuentes variables, Brotli −20% assets, bundles JS con caché por módulo), sistema más observable (Web Vitals RUM en tiempo real: LCP, CLS, INP, FCP, TTFB por path en VictoriaMetrics), pipeline CI fiable y reproducible. CSS con variables de marca coherentes en 91 puntos, eliminando inconsistencias visuales acumuladas.

Cómo usarla (N/A — refactor)

Auditoría de deuda técnica. No hay nueva superficie de API ni flujo de usuario. Cambios transparentes: 509 endpoints Ninja sin breaking changes, imports externos resuelven via __init__.py en paquetes nuevos.

Implementación (fases F0-F5)

Auditoría ejecutada en una sesión (17-04-2026) con Claude Opus 4.7, cubriendo 6 frentes paralelos: CSS, JS, Python/Django, Templates, Assets/Build, Stack/Arquitectura.

F0 — Preparación (3ae2f97): baseline bib_stats, plan en TASK.md.

F1 — P0 Quick Wins (e69fd63): Brotli (brotli==1.1.0), fuentes variables Google (1 request vs 8, −70 KB), drop_console/sourcemap:false en Vite, extracción CSS banner impersonation. CSP y rate-limit descartados (redundantes con middleware custom).

F2 — P1 Backend + DX (db84f67, 9d435b9, 0b71d08): ruff==0.9.6 (1802 auto-fixes + 13 unsafe), biome, pre-commit, pytest-xdist + pytest-cov threshold 18%. Split 3 megaficheros: core/api.py (1168 LOC → 10 submódulos), monitoring/api/signage.py (1259 LOC → 7 submódulos + signage_service.py con select_related elimina N+1), racks/api/export.py (1152 LOC → 7 submódulos + export_formatter.py).

F3 — P1 Frontend (36d15f5, 53ff699): rollup-plugin-visualizer + Vite manualChunks ECharts/Konva/xterm. Limpieza CSS huérfano (−85 LOC, 7 selectores muertos, 3 vars muertas). Template _trash_item.html unificado blueprints/racks. Corrección pin ruff==0.9.6 en CI (evitaba drift a 0.15.11) y split pytest para tests RLS que compartían rol PostgreSQL.

F4 — P2 Modernización (801ad31, 0d53b8e, 5f054c0, 1693f83, a3280d9): router AI providers (ai_fallback(): Gemini→DeepSeek→Claude), helper paginate(), 353 sustituciones CSS (57× color literal → var(--accent), 262× rgba → color-mix()), @layer en 17 archivos con −33 !important, Playwright E2E smoke (health, login, static), Web Vitals RUM con sendBeacon → Prometheus Histogram.

F5 — Consolidación (c8c99e5, b178690): bump APP_VERSION = "1.0.58", CHANGELOG, RELEASE_NOTES, CLAUDE.md, README, TASK.md, WORKLOG. Informe publicado en Wiki CreaRack Tech — Reports. Tag v1.0.58.

Backlog post-fase (473c244, da80f61, 1066ac4, 788b19c): Ruff 226→0 violations, ECharts tree-shake (−402 KB, −36%), Playwright flows reales (login + rack create + terminal UI).

Harness auto-sync (ca3c238, 7846329, 534e3cc): cron Windows Task Scheduler (04:00) con bib-reindex.ps1. Handler bib_index_ast optimizado (db.batch() + replace_app). Re-indexación: 242s → 13s (18×).

Decisiones

  • ruff==0.9.6 pin exacto: ruff>=0.9.6 resolvía a 0.15.11 en CI, reglas C420/SIM910 no en ignore. Pin exacto evita rule drift silencioso.
  • django-axes/django-csp descartados: middleware custom multi-tenant ya con CSP y rate-limit granulares por organización, superior a soluciones genéricas.
  • schemas.py no fragmentado: 290 LOC con 10 dominios no justifica split — fragmentación excesiva perjudica navegabilidad sin reducir acoplamiento real.
  • ECharts tree-shake diferido a F1: migración preparada (entry point echartsLoader en Vite) pero no activada hasta backlog por requerir refactor EChartsService.js.

Commits relacionados

CommitFaseDescripción
3ae2f97F0Plan Auditoría en TASK.md
e69fd63F1ABrotli + variable fonts + Vite
db84f67F2ABRuff + CI integration
9d435b9F2CSplit core/api.py
0b71d08F2DSplit monitoring/api/signage.py
36d15f5F3AVite manualChunks + Biome
53ff699F3CCSS orphan cleanup + template dedup
5f054c0F4CDECSS modernization
0d53b8eF4ASplit racks/api/export.py
801ad31F4BAI providers router
1693f83F4FPlaywright E2E smoke
a3280d9F4GWeb Vitals RUM
c8c99e5F5Bump v1.0.58 + docs
1066ac4Backlog BECharts tree-shake −402 KB
788b19cBacklog CPlaywright flows reales

Véase también

  • [[decision—20260417—ruff-pin]]