Menuabrir
Em fluxoAtualizado em 14 de mai. de 2026, 00:06
Módulo sem dependências cross-módulo declaradas.

Help

Status: 🟡 Em fluxo (ajuda contextual + manual canônico) Code: backend/app/modules/help UI: frontend/src/app/(admin)/[slug]/admin/help-admin + /admin/manual (manual) Última revisão deste doc: 2026-05-13 por Felipe + Claude


1. Identidade

O que faz (uma frase)

Suporte contextual via IA (Claude Haiku com cache ephemeral consulta ~100 artigos hardcoded + aprovados do DB), feature requests dos users com email automático, scanner noturno que sugere novos artigos via Claude Sonnet, e Manual do Sistema (este manual!) servido como markdown via API.

Por que existe (negócio)

User pergunta "como crio uma campanha?" → IA responde com steps reais. Sem este módulo:

  • User abre help externo (Notion/docs estática).
  • Feedback vira email manual.
  • Documentação técnica fica em repo separado sem UI.

Com Help:

  • "Posso fazer X?" via IA contextualizada → resposta [DISPONÍVEL] ou [NÃO DISPONÍVEL].
  • Feedback vira help_feature_request + email pra suporte.
  • Manual canônico servido em /admin/manual (este doc!).

Status atual

Em fluxo. Manual System recém-adicionado (2026-05-13).


2. Cases de uso reais

Case 1: User pergunta "como crio campanha email?"

UI help → POST /api/help/query {question, page_context} → Claude Haiku consulta knowledge_base.py + aprovados → retorna {answer, can_do=true}.

Case 2: User envia feature request

UI feedback button → POST /api/help/feature-request → salva DB + email Brevo pra suporte@mandir.com.br (fire-and-forget).

Case 3: Manual canônico

UI /admin/manual → backend serve manual_content/*.md → react-markdown renderiza com TOC + status badges.


3. Oportunidades de negócio

  • Help vendido como add-on: "AI Help Center" tier premium pra clientes Mandir.
  • Manual auto-gerado: scanner que mantém docs atualizados via IA.
  • Multi-language: Claude traduz dinamicamente.

4. Arquitetura interna

Arquivos

Tasks

TaskScheduleO que faz
help.scan_articlesBeat nightly (TBD)Lê routes.py de todos módulos → Claude Sonnet sugere artigos pendentes

5. Tabelas (2)

help_article_suggestion

ColunaNotas
article_idUNIQUE string
moduleidx
title / summary / steps (JSONB) / use_cases (JSONB) / tags (JSONB)
statuspending / approved / rejected
sourcenightly / manual
reviewed_at

help_feature_request

ColunaNotas
tenant_id
question / description (max 3000)
page_context / module_context
user_emailOpcional

6. API / Endpoints (8 + 3 manual)

Prefixo /api/help.

Help (8)

MétodoRotaO que faz
GET/articles?module=XLista (estáticos + aprovados)
POST/queryLLM com cache ephemeral (Haiku)
POST/feature-requestSalva + email Brevo
GET/suggestions?status=Admin lista
POST/suggestions/scanTrigger manual
PATCH/suggestions/{id}/approveApprove
PATCH/suggestions/{id}/rejectReject
GET/suggestions/statsContadores

Manual (3)

MétodoRotaO que faz
GET/manual/indexParseia README → domains + modules
GET/manual/document/{slug}Markdown cru
GET/manual/readmeAtalho pro README

7. Configuração

Env vars

VarPropósito
ANTHROPIC_API_KEYClaude (compartilhado)
BREVO_API_KEY / BREVO_SENDER_EMAIL / BREVO_SENDER_NAMEEmail feature request

8. Operações + Troubleshooting

Sintoma: Manual não carrega doc

Causa: Slug inválido (não match [a-zA-Z0-9_-]+) ou arquivo ausente em manual_content/. Fix: Verificar ls manual_content/.

Sintoma: Feature request não envia email

Causa: Brevo falhou (fire-and-forget). Diagnóstico: Logs help.feature_request.email.failed.


9. Limitações e débitos técnicos

#Item
1LLM cache ephemeral
2Email fire-and-forget
3Scanner heurístico
4Manual sem versionamento
5~100 artigos inline no prompt — Se > 500, considerar embeddings

10. Histórico

  • 2026-05-13 — Manual System adicionado (este doc!).
  • Em prod desde Suite v2.