worker-automate-hub 0.5.10__tar.gz → 0.5.13__tar.gz

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of worker-automate-hub might be problematic. Click here for more details.

Files changed (80) hide show
  1. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/rdp_service.py +5 -1
  4. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/rpa_fila_service.py +22 -16
  5. worker_automate_hub-0.5.13/worker_automate_hub/api/rpa_historico_service.py +258 -0
  6. worker_automate_hub-0.5.13/worker_automate_hub/models/dao/rpa_fila.py +18 -0
  7. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +1 -1
  8. worker_automate_hub-0.5.13/worker_automate_hub/tasks/task_executor.py +122 -0
  9. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/worker.py +29 -4
  10. worker_automate_hub-0.5.10/worker_automate_hub/api/rpa_historico_service.py +0 -123
  11. worker_automate_hub-0.5.10/worker_automate_hub/tasks/task_executor.py +0 -247
  12. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/README.md +0 -0
  13. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/__init__.py +0 -0
  14. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/__init__.py +0 -0
  15. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/ahead_service.py +0 -0
  16. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/client.py +0 -0
  17. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/helpers/__init__.py +0 -0
  18. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  19. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/api/webhook_service.py +0 -0
  20. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/cli.py +0 -0
  21. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/config/__init__.py +0 -0
  22. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/config/settings.py +0 -0
  23. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/config.py +0 -0
  24. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/core/so_manipulation.py +0 -0
  25. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/__init__.py +0 -0
  26. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/deprecation.py +0 -0
  27. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/rate_limit.py +0 -0
  28. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/repeat.py +0 -0
  29. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/retry.py +0 -0
  30. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/singleton.py +0 -0
  31. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/decorators/timeit.py +0 -0
  32. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/__init__.py +0 -0
  33. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dao/__init__.py +0 -0
  34. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  35. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  36. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  37. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dto/__init__.py +0 -0
  38. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  39. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  40. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  41. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  42. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/__init__.py +0 -0
  43. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  44. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  45. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  46. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  47. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  48. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  49. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  50. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  51. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  52. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  53. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  54. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  55. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  56. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  57. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  58. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  59. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  60. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  61. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  62. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  63. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  64. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  65. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  66. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  67. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  68. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  69. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  70. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  71. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  72. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/tasks/task_definitions.py +0 -0
  73. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/__init__.py +0 -0
  74. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/env.py +0 -0
  75. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  76. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/logger.py +0 -0
  77. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/toast.py +0 -0
  78. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/updater.py +0 -0
  79. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/util.py +0 -0
  80. {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.13}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.5.10
3
+ Version: 0.5.13
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.5.10"
3
+ version = "0.5.13"
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"
@@ -14,7 +14,11 @@ async def send_rdp_action(uuid_robo: str, action: str):
14
14
  "action": action
15
15
  }
16
16
 
17
- headers_basic = {"Authorization": f"Basic {env_config['API_AUTHORIZATION']}"}
17
+ headers_basic = {
18
+ "Authorization": f"Basic {env_config['API_AUTHORIZATION']}",
19
+ "Content-Type": "application/json",
20
+ "Accept": "application/json"
21
+ }
18
22
  url = f"{env_config['API_BASE_URL']}/robo/api/manage"
19
23
 
20
24
  try:
@@ -1,30 +1,34 @@
1
- from worker_automate_hub.config.settings import load_env_config
2
- from worker_automate_hub.utils.logger import logger
1
+ import aiohttp
3
2
  from rich.console import Console
4
3
 
5
- import aiohttp
4
+ from worker_automate_hub.config.settings import load_env_config
5
+ from worker_automate_hub.models.dao.rpa_fila import RpaFila
6
+ from worker_automate_hub.utils.logger import logger
6
7
 
7
8
  console = Console()
8
9
 
9
10
 
10
11
  async def burn_queue(id_fila: str):
11
12
  env_config, _ = load_env_config()
12
- try:
13
+ try:
13
14
 
14
15
  headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
15
-
16
16
 
17
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
17
+ async with aiohttp.ClientSession(
18
+ connector=aiohttp.TCPConnector(verify_ssl=True)
19
+ ) as session:
18
20
  async with session.delete(
19
21
  f"{env_config["API_BASE_URL"]}/fila/burn-queue/{id_fila}",
20
22
  headers=headers_basic,
21
23
  ) as response:
22
24
  if response.status == 200:
23
25
  logger.info("Fila excluida com sucesso.")
24
- console.print("\nFila excluida com sucesso.\n", style="bold green")
26
+ console.print("\nFila excluida com sucesso.\n", style="bold green")
25
27
  else:
26
- logger.error(f"Erro ao excluir a fila: {response.content}")
27
- console.print(f"Erro ao excluir a fila: {response.content}", style="bold red")
28
+ logger.error(f"Erro ao excluir a fila: {response.content}")
29
+ console.print(
30
+ f"Erro ao excluir a fila: {response.content}", style="bold red"
31
+ )
28
32
 
29
33
  except Exception as e:
30
34
  err_msg = f"Erro remover registro da fila: {e}"
@@ -34,16 +38,18 @@ async def burn_queue(id_fila: str):
34
38
  style="bold red",
35
39
  )
36
40
  return None
37
-
41
+
42
+
38
43
  async def unlock_queue(id: str):
