worker-automate-hub 0.5.66__py3-none-any.whl → 0.5.68__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
  import platform
3
+ import re
3
4
  import subprocess
4
5
  import socket
5
6
  import pyautogui
@@ -7,7 +8,7 @@ import os
7
8
  import pygetwindow as gw
8
9
  from rich.console import Console
9
10
  import pygetwindow as gw
10
- from pywinauto import Application
11
+ from pywinauto import Application, Desktop
11
12
  from worker_automate_hub.api.client import change_robot_status_true
12
13
  from worker_automate_hub.models.dto.rpa_historico_request_dto import RpaHistoricoStatusEnum, RpaRetornoProcessoDTO, RpaTagDTO, RpaTagEnum
13
14
  from worker_automate_hub.models.dto.rpa_processo_rdp_dto import RpaProcessoRdpDTO
@@ -127,6 +128,23 @@ class RDPConnection:
127
128
  except Exception as error:
128
129
  console.print(f"Erro ao abrir a conexão RDP: {error}")
129
130
 
131
+ async def verificar_conexao_estabelecida(self):
132
+ janelas_rdp = [
133
+ win
134
+ for win in gw.getAllTitles()
135
+ if self.ip in win
136
+ ]
137
+
138
+ janela = None
139
+
140
+ for titulo in janelas_rdp:
141
+ janela = gw.getWindowsWithTitle(titulo)[0]
142
+ if not janela:
143
+ console.print(f"Erro ao localizar a janela: {titulo}")
144
+ continue
145
+ else:
146
+ return True
147
+
130
148
  async def conectar(self):
131
149
  console.print(f"Iniciando cliente RDP para {self.ip}")
132
150
  try:
@@ -163,8 +181,41 @@ class RDPConnection:
163
181
  except Exception as e:
164
182
  console.print(f"Erro ao ativar a janela RDP: {e}", style="bold red")
165
183
 
184
+ app_window = None
185
+ possible_titles_patterns = [
186
+ re.compile(r"Conexão de Área de Trabalho Remota", re.IGNORECASE),
187
+ re.compile(r"Ligação ao ambiente de trabalho remoto", re.IGNORECASE),
188
+ re.compile(r"Segurança do Windows", re.IGNORECASE)
189
+ ]
190
+
191
+ janelas = Desktop(backend="uia").windows()
192
+ for janela in janelas:
193
+ titulo = janela.window_text()
194
+ for pattern in possible_titles_patterns:
195
+ if pattern.search(titulo):
196
+ try:
197
+ app = Application(backend="uia").connect(title_re=pattern)
198
+ app_window = app.window(title_re=pattern)
199
+ console.print(f"Janela encontrada: {titulo}")
200
+ break
201
+ except Exception as e:
202
+ console.print(f"Erro ao conectar a janela '{titulo}': {e}")
203
+ if app_window:
204
+ break
205
+
206
+ await worker_sleep(2)
207
+
208
+ if app_window:
209
+ try:
210
+ app_window.restore()
211
+ app_window.set_focus()
212
+ console.print("Foco definido com sucesso.")
213
+ except Exception as e:
214
+ console.print(f"Erro ao definir foco na janela: {e}")
215
+ else:
216
+ console.print("Nenhuma janela correspondente foi encontrada.")
217
+
166
218
  await worker_sleep(5)
167
-
168
219
  console.print("Inserindo senha.")
169
220
  pyautogui.write(self.password, interval=0.1)
170
221
  pyautogui.press("enter")
@@ -175,8 +226,6 @@ class RDPConnection:
175
226
  console.print("Credenciais inseridas.")
176
227
  await worker_sleep(5)
177
228
 
178
- console.print("Conexão RDP ativa. Mantendo o script em execução.")
179
-
180
229
  try:
181
230
  base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
182
231
  rdp_file_path = os.path.join(base_path, "connection.rdp")
@@ -184,8 +233,13 @@ class RDPConnection:
184
233
  os.remove(rdp_file_path)
185
234
  except Exception as error:
186
235
  console.print(f"Erro ao deletar arquivo 'connection.rdp'. Error: {error}")
236
+
237
+ conexao_rdp_aberta = await self.verificar_conexao_estabelecida()
238
+ if conexao_rdp_aberta is not True:
239
+ raise ConnectionError("Não foi possível estabelecer conexão RDP.")
187
240
 
188
241
  return True
242
+
189
243
  except Exception as e:
190
244
  logger.error(f"Erro ao tentar conectar via RDP: {e}")
191
245
  return False
@@ -202,6 +256,7 @@ async def conexao_rdp(task: RpaProcessoRdpDTO) -> RpaRetornoProcessoDTO:
202
256
  retorno="Não foi possível estabelecer conexão RDP. Verifique o IP e a disponibilidade da porta.",
203
257
  status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
204
258
  )
259
+
205
260
  sucesso_conexao = await rdp.conectar()
206
261
  if sucesso_conexao:
207
262
  console.print("Processo de conexão RDP executado com sucesso.")
@@ -224,7 +279,7 @@ async def conexao_rdp(task: RpaProcessoRdpDTO) -> RpaRetornoProcessoDTO:
224
279
  status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
225
280
  )
226
281
  except Exception as ex:
227
- err_msg = f"Erro ao executar conexao_rdp: {ex}"
282
+ err_msg = f"Erro ao executar conexão RDP: {ex}"
228
283
  logger.error(err_msg)
229
284
  console.print(err_msg, style="bold red")
