=== Tavole CRUD migration — 2026-04-21 === OK: ALTER TABLE Tavole ADD COLUMN NomeEN VARCHAR(60) NULL AFTER DescTavola OK: ALTER TABLE Tavole ADD COLUMN Visibile TINYINT(1) NOT NULL DEFAULT 1 AFTER NomeEN OK: ALTER TABLE Tavole ADD COLUMN Posizione INT NULL AFTER Visibile OK: ALTER TABLE Tavole ADD COLUMN NomeFileHero VARCHAR(120) NULL AFTER Posizione OK: ALTER TABLE SchedeArticoli ADD COLUMN Posizione INT NULL AFTER TipoCollezione === Backfill NomeEN from hardcoded map === OK: Area Antigua Living -> Antigua Living Area (1 row) OK: Area Antigua Dining -> Antigua Dining Area (1 row) OK: Area Collier Living -> Collier Living Area (1 row) OK: Area Collier Dining -> Collier Dining Area (1 row) OK: Area Saint Martin -> Saint Martin Area (1 row) OK: Area Darwin -> Darwin Area (1 row) OK: Area Tami -> Tami Area (1 row) OK: Area Contract -> Contract Area (1 row) OK: Riunioni Terramare -> Meetings Terramare (1 row) OK: Riunioni Plus4 + Yard -> Meetings Plus4 + Yard (1 row) OK: Sgabelli Darwin -> Darwin Stools (1 row) OK: Icone -> Icons (1 row) OK: Biblioteca -> Library (1 row) OK: L-ume -> L-ume (1 row) OK: Altro -> Other (1 row) OK: Complementi -> Accessories (1 row) OK: Tappeti -> Rugs (1 row) OK: Sgabelli -> Stools (1 row) === Backfill Posizione (10-step grid) === OK: Area Collier Living -> 10 (1 row) OK: Area Collier Dining -> 20 (1 row) OK: Area Antigua Living -> 30 (1 row) OK: Area Antigua Dining -> 40 (1 row) OK: Area Saint Martin -> 50 (1 row) OK: Area Darwin -> 60 (1 row) OK: Area Tami -> 70 (1 row) OK: Area Contract -> 80 (1 row) OK: L-ume -> 90 (1 row) OK: Riunioni Terramare -> 100 (1 row) OK: Riunioni Plus4 + Yard -> 110 (1 row) OK: Biblioteca -> 120 (1 row) OK: Icone -> 130 (1 row) OK: Complementi -> 140 (1 row) OK: Tappeti -> 150 (1 row) OK: Sgabelli -> 160 (1 row) OK: Sgabelli Darwin -> 170 (1 row) OK: Altro -> 180 (1 row) === Post-migration state === ID | Slug | IT | EN | Visibile | Pos | Hero ------------------------------------------------------------------------------------------------------------------------ 2 | living-collier-full | Area Collier Living | Collier Living Area | 1 | 10 | (NULL) 4 | dining-collier-full | Area Collier Dining | Collier Dining Area | 1 | 20 | (NULL) 1 | living-antigua-full | Area Antigua Living | Antigua Living Area | 1 | 30 | (NULL) 14 | dining-area-antigua | Area Antigua Dining | Antigua Dining Area | 1 | 40 | (NULL) 3 | living-stmartin-full | Area Saint Martin | Saint Martin Area | 1 | 50 | (NULL) 7 | living-darwin-contract | Area Darwin | Darwin Area | 1 | 60 | (NULL) 9 | living-tami | Area Tami | Tami Area | 1 | 70 | (NULL) 13 | area-contract | Area Contract | Contract Area | 1 | 80 | (NULL) 12 | l-ume | L-ume | L-ume | 1 | 90 | (NULL) 5 | riunioni-terramare | Riunioni Terramare | Meetings Terramare | 1 | 100 | (NULL) 6 | riunioni-plus4 | Riunioni Plus4 + Yard | Meetings Plus4 + Yard | 1 | 110 | (NULL) 11 | libreria | Biblioteca | Library | 1 | 120 | (NULL) 10 | icone | Icone | Icons | 1 | 130 | (NULL) 16 | complementi | Complementi | Accessories | 1 | 140 | (NULL) 17 | tappeti | Tappeti | Rugs | 1 | 150 | (NULL) 18 | sgabelli | Sgabelli | Stools | 1 | 160 | (NULL) 8 | sgabelli-darwin | Sgabelli Darwin | Darwin Stools | 1 | 170 | (NULL) 15 | altro | Altro | Other | 1 | 180 | (NULL) === SchedeArticoli count === Products with Posizione = NULL: 89 (all, expected — no backfill for products) === DONE ===