worker-automate-hub 0.5.10__tar.gz → 0.5.12__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.
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/PKG-INFO +1 -1
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/pyproject.toml +1 -1
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/rpa_fila_service.py +22 -16
- worker_automate_hub-0.5.12/worker_automate_hub/api/rpa_historico_service.py +258 -0
- worker_automate_hub-0.5.12/worker_automate_hub/models/dao/rpa_fila.py +18 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +1 -1
- worker_automate_hub-0.5.12/worker_automate_hub/tasks/task_executor.py +122 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/worker.py +29 -4
- worker_automate_hub-0.5.10/worker_automate_hub/api/rpa_historico_service.py +0 -123
- worker_automate_hub-0.5.10/worker_automate_hub/tasks/task_executor.py +0 -247
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/README.md +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/ahead_service.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/client.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/helpers/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/rdp_service.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/webhook_service.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/cli.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/config/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/config/settings.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/config.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/core/so_manipulation.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/deprecation.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/rate_limit.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/repeat.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/retry.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/singleton.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/timeit.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dao/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/playground.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/task_definitions.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/__init__.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/env.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/logger.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/toast.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/updater.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/util.py +0 -0
- {worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
@@ -1,30 +1,34 @@
|
|
1
|
-
|
2
|
-
from worker_automate_hub.utils.logger import logger
|
1
|
+
import aiohttp
|
3
2
|
from rich.console import Console
|
4
3
|
|
5
|
-
import
|
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(
|
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(
|
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(
|
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("
|
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
|
-
|
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)
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/ahead_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/rdp_service.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/api/webhook_service.py
RENAMED
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/config/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/config/settings.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/repeat.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/retry.py
RENAMED
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/decorators/timeit.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dao/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/models/dto/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/tasks/jobs/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/logger.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/toast.py
RENAMED
File without changes
|
{worker_automate_hub-0.5.10 → worker_automate_hub-0.5.12}/worker_automate_hub/utils/updater.py
RENAMED
File without changes
|
File without changes
|
File without changes
|