Pular para o conteúdo

Briefing Progressivo

O Briefing Progressivo é a funcionalidade principal do Juca — um sistema de divulgação progressiva em 4 fases que transforma análises jurídicas brutas em entregáveis estruturados e interativos. Em vez de apresentar todos os resultados de uma vez, cada fase revela uma camada mais profunda de análise, construindo sobre os dados e seleções do usuário.

Três princípios guiam o Briefing:

  1. Divulgação progressiva — Revelar a complexidade de forma gradual, não de uma vez
  2. Sem interação obrigatória — Cada fase produz valor de forma independente; o usuário pode parar a qualquer momento
  3. Implementação incremental — Construir uma fase por vez, testar até estabilizar e então avançar
flowchart LR
P0["Fase 0<br/>Chat"] --> P1["Fase 1<br/>Diagnóstico"]
P1 --> P2["Fase 2<br/>Precedentes"]
P2 --> P3["Fase 3<br/>Riscos"]
P3 --> P4["Fase 4<br/>Entrega"]
P4 --> PDF["Exportação PDF"]
FaseNomeTipos de BlocoEndpoints do ValterStatus
0Chatmessage✅ Implementado
1Diagnósticodiagnosis, action_prompt/v1/retrieve (contexto)🔨 Em Progresso
2Precedentesprecedent, precedent_picker/v1/retrieve, /v1/similar_cases📋 Planejado
3Riscosrisk_balance, chart/v1/graph/optimal-argument, /v1/graph/divergencias📋 Planejado
4Entregadelivery, exit_cardAgregação de todas as fases📋 Planejado

Todas as transições de estado do Briefing são gerenciadas por server actions em src/actions/briefing.ts:

FaseActionPropósito
1updateDiagnosis(sessionId, fields)Atualizar campos do card de diagnóstico
1chooseSituation(sessionId, situation)Selecionar situação do usuário → determina o modo de entrega
1addAdditionalContext(sessionId, text)Adicionar informações de contexto
2evaluatePrecedent(sessionId, processoId, evaluation)Avaliar um precedente (útil/não útil)
3resolveRisk(sessionId, riskId)Marcar um risco como resolvido
3advanceToPhase3(sessionId)Transição da F2 → F3
4generateDelivery(sessionId)Gerar o entregável final
4choosePath(sessionId, pathId)Selecionar um caminho estratégico
4setFaseProcessual(sessionId, fase)Definir a fase processual
4finalizeSession(sessionId)Concluir a sessão
4handleExitAction(sessionId, action)Tratar ações do card de saída

O estado do Briefing é armazenado como JSON no campo metadata da sessão. O helper loadBriefingState() carrega ou inicializa o estado:

// O estado é carregado por sessão, não globalmente
const state = await loadBriefingState(sessionId);
// Retorna BriefingFlowState com: phase, situation, diagnosis, precedentEvaluations, risks, etc.

O PhaseRail (src/components/shell/PhaseRail.tsx) é um trilho de navegação vertical que mostra:

  • Fase ativa atual (destacada)
  • Fases concluídas (clicáveis para navegação)
  • Fases futuras (esmaecidas)

Ele fica ao lado do WorkCanvas no layout do AppShell.

A situação do usuário, selecionada na Fase 1, determina qual modo de entrega a Fase 4 produz:

Situação (Fase 1)Modo de Entrega (Fase 4)Conteúdo
pesquisando (pesquisando)SínteseResumo conciso de precedentes favoráveis e desfavoráveis
avaliando (avaliando)ParecerParecer jurídico formal com percentual de favorabilidade
atuando (atuando)Estratégia2-3 caminhos estratégicos com passos acionáveis
estudando (estudando)MapaEvolução temporal + correntes divergentes

Após a Fase 4, os usuários podem exportar o briefing completo como PDF. O PDF reflete as seleções feitas ao longo das quatro fases. Consulte Exportação PDF para mais detalhes.