OPCIÓN A: A2 Virtual Scroll + A3 Celery + A4 asyncpg PoC + A5 particionamiento
A2 — Virtual scroll en tablas grandes: - Nuevo helper VirtualScroll en pos/static/js/virtual-scroll.js - inventory.js: tabla de productos con virtual scroll - customers.js: tabla de clientes con virtual scroll - fleet.js: renderMaintenance() y renderHistory() con virtual scroll - Templates envueltos en .vs-container para scroll A3 — Celery worker queue: - pos/celery_app.py + pos/tasks.py (warm cache, bulk import, reports) - Blueprint tasks_bp.py con endpoints /pos/api/tasks/* - Script scripts/start_celery.sh A4 — asyncpg + Quart PoC: - pos/async_catalog.py: endpoint /pos/api/catalog/async-search - scripts/benchmark_async_catalog.py: benchmark Flask vs Quart A5 — Particionar vehicle_parts: - scripts/partition_vehicle_parts.py: migración segura por hash (16 particiones) - Soporta --dry-run, --skip-swap, --skip-drop Tests: 36/36 pasando
This commit is contained in:
@@ -78,42 +78,46 @@
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);">
|
||||
<h2 style="font-family:var(--font-heading);font-size:var(--text-h4);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-wide);text-transform:uppercase;">Programas de Mantenimiento</h2>
|
||||
</div>
|
||||
<table class="data-table" id="maintTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Vehiculo</th>
|
||||
<th>Tipo</th>
|
||||
<th>Intervalo</th>
|
||||
<th>Ultimo</th>
|
||||
<th>Proximo</th>
|
||||
<th>Estado</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maintBody">
|
||||
<tr><td colspan="7" style="text-align:center;padding:var(--space-6);color:var(--color-text-muted);">Cargando...</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="vs-container" style="max-height:60vh;overflow-y:auto;">
|
||||
<table class="data-table" id="maintTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Vehiculo</th>
|
||||
<th>Tipo</th>
|
||||
<th>Intervalo</th>
|
||||
<th>Ultimo</th>
|
||||
<th>Proximo</th>
|
||||
<th>Estado</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maintBody">
|
||||
<tr><td colspan="7" style="text-align:center;padding:var(--space-6);color:var(--color-text-muted);">Cargando...</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tab: History -->
|
||||
<div class="tab-panel" id="tab-history">
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Fecha</th>
|
||||
<th>Vehiculo</th>
|
||||
<th>Tipo</th>
|
||||
<th>Km</th>
|
||||
<th>Costo</th>
|
||||
<th>Empleado</th>
|
||||
<th>Notas</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="historyBody">
|
||||
<tr><td colspan="7" style="text-align:center;padding:var(--space-6);color:var(--color-text-muted);">Cargando...</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="vs-container" style="max-height:60vh;overflow-y:auto;">
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Fecha</th>
|
||||
<th>Vehiculo</th>
|
||||
<th>Tipo</th>
|
||||
<th>Km</th>
|
||||
<th>Costo</th>
|
||||
<th>Empleado</th>
|
||||
<th>Notas</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="historyBody">
|
||||
<tr><td colspan="7" style="text-align:center;padding:var(--space-6);color:var(--color-text-muted);">Cargando...</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tab: Alerts -->
|
||||
|
||||
Reference in New Issue
Block a user