operx-cli 0.4.0__tar.gz → 0.6.0__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.
- {operx_cli-0.4.0/operx_cli.egg-info → operx_cli-0.6.0}/PKG-INFO +33 -10
- operx_cli-0.4.0/PKG-INFO → operx_cli-0.6.0/README.md +266 -257
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/AGENTES.md +72 -16
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/__init__.py +1 -1
- operx_cli-0.6.0/operx_cli/api_fields.py +232 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/app.py +9 -2
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/account.py +6 -3
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/ambiental.py +12 -6
- operx_cli-0.6.0/operx_cli/commands/articulos.py +128 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/avisos.py +4 -2
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/common.py +22 -2
- operx_cli-0.6.0/operx_cli/commands/completar.py +172 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/empresas.py +6 -6
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/inventario.py +19 -12
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/lecturas.py +9 -5
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/ordenes.py +20 -12
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/personas.py +13 -4
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/planta.py +14 -4
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/preventivos.py +7 -3
- operx_cli-0.6.0/operx_cli/commands/raw.py +288 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/registros.py +139 -4
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/sst.py +4 -2
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/lookup.py +2 -1
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/record_completion.py +6 -1
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/settings.py +29 -2
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/shell.py +1 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/spreadsheet.py +4 -2
- operx_cli-0.6.0/operx_cli/welcome.py +236 -0
- operx_cli-0.4.0/README.md → operx_cli-0.6.0/operx_cli.egg-info/PKG-INFO +280 -243
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli.egg-info/SOURCES.txt +7 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/pyproject.toml +1 -1
- operx_cli-0.6.0/tests/test_api_campos.py +166 -0
- operx_cli-0.6.0/tests/test_articulos.py +74 -0
- operx_cli-0.6.0/tests/test_completar.py +127 -0
- operx_cli-0.6.0/tests/test_json_writes.py +184 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_login.py +15 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_logout_and_routes.py +25 -2
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_lookup.py +1 -1
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_record_completion.py +13 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_registros.py +59 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_welcome.py +98 -0
- operx_cli-0.4.0/operx_cli/commands/raw.py +0 -151
- operx_cli-0.4.0/operx_cli/welcome.py +0 -113
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/agent_guide.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/browser_login.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/client.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/__init__.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/reportes.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/search.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/commands/update.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/output.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/self_update.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/updates.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli/values.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli.egg-info/dependency_links.txt +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli.egg-info/entry_points.txt +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli.egg-info/requires.txt +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/operx_cli.egg-info/top_level.txt +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/setup.cfg +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_agentes.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_app.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_cards.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_client.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_inventario_lecturas.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_more_of_the_api.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_ordenes.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_output.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_personas.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_preventivos.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_self_update.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_settings.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_shell.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_spreadsheet.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_sst_ambiental.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_updates.py +0 -0
- {operx_cli-0.4.0 → operx_cli-0.6.0}/tests/test_values.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: operx-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: La línea de comandos de OperX: tu empresa desde la terminal, con tu token de API.
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -80,9 +80,11 @@ este equipo. Un token puesto en `OPERX_TOKEN` no lo toca.
|
|
|
80
80
|
## Modo interactivo
|
|
81
81
|
|
|
82
82
|
Escribe `operx` solo, en una terminal, y se abre la pantalla de bienvenida
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
con un prompt: quién eres, un aviso si tu acceso vence en menos de una
|
|
84
|
+
semana, y los números de hoy de cada producto de tu empresa (órdenes abiertas
|
|
85
|
+
y vencidas, artículos bajo el mínimo, equipos parados, acciones del SG-SST,
|
|
86
|
+
obligaciones ambientales del mes). Ahí escribes los comandos sin el `operx`,
|
|
87
|
+
con Tab para completar y ↑ para repetir lo anterior:
|
|
86
88
|
|
|
87
89
|
```
|
|
88
90
|
operx › ordenes listar --vencidas
|
|
@@ -95,6 +97,14 @@ operx › salir
|
|
|
95
97
|
muestran solo los comandos de los productos que tiene tu empresa. En un script
|
|
96
98
|
o una tubería, `operx` solo muestra la ayuda y no espera a nadie.
|
|
97
99
|
|
|
100
|
+
### Tab en PowerShell
|
|
101
|
+
|
|
102
|
+
`operx completar` hace que Tab complete los comandos y las opciones de operx
|
|
103
|
+
también en tu PowerShell de siempre (`operx ord` + Tab → `operx ordenes`).
|
|
104
|
+
Pregunta antes de agregar una línea a tu perfil de PowerShell, y `operx
|
|
105
|
+
completar --quitar` la quita. No toca la política de ejecución: si tu
|
|
106
|
+
PowerShell no corre scripts, te dice la línea para permitir los tuyos.
|
|
107
|
+
|
|
98
108
|
## Comandos
|
|
99
109
|
|
|
100
110
|
```sh
|
|
@@ -124,10 +134,17 @@ operx preventivos ejecuciones 12
|
|
|
124
134
|
operx equipos listar --buscar compresor
|
|
125
135
|
operx equipos ver BOM-04
|
|
126
136
|
operx equipos crear --nombre "Bomba 4" --codigo BOM-04 --lugar "Planta Norte"
|
|
137
|
+
operx equipos editar BOM-04 --estado en-mantenimiento --lugar "Taller"
|
|
127
138
|
operx clientes listar
|
|
128
139
|
operx clientes crear --nombre "Acme S.A.S." --nit 900123456
|
|
129
140
|
operx clientes crear --nombre "Filtros Ltda" --rol proveedor
|
|
141
|
+
operx clientes editar 900123456 --telefono "601 555 0101"
|
|
130
142
|
operx lugares listar
|
|
143
|
+
operx lugares crear --nombre "Bodega central" --tipo bodega --dentro-de "Planta Norte"
|
|
144
|
+
|
|
145
|
+
operx articulos listar --bajo-minimo
|
|
146
|
+
operx articulos ver FIL-010
|
|
147
|
+
operx articulos crear --nombre "Filtro de aceite" --unidad und --tipo consumible
|
|
131
148
|
|
|
132
149
|
operx inventario existencias --buscar filtro
|
|
133
150
|
operx inventario entrada --articulo FIL-010 --lugar "Bodega central" --cantidad 10 --costo-unitario 1.500,50
|
|
@@ -179,7 +196,9 @@ llevas el SG-SST o lo ambiental de tus clientes, `operx sst empresas` y
|
|
|
179
196
|
### Antes de escribir
|
|
180
197
|
|
|
181
198
|
Todo lo que crea o cambia algo pregunta antes. En un script o una tarea
|
|
182
|
-
programada no hay a quién preguntar: agrega `--si`.
|
|
199
|
+
programada no hay a quién preguntar: agrega `--si`. Con `--json`, lo que
|
|
200
|
+
escribe responde el registro creado o cambiado (con su `id`) en vez de una
|
|
201
|
+
frase. Cada escritura queda en
|
|
183
202
|
el historial del token (Acceso por API › el token › Actividad) marcada como
|
|
184
203
|
hecha desde la CLI.
|
|
185
204
|
|
|
@@ -194,13 +213,17 @@ Usuarios y acceso.
|
|
|
194
213
|
|
|
195
214
|
### Cualquier otra llamada
|
|
196
215
|
|
|
197
|
-
Lo que no tiene comando propio se hace con `operx api
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
216
|
+
Lo que no tiene comando propio se hace con `operx api`: todo lo que tu
|
|
217
|
+
token puede hacer, más de 400 llamadas. `operx api rutas` las lista
|
|
218
|
+
(`operx api rutas sst inspections` deja las que tienen esas palabras), y
|
|
219
|
+
`operx api campos RUTA` dice qué lleva una: sus filtros, cada campo con su
|
|
220
|
+
tipo, si es obligatorio y los valores permitidos. También están en Acceso
|
|
221
|
+
por API › Documentación:
|
|
201
222
|
|
|
202
223
|
```sh
|
|
203
|
-
operx api rutas
|
|
224
|
+
operx api rutas repuestos
|
|
225
|
+
operx api campos inventory/work-orders/1234/parts/ --metodo POST
|
|
226
|
+
operx api POST inventory/work-orders/1234/parts/ -d '{"action": "usar", "item": 3, "quantity": "2", "location": 2}'
|
|
204
227
|
operx api GET pm/schedules/ -q search=compresor
|
|
205
228
|
operx api POST contacts/ -d @contacto.json
|
|
206
229
|
operx api GET work-orders/export/ -o ordenes.csv
|
|
@@ -1,257 +1,266 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
operx
|
|
89
|
-
operx
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
operx
|
|
102
|
-
|
|
103
|
-
operx ordenes
|
|
104
|
-
operx ordenes
|
|
105
|
-
operx ordenes
|
|
106
|
-
operx ordenes
|
|
107
|
-
|
|
108
|
-
operx
|
|
109
|
-
operx
|
|
110
|
-
operx
|
|
111
|
-
|
|
112
|
-
operx
|
|
113
|
-
|
|
114
|
-
operx
|
|
115
|
-
operx
|
|
116
|
-
operx
|
|
117
|
-
|
|
118
|
-
operx preventivos
|
|
119
|
-
|
|
120
|
-
operx
|
|
121
|
-
operx
|
|
122
|
-
operx
|
|
123
|
-
|
|
124
|
-
operx
|
|
125
|
-
operx
|
|
126
|
-
operx
|
|
127
|
-
operx clientes
|
|
128
|
-
operx
|
|
129
|
-
operx
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
operx
|
|
133
|
-
operx
|
|
134
|
-
|
|
135
|
-
operx inventario
|
|
136
|
-
operx inventario
|
|
137
|
-
operx inventario
|
|
138
|
-
operx inventario
|
|
139
|
-
|
|
140
|
-
operx
|
|
141
|
-
operx
|
|
142
|
-
|
|
143
|
-
operx
|
|
144
|
-
|
|
145
|
-
operx
|
|
146
|
-
operx lecturas
|
|
147
|
-
|
|
148
|
-
operx
|
|
149
|
-
operx
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
operx
|
|
153
|
-
operx
|
|
154
|
-
|
|
155
|
-
operx sst
|
|
156
|
-
|
|
157
|
-
operx
|
|
158
|
-
operx
|
|
159
|
-
|
|
160
|
-
operx ambiental
|
|
161
|
-
operx ambiental
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
- Los
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
operx api rutas
|
|
204
|
-
operx api
|
|
205
|
-
operx api
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
1
|
+
# operx: OperX desde la terminal
|
|
2
|
+
|
|
3
|
+
`operx` usa la API de OperX con tu token personal: lo mismo que puedes hacer
|
|
4
|
+
en la app, desde una terminal, un script o una tarea programada. Actúa como
|
|
5
|
+
tú, con tu rol, y solo en tu empresa.
|
|
6
|
+
|
|
7
|
+
## Instalar
|
|
8
|
+
|
|
9
|
+
Windows (PowerShell):
|
|
10
|
+
|
|
11
|
+
```powershell
|
|
12
|
+
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"; uv tool install operx-cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Mac y Linux:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh && uv tool install operx-cli
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`uv` instala su propio Python, así que no necesitas tener uno. Si ya tienes
|
|
22
|
+
Python 3.10 o más nuevo, también sirve `pipx install operx-cli`. Abre una
|
|
23
|
+
terminal nueva y comprueba con `operx --version`.
|
|
24
|
+
|
|
25
|
+
Para actualizar: `operx update`. La pantalla de bienvenida avisa cuando hay una
|
|
26
|
+
versión nueva. En Windows la instala otra ventana, que espera a que se cierre
|
|
27
|
+
`operx` (Windows no deja reemplazar un programa abierto); si quedó a medias,
|
|
28
|
+
`uv tool install operx-cli --force --refresh` lo deja bien.
|
|
29
|
+
|
|
30
|
+
## Entrar
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
operx login
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
1. La terminal muestra un código y abre el navegador en la página de OperX.
|
|
37
|
+
2. Entras como siempre. La página dice qué terminal pide acceso: apruébalo solo
|
|
38
|
+
si acabas de escribir `operx login` en tu propio computador y el código es
|
|
39
|
+
el mismo. Escribe el código de 6 dígitos de tu app de autenticación (o tu
|
|
40
|
+
contraseña, si no usas una) y elige *Solo lectura* o *Lectura y
|
|
41
|
+
escritura*.
|
|
42
|
+
3. Vuelve a la terminal: ya entraste. Nunca ves ni copias un token.
|
|
43
|
+
|
|
44
|
+
Tu rol necesita el permiso «Acceso por API» (Ajustes › Usuarios y acceso ›
|
|
45
|
+
Roles); un administrador lo da. El acceso dura 90 días y lo ves, y puedes
|
|
46
|
+
revocarlo, en el menú de tu cuenta › Acceso por API.
|
|
47
|
+
|
|
48
|
+
El token queda en el llavero del sistema (en Windows, el Administrador de
|
|
49
|
+
credenciales; en Mac, el Llavero). En un equipo sin llavero, como un servidor
|
|
50
|
+
Linux, queda en un archivo de la carpeta de operx que solo tú puedes leer
|
|
51
|
+
(`~/.config/operx/token-principal`, permisos 600). En un servidor sin
|
|
52
|
+
navegador: `operx login --token` te deja pegar un token creado en Acceso por
|
|
53
|
+
API, o puedes usar variables de entorno: `OPERX_TOKEN` (el token) y, si no es
|
|
54
|
+
producción, `OPERX_DIRECCION`.
|
|
55
|
+
|
|
56
|
+
Para otra dirección u otra empresa, usa un perfil:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
operx --perfil pruebas login --direccion https://…
|
|
60
|
+
operx --perfil pruebas ordenes listar
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`operx logout` cierra la sesión: revoca el token en el servidor y lo borra de
|
|
64
|
+
este equipo. Un token puesto en `OPERX_TOKEN` no lo toca.
|
|
65
|
+
|
|
66
|
+
## Modo interactivo
|
|
67
|
+
|
|
68
|
+
Escribe `operx` solo, en una terminal, y se abre la pantalla de bienvenida
|
|
69
|
+
con un prompt: quién eres, un aviso si tu acceso vence en menos de una
|
|
70
|
+
semana, y los números de hoy de cada producto de tu empresa (órdenes abiertas
|
|
71
|
+
y vencidas, artículos bajo el mínimo, equipos parados, acciones del SG-SST,
|
|
72
|
+
obligaciones ambientales del mes). Ahí escribes los comandos sin el `operx`,
|
|
73
|
+
con Tab para completar y ↑ para repetir lo anterior:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
operx › ordenes listar --vencidas
|
|
77
|
+
operx › buscar "bomba"
|
|
78
|
+
operx › ayuda
|
|
79
|
+
operx › salir
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`salir` (o Ctrl+D) termina la sesión sin borrar tu token. `ayuda` y Tab
|
|
83
|
+
muestran solo los comandos de los productos que tiene tu empresa. En un script
|
|
84
|
+
o una tubería, `operx` solo muestra la ayuda y no espera a nadie.
|
|
85
|
+
|
|
86
|
+
### Tab en PowerShell
|
|
87
|
+
|
|
88
|
+
`operx completar` hace que Tab complete los comandos y las opciones de operx
|
|
89
|
+
también en tu PowerShell de siempre (`operx ord` + Tab → `operx ordenes`).
|
|
90
|
+
Pregunta antes de agregar una línea a tu perfil de PowerShell, y `operx
|
|
91
|
+
completar --quitar` la quita. No toca la política de ejecución: si tu
|
|
92
|
+
PowerShell no corre scripts, te dice la línea para permitir los tuyos.
|
|
93
|
+
|
|
94
|
+
## Comandos
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
operx buscar "bomba" # como la barra de búsqueda de la app
|
|
98
|
+
|
|
99
|
+
operx ordenes listar --estado en-progreso --asignada-a yo
|
|
100
|
+
operx ordenes ver 1234
|
|
101
|
+
operx ordenes crear --titulo "Cambio de rodamiento" --equipo BOM-04 --prioridad alta --vence 30/10/2026
|
|
102
|
+
operx ordenes estado 1234 completada
|
|
103
|
+
operx ordenes asignar 1234 "Pedro Pérez"
|
|
104
|
+
operx ordenes comentar 1234 "Llegó el repuesto"
|
|
105
|
+
operx ordenes editar 1234 --prioridad critica --vence 05/11/2026
|
|
106
|
+
operx ordenes adjuntar 1234 foto.jpg --momento despues
|
|
107
|
+
|
|
108
|
+
operx reportes indicadores --dias 30 # MTTR, MTBF, cumplimiento de preventivos
|
|
109
|
+
operx reportes vencidas
|
|
110
|
+
operx reportes carga # órdenes por persona
|
|
111
|
+
operx avisos # tus avisos sin leer
|
|
112
|
+
operx agenda # lo que toca esta semana
|
|
113
|
+
|
|
114
|
+
operx preventivos listar --estado vencidos
|
|
115
|
+
operx preventivos ver 12
|
|
116
|
+
operx preventivos crear --nombre "Lubricar rodamientos" --cada 3 --unidad meses --equipo BOM-04 --proxima 01/11/2026
|
|
117
|
+
operx preventivos nota 12 "Usar grasa EP2"
|
|
118
|
+
operx preventivos ejecuciones 12
|
|
119
|
+
|
|
120
|
+
operx equipos listar --buscar compresor
|
|
121
|
+
operx equipos ver BOM-04
|
|
122
|
+
operx equipos crear --nombre "Bomba 4" --codigo BOM-04 --lugar "Planta Norte"
|
|
123
|
+
operx equipos editar BOM-04 --estado en-mantenimiento --lugar "Taller"
|
|
124
|
+
operx clientes listar
|
|
125
|
+
operx clientes crear --nombre "Acme S.A.S." --nit 900123456
|
|
126
|
+
operx clientes crear --nombre "Filtros Ltda" --rol proveedor
|
|
127
|
+
operx clientes editar 900123456 --telefono "601 555 0101"
|
|
128
|
+
operx lugares listar
|
|
129
|
+
operx lugares crear --nombre "Bodega central" --tipo bodega --dentro-de "Planta Norte"
|
|
130
|
+
|
|
131
|
+
operx articulos listar --bajo-minimo
|
|
132
|
+
operx articulos ver FIL-010
|
|
133
|
+
operx articulos crear --nombre "Filtro de aceite" --unidad und --tipo consumible
|
|
134
|
+
|
|
135
|
+
operx inventario existencias --buscar filtro
|
|
136
|
+
operx inventario entrada --articulo FIL-010 --lugar "Bodega central" --cantidad 10 --costo-unitario 1.500,50
|
|
137
|
+
operx inventario salida --articulo FIL-010 --lugar "Bodega central" --cantidad 2 --motivo Consumo
|
|
138
|
+
operx inventario traslado --articulo FIL-010 --cantidad 2 --de "Bodega central" --a "Camioneta 1"
|
|
139
|
+
operx inventario ajuste --articulo FIL-010 --lugar "Bodega central" --cantidad -1 --motivo Conteo
|
|
140
|
+
operx inventario movimientos --articulo FIL-010
|
|
141
|
+
operx inventario revertir 4512 # deshace un movimiento equivocado
|
|
142
|
+
|
|
143
|
+
operx equipos parar BOM-04 --motivo Falla --minutos 90
|
|
144
|
+
operx equipos reanudar 21
|
|
145
|
+
operx equipos hallazgo BOM-04 --titulo "Fuga en el sello" --severidad alta
|
|
146
|
+
operx lecturas anular 31 --motivo "Lectura de otro equipo"
|
|
147
|
+
|
|
148
|
+
operx lecturas puntos BOM-04
|
|
149
|
+
operx lecturas registrar --punto 12 --valor 73,4
|
|
150
|
+
|
|
151
|
+
operx personas listar --buscar pérez
|
|
152
|
+
operx personas importar empleados.xlsx # revisa el archivo, no guarda
|
|
153
|
+
operx personas importar empleados.xlsx --confirmar # guarda si ninguna fila tiene errores
|
|
154
|
+
|
|
155
|
+
operx sst acciones --estado abiertas
|
|
156
|
+
operx sst nueva-accion --titulo "Señalizar la salida" --para 15/11/2026 --responsable "Ana Ruiz"
|
|
157
|
+
operx sst accion-hecha 7 --evidencia "Se instalaron dos señales"
|
|
158
|
+
operx sst incidentes
|
|
159
|
+
|
|
160
|
+
operx ambiental acciones
|
|
161
|
+
operx ambiental permisos
|
|
162
|
+
operx ambiental obligaciones --mes 11/2026
|
|
163
|
+
operx ambiental residuo --corriente "Aceite usado" --kg 12,5
|
|
164
|
+
operx ambiental lectura --medidor Acueducto --valor 1.234,5
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
SG-SST y Ambiental van por empresa: sin `--empresa`, la de tu cuenta. Si
|
|
168
|
+
llevas el SG-SST o lo ambiental de tus clientes, `operx sst empresas` y
|
|
169
|
+
`operx ambiental empresas` las listan.
|
|
170
|
+
|
|
171
|
+
`operx --help` y `operx ordenes --help` muestran todas las opciones.
|
|
172
|
+
|
|
173
|
+
- Los equipos, lugares, clientes, artículos y personas se nombran por su
|
|
174
|
+
código o su nombre exacto. Si dos se llaman igual, `operx` lo dice y pide
|
|
175
|
+
el id.
|
|
176
|
+
- Los números y las fechas se escriben como en la app: `73,4`, `1.500,50`,
|
|
177
|
+
`30/10/2026`, `22/10/2026 08:00`.
|
|
178
|
+
- Las listas muestran la primera página; `--todas` las trae todas.
|
|
179
|
+
- `--json` da todo lo que responde la API; `--csv` da un CSV que Excel abre
|
|
180
|
+
bien (`operx equipos listar --todas --csv > equipos.csv`).
|
|
181
|
+
|
|
182
|
+
### Antes de escribir
|
|
183
|
+
|
|
184
|
+
Todo lo que crea o cambia algo pregunta antes. En un script o una tarea
|
|
185
|
+
programada no hay a quién preguntar: agrega `--si`. Con `--json`, lo que
|
|
186
|
+
escribe responde el registro creado o cambiado (con su `id`) en vez de una
|
|
187
|
+
frase. Cada escritura queda en
|
|
188
|
+
el historial del token (Acceso por API › el token › Actividad) marcada como
|
|
189
|
+
hecha desde la CLI.
|
|
190
|
+
|
|
191
|
+
### Importar personas
|
|
192
|
+
|
|
193
|
+
La primera columna con el nombre basta. `operx` reconoce las columnas
|
|
194
|
+
Nombres, Apellidos, Código, Cargo, Tipo de contrato, Fecha de ingreso, Fin de
|
|
195
|
+
contrato, Celular, Sede y las de contacto de emergencia, con o sin tildes.
|
|
196
|
+
Una columna con otro nombre se indica con `--mapa "Tu columna=campo"`.
|
|
197
|
+
Nadie recibe acceso a la app al importarlo: las invitaciones se envían en
|
|
198
|
+
Usuarios y acceso.
|
|
199
|
+
|
|
200
|
+
### Cualquier otra llamada
|
|
201
|
+
|
|
202
|
+
Lo que no tiene comando propio se hace con `operx api`: todo lo que tu
|
|
203
|
+
token puede hacer, más de 400 llamadas. `operx api rutas` las lista
|
|
204
|
+
(`operx api rutas sst inspections` deja las que tienen esas palabras), y
|
|
205
|
+
`operx api campos RUTA` dice qué lleva una: sus filtros, cada campo con su
|
|
206
|
+
tipo, si es obligatorio y los valores permitidos. También están en Acceso
|
|
207
|
+
por API › Documentación:
|
|
208
|
+
|
|
209
|
+
```sh
|
|
210
|
+
operx api rutas repuestos
|
|
211
|
+
operx api campos inventory/work-orders/1234/parts/ --metodo POST
|
|
212
|
+
operx api POST inventory/work-orders/1234/parts/ -d '{"action": "usar", "item": 3, "quantity": "2", "location": 2}'
|
|
213
|
+
operx api GET pm/schedules/ -q search=compresor
|
|
214
|
+
operx api POST contacts/ -d @contacto.json
|
|
215
|
+
operx api GET work-orders/export/ -o ordenes.csv
|
|
216
|
+
operx api POST work-orders/1234/attachments/ -a file=foto.jpg -d '{"file_type": "photo"}'
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
En Git Bash, una dirección que empieza por `/` se vuelve una ruta de Windows:
|
|
220
|
+
escríbela sin la barra inicial, como arriba.
|
|
221
|
+
|
|
222
|
+
## Para agentes de IA
|
|
223
|
+
|
|
224
|
+
`operx agentes` imprime una guía para un agente de IA (Claude, ChatGPT,
|
|
225
|
+
Copilot, Codex…): las reglas para usar `operx` bien (leer con `--json`,
|
|
226
|
+
preguntar antes de escribir, no tocar tokens) y cada comando con sus opciones.
|
|
227
|
+
Dile a tu agente: «Ejecuta `operx agentes` y sigue esa guía».
|
|
228
|
+
|
|
229
|
+
## Para desarrollar
|
|
230
|
+
|
|
231
|
+
```sh
|
|
232
|
+
cd cli
|
|
233
|
+
python -m venv .venv && .venv/Scripts/python -m pip install -e ".[test]"
|
|
234
|
+
.venv/Scripts/python -m pytest
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`operx_cli/client.py` es lo único que habla con la red; el servidor MCP lo
|
|
238
|
+
usará igual.
|
|
239
|
+
|
|
240
|
+
### Publicar una versión
|
|
241
|
+
|
|
242
|
+
El paquete es `operx-cli` en PyPI. Una versión publicada no se puede reemplazar:
|
|
243
|
+
si algo falla, se sube la siguiente.
|
|
244
|
+
|
|
245
|
+
1. Sube el número en `pyproject.toml` y en `operx_cli/__init__.py`.
|
|
246
|
+
2. Las funciones nuevas del servidor (como `operx login`) tienen que estar ya
|
|
247
|
+
desplegadas en producción antes de publicar: el paquete nuevo las llama.
|
|
248
|
+
3. Desde `cli/`:
|
|
249
|
+
|
|
250
|
+
```sh
|
|
251
|
+
uv build --clear
|
|
252
|
+
uv publish
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
`uv publish` toma el token de PyPI de la variable de entorno
|
|
256
|
+
`UV_PUBLISH_TOKEN`. Usa un token solo del proyecto `operx-cli` (PyPI › Account
|
|
257
|
+
settings › API tokens). Se guarda una vez, en tu usuario de Windows, desde
|
|
258
|
+
PowerShell; lo pegas donde lo pide y no se ve:
|
|
259
|
+
|
|
260
|
+
```powershell
|
|
261
|
+
$token = Read-Host "Token de PyPI" -AsSecureString
|
|
262
|
+
[Environment]::SetEnvironmentVariable("UV_PUBLISH_TOKEN", [Net.NetworkCredential]::new("", $token).Password, "User")
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Las terminales que abras después ya lo tienen. El token es secreto: nunca va
|
|
266
|
+
en un archivo del repositorio ni en un chat.
|