worker-automate-hub 0.4.447__tar.gz → 0.4.449__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/client.py +9 -9
  4. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/rpa_fila_service.py +2 -2
  5. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/rpa_historico_service.py +2 -2
  6. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/conexao_rdp.py +89 -76
  7. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/util.py +1 -1
  8. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/README.md +0 -0
  9. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/__init__.py +0 -0
  10. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/__init__.py +0 -0
  11. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/ahead_service.py +0 -0
  12. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/helpers/__init__.py +0 -0
  13. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  14. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/api/webhook_service.py +0 -0
  15. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/cli.py +0 -0
  16. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/config/__init__.py +0 -0
  17. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/config/settings.py +0 -0
  18. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/config.py +0 -0
  19. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/core/so_manipulation.py +0 -0
  20. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/__init__.py +0 -0
  21. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/deprecation.py +0 -0
  22. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/rate_limit.py +0 -0
  23. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/repeat.py +0 -0
  24. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/retry.py +0 -0
  25. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/singleton.py +0 -0
  26. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/decorators/timeit.py +0 -0
  27. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/__init__.py +0 -0
  28. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dao/__init__.py +0 -0
  29. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  30. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  31. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  32. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dto/__init__.py +0 -0
  33. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  34. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  35. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  36. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  37. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/__init__.py +0 -0
  38. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  39. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  40. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  41. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  42. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  43. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  44. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  45. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  46. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  47. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  48. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  49. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  50. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  51. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  52. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  53. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  54. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  55. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  56. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  57. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  58. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  59. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  60. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  61. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  62. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  63. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  64. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  65. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  66. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/task_definitions.py +0 -0
  67. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/tasks/task_executor.py +0 -0
  68. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/__init__.py +0 -0
  69. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/env.py +0 -0
  70. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  71. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/logger.py +0 -0
  72. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/toast.py +0 -0
  73. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/updater.py +0 -0
  74. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  75. {worker_automate_hub-0.4.447 → worker_automate_hub-0.4.449}/worker_automate_hub/worker.py +0 -0
@@ -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,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "worker-automate-hub"
3
- version = "0.4.447"
3
+ version = "0.4.449"
4
4
  description = "Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta."
5
5
  authors = ["Joel Paim"]
6
6
  readme = "README.md"
@@ -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: