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

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 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.