39
44
  env_config, _ = load_env_config()
40
- try:
41
- headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
42
-
45
+ try:
46
+ headers_basic = {"Authorization": f"Basic {env_config["API_AUTHORIZATION"]}"}
43
47
 
44
- async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=True)) as session:
48
+ async with aiohttp.ClientSession(
49
+ connector=aiohttp.TCPConnector(verify_ssl=True)
50
+ ) as session:
45
51
  async with session.get(
46
- f"{env_config["API_BASE_URL"]}/fila/unlock-queue/{id}",
52
+ f"{env_config["API_BASE_URL"]}/fila/unlock-queue/{id}",
47
53
  headers=headers_basic,
48
54
  ) as response:
49
55
  return await response.text()
@@ -55,4 +61,4 @@ async def unlock_queue(id: str):
55
61
  f"{err_msg}\n",
56
62
  style="bold red",
57
63
  )
58
- return None
64
+ return None
@@ -0,0 +1,258 @@
1
+ from datetime import datetime
2
+
3
+ import aiohttp
4
+ from pytz import timezone
5
+ from rich.console import Console
6
+
7
+ from worker_automate_hub.config.settings import load_env_config
8
+ from worker_automate_hub.models.dao.rpa_historico import RpaHistorico
9
+ from worker_automate_hub.models.dao.rpa_processo import RpaProcesso
10
+ from worker_automate_hub.models.dto.rpa_historico_request_dto import (
11
+ RpaHistoricoRequestDTO,
12
+ RpaHistoricoStatusEnum,
13
+ RpaRetornoProcessoDTO,
14
+ )
15
+ from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
16
+ RpaProcessoEntradaDTO,
17
+ )
18
+ from worker_automate_hub.utils.logger import logger
19
+
20
+ console = Console()
21
+
22
+
23
+ async def create_store_historico(
24
+ task: RpaProcessoEntradaDTO,
25
+ processo: RpaProcesso,
26
+ status: RpaHistoricoStatusEnum,
27
+ retorno_processo: RpaRetornoProcessoDTO = None,
28
+ ) -> RpaHistorico:
29
+ """
30
+ Salva o histórico de um processo com status Processando.
31
+
32
+ Recebe um RpaProcessoEntradaDTO e um RpaProcesso como parâmetro e salva o
33
+ histórico com status Processando. Retorna um dicionário com o uuid do
34
+ histórico salvo.
35
+
36
+ Args:
37
+ task (RpaProcessoEntradaDTO): O processo a ser salvo.
38
+ processo (RpaProcesso): O processo que está sendo executado.
39
+
40
+ Returns:
41
+ RpaHistorico: Dicionário com o uuid do histórico salvo.
42
+ """
43
+ try:
44
+ from worker_automate_hub.config.settings import load_worker_config
45
+
46
+ worker_config = load_worker_config()
47
+ tz = timezone("America/Sao_Paulo")
48
+ start_time = datetime.now(tz).isoformat()
49
+
50
+ identificador_processo = (
51
+ task.configEntrada.get("nfe") or task.configEntrada.get("empresa") or ""
52
+ )
53
+
54
+ # Armazenar início da operação no histórico
55
+ start_data = RpaHistoricoRequestDTO(
56
+ uuidProcesso=task.uuidProcesso,
57
+ uuidRobo=worker_config["UUID_ROBO"],
58
+ prioridade=processo.prioridade,
59
+ desStatus=status,
60
+ configEntrada=task.configEntrada,
61
+ datInicioExecucao=start_time,
62
+ datEntradaFila=task.datEntradaFila,
63
+ identificador=identificador_processo,
64
+ retorno=retorno_processo,
65
+ )
66
+
67
+ store_response: RpaHistorico = await store(start_data)
68
+ console.print(
69
+ f"\nHistorico salvo com o uuid: {store_response.uuidHistorico}\n",
70
+ style="green",
71
+ )
72
+ return store_response
73
+ except Exception as e:
74
+ err_msg = f"Erro ao salvar o registro no histórico: {e}"
75
+ console.print(f"\n{err_msg}\n", style="red")
76
+ logger.error(f"{err_msg}")
77
+
78
+
79
+ async def create_update_historico(
80
+ historico_uuid: str,
81
+ task: RpaProcessoEntradaDTO,
82
+ retorno_processo: RpaRetornoProcessoDTO,
83
+ processo: RpaProcesso,
84
+ ):
85
+ """
86
+ Atualiza o histórico de um processo com o status de sucesso ou falha.
87
+
88
+ Recebe o uuid do histórico, o RpaProcessoEntradaDTO do processo, um booleano
89
+ indicando se o processo foi um sucesso ou não, o RpaRetornoProcessoDTO do
90
+ processo e o RpaProcesso do processo como parâmetro e atualiza o histórico
91
+ com o status de sucesso ou falha. Retorna um dicionário com o uuid do
92
+ histórico atualizado.
93
+
94
+ Args:
95
+ historico_uuid (str): O uuid do histórico.
96
+ task (RpaProcessoEntradaDTO): O RpaProcessoEntradaDTO do processo.
97
+ sucesso (bool): Um booleano indicando se o processo foi um sucesso ou não.
98
+ retorno_processo (RpaRetornoProcessoDTO): O RpaRetornoProcessoDTO do processo.
99
+ processo (RpaProcesso): O RpaProcesso do processo.
100
+
101
+ Returns:
102
+ RpaHistorico: Dicionário com o uuid do histórico atualizado.
103
+ """
104
+
105
+ try:
106
+ from worker_automate_hub.config.settings import load_worker_config
107
+
108
+ worker_config = load_worker_config()
109
+ tz = timezone("America/Sao_Paulo")
110
+ des_status: RpaHistoricoStatusEnum = retorno_processo.status
111
+ end_time = datetime.now(tz).isoformat()
112
+
113
+ identificador_processo = (
114
+ task.configEntrada.get("nfe") or task.configEntrada.get("empresa") or ""
115
+ )
116
+ if not retorno_processo.tags:
117
+ retorno_processo.tags = []
118
+
119
+ # Armazenar fim da operação no histórico
120
+ end_data = RpaHistoricoRequestDTO(
121
+ uuidHistorico=historico_uuid,
122
+ uuidProcesso=task.uuidProcesso,
123
+ uuidRobo=worker_config["UUID_ROBO"],
124
+ prioridade=processo.prioridade,
125
+ desStatus=des_status,
126
+ configEntrada=task.configEntrada,
127
+ retorno=retorno_processo,
128
+ datFimExecucao=end_time,
129
+ identificador=identificador_processo,
130
+ tags=retorno_processo.tags,
131
+ )
132
+
133
+ update_response: RpaHistorico = await update(end_data)
134
+ console.print(
135
+ f"\nHistorico atualizado com o uuid: {update_response.uuidHistorico}\n",
136
+ style="green",
137
+ )
138
+ return update_response
139
+
140
+ except Exception as e:
141
+ err_msg = f"Erro ao atualizar o histórico do processo: {e}"
142
+ console.print(f"\n{err_msg}\n", style="red")
143
+ logger.error(err_msg)
144
+
145
+
146
+ async def store(data: RpaHistoricoRequestDTO) -> dict:
147
+ """
148
+ Armazena o histórico de um processo com status Processando.
149
+
150
+ Recebe um RpaHistoricoRequestDTO como parâmetro e salva o
151
+ histórico com status Processando. Retorna um dicionário com o uuid do
152
+ histórico salvo.
153
+
154
+ Args:
155
+ data (RpaHistoricoRequestDTO): O histórico a ser salvo.
156
+
157
+ Returns:
158
+ RpaHistorico: Dicionário com o uuid do histórico salvo.
159
+ """
160
+ env_config, _ = load_env_config()
161
+
162
+ if not data:
163
+ raise ValueError("Parâmetro data deve ser informado")
164
+
165
+ if not isinstance(data, RpaHistoricoRequestDTO):
166
+ raise TypeError("Parâmetro data deve ser do tipo RpaHistoricoRequestDTO")
167
+
168
+ headers_basic = {
169
+ "Authorization": f"Basic {env_config["API_AUTHORIZATION"]}",
170
+ "Content-Type": "application/json",
171
+ }
172
+ try:
173
+ async with aiohttp.ClientSession(
174
+ connector=aiohttp.TCPConnector(verify_ssl=True)
175
+ ) as session:
176
+ payload = data.model_dump_json()
177
+
178
+ async with session.post(
179
+ f"{env_config["API_BASE_URL"]}/historico",
180
+ data=payload,
181
+ headers=headers_basic,
182
+ ) as response:
183
+ response_text = await response.text()
184
+ logger.info(f"Resposta store: {response_text}")
185
+
186
+ if response.status == 200:
187
+ try:
188
+ response_data = await response.json()
189
+ return RpaHistorico(**response_data)
190
+ except aiohttp.ContentTypeError:
191
+ return {
192
+ "error": "Resposta não é JSON",
193
+ "status_code": response.status,
194
+ }
195
+ else:
196
+ return {"error": response_text, "status_code": response.status}
197
+ except aiohttp.ClientError as e:
198
+ logger.error(f"Erro de cliente aiohttp: {str(e)}")
199
+ return {"error": str(e), "status_code": 500}
200
+ except Exception as e:
201
+ logger.error(f"Erro inesperado: {str(e)}")
202
+ return {"error": str(e), "status_code": 500}
203
+
204
+
205
+ async def update(data: RpaHistoricoRequestDTO) -> dict:
206
+ """
207
+ Atualiza um registro de histórico com base no uuidHistorico informado.
208
+
209
+ Args:
210
+ data (RpaHistoricoRequestDTO): Os dados do histórico a ser atualizado.
211
+
212
+ Returns:
213
+ RpaHistorico: O histórico atualizado.
214
+ """
215
+ env_config, _ = load_env_config()
216
+ headers_basic = {
217
+ "Authorization": f"Basic {env_config["API_AUTHORIZATION"]}",
218
+ "Content-Type": "application/json",
219
+ }
220
+ if not data or not isinstance(data, RpaHistoricoRequestDTO):
221
+ raise TypeError("Parâmetro data deve ser do tipo RpaHistoricoRequestDTO")
222
+ try:
223
+ async with aiohttp.ClientSession(
224
+ connector=aiohttp.TCPConnector(verify_ssl=True)
225
+ ) as session:
226
+ if not data.uuidHistorico:
227
+ raise ValueError("Parâmetro uuidHistorico deve ser informado")
228
+
229
+ payload = data.model_dump_json()
230
+
231
+ async with session.put(
232
+ f"{env_config["API_BASE_URL"]}/historico",
233
+ data=payload,
234
+ headers=headers_basic,
235
+ ) as response:
236
+ response_text = await response.text()
237
+ logger.info(f"Resposta update: {response_text}")
238
+
239
+ if response.status == 200:
240
+ try:
241
+ response_data = await response.json()
242
+ return RpaHistorico(**response_data)
243
+ except aiohttp.ContentTypeError:
244
+ return {
245
+ "error": "Resposta não é JSON",
246
+ "status_code": response.status,
247
+ }
248
+ else:
249
+ return {"error": response_text, "status_code": response.status}
250
+ except aiohttp.ClientError as e:
251
+ logger.error(f"Erro de cliente aiohttp: {str(e)}")
252
+ return {"error": str(e), "status_code": 500}
253
+ except ValueError as e:
254
+ logger.error(f"Erro de valor: {str(e)}")
255
+ return {"error": str(e), "status_code": 400}
256
+ except Exception as e:
257
+ logger.error(f"Erro inesperado: {str(e)}")
258
+ return {"error": str(e), "status_code": 500}
@@ -0,0 +1,18 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ from pydantic import BaseModel, Field
5
+
6
+
7
+ class RpaFila(BaseModel):
8
+ uuidFila: Optional[str] = Field(None, alias="uuidFila")
9
+ uuidRobo: Optional[str] = Field(None, alias="uuidRobo")
10
+ uuidProcesso: str = Field(..., alias="uuidProcesso")
11
+ prioridade: int = Field(..., alias="prioridade")
12
+ configEntrada: Optional[dict] = Field(None, alias="configEntrada")
13
+ dtLeituraFila: Optional[datetime] = Field(None, alias="dtLeituraFila")
14
+ lock: Optional[bool] = Field(None, alias="lock")
15
+ mutarNotificacao: Optional[int] = Field(None, alias="mutarNotificacao")
16
+
17
+ class Config:
18
+ populate_by_name = True
@@ -21,7 +21,7 @@ class RDPConnection:
21
21
  self.user = task.configEntrada.get("user")
