brand-catalog.js was missing Authorization header on fetch calls, causing 401 Unauthorized errors. Now reads pos_token from localStorage and includes Bearer token in every request. Also handles 401 responses by redirecting to /pos/login. Bump JS cache bust to v=2.
40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
# Plan: Catálogo por Marca de Vehículo
|
|
|
|
## Resumen
|
|
Reorganizar el catálogo para que la navegación principal sea:
|
|
**Marca de vehículo → Categoría/Sistema → Partes compatibles**
|
|
|
|
Ejemplo: Toyota → Frenos → [balatas Bosch, discos Brembo, pastillas NGK...]
|
|
|
|
## Opción recomendada: Materialized View
|
|
|
|
No tocamos la tabla masiva `vehicle_parts` (billones de rows). Creamos una materialized view que agregue por marca + categoría.
|
|
|
|
### Cambios DB (Master)
|
|
1. Crear `brand_catalog_parts` MV desde `vehicle_parts → MYE → models → brands`
|
|
2. Agregar índices: `(brand_id, category_id)`, `(brand_id, part_id)`
|
|
3. Crear función `refresh_brand_catalog()` para refrescar
|
|
|
|
### Cambios Backend
|
|
1. Nuevos endpoints:
|
|
- `GET /catalog/vehicle-brands` → lista marcas con conteo de partes
|
|
- `GET /catalog/brand-categories?brand_id=` → categorías disponibles para esa marca
|
|
- `GET /catalog/brand-parts?brand_id=&category_id=` → partes compatibles
|
|
2. Modificar `catalog_service.py` con filtros por marca
|
|
|
|
### Cambios Frontend
|
|
1. Nueva vista inicial: grid de marcas de vehículo (tarjetas con logo/contador)
|
|
2. Click en marca → lista de categorías/sistemas (frenos, motor, suspensión...)
|
|
3. Click en categoría → grid de partes compatibles con esa marca
|
|
4. Filtro opcional: modelo/año/motor para refinar resultados
|
|
|
|
### Datos
|
|
- `vehicle_parts` ya tiene todo. La MV solo agrega/distinct.
|
|
- Las marcas fabricantes (Bosch, NGK) se muestran como badges en cada parte.
|
|
|
|
## Tiempo estimado
|
|
- DB + Backend: 2-3 horas
|
|
- Frontend: 2-3 horas
|
|
- Testing: 1 hora
|
|
- Total: ~6 horas
|