<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<?php
// Monta o contexto completo do expediente para o dossiê
$dados_dossie = [
    'expediente' => [
        'devedor_nome'     => $exp->devedor_nome ?? '',
        'devedor_doc'      => $exp->devedor_doc ?? '',
        'numero_processo'  => $exp->numero_processo ?? '',
        'valor_execucao'   => $exp->valor_execucao ?? 0,
        'tipo_acao'        => $exp->tipo_acao ?? '',
        'exequente_nome'   => $exp->exequente_nome ?? '',
        'comarca'          => $exp->comarca ?? 'Recife/PE',
    ],
    'investigacoes' => [],
    'alertas'       => [],
    'bens'          => [],
];

foreach ((array)$investigacoes as $inv) {
    $dados_raw = json_decode($inv->dados_json, true);
    $dados_dossie['investigacoes'][] = [
        'fonte'     => $inv->fonte,
        'resultado' => $inv->resultado,
        'resumo'    => $inv->resumo,
        'relevancia'=> $inv->relevancia,
        'dados'     => $dados_raw,
    ];
}

foreach ((array)$alertas as $al) {
    $dados_dossie['alertas'][] = [
        'tipo'      => $al->tipo,
        'descricao' => $al->descricao,
        'fontes'    => $al->fontes,
        'tese'      => $al->tese_juridica ?? '',
        'relevancia'=> $al->relevancia ?? 'media',
    ];
}

