# StreamCore ERP — Web (V5.0.0)

Versión web del ERP, para que el vendedor trabaje desde cualquier lugar
(terreno u oficina). Producto **independiente** de la versión de escritorio;
comparte el núcleo `core/` (lógica de negocio + PDF), adaptado a MySQL.

- **Stack:** Python · Flask · Jinja2 · HTMX · SQLAlchemy · MySQL/MariaDB
- **Despliegue:** cPanel "Setup Python App" (Passenger) + AutoSSL
- **Dominio previsto:** `https://erp.remaqagromecanica.cl`

## Estado (Etapa 3b)

Esqueleto en línea: login con sesión, control de permisos (Admin/Vendedor),
diseño con identidad StreamCore y panel de inicio con los KPIs del dashboard.
Las pantallas (cotizaciones, OT, OC, clientes, catálogo, historial, equipo,
ajustes) se agregan en la Etapa 3c.

## Desarrollo local

En **PowerShell / CMD** (Windows):

```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python run_local.py
```

En **Git Bash**:

```
python -m venv .venv
source .venv/Scripts/activate
pip install -r requirements.txt
python run_local.py
```

Abrir `http://127.0.0.1:5000`. Sin `DATABASE_URL` usa un SQLite en
`datos/streamcore_dev.db`. Usuario inicial: **Admin / Admin**.

En Windows podés usar **`Iniciar-web-local.bat`** (doble clic). El servidor de
desarrollo corre **sin recargador automático** (en algunas consolas de Windows
el recargador hace que el proceso se cierre solo); si cambiás código, cortá
con Ctrl+C y volvé a ejecutar.

> Sin virtualenv también funciona: `pip install -r requirements.txt` y
> `python run_local.py` directamente.

## Despliegue en cPanel (reseller)

1. **Base de datos** — cPanel → *MySQL Databases*: crear base y usuario, asignar
   todos los privilegios. Anotar `usuario`, `clave`, `nombre_base`.

2. **Subir el código** — a una carpeta fuera de `public_html`
   (ej. `~/streamcore-web`), por Git o *File Manager*.

3. **Carpeta de datos** — crear `~/streamcore-datos` (logs, PDFs, subidas).

4. **`.env`** — copiar `.env.example` a `.env` y completar:
   ```
   SECRET_KEY=<cadena larga y aleatoria>
   DATABASE_URL=mysql+pymysql://cpaneluser_erp:CLAVE@localhost/cpaneluser_erp
   COOKIE_SECURE=1
   STREAMCORE_DATA_DIR=/home/cpaneluser/streamcore-datos
   ```

5. **cPanel → Setup Python App**:
   - Python 3.10+ · *Application root* = carpeta del código
   - *Application URL* = `erp.remaqagromecanica.cl`
   - *Application startup file* = `passenger_wsgi.py`
   - *Application Entry point* = `application`
   - Crear la app → "Run Pip Install" con `requirements.txt`.

6. **Subdominio + SSL** — crear el subdominio apuntando a la carpeta de la app;
   *SSL/TLS Status* → ejecutar AutoSSL.

7. Abrir `https://erp.remaqagromecanica.cl` → login con **Admin / Admin** →
   cambiar la clave de inmediato.

8. **Respaldo** — cPanel → *Cron Jobs*, diario:
   ```
   mysqldump -u USUARIO -pCLAVE BASE > ~/streamcore-datos/backup_$(date +\%F).sql
   ```

## Estructura

```
streamcore-web/
├── passenger_wsgi.py      entrada cPanel
├── run_local.py           servidor de desarrollo
├── config.py              configuración Flask (lee variables de entorno)
├── core/                  núcleo compartido (adaptado a SQLAlchemy/MySQL)
├── app/
│   ├── __init__.py        create_app()
│   ├── auth.py            login, sesión, RBAC
│   ├── main.py            rutas (por ahora: inicio)
│   ├── plantillas/        HTML (Jinja + HTMX)
│   └── estaticos/         CSS, imágenes
└── datos/                 (generado) logs, pdfs, subidas, sqlite de dev
```
