Achado — Endpoint v2 não tem campo hasNext; cálculo de paginação infinita precisa ser criado do zero
Decisão do design doc afetada: #2 — Endpoint v2 e Flag hasSellerStock
Status: Em aberto — aguardando confirmação do usuário
Estrutura v1 (atual) vs v2 (nova)
DefaultApiController.findPagedList() (lib/controllers/default_controller/default_api_controller.dart:89-129) espera a resposta em:
{ "pagination": { "totalCount": 1, "pageSize": 10, "hasNext": true, ... }, "data": [...] }
E MyShowCaseController._load() hoje usa isso diretamente: pagedList.pagination.hasNext ?? false.
O contrato v2 (frontend-contract-diff.md) é plano, sem objeto pagination aninhado e sem campo hasNext:
{ "data": [...], "total": 1, "pageNumber": 1, "pageSize": 10, "hasSellerStock": true }
O que falta
Nenhum lugar do app hoje calcula "existe próxima página" a partir de total + pageNumber + pageSize (confirmado por busca no código — não há precedente). O modelo ShowCaseListV2Response (novo) proposto no design doc expõe total, pageNumber, pageSize, mas não expõe um hasNext (nem getter computado). Sem isso, MyShowCaseController._hasNextPage (usado pelo PagingController do infinite_scroll_pagination) não tem como ser preenchido corretamente após a migração para v2.
Recomendação
Adicionar um getter computado em ShowCaseListV2Response (ou calcular direto em _load()), por exemplo:
bool get hasNext => (pageNumber * pageSize) < total;
Resolução
Decisão: o backend vai expor o campo hasNext diretamente na resposta v2 (não é necessário calcular no client). ShowCaseListV2Response deve parsear hasNext (bool) como mais um campo do payload plano, junto com data, total, pageNumber, pageSize, hasSellerStock. Contrato (context/frontend-contract-diff.md) atualizado para refletir isso. Confirmado com o usuário na sessão de grilling.