Art4Hotel Hub: código + documentación extensiva

ERP a la medida (Python stdlib + SQLite + vanilla JS SPA).
Incluye server.py, index.html, utilidades y documentación:
README, MODELO_DATOS, API, INSTALACION, CONTEXTO, NEGOCIO,
WEB, ONBOARDING, VALOR_SISTEMA, CLAUDE.

Secretos y datos (art4hotel.db, secret.key, ACCESOS.html,
uploads/, backups/) excluidos vía .gitignore.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
consultoria-as
2026-06-09 00:10:07 -07:00
commit c2ae140078
16 changed files with 12675 additions and 0 deletions

111
README.md Normal file
View File

@@ -0,0 +1,111 @@
# Art4Hotel Hub
Sistema interno de gestión integral (ERP a la medida) para **Art4Hotel** — bolsas y accesorios personalizados para hoteles, restaurantes y eventos en Los Cabos, México.
Centraliza todo el ciclo del negocio: **cotización → producción → bodega → entrega → cobranza**, más un catálogo digital, generador de catálogos PDF y sincronización con el sitio web público.
---
## ✨ Características
- **Operaciones** — kanban de producción con drag & drop por etapas
- **Ventas** — dashboard de KPIs, workflow de cobranza por OC, gestión de entregas
- **Clientes** — CRM con historial, condiciones de pago, zonas
- **Propuestas** — cotizador visual; convierte propuestas aceptadas en órdenes + pedidos
- **Catálogos** — generador de catálogo PDF con la marca, con storytelling (producto base + galería de personalizaciones)
- **Productos** — catálogo unificado (fuente única de verdad)
- **Inventario** — SKUs, stock, punto de reorden
- **Archivos** — facturas, fotos, recibos con nombres inteligentes
- **Sitio web** — alimenta art4hotel.com vía script de sincronización
- **Login** — autenticación con sesiones firmadas (HMAC)
- **Respaldos** — automáticos diarios
---
## 🧱 Stack
| Capa | Tecnología |
|---|---|
| Backend | **Python 3 stdlib** (`http.server` + `sqlite3`) — cero dependencias externas |
| Base de datos | **SQLite** (WAL, foreign keys) — un solo archivo |
| Frontend | **Vanilla JS SPA** en un solo `index.html` — sin frameworks |
| Archivos | Filesystem (`uploads/`) servido por el mismo server |
| Deploy | `scp` + `systemctl` — sin Docker, sin CI/CD |
Filosofía: **minimalismo deliberado**. Todo el sistema (código + datos) pesa <1 MB. Cabe en una USB. Sin licencias, sin dependencias que mantener.
---
## 🚀 Arranque rápido
```bash
# Requiere solo Python 3 (stdlib). Sin pip install.
python3 server.py
# → http://localhost:4401
```
La primera vez, la app muestra una pantalla para **crear la cuenta de administrador**. Después, login normal.
Ver **[INSTALACION.md](./INSTALACION.md)** para el despliegue completo en servidor.
---
## 📁 Estructura del repositorio
```
art4hotel-hub/
├── server.py # Backend: HTTP server + SQLite + API REST + auth
├── index.html # Frontend: SPA completa (~9000 líneas)
├── backup.py # Script de respaldo (DB + uploads)
├── fix_dup.py # Utilidad: corrige IDs duplicados
├── README.md # Este archivo
├── INSTALACION.md # Guía de despliegue desde cero
├── MODELO_DATOS.md # Esquema de la base de datos (14 tablas)
├── API.md # Referencia de endpoints
├── CONTEXTO.md # Estado técnico: decisiones, optimizaciones, deploy
├── NEGOCIO.md # Contexto operativo: clientes, productos, flujo real
├── WEB.md # Sitio público art4hotel.com + sync
├── ONBOARDING.md # Handover técnico rápido
├── CLAUDE.md # Índice maestro + contexto para asistentes IA
└── VALOR_SISTEMA.md # Valor/costo del sistema (para presentar a terceros)
```
> **No incluidos en el repo** (por seguridad / ver `.gitignore`): `art4hotel.db` (datos del negocio), `secret.key` (clave de sesiones), `ACCESOS.html` (contraseñas), `uploads/`, `backups/`.
---
## 📚 Documentación
| Documento | Para qué |
|---|---|
| **[NEGOCIO.md](./NEGOCIO.md)** | Entender el negocio: clientes, productos, flujo real, reglas. **Léelo primero.** |
| **[CONTEXTO.md](./CONTEXTO.md)** | Estado técnico: modelo de datos, producto unificado, catálogos, decisiones UX |
| **[MODELO_DATOS.md](./MODELO_DATOS.md)** | Esquema completo de la base de datos |
| **[API.md](./API.md)** | Referencia de endpoints REST |
| **[INSTALACION.md](./INSTALACION.md)** | Desplegar desde cero |
| **[WEB.md](./WEB.md)** | Sitio público + sincronización |
| **[ONBOARDING.md](./ONBOARDING.md)** | Repaso técnico rápido |
| **[VALOR_SISTEMA.md](./VALOR_SISTEMA.md)** | Valor/costo del sistema |
---
## 🔑 Conceptos clave
- **Pedido** (`ordenes`) — línea de producción individual (1 producto × 1 personalización × cantidad)
- **Orden de Compra (OC)** (`oc`) — agrupa pedidos, lleva la factura/cobranza
- **Proyecto recurrente** (`proyectos`) — receta autorizada reutilizable (cliente + producto + trabajo + logo)
- **Propuesta** (`propuestas`) — cotización; al aceptarse genera OC + pedidos
- **Stages** del kanban: `Nuevo → En 2 Mares / En Taller Sofía → En Almacén → En Vehículo → Entregado`
### ⚠️ Principio de diseño: el producto es la fuente única de verdad
Cada atributo de producto impacta hasta 3 funciones. Antes de agregar/cambiar uno, definir su impacto en: **(1) Operación/producción · (2) Catálogo/cotizador · (3) Página web**.
---
## 🛡 Respaldos
`backup.py` corre por cron diario: snapshot de la DB (online backup, seguro con WAL) + `uploads.tar.gz`. Retiene 30 días.
---
*Sistema desarrollado para Art4Hotel · Los Cabos, BCS, México.*