============================================================
  GESTION WEB - Montar 2 (o mas) empresas en el mismo equipo
  Receta rapida. Guia completa: LEEME_MULTIEMPRESA.txt
============================================================

IDEA: 1 mismo codigo (esta carpeta) + 1 servicio por empresa,
cada uno en su PUERTO y con su CARPETA DE DATOS (logo, claves,
conexiones, SMTP... todo separado). Cada empresa = su URL.

*** ATAJO: en vez de hacer los pasos a mano, usa el instalador ***
   INSTALAR.bat      -> copia el programa, instala librerias y crea
                        las empresas (pregunta carpeta, puerto, BD).
   DESINSTALAR.bat   -> quita TODOS los servicios Kognit_* y,
                        opcional, borra las carpetas de datos/programa.
   (Ambos: clic derecho -> Ejecutar como administrador.)
   Los pasos manuales de abajo son por si quieres hacerlo a mano.

NO hace falta tener app.py corriendo a mano: el servicio LO
arranca solo al instalar y queda en inicio automatico.

------------------------------------------------------------
QUE VA EN LA RAIZ vs EN CADA EMPRESA
------------------------------------------------------------
El PROGRAMA (codigo) esta UNA sola vez en la carpeta raiz y lo
usan todos los servicios. Cada empresa solo tiene SUS DATOS.

  CARPETA RAIZ (codigo, compartida, donde esta app.py):
     app.py  +  demas .py  (version_router.py, etc.)
     cotizaciones.html
     sw.js, icon-192.png, icon-512.png
     requirements.txt + librerias de Python instaladas
     HISTORIAL_ACTUALIZACIONES.md
     carpeta instalacion\ (los .bat)
   -> ESTA carpeta corre el programa. NO pongas datos de empresa aqui.

  CARPETA DE CADA EMPRESA (GW_DATA_DIR, una por empresa):
     OBLIGATORIO para arrancar:
        .secret.key       (clave que descifra las contrasenas)
        conexiones.json   (a que base de datos se conecta)
     SE CREAN SOLOS al configurar desde la app (o se copian):
        smtp_config.json, app_config.json, config_sistema.json
        logos_bd.json y logo_*.*  (al subir el logo en Mi Empresa)
        ftp_config.json, sii_config.json, rcv_config.json
        .jwt_secret, .superpin, servicio.log

  COMO SE UNEN (lo hace el instalador con NSSM):
     AppDirectory  = carpeta RAIZ   (ahi esta app.py + html + iconos)
     GW_DATA_DIR   = carpeta EMPRESA (ahi estan claves, logo, configs)
   El mismo app.py lee el HTML/iconos de la raiz y los datos/logo de
   la carpeta de la empresa.

  REGLAS:
   - El codigo NO se copia por empresa: es uno solo en la raiz.
   - Cada empresa solo necesita .secret.key + conexiones.json para arrancar.
   - Usa el MISMO .secret.key en todas (claves cifradas compatibles).
   - Si NO defines GW_DATA_DIR, los datos se leen de la propia carpeta
     raiz (modo mono-empresa de siempre).

  EJEMPLO DE ESTRUCTURA:
     C:\gestionweb\              <- CODIGO (raiz, una sola)
        app.py
        kognit.html
        sw.js, icon-192.png, ...
        instalacion\
     C:\GW_datos\empresaA\       <- DATOS Empresa A
        .secret.key
        conexiones.json (database = allen)
     C:\GW_datos\empresaB\       <- DATOS Empresa B
        .secret.key
        conexiones.json (database = gamspa)

------------------------------------------------------------
TABLA DE EJEMPLO
------------------------------------------------------------
  Empresa A : carpeta C:\GW_datos\empresaA : database allen  : puerto 8001 : empresa1.allen.cl
  Empresa B : carpeta C:\GW_datos\empresaB : database gamspa : puerto 8002 : empresa2.allen.cl
  (para mas empresas: puerto 8003, 8004... y otro subdominio)

