feat(comercial): rediseñar FilterBar al estilo del dashboard OAE y filtros dinámicos por año+mes
Rework del filter bar del Portal Comercial (portal_comercial) para alinearlo visual y funcionalmente al dashboard principal (/oae/dashboard), más filtros que se rellenan dinámicamente desde los reportes comerciales.
FilterBar (UI):
- Layout pill horizontal compacto: contenedor rounded-[20px] con icono SlidersHorizontal + label FILTROS + divisor.
- Cada filtro es un nuevo ChecklistDropdown (_internal/ui/ChecklistDropdown.tsx) que reemplaza al MultiSelectMenu/SingleSelect Radix anteriores: soporta opciones {value,label}, modo singleSelect (radio) para Año, searchable para Empresa y defaultValues para que el botón Limpiar del popover vuelva al preset.
- Pill cambia a azul sólido + badge contador cuando difiere del default.
- Botón global Limpiar condicional, badge derecho con conteo de empresas.
- Sticky preservado, autocontenido con clases Tailwind y hex directos (sin depender de CSS vars --oae-* que no existían en el shell del OAE — corrige el bug donde el filter bar se veía translúcido al embeber el dashboard en /oae/comercial/inicio).
Mes preseleccionado:
- Reescrita la lógica de DEFAULT_MES para reflejar el cierre de mes el día 10: día ≤10 → M-2, día ≥11 → M-1. Ej: 4-may → Marzo; 11-may → Abril.
Canvas:
- --background del portal comercial alineado al #f4f6fa del OAE para que el filter bar blanco destaque igual en ambos contextos.
Filtros dinámicos (año+mes + cascada):
- Backend (backend/routers/comercial.py): summary.filtros_disponibles ahora se calcula a partir del universo año+mes. portafolios_opt y mix_opt por año+mes; empresas_opt por año+mes con cascada de portafolio.
- Frontend (ComercialDashboard.tsx): eliminada la llamada al endpoint estático; las 3 listas se construyen como merge entre el universo válido (summary.filtros_disponibles) y la selección actual, manteniendo visibles las selecciones huérfanas hasta que el usuario las deseleccione.
Limpieza:
- Eliminados archivos huérfanos: _internal/ui/{MultiSelectMenu,Select,Popover}.tsx.
- Eliminada función getIndicadoresComerciaesOpciones (comercial.api.ts).
- Eliminado endpoint backend /api/tableau/indicadores-comerciales/opciones (sin consumidores).