Pular para o conteúdo

Endpoints de Briefing

Endpoints de API e server actions específicos do fluxo de 4 fases do Briefing Progressivo.

Todas as mutações de briefing usam Server Actions definidas em src/actions/briefing.ts. Cada action:

  • É marcada com 'use server'
  • Usa requireActionAuth() para autenticação
  • Retorna um objeto BriefingFlowState (ou uma variante estendida)
ActionAssinaturaFinalidade
updateDiagnosis(sessionId, fields) → BriefingFlowStateAtualiza campos do diagnóstico (situação, área, tema, tese). Avança da Fase 0 → Fase 1 se necessário.
chooseSituation(sessionId, situation) → { state, phase2Blocks }Define a situação do usuário. Deriva o modo de entrega e gera os blocos da Fase 2.
addAdditionalContext(sessionId, text) → BriefingFlowStateArmazena contexto adicional em texto livre no estado do briefing.

Mapeamento Situação → Modo de Entrega:

SituaçãoModo de EntregaDescrição
pesquisandosinteseUsuário está pesquisando — recebe uma síntese concisa
avaliandoparecerUsuário está avaliando — recebe um parecer jurídico formal
atuandoestrategiaUsuário está atuando — recebe um plano estratégico
estudandomapaUsuário está estudando — recebe um mapa conceitual
ActionAssinaturaFinalidade
evaluatePrecedent(sessionId, processoId, evaluation) → BriefingFlowStateAvalia um precedente como 'useful' ou 'not_useful'. Avança para a Fase 2 se necessário.
ActionAssinaturaFinalidade
advanceToPhase3(sessionId) → { state, phase3Blocks }Gera blocos de risco (risk_balance + gráfico) a partir da análise de caso existente.
resolveRisk(sessionId, riskId) → BriefingFlowStateMarca um risco como tratado. Atualiza o bloco risk_balance no banco de dados.
ActionAssinaturaFinalidade
generateDelivery(sessionId) → { state, phase4Blocks }Gera blocos de entrega com base no modo de entrega selecionado. Requer que deliveryMode esteja definido.
choosePath(sessionId, pathId) → BriefingFlowStateDefine o caminho estratégico escolhido no bloco de entrega estrategia. Gera os próximos passos.
setFaseProcessual(sessionId, fase) → BriefingFlowStateAtualiza o campo faseProcessual no bloco de entrega estrategia.
ActionAssinaturaFinalidade
finalizeSession(sessionId) → BriefingFlowStateMarca a sessão como finalizada. Atualiza o bloco exit_card para selected: 'concluir'.
handleExitAction(sessionId, action) → { state, action }Trata a seleção do card de saída. Se action === 'concluir', define finalized = true.

Gera e faz download de um documento PDF para uma sessão de briefing.

Fonte: src/app/api/export/pdf/[sessionId]/route.ts

Auth: Verificação de sessão via auth(). Ignorada quando ENABLE_DEV_AUTH=true.

Parâmetros de path: sessionId: string

Resposta 200:

HeaderValor
Content-Typeapplication/pdf
Content-Dispositionattachment; filename="briefing-{sessionId.slice(0,8)}.pdf"

Corpo: bytes brutos do PDF gerado por generateBriefingPDF() de src/lib/pdf/generator.ts.

Respostas de erro:

  • 401{ error: 'Unauthorized' }
  • 404{ error: 'Session not found' } (nenhum bloco existe para o sessionId)

Detalhes da geração do PDF:

  • Usa jsPDF para criação do PDF
  • Extrai blocos por tipo do banco de dados da sessão
  • Rastreamento manual de posição Y com checkPage() para overflow de página
  • Quebra de texto via doc.splitTextToSize(text, maxWidth)
  • Saída: new Uint8Array(doc.output('arraybuffer'))

Esses endpoints existem no Juca mas estão sendo migrados para o Valter. Serão removidos no v0.4 após a conclusão da migração:

GrupoCaminhoEndpointsDestino da Migração
Analyzer/api/analyzer/*8Valter /v1/factual/*, /v1/retrieve
Chat/api/chat/*6Pipeline LLM do Valter
KG/api/kg/*14Valter /v1/graph/*
Reasoning/api/reasoning/*4Extração IRAC do Valter
Search/api/search/*2Valter /v1/retrieve
Comparator/api/comparator/*2Comparação multi-modelo do Valter