26 lines
1.4 KiB
Markdown
26 lines
1.4 KiB
Markdown
# F-116 — Traducir categorías legacy a Español (Title Case)
|
|
|
|
## Cambios
|
|
- `src/modules/categories/legacy/legacy-catalog.ts`:
|
|
- `CATEGORY_TRANSLATIONS`: tabla de traducción para las 39 categorías reales (incluye las que ya estaban en español como alias).
|
|
- `translateCategoryName(name)`: devuelve el nombre en español o el original si no hay mapping.
|
|
- `buildRenamePlan(existingCategoryNames)`: lista de renombres en sitio (ocId, oldName, newName).
|
|
- `buildImportPlan`: ahora ignora entradas cuyo nombre en inglés ya está en el catálogo (las maneja el rename plan).
|
|
- `src/modules/categories/tests/legacy-catalog.test.ts`: 3 nuevos tests (Title Case, cobertura, renombre).
|
|
- `scripts/seed-legacy-categories.mjs`:
|
|
- `buildRenamePlan` se calcula al inicio.
|
|
- Tras los inserts, ejecuta `UPDATE categories_categories SET name = $1 WHERE name = $2` por cada rename.
|
|
- Idempotente: re-ejecuciones no renombran nada.
|
|
|
|
## Aplicación
|
|
- 30 categorías renombradas en su lugar (slugs conservados).
|
|
- 0 inserts nuevos (todas las categorías ya existían desde F-114).
|
|
- 0 renames en segunda ejecución (idempotente).
|
|
|
|
## Evidencia
|
|
- `npm run typecheck` OK.
|
|
- `npm test`: 172 passed / 0 failed (3 nuevos).
|
|
- `npm run build` OK.
|
|
- DB: `nuts-and-seeds` → "Frutos Secos y Semillas", `wine` → "Vino", `tea-and-infusions` → "Té e Infusiones", `home` → "Hogar".
|
|
- URLs (`/categoria/<slug>`) intactas: los slugs no cambian.
|