worker-automate-hub 0.5.795__tar.gz → 0.5.797__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (108) hide show
  1. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/pyproject.toml +1 -1
  3. worker_automate_hub-0.5.797/worker_automate_hub/cli.py +212 -0
  4. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +10 -12
  5. worker_automate_hub-0.5.795/worker_automate_hub/cli.py +0 -232
  6. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/README.md +0 -0
  7. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/__init__.py +0 -0
  8. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/__init__.py +0 -0
  9. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/ahead_service.py +0 -0
  10. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/client.py +0 -0
  11. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/datalake_service.py +0 -0
  12. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/helpers/__init__.py +0 -0
  13. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  14. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/rdp_service.py +0 -0
  15. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  16. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  17. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/api/webhook_service.py +0 -0
  18. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/config/__init__.py +0 -0
  19. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/config/settings.py +0 -0
  20. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/config.py +0 -0
  21. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/core/so_manipulation.py +0 -0
  22. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/__init__.py +0 -0
  23. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/deprecation.py +0 -0
  24. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/rate_limit.py +0 -0
  25. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/repeat.py +0 -0
  26. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/retry.py +0 -0
  27. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/singleton.py +0 -0
  28. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/decorators/timeit.py +0 -0
  29. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/__init__.py +0 -0
  30. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/__init__.py +0 -0
  31. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  32. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  33. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  34. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  35. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  36. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/__init__.py +0 -0
  37. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  38. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  39. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  40. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
  41. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  42. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/__init__.py +0 -0
  43. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  44. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
  45. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  46. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  47. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
  48. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
  49. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  50. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
  51. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
  52. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
  53. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  54. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  55. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  56. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  57. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  58. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  59. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
  60. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
  61. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  62. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  63. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  64. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  65. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  66. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  67. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  68. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_37.py +0 -0
  69. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  70. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  71. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
  72. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  73. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  74. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
  75. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  76. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
  77. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
  78. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +0 -0
  79. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque_fiscal.py +0 -0
  80. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  81. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
  82. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  83. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  84. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
  85. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
  86. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
  87. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
  88. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
  89. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
  90. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
  91. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  92. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  93. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
  94. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
  95. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  96. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  97. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  98. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/task_definitions.py +0 -0
  99. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/tasks/task_executor.py +0 -0
  100. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/__init__.py +0 -0
  101. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/env.py +0 -0
  102. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  103. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/logger.py +0 -0
  104. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/toast.py +0 -0
  105. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/updater.py +0 -0
  106. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/util.py +0 -0
  107. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  108. {worker_automate_hub-0.5.795 → worker_automate_hub-0.5.797}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: worker-automate-hub
