Files
mercadodevida/work/artifacts/TPV-FIXES/02-design.md
2026-08-25 06:31:00 +02:00

95 lines
2.3 KiB
Markdown

# TPV-FIXES — Design
## Feature
**ID:** TPV-FIXES
**Bugs:** favicon 404, Cashier label, pos/sales 400 error
---
## Fix 1: favicon 404 (storefront)
### Problema
`project/storefront/src/app/layout.tsx` no declara favicon en metadata.
### Solución
Agregar al `metadata` en `layout.tsx`:
```typescript
icons: { icon: '/favicon.ico', shortcut: '/favicon.ico' }
```
**Archivos a modificar:**
- `project/storefront/src/app/layout.tsx`
---
## Fix 2: Cashier label
### Problema
El receipt muestra "Cajero:" hardcodeado. Posibles issues:
1. El label no es neutral en género
2. El valor `receipt.cashier` viene vacío
### Investigación requerida
- [ ] Verificar `receipt.cashier` viene del `buildPosReceipt.ts`
- [ ] Si es localization, agregar i18n
- [ ] Si es empty,fix en el useCase que construye el receipt
**Archivos a revisar:**
- `project/src/modules/pos/application/build-pos-receipt.ts`
- `project/apps/pos/src/types/checkout.ts`
### Solución provisional (si es localization)
```typescript
// En ReceiptModal.tsx, línea ~95
<strong>{t('pos.cashier') || 'Cajero:'}</strong>
// O usar label neutral:
<strong>Operador:</strong>
```
---
## Fix 3: pos/sales 400 error
### Problema
Los endpoints `POST /pos/sales` y `POST /pos/sales/:id/payments` devuelven 400 cuando:
1. Falta header `x-terminal-id`
2. Falta `body.terminalId`
3. Falta `methodCode` en payments
### Solución
Revisar `apps/pos/src/lib/api-client.ts` para asegurar que:
1. Se envía `x-terminal-id` header
2. El body incluye `terminalId` matching
**Si el bug es en el backend**, mejorar mensaje de error Zod:
```typescript
// En pos.routes.ts
.refine((value) => Boolean(value.methodCode || value.kind), {
message: 'methodCode o kind es requerido',
})
```
---
## Resumen de cambios
| Bug | Archivo | Cambio |
|-----|---------|--------|
| favicon | `storefront/src/app/layout.tsx` | Agregar icons a metadata |
| cashier | `pos/src/components/ReceiptModal.tsx` | Verificar yfix label/value |
| 400 error | `pos/src/lib/api-client.ts` | Verificar headers/body |
---
## Testing
- [ ] Navegar storefront → verificar favicon en tab
- [ ] Crear venta POS → verificar receipt muestra cashier correcto
- [ ] Llamar POST /pos/sales → verificar 201 vs 400
## Gates
- [ ] reviewer: PENDING
- [ ] security: PENDING
- [ ] qa: PENDING