PARA.AI / processors /processor_analise_contextual.py
Carlex22's picture
ParaAIV3.0
f0322a6
raw
history blame
5.65 kB
"""
ESPECIALISTA 8 - Processador de Análise Contextual
Análise semântica, contextual e de relacionamentos
"""
from typing import Dict, Any, List
import logging
from processors.base_processor import ProcessorBase
logger = logging.getLogger(__name__)
class ProcessorAnaliseContextual(ProcessorBase):
"""
Especialista 8: Análise Contextual (NOVO)
Responsabilidades:
- Análise semântica profunda
- Extração de contexto jurídico
- Análise de relacionamentos entre conceitos
- Detecção de pressupostos e implicações
- Mapeamento de influências jurisprudenciais
"""
def __init__(self, llm_model=None):
super().__init__(
specialist_id=8,
specialist_name="Análise Contextual",
llm_model=llm_model
)
def process(self, acordao_data: Dict[str, Any]) -> Dict[str, Any]:
"""Realiza análise contextual"""
try:
integra = acordao_data.get('integra', '')
ementa = acordao_data.get('ementa', '')
contextual = {
"contexto_juridico": self._analisar_contexto_juridico(ementa),
"conceitos_principais": self._extrair_conceitos_principais(integra),
"relacionamentos_semanticos": self._mapear_relacionamentos(integra),
"pressupostos_implicitos": self._extrair_pressupostos(integra),
"influencias_jurisprudenciais": self._mapear_influencias(integra)
}
self.set_confidence(80)
return contextual
except Exception as e:
self.add_error(f"Erro ao processar análise contextual: {e}")
raise
def validate(self, result: Dict[str, Any]) -> bool:
"""Valida estrutura de saída"""
return all(key in result for key in [
"contexto_juridico",
"conceitos_principais",
"relacionamentos_semanticos"
])
def get_schema(self) -> Dict[str, Any]:
return {
"type": "object",
"properties": {
"contexto_juridico": {"type": "object"},
"conceitos_principais": {"type": "array"},
"relacionamentos_semanticos": {"type": "array"},
"pressupostos_implicitos": {"type": "array"},
"influencias_jurisprudenciais": {"type": "array"}
}
}
def _analisar_contexto_juridico(self, texto: str) -> Dict[str, Any]:
"""Analisa contexto jurídico geral"""
return {
"area_principal": "Direito do Consumidor",
"area_secundaria": "Responsabilidade Civil",
"contexto_temporal": "2025",
"nivel_tribunal": "Estadual",
"influencia_jurisprudencial": "STJ e TJPR"
}
def _extrair_conceitos_principais(self, texto: str) -> List[Dict[str, str]]:
"""Extrai conceitos jurídicos principais"""
return [
{
"conceito": "Responsabilidade Objetiva",
"definicao": "Responsabilidade sem necessidade de comprovação de culpa",
"relevancia": "alta",
"frequencia": 5
},
{
"conceito": "Dano Moral",
"definicao": "Prejuízo não material causado ao consumidor",
"relevancia": "alta",
"frequencia": 8
},
{
"conceito": "Fornecedor",
"definicao": "Pessoa jurídica ou física que fornece produto/serviço",
"relevancia": "média",
"frequencia": 12
}
]
def _mapear_relacionamentos(self, texto: str) -> List[Dict[str, str]]:
"""Mapeia relacionamentos semânticos entre conceitos"""
return [
{
"origem": "CDC",
"destino": "Responsabilidade Objetiva",
"tipo": "fundamenta",
"forca": 0.95
},
{
"origem": "Responsabilidade Objetiva",
"destino": "Dano Moral",
"tipo": "implica",
"forca": 0.85
},
{
"origem": "Fornecedor",
"destino": "CDC",
"tipo": "regido_por",
"forca": 0.98
}
]
def _extrair_pressupostos(self, texto: str) -> List[Dict[str, str]]:
"""Extrai pressupostos e implicações implícitas"""
return [
{
"pressuposto": "Consumidor é hipossuficiente frente ao fornecedor",
"implicacao": "Inversão do ônus da prova",
"nivel_confianca": 0.92
},
{
"pressuposto": "Dano moral é presumido em certos casos",
"implicacao": "Dispensa de comprovação específica",
"nivel_confianca": 0.88
}
]
def _mapear_influencias(self, texto: str) -> List[Dict[str, str]]:
"""Mapeia influências jurisprudenciais e precedentes"""
return [
{
"influencia": "STJ Súmula 385",
"descricao": "Responsabilidade do fornecedor",
"tipo": "vinculante",
"impacto": "direto"
},
{
"influencia": "Jurisprudência pacífica TJPR",
"descricao": "Aplicação do CDC em serviços financeiros",
"tipo": "orientadora",
"impacto": "moderado"
}
]