230
285
  return RpaRetornoProcessoDTO(
@@ -216,19 +216,31 @@ async def gerar_nosso_numero(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
216
216
  button_ok.click()
217
217
 
218
218
  await worker_sleep(60)
219
-
220
- app = Application().connect(title="BOLETO ARGENTA_1")
221
- boleto_argenta = app["BOLETO ARGENTA_1"]
222
- console.log("Boleto Argenta sendo fechado", style="bold green")
223
- boleto_argenta.close()
224
-
219
+ boleto_argenta = None
220
+ max_trys = 5
221
+ trys = 0
222
+ while boleto_argenta != None and trys <= max_trys:
223
+ try:
224
+ app = Application().connect(title="BOLETO ARGENTA_1")
225
+ boleto_argenta = app["BOLETO ARGENTA_1"]
226
+ console.log("Boleto Argenta sendo fechado", style="bold green")
227
+ boleto_argenta.close()
228
+ break
229
+ except:
230
+ console.print("Tela de boleto Argenta ainda não encontrada", style="bold yellow")
231
+
232
+ trys += 1
233
+ await worker_sleep(60)
234
+
235
+ await worker_sleep(5)
225
236
  #Confirmando tela de impressão
226
237
  #Clica em "Yes"
227
238
  # pyautogui.click(900, 561)
228
239
  #Clica em "No"
229
240
  pyautogui.click(1000, 561)
230
241
 
231
- await worker_sleep(60)
242
+ await worker_sleep(5)
243
+
232
244
  if boleto_argenta:
233
245
  return RpaRetornoProcessoDTO(
234
246
  sucesso=True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.66
3
+ Version: 0.5.68
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
@@ -35,7 +35,7 @@ worker_automate_hub/models/dto/rpa_sistema_dto.py,sha256=sLkmJei8x6sl-1-IXUKDmYQ
35
35
  worker_automate_hub/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  worker_automate_hub/tasks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  worker_automate_hub/tasks/jobs/coleta_dje_process.py,sha256=UkLWTC5Ub2qBb0yY-8IZ0DLLOVJOfNTq_z9krx_t25Q,29476
38
- worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=lNjD-JxpPTXdvFEJAkajC_Ltyw81rIEJeu7FUfRf2qI,9586
38
+ worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=S6QC4xhuo0pB5FjaUJZNMm1LIgEjpjifReCTBDqxH-U,11719
39
39
  worker_automate_hub/tasks/jobs/descartes.py,sha256=0bMCJ0xIcK8TLSgjF6taAbGFLMU-sGDVFIhUYSRtrbg,41092
40
40
  worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=Ao8z3KrJn8sdglp65tdW0sMp-g5EPlo5JOv7fMSF4yc,79854
41
41
  worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=dKkf22nH5gp3RErq5u0UzRsKyJ81fc6ZZ4vLtUuMwHA,21002
@@ -58,7 +58,7 @@ worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=iXbkjdg02r3tdt3eH
58
58
  worker_automate_hub/tasks/jobs/entrada_de_notas_9.py,sha256=vUj25yHxkCNhpyOU5Vk81gsYcTTH1TJ3yn-b8N00JfQ,52857
59
59
  worker_automate_hub/tasks/jobs/exemplo_processo.py,sha256=nV0iLoip2FH2-FhLmhX3nPqsfl_MPufZ3E5Q5krJvdc,3544
60
60
  worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py,sha256=8GVImU7EnncCSxbbuEC4-EBE8oGTk6CJ-HFNqJ5OiMs,5564
61
- worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py,sha256=tUU5-xbwQtpp4HcEGYaYPW7i4y3raKC0IgjWpT0338c,10548
61
+ worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py,sha256=fnTXtf6TKtmiChqzap1BdAfBpnQv2l05-3VS3xUmbKg,10980
62
62
  worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py,sha256=QBGm6eS5JghgNWNqZlk1g2a2iV8LnBLiOTBBL3Giet0,4181
63
63
  worker_automate_hub/tasks/jobs/login_emsys.py,sha256=scdKsseFOL-7UQ5D743VaZZzWBKaEfq0XzYNmROUOgE,5703
64
64
  worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py,sha256=jcfhppG-MhuZYKEIt8O8NaJfdV3figNXrKt4zPqeQi0,5644
@@ -76,7 +76,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
76
76
  worker_automate_hub/utils/util.py,sha256=_uPyZOzb8puEKXUmcFkaf7HesJBs8yITRQkOqViyugU,161430
77
77
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=iYpOs7fb7C3bY61QHySr00xlDNzrrCP0zaexOpBPuaQ,31930
78
78
  worker_automate_hub/worker.py,sha256=CT-poyP1ZYvubArYsnnNd9oJ53SPaDwgr6p6keS3nI4,6248
79
- worker_automate_hub-0.5.66.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
- worker_automate_hub-0.5.66.dist-info/METADATA,sha256=7Haa1PMIHptI8Y1IgJ2OdWNMZWLKYXFTzdN4sDFfk4I,2894
81
- worker_automate_hub-0.5.66.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
- worker_automate_hub-0.5.66.dist-info/RECORD,,
79
+ worker_automate_hub-0.5.68.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
+ worker_automate_hub-0.5.68.dist-info/METADATA,sha256=4NOBuSV3_WQconVJIWJ3KImwE9k_CBR8WK1W4GPS608,2894
81
+ worker_automate_hub-0.5.68.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
+ worker_automate_hub-0.5.68.dist-info/RECORD,,