Skip to main content

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:

  1. Título/heading da seção — hoje é um ZZTextNew hardcoded, não é parâmetro do widget:
    const ZZTextNew(
    'Confira os produtos adicionados',
    fontSize: ZZFontSize.xs,
    fontWeight: ZZFontWeight.semibold,
    ),
  2. 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

  1. Adicionar um novo parâmetro em ShowCaseDetailLayout para o heading (ex.: sectionTitle, default 'Confira os produtos adicionados'), substituindo o ZZTextNew hardcoded.
  2. Manter productCountText para 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.