teqo-backup/docs/plans/busca-global-bottom-drawer.md
Cursor Agent 5700817563 docs: consolidate O0+/B68+ and fatia B79→B91
Merge escala-dry B68+ into O0+ (same kimi-k3-low model). Split B79
chassis from drawer search (B91) so B80–B90 unblock without the search half.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-07-31 01:57:16 +00:00

3.8 KiB
Raw Permalink Blame History

Busca global no bottom drawer (mobile)

Status: rascunho Atualizado em: 2026-07-31 Issue: #76 (B91) Priority: P1 Model: composer-2.5 Impeccable: C — chrome do drawer (B79); reuso da busca do Início dentro do snap expandido Appetite: ~0,75–1 dia eng; extrair acoplamento HomeSearch do Início; sem migration Responsável: —

Design (Impeccable)

Âncoras: PRODUCT.md / DESIGN.md · tema data-theme='campaign' · shell do drawer em chassis-bottom-drawer-acoes-rapidas.md (B79).

Na implementação (work-issue): craft compacto → critique → polish (superfície já moldada pelo chassis).

Brief compacto:

  • Persona / contexto: staff no celular, drawer expandido em rota ≠ Início.
  • Job principal: a mesma busca global do Início (POST /campanha/home-search, providers B48–B55) sem sair da página.
  • Estratégia de cor: Restrained — chrome do drawer.
  • Edit where you see: não — busca/navegação.
  • Anti-goals: segunda API de busca; command palette desktop; reinventar debounce/contrato; drawer no Início.

Wireframe (texto)

┌─ CampaignQuickActionsDrawer (expanded) ─────────────┐
│ ═ handle ═                                          │
│ [ações B80+ …]                                      │
│ ┌─ Buscar na campanha ────────────────────────────┐ │
│ │  input + results (HomeSearch* reusado)          │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
  Fora: página opaca/interativa (B79); Início sem este item.

Dados → decisão → apresentação

Dados: N/A — hits = providers B48+ já existentes; este item só monta a UI no drawer.

Contexto

Fatia de B79 (2026-07-31): o chassis (drawer não-modal + snap + registry + padding) desbloqueia B80–B90; a busca embutida era a metade que inchava o guarda-chuva. B79 permanece o dependente duro dos catálogos; este item (B91) depende de B79 e não bloqueia B80–B90.

Objetivos

  • Extrair o mínimo de CampaignHomeSearch / HomeSearchProvider / results shell para montar fora de CampaignHomeStaffChrome.
  • No drawer expandido: mesma API, debounce e modo focado do Início.
  • Guardrails: sem migration, sem collection, sem Consent, sem server action de escrita.

Decisões travadas

  • Busca = contrato do Início (home-search). Rejeitado: segunda API; omnibox desktop neste item.
  • Depende de B79 (chassis). Sem drawer montado, não há onde embutir. Rejeitado: busca flutuante fora do drawer.
  • Não bloqueia B80–B90. Catálogos usam o slot de ações do chassis; busca é independente.

Abordagem proposta

  • Depth check: reusar HomeSearch* — extrair provider montável no drawer; não duplicar debounce.
  • Wire no CampaignQuickActionsDrawer (região expandida).
  • Pins: unit/int existentes da home-search; smoke mobile do drawer com query.

Dependências

  • Dura: B79 (chassis + mount). Soft: B47 ✓ / B48–B55 (providers).

Não escopo

  • Catálogos por vertical → B80–B90.
  • Chassis / snap / padding → B79.
  • Desktop omnibox.

Rabbit holes

  • Teclado virtual cobrindo a busca no snap. Mitigação: v1 = padding fixo; Adiado com gatilho iOS.
  • Levantar strip do Início sem medir bundle. Mitigação: só a busca neste item.

Referências