feat(TPV-FIXES): completed feature
This commit is contained in:
94
work/artifacts/TPV-FIXES/02-design.md
Normal file
94
work/artifacts/TPV-FIXES/02-design.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user