Files
catalogo-servicios/README.md
consultoria-as 38e9e4b91c Catalogo de Servicios (builder): codigo + documentacion extensiva
Builder multi-proveedor de servicios (tour / A&B / transportacion).
Python stdlib + SQLite + vanilla JS SPA. Hereda filosofia del Hub.

Secretos y datos (catalogo.db, secret.key, uploads/) excluidos via .gitignore.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 21:00:50 -07:00

87 lines
3.3 KiB
Markdown

# Catálogo de Servicios (builder)
Builder de catálogo **multi-proveedor de servicios** (tours, A&B/banquetes, transportación) para Los Cabos, México.
Hereda la filosofía del **Art4Hotel Hub**, pero aplicada a **servicios** (no productos físicos): capturar en una sola base de datos la oferta de varios touroperadores/proveedores, con fotos y todos los atributos, para luego generar **propuestas** y una **página web de catálogo online**.
> Proyecto independiente. No toca el Hub.
---
## ✨ Qué hace
- **Proveedores** — alta de touroperadores / proveedores (contacto, comisión default)
- **Servicios** — la *fuente única de verdad*: identidad, operación, precios neto/público, condiciones, publicación
- **Atributos flexibles por tipo** — extras específicos en JSON (no rompen el esquema)
- **Disponibilidad** — 4 modos (salidas / rango / siempre / por evento) con editor adaptativo
- **Fotos y menú** — galería por servicio + galería de menú separada por prefijo
- **Dos vistas** — Builder (con margen/precio neto) y Vista cliente (catálogo limpio, oculta lo interno)
- **Login** — usuario/contraseña (PBKDF2) + sesión firmada (HMAC)
---
## 🧱 Stack
| Capa | Tecnología |
|---|---|
| Backend | **Python 3 stdlib** (`http.server` + `sqlite3`) — cero dependencias |
| Base de datos | **SQLite** (WAL, foreign keys) |
| Frontend | **Vanilla JS SPA** en un solo `index.html` |
| Archivos | Filesystem (`uploads/servicio_{id}/`) |
| Deploy | `scp` + `systemctl` |
Mismo patrón que el Hub: CRUD genérico vía dict `TABLES` en `server.py` (un handler para todas las tablas).
---
## 🚀 Arranque rápido
```bash
python3 server.py
# → http://localhost:4403
```
Primera vez: pantalla para **crear la cuenta admin** (genera `catalogo.db` y `secret.key`).
Ver **[INSTALACION.md](./INSTALACION.md)** para el despliegue en servidor.
---
## 📁 Estructura
```
catalogo-borrador/
├── server.py # Backend: HTTP + SQLite + API + auth
├── index.html # Frontend: SPA (builder + vista cliente)
├── README.md # Este archivo
├── MODELO_DATOS.md # Esquema de la base de datos
├── API.md # Referencia de endpoints
├── INSTALACION.md # Despliegue desde cero
└── CLAUDE.md # Contexto técnico detallado (para asistentes IA)
```
> **No incluidos** (ver `.gitignore`): `catalogo.db`, `secret.key`, `uploads/`.
---
## 🔑 Principio de diseño: el servicio = fuente única de verdad
Cada atributo de un servicio impacta hasta **3 funciones**. Antes de agregar/cambiar uno, define su impacto en:
1. **Operación** — disponibilidad, horarios, capacidad, precio neto
2. **Propuesta / cotizador** — lo que ve el cliente, precio público, términos
3. **Página web** — catálogo online
**Neto vs público:** `precio_neto` = lo que cobra el proveedor · `precio_publico` = lo que paga el cliente. El margen vive en medio y **nunca** se muestra al cliente (la Vista cliente lo oculta).
---
## 🗺 Fases
1.**Builder** — proveedores + servicios con fotos y todos los campos *(actual)*
2.**Propuestas/catálogos** — selección de servicios → documento → PDF (reusar patrón del Hub)
3.**Web pública** — catálogo online optimizado (sync desde la DB)
---
*Parte del ecosistema Art4Hotel · Los Cabos, BCS, México.*