------------------------------------------------------------
PASO 1 - Carpeta de datos por empresa
------------------------------------------------------------
  Crea:
     C:\GW_datos\empresaA
     C:\GW_datos\empresaB

  En CADA carpeta copia:
     .secret.key          (EL MISMO de tu instalacion actual; descifra las claves)
     conexiones.json      (apuntando a la base de esa empresa; ver conexiones.ejemplo.json)

  Opcional (si no, se crean/configuran desde la app):
     smtp_config.json, app_config.json, ftp_config.json, sii_config.json, logo_*.*

------------------------------------------------------------
PASO 2 - conexiones.json de cada empresa
------------------------------------------------------------
  Usa conexiones.ejemplo.json como base. Cambia "database" (y "host"
  si la BD esta en otro servidor) por los de cada empresa.

  La clave va CIFRADA en "password_enc". Dos opciones:
   (a) RECOMENDADO: deja "password_enc" provisional, arranca el
       servicio, entra a http://localhost:8001 -> Conexiones ->
       Bases de datos -> edita la conexion y escribe la clave:
       la app la cifra sola al guardar.
   (b) ATAJO: si la clave de BD es la misma y copiaste el MISMO
       .secret.key, puedes pegar el "password_enc" de tu
       conexiones.json actual que ya funciona.

------------------------------------------------------------
PASO 3 - Instalar el servicio de cada empresa (como ADMIN)
------------------------------------------------------------
  Abre "servicio_instalar_empresa.bat" como administrador.
  Si no pasas argumentos, TE PREGUNTA nombre, puerto y carpeta:

     servicio_instalar_empresa.bat
        Nombre : EmpresaA
        Puerto : 8001
        Carpeta: C:\GW_datos\empresaA

  (o todo de una linea:)
     servicio_instalar_empresa.bat EmpresaA 8001 C:\GW_datos\empresaA
     servicio_instalar_empresa.bat EmpresaB 8002 C:\GW_datos\empresaB

  - Avisa si el puerto ya esta en uso.
  - Crea el servicio Kognit_<Nombre> y lo ARRANCA solo.
  - Inicio automatico al encender el equipo.

  Verificar:   http://localhost:8001  (Empresa A)
               http://localhost:8002  (Empresa B)
  Administrar: services.msc  ("GESTION WEB - EmpresaA")
  Quitar:      servicio_desinstalar_empresa.bat EmpresaA

------------------------------------------------------------
PASO 4 - URL por empresa con Caddy (HTTPS automatico)
------------------------------------------------------------
  Guarda esto como "Caddyfile" (SIN extension) junto a caddy.exe:

     empresa1.allen.cl { reverse_proxy 127.0.0.1:8001 }
     empresa2.allen.cl { reverse_proxy 127.0.0.1:8002 }

  Requiere:
   - DNS: empresa1.allen.cl / empresa2.allen.cl -> tu IP publica
     (o CNAME a allenltda.ddns.net)
   - Router: reenviar puertos 80 y 443 al servidor
  Arrancar Caddy:  caddy run   (o instalarlo como servicio)

  NO uses rutas por carpeta (dominio/empresa1): debe ser SUBDOMINIO
  o PUERTO por empresa (la app usa rutas absolutas /api, /sw.js).

------------------------------------------------------------
PASO 5 - Cada empresa configura lo suyo
------------------------------------------------------------
  Entra a su URL (o http://localhost:PUERTO) y en:
   - Parametros -> Mi Empresa: sube SU logo.
   - Parametros -> Conexiones: SMTP, SII, etc.
  Nada se mezcla con las otras empresas.

------------------------------------------------------------
RESUMEN
------------------------------------------------------------
  PUERTO  = donde escucha el servidor web (se fija al instalar el servicio)
  GW_DATA_DIR = carpeta de datos de la empresa (logo, claves, configs)
  conexiones.json = a que BASE DE DATOS se conecta esa empresa
  Caddy = subdominio -> puerto

  Cada empresa: 1 puerto distinto + 1 carpeta de datos + 1 base de datos.
============================================================
