Carlex22 commited on
Commit
5d454d5
·
1 Parent(s): 468ae14

Revert "ParaAIV3.1"

Browse files

This reverts commit ed5f314ca908762149bdd74b25b09c94f5f0183f.

config/pipeline_config.yaml CHANGED
@@ -59,4 +59,4 @@ global_config:
59
  batch_size: 50
60
  enable_retry: true
61
  max_retries: 3
62
- retry_delay: 2
 
59
  batch_size: 50
60
  enable_retry: true
61
  max_retries: 3
62
+ retry_delay: 2
core/__init__.py CHANGED
@@ -4,15 +4,15 @@ Core Module - Componentes principais da pipeline V13.6
4
  """
5
 
6
  from .orchestrator import PipelineOrchestrator
 
7
  from .context_builder import ContextBuilder
8
  from .validator import SchemaValidator
9
- from .specialist_wrapper import SpecialistWrapper
10
 
11
  __all__ = [
12
  'PipelineOrchestrator',
 
13
  'ContextBuilder',
14
- 'SchemaValidator',
15
- 'SpecialistWrapper'
16
  ]
17
 
18
  __version__ = "13.6.0"
 
4
  """
5
 
6
  from .orchestrator import PipelineOrchestrator
7
+ from .base_specialist import BaseSpecialist
8
  from .context_builder import ContextBuilder
9
  from .validator import SchemaValidator
 
10
 
11
  __all__ = [
12
  'PipelineOrchestrator',
13
+ 'BaseSpecialist',
14
  'ContextBuilder',
15
+ 'SchemaValidator'
 
16
  ]
17
 
18
  __version__ = "13.6.0"
core/specialist_wrapper.py DELETED
@@ -1,71 +0,0 @@
1
- ##PARA.AI/core/specialist_wrapper.py
2
- """
3
- Specialist Wrapper - Adaptador de compatibilidade V13.1 → V13.6
4
- Permite que ProcessorBase antigo funcione com novo PipelineOrchestrator
5
- """
6
- import logging
7
- from typing import Dict, Any, Optional
8
-
9
- logger = logging.getLogger(__name__)
10
-
11
-
12
- class SpecialistWrapper:
13
- """
14
- Wrapper para adaptar ProcessorBase V13.1 ao novo formato V13.6
15
-
16
- PROBLEMA:
17
- - V13.1: processor.process(acordao_data)
18
- - V13.6: specialist.process(input_data=..., context=...)
19
-
20
- SOLUÇÃO:
21
- - Wrapper adapta a chamada mantendo compatibilidade
22
- """
23
-
24
- def __init__(self, processor_v13_1, specialist_id: int):
25
- """
26
- Args:
27
- processor_v13_1: Instância de ProcessorBase (V13.1)
28
- specialist_id: ID do especialista (1-7)
29
- """
30
- self.processor = processor_v13_1
31
- self.id = specialist_id
32
- self.name = processor_v13_1.__class__.__name__
33
-
34
- logger.info(f"🔄 SpecialistWrapper criado para {self.name} (ID {self.id})")
35
-
36
- async def process(
37
- self,
38
- input_data: Dict[str, Any],
39
- context: Optional[Dict[str, Any]] = None
40
- ) -> Dict[str, Any]:
41
- """
42
- Adapta chamada V13.6 → V13.1
43
-
44
- Args:
45
- input_data: Dados do acórdão (formato V13.6)
46
- context: Contexto de especialistas anteriores (IGNORADO no V13.1)
47
-
48
- Returns:
49
- Resultado do processador V13.1
50
- """
51
- logger.debug(f"🔄 Wrapper adaptando chamada para {self.name}")
52
-
53
- # ADAPTAÇÃO: V13.1 espera apenas acordao_data como argumento posicional
54
- try:
55
- # Chamar processor.process() com assinatura V13.1
56
- result = await self.processor.process(input_data)
57
-
58
- # Processar resultado
59
- if result:
60
- logger.debug(f"✅ {self.name} retornou resultado")
61
- return result
62
- else:
63
- logger.warning(f"⚠️ {self.name} retornou None")
64
- return {}
65
-
66
- except Exception as e:
67
- logger.error(f"❌ Erro no wrapper de {self.name}: {e}")
68
- return {}
69
-
70
- def __repr__(self):
71
- return f"SpecialistWrapper({self.name}, ID={self.id})"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
processors/processor_manager.py CHANGED
@@ -1,7 +1,7 @@
1
  ##PARA.AI/processors/processor_manager.py
