Files
mercadodevida/work/artifacts/F-114/implementer.md
2026-08-21 13:01:42 +02:00

2.4 KiB

F-114 — Import legacy OpenCart categories into the catalog without duplicates

Backend

  • src/modules/categories/legacy/legacy-catalog.ts: helper puro con la lista de las 76 entradas legacy, su clasificación (categoría / marca / excluido) y el parentSlug para cada categoría. Expone normalizeName, decodeHtmlEntities, slugify, uniqueSlug y buildImportPlan(existingCategories, existingBrands, existingSlugs).
  • src/modules/categories/tests/legacy-catalog.test.ts: 15 tests cubriendo normalización, slugify, uniqueSlug, dedup, mapeo, exclusión y clasificación.
  • scripts/seed-legacy-categories.mjs: CLI idempotente que carga el helper, sondea la base, genera el plan y aplica inserts con ON CONFLICT (slug) DO NOTHING. Acepta --dry-run.

Mapping (resumen)

  • Marcas (32): PROVEEDORES, BIOSPIRIT, SALUD VIVA, GLOBO NATURA, SOLGAR, VITAFOOD, EL GRANERO INTEGRAL, A.VOGEL, BIOCOP, QBIO, LA FINESTRA SUL CIELO, CADIDIET, COMPLEMENTOS Y NUTRICIÓN, CHISVERT, SUPERFOOD, DIETISUR, GOURMET BIO, NATURALMENTE MEDITERRANEO, NATURAL, GOURMET CASH, NUTRINAT, COMERCIAL GARZA, ARTESANÍA AGRÍCOLA, DAS BROT, DULCES LISSEN, LEMONPHARMA, VEKINE, NAAY BOTANICALS, LAMBERTS, YODETIENDAS, NATURCOSMETIKA, TONGIL.
  • Categorías (39): HERBALIST, FOOD, COSMETICS, DIET AND NUTRITION, NUTS & SEEDS, BREAD & PASTRIES, LEGUMES, FLOUR & CEREALS, PASTA & RICE, CREAMS & JAMS, FRUTAS Y VERDURAS, SUGAR & SWEETENERS, BEVERAGES, OIL AND VINEGAR, RAW FOOD, HIERBAS MEDICINALES, SUPLEMENTS, OILS & EXTRACTS, FACIAL, CORPORAL, ASEO PERSONAL, HOME, MACROBIOTIC, SNACKS, BOOKS, FRESH PRODUCTS, WINE, BEER, VEGETAL MILKS, JUICES, SODAS, CHILDREN, BABYS & KIDS, TEA & INFUSIONS, SPICE & CONDIMENTS, CHOCOLATE & SWEETS, CLEANING, PROVEEDORES, GRANOLA.
  • Excluidos (5): 00 - SIN CODIGO, 01 - PRODUCTOS DESCATALOGADOS, 02 - PRODUCTOS RAPIDOS, SUPLEMENTS (id 96 — duplicado del 85), PROVEEDORES no-marca.

Evidencia

  • npm run typecheck OK.
  • npm test: 160 passed / 0 failed (15 nuevos del helper).
  • npm run build (backend) OK.
  • node scripts/seed-legacy-categories.mjs --dry-run: plan de 39 categorías + 32 marcas.
  • node scripts/seed-legacy-categories.mjs: ejecuta inserts. Re-ejecutado: 0 inserts (idempotente).
  • DB antes: 12 categorías, 5 marcas. Después: 51 categorías (+39), 37 marcas (+32).
  • Sub-árbol ALIMENTACIÓN antes: 3 hijos. Ahora: 24 (incluye BEVERAGES, BEER, WINE, JUICES, etc.).