Servicio Registro de Empresas - API Flask contribuyentes Chile
Find a file
claude.ia 72515df3b7
Some checks failed
CI / Lint (flake8) (push) Has been cancelled
CI / Tests (pytest) (push) Has been cancelled
CI / Build check (push) Has been cancelled
Merge pull request 'feat(sre): Fase 1 API + Admin UX + Health + Fix shebang import_sii' (#1) from feature/SRE-fase1-api-admin-health into main
2026-04-22 18:04:04 +00:00
.gitea/workflows feat: add test suite, rate limiting, API refactor, and CI pipeline 2026-04-10 01:26:34 +00:00
app feat(sre): Fase 1 API + Admin UX + Health endpoints + Tests 2026-04-22 08:40:49 +00:00
docs docs: add clean deployment plan for dedicated sre user on new host 2026-04-07 19:27:09 +00:00
migrations feat(sre): Fase 1 API + Admin UX + Health endpoints + Tests 2026-04-22 08:40:49 +00:00
scripts feat: add hourly watcher for new SII CSV files + update docs 2026-04-07 05:30:04 +00:00
tests feat(sre): Fase 1 API + Admin UX + Health endpoints + Tests 2026-04-22 08:40:49 +00:00
.flake8 feat: add test suite, rate limiting, API refactor, and CI pipeline 2026-04-10 01:26:34 +00:00
.gitignore chore: restore app/data CSVs — required seed data 2026-04-06 18:19:01 +00:00
analisis_sii.py feat: initial commit — Servicio Registro de Empresas 2026-04-06 18:15:34 +00:00
CHANGELOG.md feat(sre): Fase 1 API + Admin UX + Health endpoints + Tests 2026-04-22 08:40:49 +00:00
import_sii.py fix(import_sii): use virtualenv python shebang for correct deps resolution 2026-04-22 08:52:30 +00:00
LICENSE feat: initial commit — Servicio Registro de Empresas 2026-04-06 18:15:34 +00:00
pytest.ini feat: add test suite, rate limiting, API refactor, and CI pipeline 2026-04-10 01:26:34 +00:00
README.md feat: add hourly watcher for new SII CSV files + update docs 2026-04-07 05:30:04 +00:00
requirements.txt feat(sre): Fase 1 API + Admin UX + Health endpoints + Tests 2026-04-22 08:40:49 +00:00
requirements_frozen.txt feat: add test suite, rate limiting, API refactor, and CI pipeline 2026-04-10 01:26:34 +00:00
run.py feat: initial commit — Servicio Registro de Empresas 2026-04-06 18:15:34 +00:00

Servicio de Registro de Empresas

  • Este programa básicamente se crea para generar una api pública para ser utilizado en distintos programas de facturación electrónica y tener un acceso actualizado de los datos de contribuyentes Chilenos, principlamente para fomentar el uso masivo del ERP Odoo y Flektra, distribuidos por la empresa y futura cooperativa https://odoocoop.cl/

  • Se habilita la opción de:

  • Recibir mediante PUT la actualización de 1-n registros.

  • Sincronización total de la base de datos a modo de "Enjambre" con el servidor principal de este proyecto (por ahora https://sre.cl).

  • El servicio contará con un token público "token_publico" el cual dará derecho a 200 consultas diarias.

  • Podrán registrarse para obtener un token premium por el valor de CLP$1.000 +iva (si lo requieren con factura) anuales, que permitirá 50 consultas diarias.

  • El dinero obtenido por token es un valor simbólico de "donación", para efectos de mantención y mejoras del sistema.

Información que entrega

versión pública

  • Razón Social
  • RUT
  • DTE Email
  • Actecos *
  • Glosa de Giro *
  • Fecha Resolución
  • Dirección ( comuna, provincia, región )*

Para registrados ( todo lo anterior +)

  • Email *
  • Teléfono *
  • Logo*
  • Información puede no estar disponible

Installation

First install virtualenv

To install Flask-Admin, simply::

pip3 install flask-admin
  1. Create and activate a virtual environment::

    git clone https://gitlab.com/dansanti/servicio_registro_empresas.git cd servicio_registro_empresas

  2. Create and activate a virtual environment::

    virtualenv env -p python3 source env/bin/activate

  3. Install requirements::

    pip3 install -r 'requirements.txt'

  4. Run the application::

    python3 ./run.py

Documentación :

https://flask-restful.readthedocs.io/en/latest/
http://flask-admin.org/

Archivo CSV del SII :

https://drive.google.com/open?id=1GrQLy3nfOtCj7dZWfjRRY7gGQZvJFQY3

Procedimiento de actualización de base de datos de empresas

Origen de los datos

El SII publica periódicamente archivos CSV con el padrón de contribuyentes autorizados para emitir DTE (facturas electrónicas). Los archivos se llaman:

ce_empresas_dwnld_YYYYMMDD.csv

Contienen todas las empresas activas a la fecha del archivo (snapshot completo). Cada entrega puede incluir registros nuevos (nuevas empresas autorizadas) y actualizaciones (cambios de email DTE, URL, resolución, etc.).

Dónde se almacenan

/opt/SRE/DBempresas-sii/
    2020/   ce_empresas_dwnld_20XXXXXX.csv.gz   (históricos comprimidos)
    2021/   ...
    2025/   ...
    2026/   ce_empresas_dwnld_20260406.csv       ← archivo nuevo sin comprimir
    README.md

Cada directorio anual tiene su propio README.md con el historial de archivos.

Proceso automático (crontab — cada hora en punto)

El watcher scripts/sii_watch_empresas.py corre cada hora:

0 * * * *  /opt/SRE/env/bin/python3 /opt/SRE/scripts/sii_watch_empresas.py
  1. Detecta archivos nuevos en DBempresas-sii/YYYY/ comparando con sii_import_log
  2. Verifica que no haya otra importación en curso (lock /tmp/sii_import.lock)
  3. Dispara import_sii.py si hay archivos pendientes
  4. Registra actividad en /opt/SRE/logs/sii_watch.log

Proceso manual (administrador)

Ver estado de todos los archivos:

cd /opt/SRE
/opt/SRE/env/bin/python3 import_sii.py --listar
/opt/SRE/env/bin/python3 import_sii.py --status

Procesar inmediatamente sin esperar al cron:

cd /opt/SRE
/opt/SRE/env/bin/python3 import_sii.py

Reprocesar un archivo específico:

cd /opt/SRE
/opt/SRE/env/bin/python3 import_sii.py --force ce_empresas_dwnld_20260406.csv

Incorporar un archivo nuevo:

# Copiar en el directorio del año correspondiente
cp /ruta/al/archivo/ce_empresas_dwnld_20261015.csv /opt/SRE/DBempresas-sii/2026/
# El watcher lo detectará en la próxima hora, o ejecutar manualmente

Qué hace el importador (import_sii.py)

Caso Acción
RUT nuevo en el CSV INSERT en company_info con fecha_incorporacion = fecha del archivo
RUT existente con datos distintos UPDATE de los campos que cambiaron
RUT existente sin cambios Skip (contado en sin_cambios)
Cambio de dte_email o url INSERT en company_info_history (trazabilidad)
Proceso exitoso Comprime .csv.csv.gz
Resultado Registrado en tabla sii_import_log

Logs

Log Descripción
/opt/SRE/logs/sii_watch.log Verificaciones horarias del watcher
/opt/SRE/logs/sii_import_YYYYMMDD_HHMMSS.log Detalle línea a línea de cada importación

Historial de procesamiento (BD)

# Consulta rápida vía admin web: http://192.168.100.84:5000/admin/siiimportlog/
# O directamente:
/opt/SRE/env/bin/python3 import_sii.py --status