CLO Agent - Documentação Completa
📋 Visão Geral
O CLO Agent (Chief Legal Officer / Diretor Jurídico) é um agente executivo do CSuite que protege compliance e questões jurídicas. Ele monitora status de compliance, identifica riscos legais, monitora mudanças regulatórias e analisa contratos.
Status: ✅ Implementado (v1.0.0) - Pronto para uso
🎯 Propósito
O CLO Agent existe para:
- Monitorar Compliance: Acompanhar status de compliance e conformidade legal
- Identificar Riscos: Detectar riscos legais e casos pendentes
- Monitorar Regulamentações: Acompanhar mudanças regulatórias relevantes
- Analisar Contratos: Avaliar contratos e termos
🏗️ Arquitetura
Fluxo de Execução
1. Recebe Payload
↓
2. Build Context
├─ Compliance Status (status de compliance)
├─ Legal Risks (riscos legais)
├─ Regulatory Changes (mudanças regulatórias)
├─ Contract Analysis (análise de contratos)
└─ Memory Query (precedentes jurídicos)
↓
3. Determine Decision Type
├─ CLO.ENSURE_COMPLIANCE (garantir compliance)
├─ CLO.MITIGATE_RISK (mitigar risco)
├─ CLO.REVIEW_CONTRACT (revisar contrato)
└─ CLO.UPDATE_POLICY (atualizar política)
↓
4. Calculate Confidence
↓
5. Propose Actions
├─ ENSURE_COMPLIANCE
├─ MITIGATE_RISK
├─ REVIEW_CONTRACT
└─ UPDATE_POLICY
↓
6. Policy Validation
↓
7. Policy Engine Integration
↓
8. Execute Actions
↓
9. Record Outcome
Componentes
- YAML Config:
agents/clo/clo_agent.yaml- Configuração canônica - Script Python:
workflows/scripts/clo_agent_daily_brief.py- Execução diária - Cron Setup:
workflows/scripts/setup_cron_clo.sh- Configuração de cron
🔌 Integrações
1. Policy Engine
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
POST /v1/policy/evaluate |
Avaliar decisão | Validação de políticas jurídicas |
GET /v1/governance/policies/radar |
Policy Radar | Políticas jurídicas e de compliance |
2. Executive API
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
GET /v1/cases |
Casos pendentes | Casos jurídicos e de compliance |
POST /v1/memory/query |
Consultar memória | Precedentes jurídicos |
3. Legal Systems (Opcional)
Base URL: Configurável via CSUITE_LEGAL_URL
| Endpoint | Descrição | Uso |
|---|---|---|
GET /api/contracts |
Contratos | Análise de contratos |
GET /api/regulatory |
Regulamentações | Mudanças regulatórias |
📥 Payload de Entrada
Formato Padrão
{
"org_id": 0,
"as_of_date": "2025-01-04",
"time_window_days": 30,
"focus": {
"themes": ["compliance_status", "legal_risks", "regulatory_changes", "contract_analysis"],
"constraints": []
},
"attention": {
"max_recommendations": 3,
"max_output_tokens": 1200
}
}
Campos
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
org_id |
integer | ✅ | ID da organização |
as_of_date |
string | ✅ | Data de referência (YYYY-MM-DD) |
time_window_days |
integer | ❌ | Janela de análise (padrão: 30) |
focus.themes |
array | ❌ | Temas de foco |
attention.max_recommendations |
integer | ❌ | Máximo de recomendações (padrão: 3) |
📤 Payload de Saída
Formato Padrão
{
"decision": {
"decision_type": "CLO.ENSURE_COMPLIANCE | CLO.MITIGATE_RISK | CLO.REVIEW_CONTRACT | CLO.UPDATE_POLICY",
"confidence": 0.85,
"proposed_actions": [
{
"action": "ENSURE_COMPLIANCE",
"reason": "Compliance abaixo do ideal",
"priority": "alta"
}
]
},
"context": {
"compliance_status": {
"summary": "Resumo de compliance",
"compliance_score": 0.90,
"active_policies": 10,
"pending_reviews": 2,
"compliance_indicators": []
},
"legal_risks": {
"summary": "Resumo de riscos legais",
"risk_level": "baixo | médio | alto",
"high_priority_cases": [],
"risk_indicators": []
},
"regulatory_changes": {
"summary": "Resumo de mudanças regulatórias",
"changes_identified": [],
"impact_assessment": []
},
"contract_analysis": {
"summary": "Resumo de análise de contratos",
"pending_reviews": 0,
"expiring_soon": [],
"contract_concerns": []
}
},
"execution": {
"status": "completed",
"actions": []
},
"opportunities": [
{
"type": "ENSURE_COMPLIANCE",
"description": "Garantir compliance identificado",
"impact": "alto | médio | baixo",
"confidence": 0.85,
"priority": "alta"
}
],
"recommendations": [
{
"action": "Revisar políticas de compliance",
"reason": "Compliance abaixo do ideal",
"priority": "alta",
"legal_impact": "alto"
}
],
"next_steps": [
"Revisar políticas",
"Mitigar riscos",
"Atualizar compliance"
],
"generated_at": "2025-01-04T09:10:00",
"org_id": 0,
"as_of_date": "2025-01-04"
}
🔄 Decision Types
CLO.ENSURE_COMPLIANCE
Descrição: Garantir compliance e conformidade legal
Condições:
- Compliance abaixo do ideal
- Políticas pendentes de revisão
- Oportunidade de melhoria
- Confidence >= 0.7
Ações:
- ENSURE_COMPLIANCE: Garantir compliance
- UPDATE_POLICY: Atualizar política (se necessário)
CLO.MITIGATE_RISK
Descrição: Mitigar risco legal identificado
Condições:
- Risco legal identificado
- Casos de alta prioridade
- Oportunidade de mitigação
- Confidence >= 0.8
Ações:
- MITIGATE_RISK: Mitigar risco
- REVIEW_CONTRACT: Revisar contrato (se necessário)
CLO.REVIEW_CONTRACT
Descrição: Revisar contrato ou termo
Condições:
- Contrato pendente de revisão
- Contrato expirando em breve
- Preocupações identificadas
- Confidence >= 0.7
Ações:
- REVIEW_CONTRACT: Revisar contrato
- ENSURE_COMPLIANCE: Garantir compliance (se necessário)
CLO.UPDATE_POLICY
Descrição: Atualizar política jurídica
Condições:
- Política desatualizada
- Mudança regulatória identificada
- Alinhamento necessário
- Confidence >= 0.9
Ações:
- UPDATE_POLICY: Atualizar política
- ENSURE_COMPLIANCE: Garantir compliance (se necessário)
🎛️ Autonomia
Níveis de Autonomia
| Nível | Descrição | Condição |
|---|---|---|
| L0 | Sempre recomendação | ENSURE_COMPLIANCE, REVIEW_CONTRACT, ou confidence < 0.7 |
| L1 | Mitigar risco automaticamente | MITIGATE_RISK e confidence >= 0.8 |
| L2 | Atualizar política automaticamente | UPDATE_POLICY e confidence >= 0.9 |
⚙️ Configuração
Variáveis de Ambiente
# LLM
OPENAI_API_KEY=sk-...
LLM_MODEL=gpt-4o-mini
# CSuite Services
CSUITE_POLICY_ENGINE_URL=https://csuite.internut.com.br/executive
CSUITE_EXECUTIVE_URL=https://csuite.internut.com.br/executive
CSUITE_MEMORY_URL=https://csuite.internut.com.br/executive
CSUITE_LEGAL_URL=https://csuite.internut.com.br/legal # Opcional
# Webhook
CLO_BRIEF_WEBHOOK_URL=https://hooks.slack.com/services/...
# Configuração
ORG_ID=0
TIME_WINDOW_DAYS=30
Cron Job
O CLO Agent executa diariamente às 09:10:
cd workflows/scripts
./setup_cron_clo.sh
Cron Entry:
10 9 * * * cd /path/to/workflows/scripts && /usr/bin/python3 clo_agent_daily_brief.py >> logs/clo_agent_cron.log 2>&1
🚀 Uso
Execução Manual
cd workflows/scripts
python3 clo_agent_daily_brief.py
Output
O brief é publicado no Slack e salvo em arquivo JSON:
clo_brief_YYYYMMDD_HHMMSS.json
Formato do Brief no Slack
O brief é formatado com:
- Header com status de compliance (🟢/🟡/🔴 baseado em compliance_score)
- Contexto jurídico
- Compliance (score)
- Riscos legais (nível)
- Oportunidades identificadas
- Recomendações prioritárias
- Próximos passos
🔍 Métricas Monitoradas
Compliance Status
- Compliance Score: Score de compliance (0.0 a 1.0)
- Active Policies: Número de políticas ativas
- Pending Reviews: Número de revisões pendentes
- Compliance Indicators: Indicadores de compliance
- Legal Policies Count: Número de políticas jurídicas
Legal Risks
- Total Legal Cases: Número total de casos jurídicos
- High Priority Cases: Número de casos de alta prioridade
- Risk Level: Nível de risco (baixo/médio/alto)
- Risk Indicators: Indicadores de risco
Regulatory Changes
- Changes Identified: Mudanças regulatórias identificadas
- Impact Assessment: Avaliação de impacto
Contract Analysis
- Pending Reviews: Número de contratos pendentes de revisão
- Expiring Soon: Contratos expirando em breve
- Contract Concerns: Preocupações com contratos
🛠️ Troubleshooting
Erro: "OPENAI_API_KEY não configurada"
Solução: Configure a variável de ambiente OPENAI_API_KEY ou LLM_API_KEY.
Erro: "Executive API retornou 404"
Solução: Verifique se o csuite-executive está rodando e acessível.
Erro: "Dados limitados de compliance"
Solução: Integre com sistemas jurídicos externos via CSUITE_LEGAL_URL para dados completos.
Brief não publicado no Slack
Solução:
1. Verifique se CLO_BRIEF_WEBHOOK_URL está configurada
2. Verifique se o webhook do Slack está válido
3. Verifique logs em clo_agent.log
📚 Referências
- YAML Config:
agents/clo/clo_agent.yaml - Script Python:
workflows/scripts/clo_agent_daily_brief.py - README:
agents/clo/README.md - Executive API:
csuite-executive/README.md
Última atualização: 2025-01-04