--- name: Catálogo - Fix variações cartesiano cor x tamanho (2026-04-23) description: Backend salvava tamanho "P,M,G,GG" como string literal em 1 linha por cor. Fix explode em cartesiano. type: project originSessionId: b36e383a-8f99-440c-a4c8-ab2f0625f864 --- # Catálogo de Produtos - Fix variações (2026-04-23) ## Bug Form tem 1 linha por "variação" com campos livres `Tamanho` e `Cor`. Usuário (G Closet) digitava "P,M,G,GG" no campo Tamanho e cada cor numa linha separada. Backend salvava **literalmente** `tamanho = "P,M,G,GG"` em 1 linha por cor. Resultado: 5 cores × 1 linha = 5 variações com tamanho string agregada. **Correto**: 1 linha por combinação (cor × tamanho) = 5 × 4 = 20 variações. Consequência: Bling recebia payload `Tamanho:P,M,G,GG;Cor:MARRON` em vez de 4 variações distintas `Tamanho:P;Cor:MARRON`, `Tamanho:M;Cor:MARRON`, etc. ## Fix 3 lugares no backend agora explodem por vírgula e fazem cartesiano: - `CatalogoPublico::store` (form público do cliente, `catalogo_publico/index.php`) - `Catalogo::store` (admin, `/catalogo/produtos/:id/create`) - `Catalogo::update` (admin edit) Mesma quantidade de estoque e mesma foto replicadas em cada combinação gerada. ## Expansão de dados históricos Produtos 7 e 8 (Jaquetas Puffer G Closet) tinham variações bugadas no DB. SQL expandiu: - Produto 7: 5 cores × 4 tamanhos = 20 variações - Produto 8: 4 cores × 4 tamanhos = 16 variações Backup em `catalogo_produto_variacoes_backup_2026_04_23`. ## Produtos duplicados no Bling Após expansão, ao reenviar pro Bling, sistema detectou que esses produtos já existem lá (criados antes com estrutura errada): - Produto 7: Bling ID 16631996449 (Jaqueta Puffer Peluciada Quente e Confortável) - Produto 8: Bling ID 16632008635 (Jaqueta Puffer Feminina Veludo Luxo) - Produto 10: Bling ID 16634583627 (Blusa sensorial marrant com alça) - Produto 11: Bling ID 16634586084 (T-SHIRT DE ALGODÃO) Esses NÃO foram recriados. Se o cliente quiser estrutura correta no Bling: excluir manualmente no Bling e reenviar, ou implementar sync de update (não implementado). ## Produtos enviados OK após fix - Produto 12: Bling ID 16637837733 (VESTIDO ANY) - Produto 13: Bling ID 16637837775 (BLUSINHAS TRICÔ) ## Deploy - `app/Controllers/CatalogoPublico.php` — +expansão no store - `app/Controllers/Catalogo.php` — +expansão no store e update - SQL de expansão aplicado em produção (produtos 7 e 8) - Pkill php-cgi pra OPcache ## How to apply Se aparecer novo bug de "variação não criou corretamente no Bling", checar se a `catalogo_produto_variacoes` tem 1 linha por combinação (não string com vírgula no campo tamanho). Usar a tabela temporária acima como modelo de expansão se precisar corrigir dados históricos.