worker-automate-hub 0.4.447__py3-none-any.whl → 0.4.449__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,7 +24,7 @@ async def get_new_task(stop_event: threading.Event) -> RpaProcessoEntradaDTO:
24
24
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
25
25
  data = await get_new_task_info()
26
26
 
27
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
27
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
28
28
  async with session.post(
29
29
  f"{env_config["API_BASE_URL"]}/robo/new-job",
30
30
  data=data,
@@ -53,7 +53,7 @@ async def notify_is_alive(stop_event: threading.Event):
53
53
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
54
54
  data = await get_system_info()
55
55
 
56
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
56
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
57
57
  async with session.put(
58
58
  f"{env_config["API_BASE_URL"]}/robo/last-alive",
59
59
  data=data,
@@ -89,7 +89,7 @@ async def get_historico_by_processo_identificador(identificador, process_name):
89
89
  }
90
90
 
91
91
  try:
92
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
92
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
93
93
  async with session.post(
94
94
  f"{env_config['API_BASE_URL']}/historico/by-identificador",
95
95
  headers=headers_basic,
@@ -131,7 +131,7 @@ async def get_processo(uuidProcesso: str) -> RpaProcesso:
131
131
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
132
132
 
133
133
 
134
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
134
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
135
135
  async with session.get(
136
136
  f"{env_config["API_BASE_URL"]}/processo/{uuidProcesso}",
137
137
  headers=headers_basic,
@@ -164,7 +164,7 @@ async def get_workers():
164
164
 
165
165
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
166
166
 
167
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
167
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
168
168
  async with session.get(
169
169
  f"{env_config["API_BASE_URL"]}/robo/workers",
170
170
  headers=headers_basic,
@@ -207,7 +207,7 @@ async def get_config_by_name(name: str) -> RpaConfiguracao:
207
207
  try:
208
208
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
209
209
 
210
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
210
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
211
211
  async with session.get(
212
212
  f"{env_config["API_BASE_URL"]}/configuracao/api/{name}",
213
213
  headers=headers_basic,
@@ -297,7 +297,7 @@ async def send_gchat_message(message: str) -> None:
297
297
  try:
298
298
  headers_basic = {"Authorization": f"Basic {env_config['API_AUTHORIZATION']}"}
299
299
 
300
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
300
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
301
301
  async with session.post(
302
302
  f"{env_config['API_BASE_URL']}/google-chat",
303
303
  data={"message": message},
@@ -376,7 +376,7 @@ async def get_index_modelo_emsys(filial: str, descricao_documento: str):
376
376
 
377
377
  try:
378
378
  async with aiohttp.ClientSession(
379
- connector=aiohttp.TCPConnector(verify_ssl=False)
379
+ connector=aiohttp.TCPConnector(verify_ssl=True)
380
380
  ) as session:
381
381
  async with session.post(f"{env_config['API_BASE_URL']}/emsys/buscar-index-documento-fiscal", data=body,
382
382
  headers=headers_basic) as response:
@@ -420,7 +420,7 @@ async def get_status_nf_emsys(chave: int):
420
420
 
421
421
  try:
422
422
  async with aiohttp.ClientSession(
423
- connector=aiohttp.TCPConnector(verify_ssl=False)
423
+ connector=aiohttp.TCPConnector(verify_ssl=True)
424
424
  ) as session:
425
425
  async with session.get(url, headers=headers_basic) as response:
426
426
  if response.status != 200:
@@ -14,7 +14,7 @@ async def burn_queue(id_fila: str):
14
14
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
15
15
 
16
16
 
17
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
17
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
18
18
  async with session.delete(
19
19
  f"{env_config["API_BASE_URL"]}/fila/burn-queue/{id_fila}",
20
20
  headers=headers_basic,
@@ -41,7 +41,7 @@ async def unlock_queue(id: str):
41
41
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
42
42
 
43
43
 
44
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
44
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
45
45
  async with session.get(
46
46
  f"{env_config["API_BASE_URL"]}/fila/unlock-queue/{id}",
47
47
  headers=headers_basic,
@@ -36,7 +36,7 @@ async def store(data: RpaHistoricoRequestDTO) -> dict:
36
36
  }
37
37
  try:
38
38
  async with aiohttp.ClientSession(
39
- connector=aiohttp.TCPConnector(verify_ssl=False)
39
+ connector=aiohttp.TCPConnector(verify_ssl=True)
40
40
  ) as session:
41
41
  payload = data.model_dump_json()
42
42
 
@@ -86,7 +86,7 @@ async def update(data: RpaHistoricoRequestDTO) -> dict:
86
86
  raise TypeError("Parâmetro data deve ser do tipo RpaHistoricoRequestDTO")
87
87
  try:
88
88
  async with aiohttp.ClientSession(
89
- connector=aiohttp.TCPConnector(verify_ssl=False)
89
+ connector=aiohttp.TCPConnector(verify_ssl=True)
90
90
  ) as session:
91
91
  if not data.uuidHistorico:
92
92
  raise ValueError("Parâmetro uuidHistorico deve ser informado")
@@ -3,6 +3,7 @@ import platform
3
3
  import subprocess
4
4
  import socket
5
5
  import pyautogui
6
+ import os
6
7
  import pygetwindow as gw
7
8
  from rich.console import Console
8
9
  import pygetwindow as gw
@@ -55,16 +56,10 @@ class RDPConnection:
55
56
  return ping_alcancado and porta_aberta
56
57
 
57
58
  async def clicar_no_titulo(self):
58
- """
59
- Função para clicar no título das janelas de Conexão de Área de Trabalho Remota
60
- com o botão direito do mouse e executar comandos.
61
- """
62
59
  janelas_rdp = [
63
60
  win
64
61
  for win in gw.getAllTitles()
65
- if "Ligação ao Ambiente de Trabalho Remoto" in win
66
- or "Remote Desktop Connection" in win
67
- or "Conexão de Área de Trabalho Remota" in win
62
+ if self.ip in win
68
63
  ]
69
64
 
70
65
  for titulo in janelas_rdp:
@@ -74,88 +69,98 @@ class RDPConnection:
74
69
  continue
75
70
 
76
71
  console.print(f"Processando janela: {titulo}")
77
-
78
- # Obtém as coordenadas da janela
79
72
  x, y = janela.left, janela.top
80
73
 
81
74
  try:
82
- # Move o mouse para o título da janela e clica com o botão direito
83
- pyautogui.moveTo(x + 10, y + 10) # Ajuste para alinhar ao título da janela
84
- pyautogui.click(button="right")
85
-
86
- await worker_sleep(5)
87
- pyautogui.press("down", presses=7, interval=0.1)
88
- await worker_sleep(5)
75
+ pyautogui.moveTo(x + 2, y + 2)
76
+ pyautogui.hotkey("alt", "space")
77
+ await worker_sleep(2)
78
+ pyautogui.press("down", presses=6, interval=0.1)
79
+ await worker_sleep(2)
89
80
  pyautogui.hotkey("enter")
90
- await worker_sleep(5)
81
+ await worker_sleep(2)
91
82
  pyautogui.hotkey("enter")
92
83
  break
93
84
 
94
85
  except Exception as e:
95
86
  console.print(f"Erro ao interagir com a janela {titulo}: {e}")
96
-
87
+
88
+ async def open_rdp(self):
89
+ base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
90
+ rdp_file_path = os.path.join(base_path, "connection.rdp")
91
+ os.makedirs(base_path, exist_ok=True)
92
+
93
+ rdp_content = f"""screen mode id:i:1
94
+ desktopwidth:i:1920
95
+ desktopheight:i:1080
96
+ use multimon:i:0
97
+ session bpp:i:32
98
+ compression:i:1
99
+ keyboardhook:i:2
100
+ displayconnectionbar:i:1
101
+ disable wallpaper:i:0
102
+ allow font smoothing:i:1
103
+ allow desktop composition:i:1
104
+ disable full window drag:i:0
105
+ disable menu anims:i:0
106
+ disable themes:i:0
107
+ disable cursor setting:i:0
108
+ bitmapcachepersistenable:i:1
109
+ full address:s:{self.ip}
110
+ username:s:{self.user}
111
+ winposstr:s:0,1,{(1920 // 4)},{(1080 // 4)},{(1920 // 4) + (1920 // 2)},{(1080 // 4) + (1080 // 2)}
112
+ """
113
+
114
+ try:
115
+ with open(rdp_file_path, "w") as file:
116
+ file.write(rdp_content)
117
+ print(f"Arquivo RDP criado: {rdp_file_path}")
118
+ except Exception as error:
119
+ print(f"Erro ao montar o arquivo RDP: {error}")
120
+ return
121
+
122
+ try:
123
+ subprocess.Popen(["mstsc", rdp_file_path], close_fds=True, start_new_session=True)
124
+ console.print("Conexão RDP iniciada.")
125
+ except Exception as error:
126
+ console.print(f"Erro ao abrir a conexão RDP: {error}")
127
+
97
128
  async def conectar(self):
98
129
  console.print(f"Iniciando cliente RDP para {self.ip}")
99
130
  try:
100
- pyautogui.hotkey("win", "d")
101
- await worker_sleep(5) # Tempo para garantir que todas as janelas sejam minimizadas
102
- console.print("Todas as janelas minimizadas com sucesso.")
103
-
104
- subprocess.Popen(["mstsc", f"/v:{self.ip}"], close_fds=True, start_new_session=True)
105
- await worker_sleep(10) # Tempo aumentado para garantir abertura
106
-
107
- console.print("Procurando janela 'Ligação ao ambiente de trabalho remoto'")
108
- try:
109
- windows = gw.getWindowsWithTitle("Ligação ao ambiente de trabalho remoto")
110
- except:
111
- windows = gw.getWindowsWithTitle("Conexão de Área de Trabalho Remota")
112
-
113
- if not windows:
114
- logger.warning("Tentando encontrar janela com título em inglês 'Remote Desktop Connection'")
115
- windows = gw.getWindowsWithTitle("Remote Desktop Connection")
116
-
117
- if not windows:
118
- logger.error("Janela de RDP não encontrada.")
119
- return False
120
-
121
- rdp_window = windows[0]
122
- console.print(f"Janela '{rdp_window.title}' encontrada. Focando na janela.")
123
-
124
- # Restaurar janela se estiver minimizada
125
- if rdp_window.isMinimized:
126
- rdp_window.restore()
127
- await worker_sleep(5)
128
-
129
- # Redimensionar para 50% da tela
130
- screen_width, screen_height = pyautogui.size()
131
- new_width = screen_width // 2
132
- new_height = screen_height // 2
133
- rdp_window.resizeTo(new_width, new_height)
134
- rdp_window.moveTo(screen_width // 4, screen_height // 4)
135
- console.print(f"Janela redimensionada para {new_width}x{new_height}.")
136
-
137
- rdp_window.activate()
138
- await worker_sleep(5) # Tempo extra para garantir que a janela está ativa
139
-
140
- # Clique para garantir o foco
141
- pyautogui.click(rdp_window.left + 50, rdp_window.top + 50)
142
131
  await worker_sleep(3)
132
+ await self.open_rdp()
133
+ await worker_sleep(5)
143
134
 
144
- # Inserir credenciais
145
-
135
+ console.print("Procurando janela RDP")
146
136
  try:
147
- app = Application(backend="uia").connect(title="Segurança do Windows")
148
- dialog = app.window(title="Segurança do Windows")
149
-
150
- edit_field = dialog.child_window(auto_id="EditField_1", control_type="Edit")
151
-
152
- if edit_field.exists():
153
- console.print("Inserindo usuário.")
154
- pyautogui.write(self.user, interval=0.1)
155
- pyautogui.press("tab")
156
- await worker_sleep(5)
157
- except:
158
- pass
137
+ possible_titles = ["Conexão de Área de Trabalho Remota", "Ligação ao ambiente de trabalho remoto"]
138
+ app = None
139
+ app_window = None
140
+
141
+ for title in possible_titles:
142
+ try:
143
+ app = Application(backend="uia").connect(title=title)
144
+ app_window = app.window(title=title)
145
+ console.print(f"Janela encontrada: {title}")
146
+ break
147
+ except Exception:
148
+ continue
149
+
150
+ if not app or not app_window:
151
+ raise Exception("Nenhuma janela com título correspondente foi encontrada.")
152
+
153
+ app_window.set_focus()
154
+ console.print("Janela RDP ativada.")
155
+
156
+ pyautogui.press("left")
157
+ await worker_sleep(1)
158
+ pyautogui.hotkey("enter")
159
+ await worker_sleep(3)
160
+
161
+ except Exception as e:
162
+ console.print(f"Erro ao ativar a janela RDP: {e}", style="bold red")
163
+
159
164
 
160
165
  console.print("Inserindo senha.")
161
166
  pyautogui.write(self.password, interval=0.1)
@@ -165,9 +170,18 @@ class RDPConnection:
165
170
  await worker_sleep(5)
166
171
  pyautogui.press("enter")
167
172
  console.print("Credenciais inseridas.")
168
- await worker_sleep(5) # Tempo para conexão ser concluída
173
+ await worker_sleep(5)
169
174
 
170
175
  console.print("Conexão RDP ativa. Mantendo o script em execução.")
176
+
177
+ try:
178
+ base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
179
+ rdp_file_path = os.path.join(base_path, "connection.rdp")
180
+ if os.path.exists(rdp_file_path):
181
+ os.remove(rdp_file_path)
182
+ except Exception as error:
183
+ console.print(f"Erro ao deletar arquivo 'connection.rdp'. Error: {error}")
184
+
171
185
  return True
172
186
  except Exception as e:
173
187
  logger.error(f"Erro ao tentar conectar via RDP: {e}")
@@ -191,7 +205,6 @@ async def conexao_rdp(task: RpaProcessoRdpDTO) -> RpaRetornoProcessoDTO:
191
205
 
192
206
  await rdp.clicar_no_titulo()
193
207
 
194
- # Mantém o script ativo para manter a conexão RDP aberta
195
208
  return RpaRetornoProcessoDTO(
196
209
  sucesso=True,
197
210
  retorno="Conexão RDP estabelecida com sucesso.",
@@ -650,7 +650,7 @@ async def api_simplifica(
650
650
 
651
651
  try:
652
652
  async with aiohttp.ClientSession(
653
- connector=aiohttp.TCPConnector(verify_ssl=False)
653
+ connector=aiohttp.TCPConnector(verify_ssl=True)
654
654
  ) as session:
655
655
  async with session.post(f"{urlSimplifica}", data=data) as response:
656
656
  if response.status != 200:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.447
3
+ Version: 0.4.449
4
4
  Summary: Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta.
5
5
  Author: Joel Paim
6
6
  Requires-Python: >=3.12,<4.0
@@ -1,11 +1,11 @@
1
1
  worker_automate_hub/__init__.py,sha256=LV28uQvBfpPIqudGIMJmVB8E941MjXHcu8DMoX5n8AM,25
2
2
  worker_automate_hub/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  worker_automate_hub/api/ahead_service.py,sha256=0tX-i1ACRg3_yOI-_AfFEZ6FNU3L8Zb316n3QUkSwL0,2027
4
- worker_automate_hub/api/client.py,sha256=qsnyd_B26q199i5fCNWvwLKdQu9bVcS5NjU4L_0xjUw,18791
4
+ worker_automate_hub/api/client.py,sha256=fU7Br8RZEHc_zYb-i4nkSdvp96fCvKs-VQJGd3dw-Kk,18782
5
5
  worker_automate_hub/api/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  worker_automate_hub/api/helpers/api_helpers.py,sha256=SkheO2fXexeh-a4shr8Qzsz_kZhuSG0DJ7kbODctRbM,3696
7
- worker_automate_hub/api/rpa_fila_service.py,sha256=DxBEghdoF2DZQDnkThEEQDkoak4yVRM9kooV1fm0syg,2102
8
- worker_automate_hub/api/rpa_historico_service.py,sha256=WhTMVW-uNlJO3YZakhx63xlsw3_XDeWnSD-3MVEzzdk,4763
7
+ worker_automate_hub/api/rpa_fila_service.py,sha256=K_8EL5P6Y_CHs-f9ZGTsuUUjMd2fu4wN4NieHvMijKs,2100
8
+ worker_automate_hub/api/rpa_historico_service.py,sha256=GZ3umxvSGNecQsffIRwgfmgpXHDFWq8EiBuAYqtrMNQ,4761
9
9
  worker_automate_hub/api/webhook_service.py,sha256=9KvTv1U02CSYpf_vLnqs4RZqZzR7Mn0v1OVOI451yOM,1762
10
10
  worker_automate_hub/cli.py,sha256=JB45pjPJ8_E-4xw0OjqDMcAw-tpDV0mjmvwJRTnTzY0,6862
11
11
  worker_automate_hub/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -32,7 +32,7 @@ worker_automate_hub/models/dto/rpa_sistema_dto.py,sha256=sLkmJei8x6sl-1-IXUKDmYQ
32
32
  worker_automate_hub/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  worker_automate_hub/tasks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  worker_automate_hub/tasks/jobs/coleta_dje_process.py,sha256=rf4fW-FaHUl1MS7b03z4cwI3zHfNw8FWxvjvNY3Xn20,28773
35
- worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=4eEf3Hsm9TCGESn5cK-uSpHwbCYeCOBG44Q4cBYwmvc,9293
35
+ worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=vbbEsGdpgISBBVnJo8FI81zqzponqEPIAT1kNLsxizQ,9183
36
36
  worker_automate_hub/tasks/jobs/descartes.py,sha256=RIjrZIzkW77NiKeXbxFN9k872cz3fl9cG1m5TJpjmmY,40134
37
37
  worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=aPckQRlRozFS_OK3C9wNdMCmqO6AM4djwqY2uSSaPmo,20687
38
38
  worker_automate_hub/tasks/jobs/ecac_estadual_main.py,sha256=FFpAdtZLO4uelWZooCVpm4JePv_iDt5nwVKrk1ipZJQ,1599
@@ -67,10 +67,10 @@ worker_automate_hub/utils/get_creds_gworkspace.py,sha256=ZJ0IIEjM4IXIV9rwfbOZ1V1
67
67
  worker_automate_hub/utils/logger.py,sha256=FYV9fg0_RAYJF_ZOCJEbqQAiCXlXk2gMpvUU1rzT_xs,671
68
68
  worker_automate_hub/utils/toast.py,sha256=xPHc5r5uOxB_cZlCzm13Kt2qSKLLFZALncU6Qg3Ft68,1162
69
69
  worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbVlwDl49Y,7972
70
- worker_automate_hub/utils/util.py,sha256=h0AoZgFND72mR0HufpvT0KB-QBa5lRml0pDKh_7pyrI,125955
70
+ worker_automate_hub/utils/util.py,sha256=JkSKFgnI6geDEIlpaJJ5Btd7XdPllfUSFcjvPAaG-bo,125954
71
71
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=p5r_L5k7gqCBvV8v6dbLFM6INKiSpGc4Gegid0_YAh4,29017
72
72
  worker_automate_hub/worker.py,sha256=tftQpX8liC-_0_bOUf1YYzXSCvloMQBvjmQ6lzfEE-c,4816
73
- worker_automate_hub-0.4.447.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
74
- worker_automate_hub-0.4.447.dist-info/METADATA,sha256=C5PY7SvzFlnrrdFBhCf0vxBXyfRwi2-59whX-t6Bul4,2895
75
- worker_automate_hub-0.4.447.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
76
- worker_automate_hub-0.4.447.dist-info/RECORD,,
73
+ worker_automate_hub-0.4.449.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
74
+ worker_automate_hub-0.4.449.dist-info/METADATA,sha256=VrWE59j1n-zIdItKYymXrHmkzwmCADS3IXdY8LfuM7w,2895
75
+ worker_automate_hub-0.4.449.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
76
+ worker_automate_hub-0.4.449.dist-info/RECORD,,