1.4 KiB
1.4 KiB
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 enProductRow, mapeo entoProduct,UPDATABLEpermite editar, INSERT incluyeai_assisted. - Rutas (
catalog.routes.ts):newProductSchemaadmiteaiAssisted.serializeProductexponeaiAssisted.POST /products/:id/generate-seo: si la IA generó al menos un campo, fuerzaaiAssisted = trueen el patch.
Frontend (apps/frontend)
types/api.ts:Product.aiAssisted?: boolean.app/products/[slug]/page.tsx: cuandoproduct.aiAssisted === true, renderiza un<aside>con los dos avisos requeridos.
Tests
product-use-cases.test.ts+image-use-cases.test.ts: actualizados para incluiraiAssisted: falseen fixtures.npm run typecheck(backend) OK.npm test: 169 passed / 0 failed.apps/frontend tsc --noEmitOK.
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.