3
- Version: 0.5.795
3
+ Version: 0.5.797
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.795"
3
+ version = "0.5.797"
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"
@@ -0,0 +1,212 @@
1
+ import asyncio
2
+ import importlib.metadata
3
+ import threading
4
+
5
+ import inquirer
6
+ import psutil
7
+ from inquirer.themes import GreenPassion
8
+ from rich.console import Console
9
+ from typer import Context, Exit, Option, Typer
10
+
11
+ from worker_automate_hub.api.client import get_workers, load_environments
12
+ from worker_automate_hub.core.so_manipulation import (
13
+ add_worker_config,
14
+ download_tesseract,
15
+ update_assets_v2,
16
+ write_env_config,
17
+ )
18
+ from worker_automate_hub.utils.updater import check_for_update
19
+ from worker_automate_hub.utils.util import (
20
+ add_start_on_boot_to_registry,
21
+ create_worker_bat,
22
+ )
23
+
24
+ from .worker import run_worker
25
+
26
+ console = Console()
27
+ app = Typer()
28
+ stop_event = threading.Event() # Evento para parar as threads
29
+
30
+
31
+ HELP_MESSAGE = """
32
+ [b]Worker[/] - Grupo Argenta
33
+
34
+ Forma de uso: [b]worker [SUBCOMANDO] [ARGUMENTOS][/]
35
+
36
+ Existem 3 subcomandos disponíveis para essa aplicação
37
+
38
+ - [b]run[/]: Inicializa o Worker na máquina atual e começa a solicitar trabalho para o orquestrador.
39
+ - [b]validate[/]: Verifica se o Worker atual está configurado corretamente e pronto para ser inicializado.
40
+ - [b]assets[/]: Realiza a limpeza e depois download na pasta assets de todos arquivos utilizado pelo worker durante execução.
41
+
42
+ [b]Exemplos de uso:[/]
43
+ [b][blue]RUN[/][/]
44
+ [green][b]worker[/][/] [b]run[/]
45
+
46
+ [b][blue]UPDATE[/][/]
47
+ [green][b]worker[/][/] [b]update[/]
48
+
49
+ [b][blue]VALIDATE[/][/]
50
+ [green][b]worker[/][/] [b]validate[/]
51
+
52
+ ---
53
+
54
+ [b]Help:[/]
55
+ [b]Para mais informações[/]
56
+ [green][b]worker[/][/] --help
57
+
58
+ [b]Para ver a versão instalada[/]
59
+ [green][b]worker[/][/] --version
60
+
61
+ [b]Para gerar o arquivo de configuração[/]
62
+ [green][b]worker[/][/] configure
63
+
64
+ [b]Para informações detalhadas
65
+ [blue][link=https://github.com/SIM-Rede/worker-automate-hub]Repo no GIT Argenta[/][/] | [blue][link=https://pypi.org/project/worker-automate-hub/]Publicação no PyPI[/][/]
66
+ """
67
+
68
+
69
+ @app.callback(invoke_without_command=True)
70
+ def main(
71
+ ctx: Context,
72
+ version: bool = Option(
73
+ False,
74
+ "--version",
75
+ help="Mostra a versão instalada",
76
+ is_flag=True,
77
+ ),
78
+ ):
79
+ """Comando principal"""
80
+ if ctx.invoked_subcommand:
81
+ return
82
+
83
+ if version:
84
+ console.print(
85
+ importlib.metadata.version("worker-automate-hub"),
86
+ style="bold blue",
87
+ )
88
+ raise Exit(code=0)
89
+
90
+ console.print(HELP_MESSAGE)
91
+
92
+
93
+ @app.command()
94
+ def configure():
95
+ """Executa o processo interativo de configuração"""
96
+ console.clear()
97
+ environment_names = [
98
+ "local",
99
+ "qa",
100
+ "main",
101
+ ]
102
+ q = [
103
+ inquirer.Text("vault_token", "Por favor digite o token do Vault"),
104
+ inquirer.List("env_list", "Selecione o ambiente", environment_names),
105
+ ]
106
+ r = inquirer.prompt(q, theme=GreenPassion())
107
+
108
+ env_sel, credentials = load_environments(r["env_list"], r["vault_token"])
109
+ write_env_config(env_sel, credentials)
110
+ workers = asyncio.run(get_workers())
111
+
112
+ if workers is None:
113
+ console.print("\nNenhum worker encontrado.\n", style="yellow")
114
+ raise Exit(code=0)
115
+
116
+ nomes_workers = [worker["nomRobo"] for worker in workers]
117
+ q2 = [inquirer.List("worker_list", "Selecione um Worker", choices=nomes_workers)]
118
+ r2 = inquirer.prompt(q2, theme=GreenPassion())
119
+ worker_sel = next(
120
+ worker for worker in workers if worker["nomRobo"] == r2["worker_list"]
121
+ )
122
+ add_worker_config(worker_sel)
123
+
124
+ q3 = [
125
+ inquirer.Confirm(
126
+ "reg_config",
127
+ message="Adicionar configuração de inicialização aos registros do Windows?",
128
+ )
129
+ ]
130
+ r3 = inquirer.prompt(q3, theme=GreenPassion())
131
+ if r3["reg_config"]:
132
+ add_start_on_boot_to_registry()
133
+
134
+ q4 = [
135
+ inquirer.Confirm(
136
+ "assets_config",
137
+ message="Atualizar a pasta assets?",
138
+ )
139
+ ]
140
+ r4 = inquirer.prompt(q4, theme=GreenPassion())
141
+ if r4["assets_config"]:
142
+ update_assets_v2()
143
+
144
+ q5 = [inquirer.Confirm("worker_bat", message="Criar o arquivo worker-startup.bat?")]
145
+ r5 = inquirer.prompt(q5, theme=GreenPassion())
146
+ if r5["worker_bat"]:
147
+ create_worker_bat()
148
+
149
+ q6 = [
150
+ inquirer.Confirm(
151
+ "tesseract_install", message="Iniciar a instalação do Tesseract?"
152
+ )
153
+ ]
154
+ r6 = inquirer.prompt(q6, theme=GreenPassion())
155
+ if r6["tesseract_install"]:
156
+ asyncio.run(download_tesseract())
157
+
158
+ console.print("\nConfiguração finalizada com sucesso!\n", style="bold green")
159
+
160
+ raise Exit(code=0)
161
+
162
+
163
+ def is_command_running(command):
164
+ """
165
+ Verifica se um comando CLI está sendo executado em outro terminal.
166
+ """
167
+ command_str = " ".join(command)
168
+ rep = 0
169
+ for proc in psutil.process_iter(["pid", "name", "cmdline"]):
170
+ try:
171
+ cmdline = proc.info["cmdline"]
172
+ if cmdline and isinstance(cmdline, list):
173
+ cmdline_str = " ".join(cmdline)
174
+ if command_str in cmdline_str:
175
+ rep += 1
176
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
177
+ continue
178
+
179
+ return rep > 1
180
+
181
+
182
+ @app.command()
183
+ def run(
184
+ force: bool = Option(
185
+ False,
186
+ "--force",
187
+ help="Força a execução mesmo se outro comando já estiver rodando.",
188
+ ),
189
+ assets: bool = Option(
190
+ False,
191
+ "--assets",
192
+ help="Executa o download da pasta assets atualizada.",
193
+ ),
194
+ ):
195
+ """Inicializa o worker"""
196
+ if assets:
197
+ update_assets_v2()
198
+
199
+ command = ["worker", "run"]
200
+ if not force and is_command_running(command):
201
+ console.print(
202
+ "\nO script já está em execução. Saindo...\n", style="bold yellow"
203
+ )
204
+ raise Exit(code=0)
205
+
206
+ run_worker(stop_event)
207
+
208
+
209
+ @app.command()
210
+ def update():
211
+ """Força verificação/atualização do worker"""
212
+ check_for_update(stop_event)
@@ -605,7 +605,7 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
605
605
  console.print(f"Tanque a ser distribuido: {info_distribuicao_obs}... \n")
