# `apps/web` Aplicación frontend principal del ERP. ## Documentación canónica - Arquitectura, autenticación y selección de empresa: [`../../docs/frontend/frontend-architecture.md`](../../docs/frontend/frontend-architecture.md) - Contexto tenant y reglas de `X-Company-Id`: [`../../docs/architecture/tenant-context.md`](../../docs/architecture/tenant-context.md) - Tratamiento de errores HTTP en frontend: [`../../docs/architecture/http-error-handling-frontend.md`](../../docs/architecture/http-error-handling-frontend.md) ## Runtime actual de autenticación La app usa `@erp/identity/client` como runtime actual. ## Flujo actual - La sesión y la empresa activa se resuelven según el flujo documentado en `docs/frontend/frontend-architecture.md`. - Las rutas tenant-scoped deben respetar las reglas de `X-Company-Id` documentadas en `docs/architecture/tenant-context.md`. ## Headers - No duplicar aquí la matriz de headers. - Consultar `docs/frontend/frontend-architecture.md` para endpoints excluidos y `tenant-context.md` para reglas tenant-scoped. ## App company switcher Componente: ```txt apps/web/src/layout/app-company-switcher.tsx ``` Propósito: - mostrar la empresa activa real en el layout autenticado - permitir cambiar entre `availableCompanies` de la sesión actual Reglas: - usar el contexto de `identity` - no manejar tokens - no llamar directamente a `GET /companies/available` - no usar `companySlug` para auth - no modificar el access token - respetar el flujo canónico documentado en `docs/frontend/frontend-architecture.md` ## Refresh automático La app implementa refresh automático global sobre `401`. La semántica completa de retry, exclusiones y limpieza de sesión se documenta en `docs/frontend/frontend-architecture.md`.