#!/usr/bin/env npx ts-node

/**
 * Script de Teste da API DataJud
 * Testa a conexão e busca um processo de exemplo
 */

// API Key pública do DataJud (CNJ)
const DATAJUD_API_KEY = 'cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw=='
const DATAJUD_BASE_URL = 'https://api-publica.datajud.cnj.jus.br'

async function testarDataJud() {
  console.log('='.repeat(60))
  console.log('🧪 Testando conexão com API DataJud (CNJ)')
  console.log('='.repeat(60))
  
  // Teste 1: Buscar um processo aleatório
  console.log('\n1. Buscando processo de exemplo no TJSP...')
  
  const url = `${DATAJUD_BASE_URL}/api_publica_tjsp/_search`
  
  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `APIKey ${DATAJUD_API_KEY}`,
      },
      body: JSON.stringify({
        size: 1,
        query: {
          bool: {
            must: [
              { exists: { field: 'movimentos' } }
            ],
            filter: [
              { range: { '@timestamp': { gte: 'now-7d' } } }
            ]
          }
        }
      }),
    })
    
    if (!response.ok) {
      console.log(`❌ Erro HTTP: ${response.status}`)
      const text = await response.text()
      console.log(text.substring(0, 500))
      return
    }
    
    const data = await response.json()
    console.log(`✅ Resposta OK - ${data.hits?.total?.value || 0} processos no índice`)
    
    if (data.hits?.hits?.length > 0) {
      const processo = data.hits.hits[0]._source
      console.log(`\n📄 Processo encontrado:`)
      console.log(`   Número: ${processo.numeroProcesso}`)
      console.log(`   Classe: ${processo.classe?.nome || 'N/A'}`)
      console.log(`   Tribunal: ${processo.tribunal}`)
      console.log(`   Movimentos: ${processo.movimentos?.length || 0}`)
      
      // Mostrar últimos movimentos
      const ultimos = (processo.movimentos || []).slice(-5)
      console.log('\n   Últimos movimentos:')
      ultimos.forEach((m: any) => {
        console.log(`   - ${m.dataHora?.substring(0, 10)} | ${m.nome} (código: ${m.codigo})`)
      })
    }
    
    // Teste 2: Buscar processo específico (se existir)
    console.log('\n\n2. Testando busca por número específico...')
    
    const response2 = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `APIKey ${DATAJUD_API_KEY}`,
      },
      body: JSON.stringify({
        size: 1,
        query: {
          match: {
            numeroProcesso: '10000000020248260100'  // Exemplo fictício
          }
        }
      }),
    })
    
    const data2 = await response2.json()
    const found = data2.hits?.hits?.length > 0
    console.log(`   Processo de teste: ${found ? '✅ Encontrado' : '➖ Não encontrado (esperado)'}`)
    
    console.log('\n' + '='.repeat(60))
    console.log('✅ API DataJud funcionando corretamente!')
    console.log('='.repeat(60))
    
  } catch (error) {
    console.error('❌ Erro ao conectar:', error)
  }
}

testarDataJud()