22
22
  self.password = task.configEntrada.get("password")
23
23
  self.processo = task.configEntrada.get("processo")
24
- self.uuid_robo = task.configEntrada.get("uuid_robo")
24
+ self.uuid_robo = task.configEntrada.get("uuidRobo")
25
25
 
26
26
  async def verificar_conexao(self) -> bool:
27
27
  """
@@ -0,0 +1,122 @@
1
+ from pytz import timezone
2
+ from rich.console import Console
3
+
4
+ from worker_automate_hub.api.client import get_processo, send_gchat_message
5
+ from worker_automate_hub.api.rpa_fila_service import burn_queue
6
+ from worker_automate_hub.api.rpa_historico_service import (
7
+ create_store_historico,
8
+ create_update_historico,
9
+ )
10
+ from worker_automate_hub.api.webhook_service import send_to_webhook
11
+ from worker_automate_hub.config.settings import load_worker_config
12
+ from worker_automate_hub.models.dao.rpa_historico import RpaHistorico
13
+ from worker_automate_hub.models.dao.rpa_processo import RpaProcesso
14
+ from worker_automate_hub.models.dto.rpa_historico_request_dto import (
15
+ RpaHistoricoStatusEnum,
16
+ RpaRetornoProcessoDTO,
17
+ )
18
+ from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
19
+ RpaProcessoEntradaDTO,
20
+ )
21
+ from worker_automate_hub.tasks.task_definitions import task_definitions
22
+ from worker_automate_hub.utils.logger import logger
23
+ from worker_automate_hub.utils.toast import show_toast
24
+ from worker_automate_hub.utils.util import capture_and_send_screenshot
25
+
26
+ console = Console()
27
+
28
+
29
+ async def perform_task(task: RpaProcessoEntradaDTO):
30
+ log_msg = f"Processo a ser executado: {task.nomProcesso}"
31
+ show_toast("Info", f"Processo a ser executado: {task.nomProcesso}")
32
+
33
+ console.print(f"\n{log_msg}\n", style="green")
34
+ logger.info(log_msg)
35
+ task_uuid = task.uuidProcesso
36
+ url_retorno = task.configEntrada.get("urlRetorno", None)
37
+ processo: RpaProcesso = await get_processo(task_uuid)
38
+ if processo is None:
39
+ worker_config = load_worker_config()
40
+ err_msg = f"[WORKER] [{worker_config['NOME_ROBO']}] Falha ao obter o processo [{task.nomProcesso}] uuid [{task_uuid}] da API, não foi possivel registrar o historico, mas o processo será executado."
41
+ console.print(err_msg, style="yellow")
42
+ logger.error(err_msg)
43
+ show_toast("Erro", err_msg)
44
+ await send_gchat_message(err_msg)
45
+ registrar_historico = False
46
+ else:
47
+ registrar_historico = True
48
+
49
+ if registrar_historico:
50
+ historico: RpaHistorico = await create_store_historico(
51
+ task, processo, RpaHistoricoStatusEnum.Processando
52
+ )
53
+ try:
54
+ if task_uuid in task_definitions:
55
+ # Executar a task
56
+ if task_uuid == "276d0c41-0b7c-4446-ae0b-dd5d782917cc":
57
+ task.historico_id = historico.uuidHistorico
58
+
59
+ result: RpaRetornoProcessoDTO = await task_definitions[task_uuid](task)
60
+ if registrar_historico:
61
+ await create_update_historico(
62
+ historico_uuid=historico.uuidHistorico,
63
+ task=task,
64
+ retorno_processo=result,
65
+ processo=processo,
66
+ )
67
+
68
+ if result.sucesso == False:
69
+ show_toast("Erro", f"Processo executado com falha: {result}")
70
+
71
+ await capture_and_send_screenshot(
72
+ uuidRelacao=historico.uuidHistorico, desArquivo=result.retorno
73
+ )
74
+ else:
75
+ show_toast("Sucesso", f"Processo executado com sucesso: {result}")
76
+
77
+ if url_retorno is not None and result.sucesso == False:
78
+ await send_to_webhook(url_retorno, result.status, result.retorno)
79
+ return result
80
+ else:
81
+ err_msg = f"Processo não encontrado: {task_uuid}"
82
+ console.print(err_msg, style="yellow")
83
+ logger.error(err_msg)
84
+ show_toast("Erro", err_msg)
85
+
86
+ if registrar_historico:
87
+ await create_update_historico(
88
+ historico_uuid=historico.uuidHistorico,
89
+ task=task,
90
+ retorno_processo=RpaRetornoProcessoDTO(
91
+ sucesso=False,
92
+ retorno=err_msg,
93
+ status=RpaHistoricoStatusEnum.Descartado,
94
+ ),
95
+ processo=processo,
96
+ )
97
+ await burn_queue(task.uuidFila)
98
+ if url_retorno is not None:
99
+ await send_to_webhook(
100
+ url_retorno, RpaHistoricoStatusEnum.Descartado, err_msg
101
+ )
102
+ return None
103
+ except Exception as e:
104
+ err_msg = f"Erro ao performar o processo: {e}"
105
+ console.print(f"\n{err_msg}\n", style="red")
106
+ logger.error(err_msg)
107
+ show_toast("Erro", err_msg)
108
+
109
+ if registrar_historico:
110
+ await create_update_historico(
111
+ historico_uuid=historico.uuidHistorico,
112
+ task=task,
113
+ retorno_processo=RpaRetornoProcessoDTO(
114
+ sucesso=False, retorno=err_msg, status=RpaHistoricoStatusEnum.Falha
115
+ ),
116
+ processo=processo,
117
+ )
118
+ await capture_and_send_screenshot(
119
+ uuidRelacao=historico.uuidHistorico, desArquivo=err_msg
120
+ )
121
+ if url_retorno is not None:
122
+ await send_to_webhook(url_retorno, RpaHistoricoStatusEnum.Falha, err_msg)
@@ -3,19 +3,30 @@ import os
3
3
  import threading
4
4
  from pathlib import Path
5
5
 
6
- from worker_automate_hub.api.rpa_fila_service import burn_queue, unlock_queue
7
6
  import pyfiglet
8
7
  from rich.console import Console
9
8
 
10
9
  from worker_automate_hub.api.client import (
11
10
  get_new_task,
11
+ get_processo,
12
12
  notify_is_alive,
13
13
  send_gchat_message,
14
14
  )
15
+ from worker_automate_hub.api.rpa_fila_service import burn_queue
16
+ from worker_automate_hub.api.rpa_historico_service import (
17
+ create_store_historico,
18
+ )
15
19
  from worker_automate_hub.config.settings import (
16
20
  load_env_config,
17
21
  load_worker_config,
18
22
  )
23
+ from worker_automate_hub.models.dao.rpa_processo import RpaProcesso
24
+ from worker_automate_hub.models.dto.rpa_historico_request_dto import (
25
+ RpaHistoricoStatusEnum,
26
+ RpaRetornoProcessoDTO,
27
+ RpaTagDTO,
28
+ RpaTagEnum,
29
+ )
19
30
  from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
20
31
  RpaProcessoEntradaDTO,
21
32
  )
@@ -40,15 +51,29 @@ async def check_and_execute_tasks(stop_event: threading.Event):
40
51
  worker_config = load_worker_config()
41
52
  if task is not None:
42
53
  processo_existe = await is_uuid_in_tasks(task.uuidProcesso)
54
+ await burn_queue(task.uuidFila)
43
55
  if processo_existe:
44
- await burn_queue(task.uuidFila)
45
56
  logger.info(f"Executando a task: {task.nomProcesso}")
46
57
  await perform_task(task)
47
58
  else:
48
- await unlock_queue(task.uuidFila)
49
- log_message = f"O processo [{task.nomProcesso}] não existe no Worker [{worker_config['NOME_ROBO']}] e foi devolvido para a fila."
59
+ log_message = f"O processo [{task.nomProcesso}] não existe no Worker [{worker_config['NOME_ROBO']}] e foi removido da fila."
50
60
  console.print(f"\n{log_message}\n", style="yellow")
51
61
  logger.error(log_message)
62
+ try:
63
+ processo: RpaProcesso = await get_processo(task.uuidProcesso)
64
+ await create_store_historico(
65
+ task,
66
+ processo,
67
+ RpaHistoricoStatusEnum.Descartado,
68
+ retorno_processo=RpaRetornoProcessoDTO(
69
+ sucesso=False,
70
+ retorno=log_message,
71
+ status=RpaHistoricoStatusEnum.Descartado,
72
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
73
+ ),
74
+ )
75
+ except Exception as e:
76
+ console.print(f"Erro ao salvar histórico de processo não implementado: {e}", style="bold red")
52
77
  await send_gchat_message(log_message)
53
78
  else:
54
79
  await asyncio.sleep(5)
@@ -1,123 +0,0 @@
1
- import aiohttp
2
-
3
- from worker_automate_hub.config.settings import load_env_config
4
- from worker_automate_hub.models.dao.rpa_historico import RpaHistorico
5
- from worker_automate_hub.models.dto.rpa_historico_request_dto import (
6
- RpaHistoricoRequestDTO,
7
- )
8
- from worker_automate_hub.utils.logger import logger
9
-
10
-
11
- async def store(data: RpaHistoricoRequestDTO) -> dict:
12
- """
13
- Armazena o histórico de um processo com status Processando.
14
-
15
- Recebe um RpaHistoricoRequestDTO como parâmetro e salva o
16
- histórico com status Processando. Retorna um dicionário com o uuid do
17
- histórico salvo.
18
-
19
- Args:
20
- data (RpaHistoricoRequestDTO): O histórico a ser salvo.
21
-
22
- Returns:
23
- RpaHistorico: Dicionário com o uuid do histórico salvo.
24
- """
25
- env_config, _ = load_env_config()
26
-
27
- if not data:
28
- raise ValueError("Parâmetro data deve ser informado")
29
-
30
- if not isinstance(data, RpaHistoricoRequestDTO):
31
- raise TypeError("Parâmetro data deve ser do tipo RpaHistoricoRequestDTO")
32
-
33
- headers_basic = {
34
- "Authorization": f"Basic {env_config["API_AUTHORIZATION"]}",
35
- "Content-Type": "application/json",
36
- }
37
- try:
38
- async with aiohttp.ClientSession(
39
- connector=aiohttp.TCPConnector(verify_ssl=True)
40
- ) as session:
41
- payload = data.model_dump_json()
42
-
43
- async with session.post(
44
- f"{env_config["API_BASE_URL"]}/historico",
45
- data=payload,
46
- headers=headers_basic,
47
- ) as response:
48
- response_text = await response.text()
49
- logger.info(f"Resposta store: {response_text}")
50
-
51
- if response.status == 200:
52
- try:
53
- response_data = await response.json()
54
- return RpaHistorico(**response_data)
55
- except aiohttp.ContentTypeError:
56
- return {
57
- "error": "Resposta não é JSON",
58
- "status_code": response.status,
59
- }
60
- else:
61
- return {"error": response_text, "status_code": response.status}
62
- except aiohttp.ClientError as e:
63
- logger.error(f"Erro de cliente aiohttp: {str(e)}")
64
- return {"error": str(e), "status_code": 500}
65
- except Exception as e:
66
- logger.error(f"Erro inesperado: {str(e)}")
67
- return {"error": str(e), "status_code": 500}
68
-
69
-
70
- async def update(data: RpaHistoricoRequestDTO) -> dict:
71
- """
72
- Atualiza um registro de histórico com base no uuidHistorico informado.
73
-
74
- Args:
75
- data (RpaHistoricoRequestDTO): Os dados do histórico a ser atualizado.
76
-
77
- Returns:
78
- RpaHistorico: O histórico atualizado.
79
- """
80
- env_config, _ = load_env_config()
81
- headers_basic = {
82
- "Authorization": f"Basic {env_config["API_AUTHORIZATION"]}",
83
- "Content-Type": "application/json",
84
- }
85
- if not data or not isinstance(data, RpaHistoricoRequestDTO):
86
- raise TypeError("Parâmetro data deve ser do tipo RpaHistoricoRequestDTO")
87
- try:
88
- async with aiohttp.ClientSession(
89
- connector=aiohttp.TCPConnector(verify_ssl=True)
90
- ) as session:
91
- if not data.uuidHistorico:
92
- raise ValueError("Parâmetro uuidHistorico deve ser informado")
93
-
94
- payload = data.model_dump_json()
95
-
96
- async with session.put(
97
- f"{env_config["API_BASE_URL"]}/historico",
98
- data=payload,
99
- headers=headers_basic,
100
- ) as response:
101
- response_text = await response.text()
102
- logger.info(f"Resposta update: {response_text}")
103
-
104
- if response.status == 200:
105
- try:
106
- response_data = await response.json()
107
- return RpaHistorico(**response_data)
108
- except aiohttp.ContentTypeError:
109
- return {
110
- "error": "Resposta não é JSON",
111
- "status_code": response.status,
112
- }
113
- else:
114
- return {"error": response_text, "status_code": response.status}
115
- except aiohttp.ClientError as e:
116
- logger.error(f"Erro de cliente aiohttp: {str(e)}")
117
- return {"error": str(e), "status_code": 500}
118
- except ValueError as e:
119
- logger.error(f"Erro de valor: {str(e)}")
120
- return {"error": str(e), "status_code": 400}
121
- except Exception as e:
122
- logger.error(f"Erro inesperado: {str(e)}")
123
- return {"error": str(e), "status_code": 500}
@@ -1,247 +0,0 @@
1
- from datetime import datetime
2
-
3
- from pytz import timezone
4
- from worker_automate_hub.api.webhook_service import send_to_webhook
5
- from rich.console import Console
6
-
7
- from worker_automate_hub.api.client import (
8
- get_processo,
9
- send_gchat_message,
10
- )
11
- from worker_automate_hub.api.rpa_fila_service import unlock_queue
12
- from worker_automate_hub.api.rpa_historico_service import store, update
13
- from worker_automate_hub.models.dao.rpa_historico import RpaHistorico
14
- from worker_automate_hub.models.dao.rpa_processo import RpaProcesso
15
- from worker_automate_hub.models.dto.rpa_historico_request_dto import (
16
- RpaHistoricoRequestDTO,
17
- RpaHistoricoStatusEnum,
18
- RpaRetornoProcessoDTO,
19
- )
20
- from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
21
- RpaProcessoEntradaDTO,
22
- )
23
- from worker_automate_hub.tasks.task_definitions import task_definitions
24
- from worker_automate_hub.utils.logger import logger
25
- from worker_automate_hub.utils.toast import show_toast
26
- from worker_automate_hub.utils.util import capture_and_send_screenshot
27
- from worker_automate_hub.config.settings import (
28
- load_worker_config,
29
- )
30
-
31
- console = Console()
32
-
33
-
34
- async def perform_task(task: RpaProcessoEntradaDTO):
35
- log_msg = f"Processo a ser executado: {task.nomProcesso}"
36
- show_toast("Info", f"Processo a ser executado: {task.nomProcesso}")
37
-
38
- console.print(f"\n{log_msg}\n", style="green")
39
- logger.info(log_msg)
40
- task_uuid = task.uuidProcesso
41
- url_retorno = task.configEntrada.get("urlRetorno", None)
42
- processo: RpaProcesso = await get_processo(task_uuid)
43
- if processo is None:
44
- worker_config = load_worker_config()
45
- err_msg = f"[WORKER] [{worker_config['NOME_ROBO']}] Falha ao obter o processo [{task.nomProcesso}] uuid [{task_uuid}] da API, não foi possivel registrar o historico, mas o processo será executado."
46
- console.print(err_msg, style="yellow")
47
- logger.error(err_msg)
48
- show_toast("Erro", err_msg)
49
- await send_gchat_message(err_msg)
50
- registrar_historico = False
51
- else:
52
- registrar_historico = True
53
-
54
- if registrar_historico:
55
- historico: RpaHistorico = await _store_historico(task, processo)
56
- try:
57
- if task_uuid in task_definitions:
58
- # Executar a task
59
- if task_uuid == "276d0c41-0b7c-4446-ae0b-dd5d782917cc":
60
- task.historico_id = historico.uuidHistorico
61
-
62
- result: RpaRetornoProcessoDTO = await task_definitions[task_uuid](task)
63
- if registrar_historico:
64
- await _update_historico(
65
- historico_uuid=historico.uuidHistorico,
66
- task=task,
67
- retorno_processo=result,
68
- processo=processo,
69
- )
70
-
71
- if result.sucesso == False:
72
- show_toast("Erro", f"Processo executado com falha: {result}")
73
-
74
- await capture_and_send_screenshot(
75
- uuidRelacao=historico.uuidHistorico, desArquivo=result.retorno
76
- )
77
- else:
78
- show_toast("Sucesso", f"Processo executado com sucesso: {result}")
79
-
80
- if url_retorno is not None and result.sucesso == False:
81
- await send_to_webhook(url_retorno, result.status, result.retorno)
82
- return result
83
- else:
84
- err_msg = f"Processo não encontrado: {task_uuid}"
85
- console.print(err_msg, style="yellow")
86
- logger.error(err_msg)
87
- show_toast("Erro", err_msg)
88
-
89
- if registrar_historico:
90
- await _update_historico(
91
- historico_uuid=historico.uuidHistorico,
92
- task=task,
93
- retorno_processo=RpaRetornoProcessoDTO(
94
- sucesso=False,
95
- retorno=err_msg,
96
- status=RpaHistoricoStatusEnum.Falha,
97
- ),
98
- processo=processo,
99
- )
100
- await unlock_queue(task.uuidFila)
101
- if url_retorno is not None:
102
- await send_to_webhook(url_retorno, RpaHistoricoStatusEnum.Falha, err_msg)
103
- return None
104
- except Exception as e:
105
- err_msg = f"Erro ao performar o processo: {e}"
106
- console.print(f"\n{err_msg}\n", style="red")
107
- logger.error(err_msg)
108
- show_toast("Erro", err_msg)
109
-
110
- if registrar_historico:
111
- await _update_historico(
112
- historico_uuid=historico.uuidHistorico,
113
- task=task,
114
- retorno_processo=RpaRetornoProcessoDTO(
115
- sucesso=False, retorno=err_msg, status=RpaHistoricoStatusEnum.Falha
116
- ),
117
- processo=processo,
118
- )
119
- await capture_and_send_screenshot(
120
- uuidRelacao=historico.uuidHistorico, desArquivo=err_msg
121
- )
122
- if url_retorno is not None:
123
- await send_to_webhook(url_retorno, RpaHistoricoStatusEnum.Falha, err_msg)
124
-
125
-
126
- async def _store_historico(
127
- task: RpaProcessoEntradaDTO, processo: RpaProcesso
128
- ) -> RpaHistorico:
129
- """
130
- Salva o histórico de um processo com status Processando.
131
-
132
- Recebe um RpaProcessoEntradaDTO e um RpaProcesso como parâmetro e salva o
133
- histórico com status Processando. Retorna um dicionário com o uuid do
134
- histórico salvo.
135
-
136
- Args:
137
- task (RpaProcessoEntradaDTO): O processo a ser salvo.
138
- processo (RpaProcesso): O processo que está sendo executado.
139
-
140
- Returns:
141
- RpaHistorico: Dicionário com o uuid do histórico salvo.
142
- """
143
- try:
144
- from worker_automate_hub.config.settings import load_worker_config
145
-
146
- worker_config = load_worker_config()
147
- tz = timezone("America/Sao_Paulo")
148
- start_time = datetime.now(tz).isoformat()
149
-
150
- identificador_processo = (
151
- task.configEntrada.get("nfe") or
152
- task.configEntrada.get("empresa") or
153
- ""
154
- )
155
-
156
-
157
- # Armazenar início da operação no histórico
158
- start_data = RpaHistoricoRequestDTO(
159
- uuidProcesso=task.uuidProcesso,
160
- uuidRobo=worker_config["UUID_ROBO"],
161
- prioridade=processo.prioridade,
162
- desStatus=RpaHistoricoStatusEnum.Processando,
163
- configEntrada=task.configEntrada,
164
- datInicioExecucao=start_time,
165
- datEntradaFila=task.datEntradaFila,
166
- identificador=identificador_processo,
167
- )
168
-
169
- store_response: RpaHistorico = await store(start_data)
170
- console.print(
171
- f"\nHistorico salvo com o uuid: {store_response.uuidHistorico}\n",
172
- style="green",
173
- )
174
- return store_response
175
- except Exception as e:
176
- err_msg = f"Erro ao salvar o registro no histórico: {e}"
177
- console.print(f"\n{err_msg}\n", style="red")
178
- logger.error(f"{err_msg}")
179
-
180
-
181
- async def _update_historico(
182
- historico_uuid: str,
183
- task: RpaProcessoEntradaDTO,
184
- retorno_processo: RpaRetornoProcessoDTO,
185
- processo: RpaProcesso,
186
- ):
187
- """
188
- Atualiza o histórico de um processo com o status de sucesso ou falha.
189
-
190
- Recebe o uuid do histórico, o RpaProcessoEntradaDTO do processo, um booleano
191
- indicando se o processo foi um sucesso ou não, o RpaRetornoProcessoDTO do
192
- processo e o RpaProcesso do processo como parâmetro e atualiza o histórico
193
- com o status de sucesso ou falha. Retorna um dicionário com o uuid do
194
- histórico atualizado.
195
-
196
- Args:
197
- historico_uuid (str): O uuid do histórico.
198
- task (RpaProcessoEntradaDTO): O RpaProcessoEntradaDTO do processo.
199
- sucesso (bool): Um booleano indicando se o processo foi um sucesso ou não.
200
- retorno_processo (RpaRetornoProcessoDTO): O RpaRetornoProcessoDTO do processo.
201
- processo (RpaProcesso): O RpaProcesso do processo.
202
-
203
- Returns:
204
- RpaHistorico: Dicionário com o uuid do histórico atualizado.
205
- """
206
-
207
- try:
208
- from worker_automate_hub.config.settings import load_worker_config
209
-
210
- worker_config = load_worker_config()
211
- tz = timezone("America/Sao_Paulo")
212
- des_status: RpaHistoricoStatusEnum = retorno_processo.status
213
- end_time = datetime.now(tz).isoformat()
214
-
215
- identificador_processo = (
216
- task.configEntrada.get("nfe") or
217
- task.configEntrada.get("empresa") or
218
- ""
219
- )
220
- if not retorno_processo.tags:
221
- retorno_processo.tags = []
222
-
223
- # Armazenar fim da operação no histórico
224
- end_data = RpaHistoricoRequestDTO(
225
- uuidHistorico=historico_uuid,
226
- uuidProcesso=task.uuidProcesso,
227
- uuidRobo=worker_config["UUID_ROBO"],
228
- prioridade=processo.prioridade,
229
- desStatus=des_status,
230
- configEntrada=task.configEntrada,
231
- retorno=retorno_processo,
232
- datFimExecucao=end_time,
233
- identificador=identificador_processo,
234
- tags=retorno_processo.tags,
235
- )
236
-
237
- update_response: RpaHistorico = await update(end_data)
238
- console.print(
239
- f"\nHistorico atualizado com o uuid: {update_response.uuidHistorico}\n",
240
- style="green",
241
- )
242
- return update_response
243
-
244
- except Exception as e:
245
- err_msg = f"Erro ao atualizar o histórico do processo: {e}"
246
- console.print(f"\n{err_msg}\n", style="red")
247
- logger.error(err_msg)