Utilerias RECON 2

Sistema de utilerias 2.0 para automatizacion de procesos aduaneros SCAII + DataStage. Construido sobre Voila (Jupyter widgets) con backend dual: SQL Server (SCAII) + PostgreSQL (DataStage en Docker).

Pestanas

  • Conexion — selecciona la base SCAII a conectar.
  • Descargas — procesa facturas de exportacion contra saldos IMPO (paso 9/10).
  • Analisis Saldos — graficas y pivotes de SSaldoTem.
  • Sustitutos NLP — propone sustitutos en SPartesSustitutos via TF-IDF.
  • Descarga % KGS — analiza cobertura de descargas en KGS.
  • CTM — reasigna descargas de Cambio de Regimen a CTM.
  • Saldos Vencidos — prorratea saldos IMPO vencidos en descargas EXPO.
  • DataStage — carga archivos .asc del SAAI a tablas Registro* en Postgres.
  • Estructuras SCAII — reportes CAT/Pedimentos/Facturas/Partidas a Excel.
  • Valores — ajusta VALORTOTALME/MN de SPartidasExpo por prorrateo.

Stack

Capa Tecnologia
UI Voila + ipywidgets
Backend Python 3.11+ (pandas, scikit-learn, pyodbc, psycopg2, sqlalchemy)
BD aduanera SQL Server (SCAII)
BD DataStage PostgreSQL 16 (en Docker)
Reportes openpyxl, python-docx

Requisitos del servidor

  • Windows 10 / 11 / Server con PowerShell.
  • Python 3.11+ con "Add to PATH" durante instalacion.
  • Docker Desktop (para el contenedor de Postgres).
  • ODBC Driver 18 for SQL Server (para conectar a SCAII).
  • Acceso de red al servidor SQL Server donde vive SCAII.

Configuracion inicial

1. Variables de entorno

Copia .env.example a .env y completa los valores reales:

cp .env.example .env

Edita .env con tu editor favorito y completa:

  • DB_* — credenciales del Postgres local (las que va a usar el contenedor).
  • SCAII_* — credenciales del SQL Server donde vive SCAII.

Importante: .env NO se sube al repo (esta en .gitignore).

2. Levantar Postgres en Docker

cd app
docker compose --env-file ..\.env up -d postgres-datastage

Espera unos segundos. Verifica con:

docker ps

Debes ver postgres-datastage con estatus Up X seconds (healthy).

3. Aplicar el schema de las tablas Registro*

docker cp schema_registro.sql postgres-datastage:/tmp/schema.sql
docker exec -it postgres-datastage psql -U servicemanager -d dbSat -f /tmp/schema.sql

(Ajusta servicemanager y dbSat segun tu .env.)

Verifica:

docker exec -it postgres-datastage psql -U servicemanager -d dbSat -c "\dt"

Debes ver 27 tablas: Registro501, Registro551, Registro701, ..., base_numpartes.

4. Arrancar la app

.\run_dev.bat

La primera vez tarda 2-3 minutos (crea .venv, instala dependencias).

Cuando termine, abre el navegador en:

http://127.0.0.1:8866/

Comandos utiles

# Estado del contenedor
docker compose ps

# Logs en vivo
docker compose logs -f postgres-datastage

# Detener Postgres
docker compose stop

# Volver a iniciar
docker compose start

# Eliminar contenedor (mantiene los datos)
docker compose down

# Eliminar contenedor + DATOS (CUIDADO)
docker compose down -v

Estructura del proyecto

.
├── .env.example
├── .gitignore
├── README.md
└── app/
    ├── app.ipynb                          # notebook principal
    ├── launcher.py                        # lanzador Voila
    ├── run_dev.bat                        # script de arranque
    ├── requirements.txt                   # deps Python
    ├── docker-compose.yml                 # contenedor Postgres
    ├── schema_registro.sql                # DDL tablas Registro*
    ├── Manual_*.docx                      # manuales de usuario
    └── generar_manual_*.py                # generadores de manuales

Manuales

Los .docx en app/ son los manuales de usuario por modulo:

  • Manual_GENPACT_V2.docx — manual general (Conexion, Descargas, Analisis, NLP, KGS).
  • Manual_CTM.docx — modulo CTM.
  • Manual_SaldosVencidos.docx — modulo Saldos Vencidos.
  • Manual_DataStage.docx — modulo DataStage.
  • Manual_EstructurasSCAII.docx — modulo Estructuras SCAII.
  • Manual_Valores.docx — modulo Valores.

Para regenerarlos despues de editar el script correspondiente:

python app\generar_manual_valores.py
# (y los demas generar_manual_*.py segun el caso)

Soporte

Para problemas o cambios, abre un PR en este repositorio. No hagas push directo a main.

Description
No description provided
Readme 1 MiB
Languages
Jupyter Notebook 77.7%
Python 21.9%
Batchfile 0.4%