2
  """
3
  Processor Manager - REFATORADO para usar PipelineOrchestrator V13.6
4
- MUDANÇA: Usa SpecialistWrapper para compatibilidade com ProcessorBase V13.1
5
  """
6
  import logging
7
  import yaml
@@ -9,9 +9,8 @@ from typing import Dict, Any, List, Optional
9
 
10
  from core.orchestrator import PipelineOrchestrator
11
  from core.validator import SchemaValidator
12
- from core.specialist_wrapper import SpecialistWrapper
13
 
14
- # Importar processadores V13.1 (serão refatorados na FASE 2)
15
  from processors.processor_metadados import ProcessorMetadados
16
  from processors.processor_segmentacao import ProcessorSegmentacao
17
  from processors.processor_relatorio import ProcessorRelatorio
@@ -26,11 +25,11 @@ logger = logging.getLogger(__name__)
26
  class ProcessorManager:
27
  """
28
  Gerenciador de processadores - WRAPPER para PipelineOrchestrator
29
-
30
  MUDANÇA V13.6:
31
- - Delega para PipelineOrchestrator
32
- - Usa SpecialistWrapper para adaptar ProcessorBase V13.1
33
- - Mantém compatibilidade total com código existente
34
  """
35
 
36
  def __init__(self, llm_manager, max_workers: int = 3):
@@ -43,17 +42,11 @@ class ProcessorManager:
43
  self.max_workers = max_workers
44
 
45
  # Carregar configuração da pipeline
46
- try:
47
- with open('config/pipeline_config.yaml', 'r', encoding='utf-8') as f:
48
- self.pipeline_config = yaml.safe_load(f)
49
- except FileNotFoundError:
50
- # Fallback: usar config padrão se arquivo não existir
51
- logger.warning("⚠️ config/pipeline_config.yaml não encontrado, usando config padrão")
52
- self.pipeline_config = self._get_default_config()
53
 
54
- # Inicializar processadores V13.1
55
- logger.info("🔄 Inicializando processadores V13.1...")
56
- processor_instances = {
57
  1: ProcessorSegmentacao(llm_manager), # Segmentador
58
  2: ProcessorMetadados(llm_manager), # Metadados
59
  3: ProcessorContexto(llm_manager), # Classificador (renomear depois)
@@ -63,11 +56,6 @@ class ProcessorManager:
63
  7: ProcessorArquivo(llm_manager), # Arquivista
64
  }
65
 
66
- # Envolver cada processador em SpecialistWrapper
67
- self.specialists = {}
68
- for spec_id, processor in processor_instances.items():
69
- self.specialists[spec_id] = SpecialistWrapper(processor, spec_id)
70
-
71
  # Inicializar orquestrador V13.6
72
  self.orchestrator = PipelineOrchestrator(
73
  config=self.pipeline_config,
@@ -76,27 +64,9 @@ class ProcessorManager:
76
  )
77
 
78
  logger.info(
79
- f"✅ ProcessorManager V13.6: {len(self.specialists)} especialistas "
80
- f"com SpecialistWrapper (compatibilidade V13.1)"
81
  )
82
 
