mmi-consume-roan
Paquete Python que consume el webservice REST de alertas del sistema ABCMASMMI
(abc+) y las inserta en MySQL mediante stored procedures. Se distribuye como paquete
instalable (pip install -e .) con un entry point de consola: mmi-consume.
¿Qué hace?
- Consulta en MySQL, vía
automcae.sp_selabcmmi, el listado de sucursales y sus URLs de conexión al webservice abc+. - Por cada sucursal hace un
GETHTTPS (con verificación contra un certificado.pempropio) al webservice y parsea la respuesta JSON. - Mapea cada alerta del JSON a un DTO (
DatabaseAlertasDTO). - Inserta cada alerta en MySQL vía el stored procedure
automcae.sp_inscaalertasabc, revisando el parámetro de salida@paerrorpara confirmar el éxito de la inserción. - Registra el resultado del proceso en el log (vía
w_log_roan).
El proceso reintenta indefinidamente (while response == False) hasta obtener una
respuesta exitosa de RestAbcMasMMI().getDataFromABC().
Nota / limitación conocida:
conn_abcmasmmi.pytiene unbreakincondicional al final delforde sucursales, por lo que en la práctica solo procesa la primera sucursal devuelta porsp_selabcmmi. Es un hallazgo detectado, pendiente de confirmación con el autor antes de corregirse.
Requisitos
- Python >= 3.10 (probado en 3.13).
- MySQL accesible con los stored procedures
automcae.sp_selabcmmiyautomcae.sp_inscaalertasabcya creados. - Certificado SSL (
.pem) para autenticar el request HTTPS contra abc+. - Un archivo de texto plano con credenciales de BD (ver sección Configuración).
Dependencias
Dependencias públicas (PyPI), listadas en pyproject.toml / requirements.txt:
requestsurllib3pymysqlcertifi,cffi,charset-normalizer,cryptography,idna,pycparser(transitivas de las anteriores)
Dependencias privadas, no publicadas en PyPI (hay wheels locales en
package-offline/ para instalación sin conexión):
secure-credentials-roan— cifra/descifra el archivo de credenciales de BD.w-log-roan— logging propio del proyecto.
Usa la skill /deps-check para verificar cuáles de estas están instaladas en tu
intérprete actual.
Instalación
python -m venv .venv
.venv\Scripts\python -m pip install -e .
pip install --index-url https://{username}:{password}@gitea.example.com/api/packages/{owner}/pypi/simple --no-deps {package_name}
Si no tienes acceso a PyPI para las dependencias privadas, instala primero los wheels
incluidos en package-offline/:
.venv\Scripts\python -m pip install package-offline\secure_credentials_roan-0.1.1-py3-none-any.whl
.venv\Scripts\python -m pip install package-offline\w_log_roan-0.1.2-py3-none-any.whl
.venv\Scripts\python -m pip install -e .
Configuración
El paquete busca dos rutas fuera del código, ancladas por defecto a la raíz del proyecto (o configurables por variable de entorno):
| Recurso | Ruta por defecto | Variable de entorno |
|---|---|---|
| Credenciales BD y certificado | secure_data_mmi/ (raíz del proyecto) |
MMI_SECURE_DATA_DIR |
| Certificado SSL | secure_data_mmi/abcmas_cer.pem |
(usa la misma carpeta anterior) |
| Logs | C:\logs\<modulo>\ |
— (fijo en el código) |
Credenciales de base de datos
-
Crea
secure_data_mmi/access.txtcon el formato:host=... user=... password=... database=... port=... -
En la primera ejecución,
secure/secure.pycifra automáticamente ese archivo (generacredentials.encysecret.key, y borraaccess.txten texto plano). En ejecuciones posteriores se descifra desde ahí — no vuelvas a crearaccess.txta mano salvo que quieras rotar credenciales.
Certificado SSL
Coloca el certificado del webservice abc+ en secure_data_mmi/abcmas_cer.pem.
secure/,*.pem,access.txt,credentials.encysecret.keyson artefactos sensibles: trátalos como solo lectura una vez generados, no los subas al repo.
Uso
Una vez instalado y configurado:
mmi-consume
Equivalente a ejecutar python -m mmi_consume_roan.main. El proceso:
- Corre localmente en Windows, o en un servidor remoto vía tarea programada.
- Escribe logs en
C:\logs\main\,C:\logs\conn_abcmasmmi\,C:\logs\database\,C:\logs\dao_db\yC:\logs\secure\(uno por módulo, víaw_log_roan). - Termina cuando logra insertar exitosamente las alertas de la sucursal procesada.
Tests
.venv\Scripts\python -m pytest test/
Cubren conn_abcmasmmi, database, dao_db, dto_database, exceptions y main.
Estructura del proyecto
mmi_consume_roan/
├── main.py # Entry point (mmi-consume)
├── config/
│ ├── conn_abcmasmmi.py # Cliente REST hacia abc+
│ └── database.py # Conexión MySQL (pymysql)
├── data/
│ ├── dao/dao_db.py # DAOs: alertas y conexiones/sucursales
│ └── dto/dto_database.py # DTO de alerta
├── secure/secure.py # Cifrado/descifrado de credenciales
└── src/exceptions/exceptions.py
Licencia
MIT License. Ver LICENSE.
Autor
Angel Rogelio Argonza Roblero
Metadata
Release files for mmi-consume-roan 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mmi_consume_roan-0.1.2.tar.gz | 15.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mmi_consume_roan-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.4 kB
Release files / mmi_consume_roan-0.1.2.tar.gz
| Download URL | mmi_consume_roan-0.1.2.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6cee09a60bde3ed80b492c381c6162ab864dca22d8aedc3923dab09ff7099222
|
|
BLAKE2b-256 checksum How to use checksums |
0a7f74de323defa90bbd174afcf68ad77c4e695bc727b10afe6de34f119b1390
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / mmi_consume_roan-0.1.2-py3-none-any.whl
| Download URL | mmi_consume_roan-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
749c81564824d6e04bbe533932c603fe96a3249ea0ac895da3548d86e5b5c1de
|
|
BLAKE2b-256 checksum How to use checksums |
06da058458c3ce3223e7d1c6c5439cf6844cbda16527986ac210ce9dfe049820
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Security for mmi-consume-roan 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.