feat(TICKET-LOGO): completed feature

This commit is contained in:
chattie
2026-08-25 06:35:39 +02:00
parent 419f47ec1c
commit 7639c1ff42
16 changed files with 324 additions and 12 deletions

View File

@@ -0,0 +1,59 @@
# TICKET-LOGO — Implementer Report
## Feature
**ID:** TICKET-LOGO
**Title:** TPV ticket header: allow custom text or logo upload
## Cambios Realizados
### 1. Migration (nueva)
**Archivo:** `project/migrations/063_pos_store_logo_url.js`
- Agrega columna `logo_url` (text, nullable) a `pos_stores`
### 2. Domain Types
**Archivo:** `project/src/modules/pos/domain/pos-sale.ts`
- Agregado `logoUrl: string | null` a interface `PosReceipt`
### 3. Build Receipt
**Archivo:** `project/src/modules/pos/application/build-pos-receipt.ts`
- Query SQL incluye `store.logo_url`
- Receipt incluye `logoUrl` del store
- `buildPosReturnReceipt` propaga `logoUrl`
### 4. API Routes
**Archivo:** `project/src/modules/pos/api/pos.routes.ts`
- POST `/pos/admin/stores`: acepta `logoUrl` (URL válida, max 500)
- PATCH `/pos/admin/receipt-settings`: actualiza `logo_url`
### 5. Admin UI
**Archivo:** `project/apps/admin/src/app/(dashboard)/pos/page.tsx`
- Interface `ReceiptSettings` incluye `logoUrl`
- Campo input para URL del logo
- Empty state incluye `logoUrl: ''`
### 6. POS Receipt Modal
**Archivo:** `project/apps/pos/src/components/ReceiptModal.tsx`
- Logo usa `receipt.logoUrl ?? '/images/logo-main.png'`
### 7. POS Types
**Archivo:** `project/apps/pos/src/types/checkout.ts`
- `PosReceipt` interface incluye `logoUrl`
## Archivos Modificados/Creados
1. `project/migrations/063_pos_store_logo_url.js` (nuevo)
2. `project/src/modules/pos/domain/pos-sale.ts`
3. `project/src/modules/pos/application/build-pos-receipt.ts`
4. `project/src/modules/pos/api/pos.routes.ts`
5. `project/apps/admin/src/app/(dashboard)/pos/page.tsx`
6. `project/apps/pos/src/components/ReceiptModal.tsx`
7. `project/apps/pos/src/types/checkout.ts`
## Testing Recomendado
1. Admin: crear/editar store con logoUrl → guardar
2. POS: crear venta → receipt muestra logo custom
3. POS: store sin logo → usa default `/images/logo-main.png`
4. Devolución: receipt muestra logo del store
## Complejidad: Medium
## Riesgo: Low
## Impacto: UX mejorada en tickets TPV