2026-07-06 15:47:05 +00:00
# `apps/web`
Aplicación frontend principal del ERP.
2026-08-05 11:18:03 +00:00
## Documentación canónica
2026-07-06 15:47:05 +00:00
2026-08-05 11:18:03 +00:00
- Flujo de autenticación y selección de empresa: [`../../docs/frontend/auth-and-company-selection.md` ](../../docs/frontend/auth-and-company-selection.md )
- Contexto tenant y reglas de `X-Company-Id` : [`../../docs/architecture/tenant-context.md` ](../../docs/architecture/tenant-context.md )
2026-08-06 11:03:48 +00:00
- Tratamiento de errores HTTP en frontend: [`../../docs/architecture/http-error-handling-frontend.md` ](../../docs/architecture/http-error-handling-frontend.md )
2026-07-06 15:47:05 +00:00
2026-08-05 11:18:03 +00:00
## Runtime actual de autenticación
2026-07-06 15:47:05 +00:00
2026-08-05 11:18:03 +00:00
La app usa `@erp/identity/client` como runtime actual.
2026-07-06 15:47:05 +00:00
## Flujo actual
2026-08-05 11:18:03 +00:00
- La sesión y la empresa activa se resuelven según el flujo documentado en `docs/frontend/auth-and-company-selection.md` .
- Las rutas tenant-scoped deben respetar las reglas de `X-Company-Id` documentadas en `docs/architecture/tenant-context.md` .
2026-07-06 15:47:05 +00:00
## Headers
2026-08-05 11:18:03 +00:00
- No duplicar aquí la matriz de headers.
- Consultar `docs/frontend/auth-and-company-selection.md` para endpoints excluidos y `tenant-context.md` para reglas tenant-scoped.
2026-07-06 15:47:05 +00:00
## 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
2026-08-05 11:18:03 +00:00
- respetar el flujo canónico documentado en `docs/frontend/auth-and-company-selection.md`
2026-07-06 15:47:05 +00:00
## Refresh automático
2026-08-05 11:18:03 +00:00
La app implementa refresh automático global sobre `401` .
2026-07-06 15:47:05 +00:00
2026-08-05 11:18:03 +00:00
La semántica completa de retry, exclusiones y limpieza de sesión se documenta en `docs/frontend/auth-and-company-selection.md` .