Files
mercadodevida/work/artifacts/F-112/implementer.md
2026-08-21 13:31:28 +02:00

25 lines
1.4 KiB
Markdown

# F-112 — Disclaimer de contenido asistido por IA
## Backend
- **Migración 040** (`040_product_ai_assisted.js`): `catalog_products.ai_assisted boolean NOT NULL DEFAULT false` + índice parcial. Aplicada (`db:status`).
- **Dominio** (`product.ts`): `Product.aiAssisted: boolean`, `NewProduct.aiAssisted?: boolean`.
- **Repositorio** (`pg-product-repository.ts`): columna en `ProductRow`, mapeo en `toProduct`, `UPDATABLE` permite editar, INSERT incluye `ai_assisted`.
- **Rutas** (`catalog.routes.ts`):
- `newProductSchema` admite `aiAssisted`.
- `serializeProduct` expone `aiAssisted`.
- `POST /products/:id/generate-seo`: si la IA generó al menos un campo, fuerza `aiAssisted = true` en el patch.
## Frontend (apps/frontend)
- `types/api.ts`: `Product.aiAssisted?: boolean`.
- `app/products/[slug]/page.tsx`: cuando `product.aiAssisted === true`, renderiza un `<aside>` con los dos avisos requeridos.
## Tests
- `product-use-cases.test.ts` + `image-use-cases.test.ts`: actualizados para incluir `aiAssisted: false` en fixtures.
- `npm run typecheck` (backend) OK.
- `npm test`: 169 passed / 0 failed.
- `apps/frontend tsc --noEmit` OK.
## Evidencia
- DB: `SELECT column_name FROM information_schema.columns WHERE table_name='catalog_products' AND column_name='ai_assisted'` → presente.
- Smoke: `UPDATE catalog_products SET ai_assisted = true WHERE id = '<sample>'` → la ficha de cliente muestra el aviso.