diff --git a/AGENTS.md b/AGENTS.md
index e551053..b55717c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -59,23 +59,63 @@ import MiComponente from '@/components/MiComponente.vue';
- La API se inyecta globalmente via `app.provide('api', api)` y se usa con `inject('api')`
### Routing
-- Rutas automáticas basadas en archivos en `src/pages/`
-- No requiere configuración manual en `router/index.js`
+- Rutas automáticas basadas en archivos en `src/pages/` (no se registran rutas a mano, excepto en casos especiales)
+- `router/index.js` usa `setupLayouts(routes)` + guard `beforeEach`:
+ - Meta `requiresAuth` → redirige a `/autenticarse` si no hay token
+ - Meta `requiresAdmin` (o rutas en `ADMIN_ROUTES`) → redirige si el usuario no es admin
+ - **Rutas públicas** (ej: `/pedido/:code?`) NO deben llevar `requiresAuth`
## Environment Variables
- `VITE_DJANGO_BASE_URL` - URL del backend Django
+- `VITE_API_IMPLEMENTATION` - Selecciona la implementación de API (default: django)
## Commands
```bash
npm run dev # Desarrollo (puerto 3000)
-npm run build # Producción
npm run preview # Preview build
-npm run lint # ESLint fix
+npm run lint # ESLint --fix (¡OJO: reformatea archivos, ver sección Lint!)
+npm test # Vitest (unit tests)
+npm run test:watch
+npx vite build --outDir /tmp/opencode/dist-check # Verificar build sin tocar dist/
```
+## Lint y Estilos (IMPORTANTE)
+
+### El repo mezcla DOS estilos JS (~50/50)
+No hay un estilo mayoritario. El código histórico está partido:
+- **StandardJS** (2 espacios, sin semicolons, comillas simples): `main.js`, `stores/*`, `plugins/*`, `router/index.js`, `services/http.js` y muchos `.vue`
+- **4 espacios + semicolons + comillas dobles**: la mayoría de `services/` y otros `.vue`
+
+### Config de ESLint
+- `.eslintrc.js` está **versionado** y extiende `vuetify` (estilo **StandardJS**)
+- Tiene `ignorePatterns` masivo: `src/**` excepto los archivos nuevos de la tarea
+ (`!src/components/order/**`, `!src/components/PublicOrderSummary.vue`, `!src/pages/pedido/**`)
+- **Los archivos nuevos deben seguir StandardJS** para quedar lint-eados:
+ - 2 espacios (indent), sin semicolons, comillas simples
+ - `function () {}` con espacio, `const f = (x) => x` (arrow-parens en args únicos NO)
+ - Sin trailing commas; `{ clave: valor }` con espacios internos
+ - Eventos personalizados en kebab-case, `v-slot:nombre` (no `#nombre`)
+
+### PELIGRO: `npm run lint` usa `--fix`
+- Reformatea automáticamente TODO archivo no ignorado que no cumpla estilo
+- Puede modificar decenas de archivos de golpe. Antes de usarlo revisar qué está ignorado
+- Para **evaluar** sin modificar: `npx eslint . --ignore-path .gitignore` (sin `--fix`)
+- Para desglosar por archivo/regla: `npx eslint . --ignore-path .gitignore --format json | node -e "..."`
+
+## Testing (Vitest)
+- Correr con `npm test` (`vitest run`)
+- Infra en `tests/setup.js` (polyfills: `navigator.clipboard`, `ResizeObserver`, `IntersectionObserver`, `matchMedia`) + `vitest.config.mjs`
+- **`vitest.config.mjs` requiere `server.deps.inline: ['vuetify']`** para montar componentes Vuetify en jsdom
+- Los tests **no usan globals**: importar `describe/it/expect/vi` explícitamente desde `vitest`
+- Tests de páginas con router: esperar a que el router actualice `route.params` con un helper (`waitForRouteParam`)
+- Los `.d.ts` generados (`auto-imports.d.ts`, `components.d.ts`, `typed-router.d.ts`) están en `.gitignore`
+
## Common Issues
1. **Página en blanco:** Verificar que los componentes en `src/pages/*.vue` tengan import explícito
-2. **Errores de lint:** Ejecutar `npm run lint`
+2. **`npm run build` falla con `EACCES`:** `dist/` tiene archivos root (docker, gitignored) y no se puede borrar. Verificar el build con `npx vite build --outDir /tmp/opencode/dist-check`
+3. **Build falla con "Illegal '/' in tags" / "Invalid end tag":** tags de `CurrencyText` malformados pre-existentes (ej: `` o `` duplicado). Buscar `CurrencyText` mal cerrado en `ReconciliationJar.vue` / `ReconciliationJarView.vue`
+4. **Después de mergear `main`:** correr `npm install` — las deps nuevas (ej: `leaflet` en `StoreLocation.vue`) quedan en `package.json` pero no instaladas → el build falla con "Rollup failed to resolve import"
+5. **Errores de lint:** ver sección Lint y Estilos (el repo no cumple un único estilo; no "arreglar" el lint de archivos pre-existentes)
## Git Commits
**Antes de hacer commit:**
@@ -112,3 +152,10 @@ npm run lint # ESLint fix
- `/don_confiao/api/customers/` - Clientes
- `/don_confiao/api/products/` - Productos
- `/don_confiao/api/sales/` - Ventas
+- `/don_confiao/api/resumen_publico/` - Resumen público de pedido por código (AllowAny)
+
+## Consulta Pública de Pedidos
+- Ruta `/pedido/:code?` (pública, sin `requiresAuth`)
+- `getPublicOrderSummary(code)` en `services/api.js` / `django-api.js`
+- Componentes modulares en `src/components/order/`: `OrderAccessInfo.vue` (código + link), `OrderCustomer.vue`, `OrderLines.vue`, `OrderPayment.vue`, `OrderTotal.vue`
+- Orquestador: `PublicOrderSummary.vue`; `OrderAccessInfo.vue` se comparte con `SummaryPurchase.vue`