Carlex22222 commited on
Commit
fd3f2aa
·
verified ·
1 Parent(s): 77305cb

Rename aduc_framework/engineers/deformes2D.py to aduc_framework/engineers/planner_2d.py

Browse files
aduc_framework/engineers/deformes2D.py DELETED
@@ -1,79 +0,0 @@
1
- # aduc_framework/engineers/deformes2D.py
2
- #
3
- # Copyright (C) August 4, 2025 Carlos Rodrigues dos Santos
4
- #
5
- # Versão 1.0.0 (High-Level Task Fragmenter)
6
-
7
- import logging
8
- from typing import List, Dict, Any
9
-
10
- logger = logging.getLogger(__name__)
11
-
12
- class Deformes2D:
13
- """
14
- O Deformes2D atua como o Engenheiro-Chefe da pré-produção.
15
- Sua responsabilidade é receber a demanda inicial e fragmentá-la em um
16
- plano de execução de alto nível para o Composer.
17
- Ele NÃO interage diretamente com o LLM.
18
- """
19
- def create_pre_production_plan(
20
- self,
21
- global_prompt: str,
22
- num_scenes: int,
23
- max_duration_per_act: float
24
- ) -> List[Dict[str, Any]]:
25
- """
26
- Cria a lista de tarefas estratégicas para a pré-produção.
27
- """
28
- logger.info("Deformes2D: Criando plano de execução de pré-produção...")
29
-
30
- # Este é o "Plano da Obra"
31
- execution_plan = [
32
- {
33
- "task_id": "PREPROD_01_CATALOG_ASSETS",
34
- "description": "Catalogar todos os assets visuais (cenários, personagens, objetos).",
35
- "inputs": {"global_prompt": global_prompt},
36
- "status": "pending"
37
- },
38
- {
39
- "task_id": "PREPROD_02_SCORE_ASSETS",
40
- "description": "Pontuar a relevância de cada asset para o contexto global.",
41
- "inputs": {"global_prompt": global_prompt},
42
- "depends_on": "PREPROD_01_CATALOG_ASSETS",
43
- "status": "pending"
44
- },
45
- {
46
- "task_id": "PREPROD_03_CREATE_SUMMARY",
47
- "description": "Criar um resumo narrativo da história.",
48
- "inputs": {"global_prompt": global_prompt, "num_scenes": num_scenes},
49
- "depends_on": "PREPROD_02_SCORE_ASSETS",
50
- "status": "pending"
51
- },
52
- {
53
- "task_id": "PREPROD_04_FRAGMENT_SCENES",
54
- "description": "Fragmentar o resumo da história em cenas principais.",
55
- "inputs": {"num_scenes": num_scenes},
56
- "depends_on": "PREPROD_03_CREATE_SUMMARY",
57
- "status": "pending"
58
- },
59
- {
60
- "task_id": "PREPROD_05_REVIEW_PLAN",
61
- "description": "Revisar o plano de cenas e fazer ajustes de coerência.",
62
- "inputs": {},
63
- "depends_on": "PREPROD_04_FRAGMENT_SCENES",
64
- "status": "pending"
65
- },
66
- {
67
- "task_id": "PREPROD_06_FRAGMENT_ACTS",
68
- "description": "Fragmentar cada cena em atos cinematográficos.",
69
- "inputs": {"max_duration_per_act": max_duration_per_act},
70
- "depends_on": "PREPROD_05_REVIEW_PLAN",
71
- "status": "pending"
72
- }
73
- ]
74
-
75
- logger.info(f"Deformes2D: Plano de execução com {len(execution_plan)} tarefas criado.")
76
- return execution_plan
77
-
78
- # Instância Singleton
79
- deformes_2d_singleton = Deformes2D()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aduc_framework/engineers/planner_2d.py ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # aduc_framework/engineers/planner_2d.py
2
+ #
3
+ # Copyright (C) August 4, 2025 Carlos Rodrigues dos Santos
4
+ #
5
+ # Versão 1.1.0 (Strategic Execution Planner)
6
+ #
7
+ # O Planner2D atua como o Engenheiro-Chefe ou Planejador Estratégico.
8
+ # Sua responsabilidade é receber a demanda de alto nível do Orquestrador
9
+ # e fragmentá-la em um plano de execução de tarefas sequenciais para o Composer.
10
+ # Ele NÃO interage com o LLM.
11
+
12
+ import logging
13
+ from typing import List, Dict, Any, Generator, Optional, Callable
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ class Planner2D:
18
+ """
19
+ O Planner2D cria o plano de trabalho estratégico (o `execution_plan`)
20
+ para a fase de pré-produção, que será executado pelo Composer.
21
+ """
22
+
23
+ def generate_execution_plan(
24
+ self,
25
+ global_prompt: str,
26
+ num_scenes: int,
27
+ max_duration_per_act: float,
28
+ callback: Optional[Callable] = None
29
+ ) -> Generator[Dict[str, Any], None, List[Dict[str, Any]]]:
30
+ """
31
+ Cria e emite o plano de execução para a pré-produção.
32
+
33
+ Args:
34
+ global_prompt (str): A ideia central do filme.
35
+ num_scenes (int): O número de cenas desejadas.
36
+ max_duration_per_act (float): A duração máxima para cada ato.
37
+ callback (Callable, optional): Callback para reportar progresso ao Maestro.
38
+
39
+ Yields:
40
+ Dict[str, Any]: Dicionários de atualização de status para a UI.
41
+
42
+ Returns:
43
+ List[Dict[str, Any]]: A lista final de tarefas do plano de execução.
44
+ """
45
+ message = "Planner2D: Criando plano de execução estratégico para a pré-produção..."
46
+ logger.info(message)
47
+ if callback:
48
+ # Informa o início do planejamento. Como é rápido, usamos progresso 0.0
49
+ callback(0.0, desc="Iniciando planejamento estratégico...")
50
+
51
+ # Emite um log inicial para a UI via Orquestrador
52
+ yield {"status": "planning", "progress": 0.0, "message": message}
53
+
54
+ # --- Definição do Plano de Execução Estratégico ---
55
+ # Esta é a "Planta da Obra", a sequência de tarefas que o Composer seguirá.
56
+ # Cada tarefa tem uma descrição clara para ser exibida na UI.
57
+ execution_plan = [
58
+ {
59
+ "task_id": "PREPROD_01_CATALOG_ASSETS",
60
+ "description": "Catalogando assets visuais (cenários, personagens, objetos)...",
61
+ "inputs": {"global_prompt": global_prompt},
62
+ "status": "pending"
63
+ },
64
+ {
65
+ "task_id": "PREPROD_02_SCORE_ASSETS",
66
+ "description": "Avaliando a relevância de cada asset para a história...",
67
+ "inputs": {"global_prompt": global_prompt},
68
+ "status": "pending"
69
+ },
70
+ {
71
+ "task_id": "PREPROD_03_CREATE_SUMMARY",
72
+ "description": "Criando o resumo do roteiro...",
73
+ "inputs": {"global_prompt": global_prompt, "num_scenes": num_scenes},
74
+ "status": "pending"
75
+ },
76
+ {
77
+ "task_id": "PREPROD_04_FRAGMENT_SCENES",
78
+ "description": "Dividindo a história em cenas principais...",
79
+ "inputs": {"num_scenes": num_scenes},
80
+ "status": "pending"
81
+ },
82
+ {
83
+ "task_id": "PREPROD_05_REVIEW_PLAN",
84
+ "description": "Revisando o plano de cenas para coerência...",
85
+ "inputs": {},
86
+ "status": "pending"
87
+ },
88
+ {
89
+ "task_id": "PREPROD_06_FRAGMENT_ACTS",
90
+ "description": "Dividindo cada cena em atos cinematográficos...",
91
+ "inputs": {"max_duration_per_act": max_duration_per_act},
92
+ "status": "pending"
93
+ }
94
+ ]
95
+
96
+ message = f"Planner2D: Plano de execução com {len(execution_plan)} tarefas criado."
97
+ logger.info(message)
98
+ if callback:
99
+ # Informa a conclusão do planejamento. Usamos um progresso pequeno (ex: 0.1)
100
+ # para indicar que esta fase terminou e a próxima, mais longa (Composer), vai começar.
101
+ callback(0.1, desc="Plano estratégico concluído. Iniciando execução...")
102
+
103
+ # Emite uma atualização final para a UI, incluindo o plano gerado
104
+ yield {"status": "planning_complete", "progress": 0.1, "message": message, "plan": execution_plan}
105
+
106
+ return execution_plan
107
+
108
+ # --- Instância Singleton ---
109
+ # A instância única do Planner2D para ser usada em todo o framework.
110
+ planner_2d_singleton = Planner2D()