19 lines
1.2 KiB
Markdown
19 lines
1.2 KiB
Markdown
# F-112 — Arquitectura: disclaimer de contenido asistido por IA en la ficha de producto
|
|
|
|
## Decisiones
|
|
1. **Flag único `ai_assisted`**: una columna `boolean NOT NULL DEFAULT false` en `catalog_products`.
|
|
- Más simple que flags por campo y suficiente para el aviso legal.
|
|
2. **Migración 040**: `ALTER TABLE catalog_products ADD COLUMN IF NOT EXISTS ai_assisted boolean NOT NULL DEFAULT false;`
|
|
3. **Dominio/serialización**: `Product.aiAssisted` propagado en rutas, repositorio y `serializeProduct`.
|
|
4. **Set del flag**: cuando se ejecuta `POST /products/:id/generate-seo` y el flujo completa al menos una generación, el flag se activa en true. El admin también puede alternarlo manualmente en el editor (futuro; no se requiere para este ticket).
|
|
5. **Frontend** (`apps/frontend/src/app/products/[slug]/page.tsx`): cuando `product.aiAssisted === true`, renderizar un bloque destacado en la ficha con los dos avisos.
|
|
|
|
## Tests
|
|
- `serializeProduct` debe incluir `aiAssisted` (registrable en tests de product-use-cases).
|
|
- `productsAiAssisted.test.ts` (puerta frontend): no es trivial sin jsdom; lo dejamos para smoke.
|
|
|
|
## Fuera de alcance
|
|
- Sin cambios en el flujo admin de IA.
|
|
- Sin nuevos endpoints.
|
|
- Sin traducciones.
|