606
606
  send_keys("^({HOME})")
607
607
  await worker_sleep(1)
608
- send_keys("{DOWN " + str(index_tanque) + "}", pause=0.1)
608
+ send_keys("{DOWN " + str(index_tanque) + "}", pause=0.5)
609
609
  await worker_sleep(1)
610
610
  #Copiar e extrai o Seq Item XML
611
611
  send_keys("^c")
@@ -617,7 +617,7 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
617
617
  item_executado = seq_item
618
618
  else:
619
619
  while seq_item == item_executado:
620
- send_keys("{DOWN}", pause=0.1)
620
+ send_keys("{DOWN}", pause=0.5)
621
621
  index_tanque += 1
622
622
  send_keys("^c")
623
623
  copiado = pyperclip.paste()
@@ -626,12 +626,11 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
626
626
  seq_item = colunas[0]
627
627
 
628
628
  send_keys("+{F10}")
629
- await worker_sleep(1)
629
+ await worker_sleep(2)
630
630
  send_keys("{DOWN 6}")
631
- await worker_sleep(1)
631
+ await worker_sleep(2)
632
632
  send_keys("{ENTER}")
633
633
  await worker_sleep(4)
634
-
635
634
 
636
635
  max_attempts = 5
637
636
  i = 0
@@ -640,7 +639,6 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
640
639
  if distribuir_item_window["IsOpened"] == True:
641
640
  app = Application().connect(title="Distribui Item Tanque")
642
641
  main_window = app["Distribui Item Tanque"]
643
-
644
642
  main_window.set_focus()
645
643
  break
646
644
  else:
@@ -665,11 +663,11 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
665
663
  center_y = (grid_rect.top + grid_rect.bottom) // 2
666
664
 
667
665
  pyautogui.click(center_x, center_y)
668
- await worker_sleep(3)
666
+ await worker_sleep(4)
669
667
  send_keys("^({HOME})")
670
- await worker_sleep(3)
668
+ await worker_sleep(4)
671
669
  send_keys("{LEFT 3}")
672
- await worker_sleep(3)
670
+ await worker_sleep(4)
673
671
 
674
672
  distribuiu_algo = False
675
673
  distribuicao_atual = []