foreach ((array)$bens as $b) {
    $dados_dossie['bens'][] = [
        'tipo'    => $b->tipo,
        'descricao'=> $b->descricao,
        'valor'   => $b->valor_estimado,
        'fonte'   => $b->fonte,
        'status'  => $b->status,
    ];
}
?>
<style>
.dossie-wrap{max-width:900px;margin:0 auto}
.dossie-header{background:linear-gradient(135deg,#1e3a5f,#2d5986);border-radius:12px;padding:24px 28px;color:#fff;margin-bottom:18px}
.dossie-header h2{font-size:20px;font-weight:700;margin:0 0 6px}
.dossie-header p{font-size:13px;opacity:.8;margin:0}
.dossie-acoes{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.dossie-content{background:#fff;border:1px solid #e2e6ea;border-radius:12px;padding:28px;min-height:400px;font-family:Georgia,serif;font-size:14px;line-height:1.8;color:#222}
.dossie-content h1{font-size:18px;font-weight:700;color:#1e3a5f;border-bottom:2px solid #1e3a5f;padding-bottom:8px;margin-bottom:16px}
.dossie-content h2{font-size:15px;font-weight:700;color:#1e3a5f;margin:20px 0 8px}
.dossie-content h3{font-size:14px;font-weight:700;margin:14px 0 6px}
.dossie-content .alerta-alta{background:#fff3cd;border-left:4px solid #e65100;padding:10px 14px;border-radius:0 6px 6px 0;margin:10px 0;font-size:13px}
.dossie-content .alerta-critico{background:#ffebee;border-left:4px solid #c0392b;padding:10px 14px;border-radius:0 6px 6px 0;margin:10px 0;font-size:13px}
#loading-dossie{text-align:center;padding:50px 20px;color:#888}
#loading-dossie .fa{font-size:36px;display:block;margin-bottom:12px;color:#1e3a5f}
.streaming-cursor{display:inline-block;width:2px;height:16px;background:#1e3a5f;animation:blink .8s infinite;vertical-align:text-bottom;margin-left:2px}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
@media print{
    .dossie-header .dossie-acoes,.box-header{display:none!important}
    .dossie-content{border:none;padding:0}
}
</style>

<section class="content-header">
    <h1><i class="fa fa-robot"></i> Dossiê Estratégico com IA</h1>
    <ol class="breadcrumb">
        <li><a href="<?php echo site_url('admin') ?>"><i class="fa fa-dashboard"></i></a></li>
        <li><a href="<?php echo site_url('admin/patrimonio') ?>">Busca Patrimonial</a></li>
        <li><a href="<?php echo site_url('admin/patrimonio/view/'.$exp->id) ?>"><?php echo htmlspecialchars($exp->devedor_nome) ?></a></li>
        <li class="active">Dossiê com IA</li>
    </ol>
</section>

<section class="content">
<div class="dossie-wrap">

<div class="dossie-header">
    <h2><i class="fa fa-robot"></i> Dossiê Patrimonial Estratégico</h2>
    <p><?php echo htmlspecialchars($exp->devedor_nome) ?> · <?php echo htmlspecialchars($exp->devedor_doc ?? '') ?> · Processo <?php echo htmlspecialchars($exp->numero_processo ?? 'não informado') ?></p>
    <div class="dossie-acoes">
        <button id="btn-gerar" class="btn btn-success">
            <i class="fa fa-magic"></i> Gerar Dossiê com IA
        </button>
        <button id="btn-regenerar" class="btn btn-default" style="display:none">
            <i class="fa fa-refresh"></i> Regenerar
        </button>
        <button onclick="window.print()" class="btn btn-default" id="btn-imprimir" style="display:none">
            <i class="fa fa-print"></i> Imprimir
        </button>
    </div>
</div>

<?php if (empty($investigacoes) && empty($alertas) && empty($bens)): ?>
<div class="alert alert-warning" style="border-radius:8px">
    <i class="fa fa-exclamation-triangle"></i>
    <strong>Sem dados para o dossiê.</strong>
    Execute primeiro a investigação no <a href="<?php echo site_url('admin/patrimonio/arsenal/'.$exp->id) ?>">Arsenal de Investigação</a> para coletar dados das APIs.
</div>
<?php else: ?>

<div class="box box-default">
    <div class="box-header with-border" style="background:#f8fafc">
        <h3 class="box-title" style="font-size:13px;color:#888">
            <i class="fa fa-database"></i>
            Base de dados disponível:
            <strong><?php echo count((array)$investigacoes) ?></strong> investigações ·
            <strong><?php echo count((array)$alertas) ?></strong> alertas ·
            <strong><?php echo count((array)$bens) ?></strong> bens identificados
        </h3>
    </div>
</div>

<div id="dossie-output">
    <div id="loading-dossie" style="display:none">
        <i class="fa fa-spin fa-circle-o-notch"></i>
        <p>Analisando dados patrimoniais e gerando dossiê estratégico...</p>
        <small style="color:#aaa">Isso pode levar de 15 a 30 segundos</small>
    </div>
    <div class="dossie-content" id="dossie-texto" style="display:none"></div>
</div>

<?php endif; ?>

</div>
</section>

<script>
var dadosDossie = <?php echo json_encode($dados_dossie, JSON_UNESCAPED_UNICODE) ?>;

function montarPrompt(dados) {
    var exp = dados.expediente;
    var prompt = 'Você é um especialista em direito processual civil e trabalhista brasileiro, com foco em execução e localização de bens.\n\n';
    prompt += 'Analise os dados patrimoniais do devedor abaixo e gere um DOSSIÊ ESTRATÉGICO completo para uso do advogado em petições e audiências.\n\n';

    prompt += '## DADOS DO EXPEDIENTE\n';
    prompt += '- Devedor: ' + exp.devedor_nome + '\n';
    prompt += '- CPF/CNPJ: ' + exp.devedor_doc + '\n';
    prompt += '- Processo: ' + (exp.numero_processo || 'não informado') + '\n';
    prompt += '- Valor em execução: R$ ' + parseFloat(exp.valor_execucao).toLocaleString('pt-BR', {minimumFractionDigits:2}) + '\n';
    prompt += '- Tipo de ação: ' + (exp.tipo_acao || 'não informado') + '\n';
    prompt += '- Exequente: ' + (exp.exequente_nome || 'não informado') + '\n';
    prompt += '- Comarca: ' + (exp.comarca || 'Recife/PE') + '\n\n';

    if (dados.investigacoes && dados.investigacoes.length > 0) {
        prompt += '## DADOS COLETADOS PELAS APIs\n';
        dados.investigacoes.forEach(function(inv) {
            prompt += '\n### ' + inv.fonte.toUpperCase() + ' (' + inv.resultado + ')\n';
            prompt += 'Resumo: ' + inv.resumo + '\n';
            if (inv.dados && inv.fonte.includes('cnpj')) {
                var d = inv.dados;
                if (d.razao_social) prompt += 'Razão Social: ' + d.razao_social + '\n';
                if (d.situacao) prompt += 'Situação cadastral: ' + d.situacao + '\n';
                if (d.capital) prompt += 'Capital social: R$ ' + parseFloat(d.capital).toLocaleString('pt-BR', {minimumFractionDigits:2}) + '\n';
                if (d.municipio) prompt += 'Município: ' + d.municipio + '\n';
                if (d.socios && d.socios.length) {
                    prompt += 'Sócios (' + d.socios.length + '): ';
                    prompt += d.socios.slice(0,3).map(function(s){return s.nome + ' (' + (s.qual||'') + ')'}).join(', ') + '\n';
                }
                if (d.atividade) prompt += 'CNAE principal: ' + d.atividade + '\n';
                if (d.opcao_simples !== undefined) prompt += 'Optante Simples: ' + (d.opcao_simples ? 'Sim' : 'Não') + '\n';
            }
            if (inv.dados && inv.fonte.includes('datajud')) {
                var d = inv.dados;
                if (d.processos && d.processos.length) {
                    prompt += 'Total de processos: ' + d.total + '\n';
                    prompt += 'Como autor/credor: ' + d.como_credor + '\n';
                    d.processos.slice(0,5).forEach(function(p) {
                        prompt += '  - ' + p.numero + ' (' + p.tribunal + ') — ' + p.classe + ' — Polo: ' + (p.como_autor?'AUTOR':'RÉU') + ' — Valor: R$ ' + parseFloat(p.valor||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) + '\n';
                    });
                }
            }
            if (inv.dados && inv.fonte.includes('transparencia')) {
                var d = inv.dados;
                if (d.total > 0) {
                    prompt += 'Contratos com poder público: ' + d.total + '\n';
                    (d.contratos||[]).slice(0,3).forEach(function(c) {
                        prompt += '  - ' + c.objeto + ' (R$ ' + parseFloat(c.valor||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) + ') — ' + c.orgao + '\n';
                    });
                }
            }
            if (inv.dados && inv.fonte.includes('offshore')) {
                var d = inv.dados;
                if (d.total > 0) {
                    prompt += 'Vínculos offshore (ICIJ): ' + d.total + '\n';
                    (d.entidades||[]).slice(0,3).forEach(function(e) {
                        prompt += '  - ' + e.nome + ' (' + e.tipo + ') em ' + e.pais + '\n';
                    });
                }
            }
            if (inv.dados && inv.fonte.includes('sancoes')) {
                var d = inv.dados;
                if (d.total > 0) {
                    prompt += 'Sanções administrativas (CEIS/CNEP): ' + d.total + '\n';
                    (d.sancoes||[]).slice(0,2).forEach(function(s) {
                        prompt += '  - ' + s.tipo + ' (' + s.orgao + ') — ' + s.dataInicio + '\n';
                    });
                }
            }
        });
    }

    if (dados.alertas && dados.alertas.length > 0) {
        prompt += '\n## ALERTAS DE CORRELAÇÃO (gerados pelo motor de análise)\n';
        dados.alertas.forEach(function(al) {
            prompt += '\n### [' + al.relevancia.toUpperCase() + '] ' + al.tipo.replace(/_/g,' ').toUpperCase() + '\n';
            prompt += al.descricao + '\n';
            if (al.tese) prompt += 'Tese sugerida: ' + al.tese + '\n';
        });
    }

    if (dados.bens && dados.bens.length > 0) {
        prompt += '\n## BENS IDENTIFICADOS\n';
        dados.bens.forEach(function(b) {
            prompt += '- ' + b.tipo.toUpperCase() + ': ' + b.descricao + ' — R$ ' + parseFloat(b.valor||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) + ' (' + b.fonte + ')\n';
        });
    }

    prompt += '\n## INSTRUÇÃO PARA O DOSSIÊ\n';
    prompt += 'Com base em todos os dados acima, gere um DOSSIÊ ESTRATÉGICO completo contendo:\n\n';
    prompt += '1. **SUMÁRIO EXECUTIVO** — 3 a 5 linhas resumindo a situação patrimonial do devedor e o potencial de recuperação do crédito\n\n';
    prompt += '2. **PERFIL DO DEVEDOR** — análise da situação cadastral, atividade econômica real vs. declarada, indicadores de capacidade financeira oculta\n\n';
    prompt += '3. **MAPA PATRIMONIAL** — lista estruturada de todos os ativos identificados e estimativa de valor total localizável\n\n';
    prompt += '4. **ALERTAS CRÍTICOS** — análise jurídica de cada alerta, com o risco que representa e a medida processual recomendada\n\n';
    prompt += '5. **ESTRATÉGIA DE EXECUÇÃO** — ordem recomendada de medidas, dos meios mais simples aos mais complexos, com base nos dados encontrados. Incluir: SISBAJUD, RENAJUD, penhora de créditos, IDPJ se cabível, medidas atípicas do art. 139 IV CPC\n\n';
    prompt += '6. **FUNDAMENTAÇÃO JURÍDICA** — artigos de lei, súmulas e jurisprudência aplicáveis a cada medida recomendada\n\n';
    prompt += '7. **RISCOS E OBSERVAÇÕES** — possíveis obstáculos, defesas do devedor e como antecipar\n\n';
    prompt += 'Use linguagem jurídica formal, mas clara. Seja específico com os dados encontrados — não use frases genéricas. Cada recomendação deve citar os dados concretos que a embasam.\n';
    prompt += 'Formate o dossiê em Markdown com títulos claros (##), negrito para pontos críticos e listas para facilitar a leitura.\n';

    return prompt;
}

async function gerarDossie() {
    var btn = document.getElementById('btn-gerar');
    var btnReg = document.getElementById('btn-regenerar');
    var btnImp = document.getElementById('btn-imprimir');
    var loading = document.getElementById('loading-dossie');
    var output = document.getElementById('dossie-texto');

    btn.style.display = 'none';
    loading.style.display = 'block';
    output.style.display = 'none';
    output.innerHTML = '';

    var prompt = montarPrompt(dadosDossie);

    try {
        const response = await fetch('https://api.anthropic.com/v1/messages', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({
                model: 'claude-sonnet-4-6',
                max_tokens: 4000,
                stream: true,
                messages: [{ role: 'user', content: prompt }]
            })
        });

        loading.style.display = 'none';
        output.style.display = 'block';
        btnReg.style.display = 'inline-block';
        btnImp.style.display = 'inline-block';

        var textoCompleto = '';
        var cursor = '<span class="streaming-cursor"></span>';

        const reader = response.body.getReader();
        const decoder = new TextDecoder();

        while (true) {
            const { done, value } = await reader.read();
            if (done) break;

            var chunk = decoder.decode(value, { stream: true });
            var linhas = chunk.split('\n');

            for (var linha of linhas) {
                if (linha.startsWith('data: ')) {
                    var data = linha.slice(6);
                    if (data === '[DONE]') continue;
                    try {
                        var parsed = JSON.parse(data);
                        if (parsed.type === 'content_block_delta' && parsed.delta && parsed.delta.text) {
                            textoCompleto += parsed.delta.text;
                            output.innerHTML = markdownParaHtml(textoCompleto) + cursor;
                            output.scrollIntoView({ behavior: 'smooth', block: 'end' });
                        }
                    } catch(e) {}
                }
            }
        }

        // Remove cursor final e renderiza limpo
        output.innerHTML = markdownParaHtml(textoCompleto);

    } catch(err) {
        loading.style.display = 'none';
        output.style.display = 'block';
        output.innerHTML = '<div class="alert alert-danger"><i class="fa fa-exclamation-triangle"></i> Erro ao gerar dossiê: ' + err.message + '</div>';
        btn.style.display = 'inline-block';
    }
}

function markdownParaHtml(md) {
    return md
        // Títulos
        .replace(/^#### (.+)$/gm, '<h4>$1</h4>')
        .replace(/^### (.+)$/gm, '<h3>$1</h3>')
        .replace(/^## (.+)$/gm, '<h2>$1</h2>')
        .replace(/^# (.+)$/gm, '<h1>$1</h1>')
        // Negrito e itálico
        .replace(/\*\*\*(.+?)\*\*\*/g, '<strong><em>$1</em></strong>')
        .replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
        .replace(/\*(.+?)\*/g, '<em>$1</em>')
        // Alertas especiais
        .replace(/🚨 (.+)/g, '<div class="alerta-critico">🚨 $1</div>')
        .replace(/⚠️ (.+)/g, '<div class="alerta-alta">⚠️ $1</div>')
        // Listas
        .replace(/^- (.+)$/gm, '<li>$1</li>')
        .replace(/(<li>.*<\/li>)/gs, '<ul>$1</ul>')
        .replace(/^(\d+)\. (.+)$/gm, '<li>$2</li>')
        // Quebras de linha
        .replace(/\n\n/g, '</p><p>')
        .replace(/\n/g, '<br>')
        // Wraps finais
        .replace(/^(?!<[h|u|p|d|l])(.+)$/gm, '<p>$1</p>')
        // Limpar parágrafos vazios
        .replace(/<p><\/p>/g, '')
        .replace(/<p><br><\/p>/g, '');
}

document.getElementById('btn-gerar').addEventListener('click', gerarDossie);
document.getElementById('btn-regenerar').addEventListener('click', gerarDossie);
</script>
