chore: initial commit del deploy de utilerias-recon-2
Incluye: - app.ipynb con las 10 pestanas (Conexion, Descargas, Analisis, NLP, KGS, CTM, Saldos Vencidos, DataStage, Estructuras SCAII, Valores). - launcher.py + run_dev.bat para lanzar Voila localmente. - docker-compose.yml para levantar Postgres 16 con healthcheck. - schema_registro.sql con las 27 tablas (Registro501..Registro701, RegistroInci/Resumen/Sel, base_numpartes). - requirements.txt con pandas, pyodbc, psycopg2-binary, sqlalchemy, scikit-learn, openpyxl, voila, ipywidgets, python-docx. - 6 manuales de usuario (CTM, SaldosVencidos, DataStage, EstructurasSCAII, Valores, GENPACT_V2 general) en .docx. - 6 generadores de manuales para regenerar los .docx tras editar. - .gitignore que excluye .env, .venv, outputs generados y caches. - README.md con instrucciones de setup en server. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
162
README.md
Normal file
162
README.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```powershell
|
||||
cd app
|
||||
docker compose --env-file ..\.env up -d postgres-datastage
|
||||
```
|
||||
|
||||
Espera unos segundos. Verifica con:
|
||||
|
||||
```powershell
|
||||
docker ps
|
||||
```
|
||||
|
||||
Debes ver `postgres-datastage` con estatus `Up X seconds (healthy)`.
|
||||
|
||||
### 3. Aplicar el schema de las tablas Registro*
|
||||
|
||||
```powershell
|
||||
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:
|
||||
|
||||
```powershell
|
||||
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
|
||||
|
||||
```powershell
|
||||
.\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
|
||||
|
||||
```powershell
|
||||
# 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:
|
||||
|
||||
```powershell
|
||||
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`.
|
||||
Reference in New Issue
Block a user