Achado — Design doc confunde dois textos diferentes da seção de produtos
Severidade: Alto (comportamento visual incorreto / requisito não atendido)
Decisão do design doc afetada: #4 — Detalhe Condicional por showCaseType
Requisito relacionado: RF-04 AC5
Status: Em aberto — aguardando confirmação do usuário
O que o design doc propõe
productCountText = (showCaseType == 4) ? "Confira os produtos" : "Confira os produtos adicionados"
O que existe hoje (dois textos distintos, não um só)
Em lib/screens/show_case/widgets/show_case_detail_layout.dart:126-151, a seção de produtos tem dois textos independentes:
- Título/heading da seção — hoje é um
ZZTextNewhardcoded, não é parâmetro do widget:const ZZTextNew('Confira os produtos adicionados',fontSize: ZZFontSize.xs,fontWeight: ZZFontWeight.semibold,), - Texto de contagem (ao lado do ícone de código de barras) — este sim é o parâmetro
productCountText, já existente e obrigatório:ZZTextNew(productCountText, // hoje preenchido como '${items.length} produtos adicionados'fontSize: ZZFontSize.xxs,...),
Por que a proposta está errada
RF-04 AC5 exige que, para showCaseType = 4, os dois textos mudem, para valores diferentes:
- Heading da seção →
"Confira os produtos" - Texto de contagem →
"{totalItems} produtos recomendados"
A fórmula do design doc (productCountText = ... "Confira os produtos" ...) sobrescreve o parâmetro errado: joga o texto do heading dentro de productCountText, e nunca menciona a nova contagem "{totalItems} produtos recomendados". Resultado, se implementado ao pé da letra:
- O heading continua sempre "Confira os produtos adicionados" (hardcoded, nunca muda) — quebra AC5.
- O texto ao lado do ícone de código de barras passa a exibir "Confira os produtos" (sem nenhuma contagem) — também quebra AC5, e ainda duplica visualmente o heading.
Recomendação
- Adicionar um novo parâmetro em
ShowCaseDetailLayoutpara o heading (ex.:sectionTitle, default'Confira os produtos adicionados'), substituindo oZZTextNewhardcoded. - Manter
productCountTextpara a contagem, mas corrigir os valores calculados na tela:showCaseType == 1:sectionTitle = 'Confira os produtos adicionados',productCountText = '${items.length} produtos adicionados'(sem mudança).showCaseType == 4:sectionTitle = 'Confira os produtos',productCountText = '${detail.totalItems} produtos recomendados'.
Resolução
Decisão: confirmado — são dois textos distintos. productCountText (contagem) passa a ser derivado da nova prop totalItems, que será retornada por GET /api/show-case-new/app/{id} (mesmo endpoint já consumido hoje por ShowCaseDetailController.loadData() via ApiUtils.getShowCaseDetailUrl, ver api_utils.dart:274-275 e show_case_detail_controller.dart:99 — não é uma URL nova, é o payload do mesmo endpoint que muda). Novo parâmetro sectionTitle a ser adicionado em ShowCaseDetailLayout para o heading, com o texto hardcoded atual como default. Confirmado com o usuário na sessão de grilling.