83
- def _get_default_config(self) -> Dict[str, Any]:
84
- """Retorna configuração padrão caso YAML não exista"""
85
- return {
86
- 'pipeline': {
87
- 'name': 'Para.AI V13.6 Pipeline',
88
- 'version': 'v13.6',
89
- 'phases': [
90
- {'id': 1, 'name': 'Segmentação', 'parallel': False, 'specialists': [1], 'depends_on': []},
91
- {'id': 2, 'name': 'Metadados', 'parallel': False, 'specialists': [2], 'depends_on': [1]},
92
- {'id': 3, 'name': 'Classificação', 'parallel': False, 'specialists': [3], 'depends_on': [2]},
93
- {'id': 4, 'name': 'Tripartite', 'parallel': True, 'specialists': [4, 5, 6], 'depends_on': [1, 2, 3]},
94
- {'id': 5, 'name': 'Arquivista', 'parallel': False, 'specialists': [7], 'depends_on': [4]},
95
- {'id': 6, 'name': 'Validação', 'parallel': False, 'specialists': [], 'depends_on': [5]},
96
- ]
97
- }
98
- }
99
-
100
  async def process_acordao_sequential(
101
  self,
102
  acordao_data: Dict[str, Any],
@@ -104,24 +74,19 @@ class ProcessorManager:
104
  ) -> Dict[str, Any]:
105
  """
106
  Processa acórdão sequencialmente (compatibilidade V13.1)
107
-
108
- Args:
109
- acordao_data: Dados do acórdão
110
- specialist_ids: IDs dos especialistas (None = todos)
111
-
112
- Returns:
113
- Resultado completo da pipeline
114
  """
115
- logger.info("🔄 process_acordao_sequential() → PipelineOrchestrator")
116
-
117
- # Determinar fases a executar
118
  if specialist_ids:
119
  fase_inicial = min(specialist_ids)
120
  fase_final = max(specialist_ids)
121
  else:
122
  fase_inicial = 1
123
  fase_final = 6
124
-
125
  return await self.orchestrator.process_acordao(
126
  acordao_bruto=acordao_data,
127
  fase_inicial=fase_inicial,
@@ -135,41 +100,17 @@ class ProcessorManager:
135
  ) -> Dict[str, Any]:
136
  """
137
  Processa acórdão em paralelo (compatibilidade V13.1)
138
-
139
- NOTA: Paralelismo é controlado por fase no V13.6 (FASE 4)
140
  """
141
- logger.info("🔄 process_acordao_parallel() → PipelineOrchestrator")
142
-
143
  return await self.orchestrator.process_acordao(
144
  acordao_bruto=acordao_data,
145
  fase_inicial=1,
146
  fase_final=6
147
  )
148
 
149
- async def process_acordao_batch(
150
- self,
151
- acordaos_data: List[Dict[str, Any]],
152
- specialist_ids: Optional[List[int]] = None
153
- ) -> List[Dict[str, Any]]:
154
- """
155
- Processa múltiplos acórdãos em batch (compatibilidade V13.1)
156
-
157
- Args:
158
- acordaos_data: Lista de acórdãos
159
- specialist_ids: IDs dos especialistas (None = todos)
160
-
161
- Returns:
162
- Lista de resultados
163
- """
164
- logger.info(f"🔄 process_acordao_batch() com {len(acordaos_data)} acórdãos")
165
-
166
- results = []
167
- for acordao in acordaos_data:
168
- result = await self.process_acordao_sequential(acordao, specialist_ids)
169
- results.append(result)
170
-
171
- return results
172
-
173
  def get_processor(self, specialist_id: int):
174
  """Retorna especialista específico (compatibilidade V13.1)"""
175
  return self.specialists.get(specialist_id)
@@ -180,4 +121,4 @@ class ProcessorManager:
180
 
181
  def get_processors_info(self) -> Dict[str, Any]:
182
  """Retorna informações sobre todos os especialistas"""
183
- return self.orchestrator.get_pipeline_status()
 
1
  ##PARA.AI/processors/processor_manager.py