@@ -714,11 +712,11 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
714
712
  quantidade_combustivel = re.findall(r'\((.*?)\)', second_info_distribuicao_obs)[0].replace('.', '')
715
713
 
716
714
  send_keys("{LEFT 3}")
717
- await worker_sleep(1)
715
+ await worker_sleep(2)
718
716
  send_keys("{RIGHT 3}")
719
717
 
720
718
  pyautogui.press('enter')
721
- await worker_sleep(1)
719
+ await worker_sleep(2)
722
720
  pyautogui.write(quantidade_combustivel)
723
721
  pyautogui.press('enter')
724
722
  list_tanques_distribuidos.append(second_info_distribuicao_obs)
@@ -1372,4 +1370,4 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
1372
1370
 
1373
1371
  finally:
1374
1372
  # Deleta o xml
1375
- await delete_xml(nota["nfe"])
1373
+ await delete_xml(nota["nfe"])
@@ -1,232 +0,0 @@
1
- import asyncio
2
- import importlib.metadata
3
- import threading
4
-
5
- import inquirer
6
- import psutil
7
- from inquirer.themes import GreenPassion
8
- from rich.console import Console
9
- from typer import Context, Exit, Option, Typer
10
-
11
- from worker_automate_hub.api.client import get_workers, load_environments
12
- from worker_automate_hub.core.so_manipulation import (
13
- add_worker_config,
14
- download_tesseract,
15
- update_assets_v2,
16
- write_env_config,
17
- )
18
- from worker_automate_hub.utils.updater import check_for_update
19
- from worker_automate_hub.utils.util import (
20
- add_start_on_boot_to_registry,
21
- create_worker_bat,
22
- )
23
-
24
- from .worker import run_worker
25
-
26
- console = Console()
27
- app = Typer()
28
- stop_event = threading.Event() # Evento para parar as threads
29
-
30
-
31
- HELP_MESSAGE = """
32
- [b]Worker[/] - Grupo Argenta
33
-
34
- Forma de uso: [b]worker [SUBCOMANDO] [ARGUMENTOS][/]
35
-
36
- Existem 3 subcomandos disponíveis para essa aplicação
37
-
38
- - [b]run[/]: Inicializa o Worker na máquina atual e começa a solicitar trabalho para o orquestrador.
39
- - [b]validate[/]: Verifica se o Worker atual está configurado corretamente e pronto para ser inicializado.
40
- - [b]assets[/]: Realiza a limpeza e depois download na pasta assets de todos arquivos utilizado pelo worker durante execução.
41
-
42
- [b]Exemplos de uso:[/]
43
- [b][blue]RUN[/][/]
44
- [green][b]worker[/][/] [b]run[/]
45
-
46
- [b][blue]UPDATE[/][/]
47
- [green][b]worker[/][/] [b]update[/]
48
-
49
- [b][blue]VALIDATE[/][/]
50
- [green][b]worker[/][/] [b]validate[/]
51
-
52
- ---
53
-
54
- [b]Help:[/]
55
- [b]Para mais informações[/]
56
- [green][b]worker[/][/] --help
57
-
58
- [b]Para ver a versão instalada[/]
59
- [green][b]worker[/][/] --version
60
-
61
- [b]Para gerar o arquivo de configuração[/]
62
- [green][b]worker[/][/] --configure
63
-
64
- [b]Para informações detalhadas
65
- [blue][link=https://github.com/SIM-Rede/worker-automate-hub]Repo no GIT Argenta[/][/] | [blue][link=https://pypi.org/project/worker-automate-hub/]Publicação no PyPI[/][/]
66
- """
67
-
68
-
69
- def function_help(flag: bool):
70
- if flag:
71
- console.print(
72
- importlib.metadata.version("worker-automate-hub"),
73
- style="bold blue",
74
- )
75
- raise Exit(code=0)
76
-
77
-
78
- def function_configure(flag: bool):
79
-
80
- if flag:
81
- console.clear()
82
- environment_names = [
83
- "local",
84
- "qa",
85
- "main",
86
- ]
87
- q = [
88
- inquirer.Text("vault_token", "Por favor digite o token do Vault"),
89
- inquirer.List("env_list", "Selecione o ambiente", environment_names),
90
- ]
91
- r = inquirer.prompt(q, theme=GreenPassion())
92
-
93
- env_sel, credentials = load_environments(r["env_list"], r["vault_token"])
94
- write_env_config(env_sel, credentials)
95
- workers = asyncio.run(get_workers())
96
-
97
- if workers == None:
98
- console.print("\nNenhum worker encontrado.\n", style="yellow")
99
- raise Exit(code=0)
100
- else:
101
-
102
- nomes_workers = [worker["nomRobo"] for worker in workers]
103
- q2 = [
104
- inquirer.List(
105
- "worker_list", "Selecione um Worker", choices=nomes_workers
106
- )
107
- ]
108
- r2 = inquirer.prompt(q2, theme=GreenPassion())
109
- worker_sel = next(
110
- worker for worker in workers if worker["nomRobo"] == r2["worker_list"]
111
- )
112
- add_worker_config(worker_sel)
113
-
114
- q3 = [
115
- inquirer.Confirm(
116
- "reg_config",
117
- message="Adicionar configuração de inicialização aos registros do Windows?",
118
- )
119
- ]
120
- r3 = inquirer.prompt(q3, theme=GreenPassion())
121
-
122
- if r3["reg_config"]:
123
- add_start_on_boot_to_registry()
124
-
125
- q4 = [
126
- inquirer.Confirm(
127
- "assets_config",
128
- message="Atualizar a pasta assets?",
129
- )
130
- ]
131
- r4 = inquirer.prompt(q4, theme=GreenPassion())
132
-
133
- if r4["assets_config"]:
134
- update_assets_v2()
135
-
136
- q5 = [
137
- inquirer.Confirm(
138
- "worker_bat", message="Criar o arquivo worker-startup.bat?"
139
- )
140
- ]
141
- r5 = inquirer.prompt(q5, theme=GreenPassion())
142
-
143
- if r5["worker_bat"]:
144
- create_worker_bat()
145
-
146
- q6 = [
147
- inquirer.Confirm(
148
- "tesseract_install", message="Iniciar a instalação do Tesseract?"
149
- )
150
- ]
151
- r6 = inquirer.prompt(q6, theme=GreenPassion())
152
-
153
- if r6["tesseract_install"]:
154
- asyncio.run(download_tesseract())
155
-
156
- console.print(
157
- "\nConfiguração finalizada com sucesso!\n", style="bold green"
158
- )
159
-
160
- raise Exit(code=0)
161
-
162
-
163
- @app.callback(invoke_without_command=True)
164
- def main(
165
- ctx: Context,
166
- version: bool = Option(False, callback=function_help, is_flag=True),
167
- configure: bool = Option(False, callback=function_configure, is_flag=True),
168
- ):
169
- if ctx.invoked_subcommand:
170
- return
171
- console.print(HELP_MESSAGE)
172
-
173
-
174
- def is_command_running(command):
175
- """
176
- Verifica se um comando CLI está sendo executado em outro terminal.
177
-
178
- :param command: O comando CLI a ser verificado (lista de strings).
179
- :return: True se o comando estiver sendo executado, False caso contrário.
180
- """
181
- command_str = " ".join(command)
182
- rep = 0
183
- for proc in psutil.process_iter(["pid", "name", "cmdline"]):
184
- try:
185
- cmdline = proc.info["cmdline"]
186
- if cmdline and isinstance(cmdline, list):
187
- cmdline_str = " ".join(cmdline)
188
- if command_str in cmdline_str:
189
- print(cmdline_str)
190
- rep += 1
191
-
192
- except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
193
- continue
194
-
195
- if rep > 1:
196
- return True
197
- else:
198
- return False
199
-
200
-
201
- from typer import Option
202
-
203
-
204
- @app.command()
205
- def run(
206
- force: bool = Option(
207
- False,
208
- "--force",
209
- help="Força a execução mesmo se outro comando já estiver rodando.",
210
- ),
211
- assets: bool = Option(
212
- False,
213
- "--assets",
214
- help="Executa o download da pasta assets atualizada.",
215
- )
216
- ):
217
- if assets:
218
- update_assets_v2()
219
-
220
- command = ["worker", "run"]
221
- if not force and is_command_running(command):
222
- console.print(
223
- "\nO script já está em execução. Saindo...\n", style="bold yellow"
224
- )
225
- raise Exit(code=0)
226
- else:
227
- run_worker(stop_event)
228
-
229
-
230
- @app.command()
231
- def update():
232
- check_for_update(stop_event)