Metadata-Version: 2.4
Name: coms-consume-roan
Version: 0.1.3
Summary: Paquete para consumir tickets del webservice COMS de ServiceDesk e insertarlos en base de datos
Author: Angel Rogelio Argonza Roblero
License-Expression: MIT
Keywords: python,coms,servicedesk,soap,tickets
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: zeep>=4.3
Requires-Dist: pytz>=2024.1
Requires-Dist: pymysql>=1.1
Requires-Dist: requests>=2.31
Requires-Dist: urllib3>=2.0
Requires-Dist: secure-credentials-roan>=0.1.1
Requires-Dist: w-log-roan>=0.1.2
Dynamic: license-file

# coms-consume-roan

Paquete de Python que consulta tickets del webservice SOAP "COMS" de CA ServiceDesk y los inserta en la base de datos MySQL `automcae` a través de stored procedures.

## Flujo

1. Control-M dispara la ejecución (3 veces al día). `DatabaseConexionesControlM.get_tabla_ejecuciones()` obtiene el número de ejecución y el rango de horas a consultar.
2. Se calcula el rango de timestamps (hora de inicio del día anterior, hora de fin del día actual) y se consulta el webservice `consulta_tck_complete` de ServiceDesk (hasta 10 reintentos).
3. Cada ticket recibido se clasifica según su estado (`RE` = resuelto, `OP` = abierto) y si es PBX, y se inserta en la tabla correspondiente vía stored procedure.
4. Se marca la ejecución como exitosa o fallida en la tabla de control.

## Instalación

```bash
pip install coms-consume-roan
```

## Configuración de credenciales

La conexión a la base de datos no usa variables de entorno para host/usuario/password: usa un archivo cifrado.

1. Crear un archivo `access.txt` con el formato:
   ```
   host=...
   user=...
   password=...
   database=...
   port=...
   ```
2. Colocarlo en el directorio de datos seguros (ver variable de entorno abajo).
3. Al ejecutar el paquete por primera vez, `access.txt` se cifra en `credentials.enc` + `secret.key` y se borra automáticamente.

### Variable de entorno `COMS_SECURE_DATA_DIR`

Define dónde vive `access.txt` / `credentials.enc` / `secret.key`. Si no se define, se usa `secure_data/` anclado a la raíz del proyecto (solo válido en desarrollo local, no en una instalación vía pip).

```powershell
$env:COMS_SECURE_DATA_DIR = "C:\ruta\a\secure_data"
```

## Logs

Cada módulo escribe su propio log bajo `C:\logs\<módulo>\<módulo>_AAAAMMDD.log`, con una subcarpeta `errors\` para los mensajes de nivel error. Ruta no configurable actualmente.

## Uso

Instalado, expone el comando:

```bash
coms-consume
```

Equivalente en desarrollo (sin instalar el paquete):

```bash
python -m coms_consume_roan.main
```

> **Nota:** este comando reemplaza al antiguo `python main.py`. Si el proceso está agendado en Control-M, hay que actualizar el comando invocado.

## Tests

Pruebas unitarias con `unittest` en `tests/`. Todas las conexiones externas (BD, WS SOAP, cifrado de credenciales) están mockeadas — no requieren VPN, BD real ni `access.txt`.

```bash
python -m unittest discover -s tests -v
```

## Build y publicación

```bash
python -m build
twine check dist/*
twine upload dist/*
```

## Requisitos

Python 3.10 o superior. Acceso a la base de datos MySQL `automcae` y al WSDL de ServiceDesk requiere estar dentro de la red interna / VPN.