2
  """
3
  Processor Manager - REFATORADO para usar PipelineOrchestrator V13.6
4
+ MUDANÇA: Este arquivo agora é apenas um wrapper para manter compatibilidade
5
  """
6
  import logging
7
  import yaml
 
9
 
10
  from core.orchestrator import PipelineOrchestrator
11
  from core.validator import SchemaValidator
 
12
 
13
+ # Importar especialistas (mantidos do V13.1, serão refatorados na FASE 2)
14
  from processors.processor_metadados import ProcessorMetadados
15
  from processors.processor_segmentacao import ProcessorSegmentacao
16
  from processors.processor_relatorio import ProcessorRelatorio
 
25
  class ProcessorManager:
26
  """
27
  Gerenciador de processadores - WRAPPER para PipelineOrchestrator
28
+
29
  MUDANÇA V13.6:
30
+ - Este arquivo agora delega para PipelineOrchestrator
31
+ - Mantém compatibilidade com código existente
32
+ - Especialistas serão migrados gradualmente para novo formato
33
  """
34
 
35
  def __init__(self, llm_manager, max_workers: int = 3):
 
42
  self.max_workers = max_workers
43
 
44
  # Carregar configuração da pipeline
45
+ with open('config/pipeline_config.yaml', 'r', encoding='utf-8') as f:
46
+ self.pipeline_config = yaml.safe_load(f)
 
 
 
 
 
47
 
48
+ # Inicializar especialistas (mapeamento temporário V13.1 → V13.6)
49
+ self.specialists = {
 
50
  1: ProcessorSegmentacao(llm_manager), # Segmentador
51
  2: ProcessorMetadados(llm_manager), # Metadados
52
  3: ProcessorContexto(llm_manager), # Classificador (renomear depois)
 
56
  7: ProcessorArquivo(llm_manager), # Arquivista
57
  }
58
 
 
 
 
 
 
59
  # Inicializar orquestrador V13.6
60
  self.orchestrator = PipelineOrchestrator(
61
  config=self.pipeline_config,
 
64
  )
65
 
66
  logger.info(
67
+ f"✅ ProcessorManager V13.6: Orquestração refatorada com {len(self.specialists)} especialistas"
 
68
  )
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  async def process_acordao_sequential(
71
  self,
72
  acordao_data: Dict[str, Any],
 
74
  ) -> Dict[str, Any]:
75
  """
76
  Processa acórdão sequencialmente (compatibilidade V13.1)
77
+
78
+ MUDANÇA: Delega para PipelineOrchestrator
 
 
 
 
 
79
  """
80
+ logger.info("🔄 process_acordao_sequential() → delegando para PipelineOrchestrator")
81
+
82
+ # Se specialist_ids fornecido, processar apenas fases específicas
83
  if specialist_ids:
84
  fase_inicial = min(specialist_ids)
85
  fase_final = max(specialist_ids)
86
  else:
87
  fase_inicial = 1
88
  fase_final = 6
89
+
90
  return await self.orchestrator.process_acordao(
91
  acordao_bruto=acordao_data,
92
  fase_inicial=fase_inicial,
 
100
  ) -> Dict[str, Any]:
101
  """
102
  Processa acórdão em paralelo (compatibilidade V13.1)
103
+
104
+ MUDANÇA: Paralelo é controlado por fase no V13.6
105
  """
106
+ logger.info("🔄 process_acordao_parallel() → delegando para PipelineOrchestrator")
107
+
108
  return await self.orchestrator.process_acordao(
109
  acordao_bruto=acordao_data,
110
  fase_inicial=1,
111
  fase_final=6
112
  )
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  def get_processor(self, specialist_id: int):
115
  """Retorna especialista específico (compatibilidade V13.1)"""
116
  return self.specialists.get(specialist_id)
 
121
 
122
  def get_processors_info(self) -> Dict[str, Any]:
123
  """Retorna informações sobre todos os especialistas"""
124
+ return self.orchestrator.get_pipeline_status()