revision de cloud code
This commit is contained in:
@@ -13,7 +13,16 @@ El frontend (HTML/JS puro) sigue siendo el de la landing, pero **las reservas, c
|
||||
|
||||
## Cómo ejecutar (Desarrollo y Producción)
|
||||
|
||||
### 1. Levantar todo
|
||||
### 1. Configurar secretos
|
||||
|
||||
```sh
|
||||
cp .env.example .env
|
||||
# Edita .env: pon tu EA_API_KEY y una MYSQL_ROOT_PASSWORD fuerte.
|
||||
```
|
||||
|
||||
`.env` está en `.gitignore` y nunca se sube al repositorio.
|
||||
|
||||
### 2. Levantar todo
|
||||
|
||||
```sh
|
||||
docker compose up -d --build
|
||||
@@ -22,7 +31,7 @@ docker compose up -d --build
|
||||
- Landing + reservas: **http://localhost:8234**
|
||||
- Panel de administración EasyAppointments: **http://localhost:8888**
|
||||
|
||||
### 2. Primer arranque (importante)
|
||||
### 3. Primer arranque (importante)
|
||||
|
||||
1. Abre http://localhost:8888
|
||||
2. Completa el asistente de instalación de EasyAppointments.
|
||||
@@ -33,13 +42,11 @@ docker compose up -d --build
|
||||
7. Configura el **Working Plan** del proveedor (horario).
|
||||
8. **Anota el ID del Provider** (normalmente 1) y edita `static/index.html` → línea `const PROVIDER_ID = 1;`
|
||||
|
||||
### 3. Variables importantes en compose
|
||||
### Variables (en `.env`)
|
||||
|
||||
Edita `docker-compose.yml` antes de levantar:
|
||||
|
||||
- `EA_API_USERNAME` + `EA_API_PASSWORD` (o mejor: configura **API Key** en Settings de EA y usa `EA_API_KEY`)
|
||||
- `BASE_URL` del servicio `easyappointments`
|
||||
- Contraseña de MySQL
|
||||
- `EA_API_KEY` — token de API de EasyAppointments (Settings → API en el panel).
|
||||
- `MYSQL_ROOT_PASSWORD` — contraseña de la base de datos.
|
||||
- `EA_BASE_URL` — URL pública del panel de EA (cámbiala en producción).
|
||||
|
||||
### Actualizar
|
||||
|
||||
@@ -50,12 +57,27 @@ docker compose up -d --build
|
||||
|
||||
## Notas sobre la integración
|
||||
|
||||
- Los servicios y la disponibilidad los obtiene el frontend directamente de la API de EasyAppointments.
|
||||
- Al reservar:
|
||||
- Busca o crea automáticamente el cliente usando el **email**.
|
||||
- Crea la cita en EasyAppointments (con todos los servicios seleccionados en las notas).
|
||||
**EasyAppointments es la única fuente de verdad.** El servidor Go no guarda nada:
|
||||
ni clientes, ni citas, ni servicios. Todo se lee y se escribe contra la API de EA.
|
||||
|
||||
- Los servicios y la disponibilidad los lee el frontend de EA (a través del proxy de solo lectura).
|
||||
- Al reservar, el navegador envía la selección a `POST /api/book` y **el servidor**:
|
||||
- lee los servicios de EA (fuente de verdad de nombre y duración),
|
||||
- busca o crea el cliente por **email**,
|
||||
- crea **una** cita con el servicio de mayor duración y el bloque total en las notas.
|
||||
- La gestión completa (clientes, servicios, citas, proveedores, etc.) se hace desde http://localhost:8888
|
||||
- La API antigua (carpeta `api/` + admin.html antigua + services.yml/mail.yml) ha sido eliminada completamente.
|
||||
|
||||
## Seguridad del proxy
|
||||
|
||||
El servidor Go **no** expone la API de EasyAppointments tal cual:
|
||||
|
||||
- El proxy `/ea-api/` solo deja pasar **lecturas no sensibles** (categorías, servicios,
|
||||
proveedor, disponibilidad), añadiendo la auth admin en el servidor. La lista blanca
|
||||
está en `main.go` (`eaAllowedRoutes`); cualquier otra ruta/método recibe `404`
|
||||
**antes** de inyectar credenciales.
|
||||
- Las **escrituras y la búsqueda de clientes** no pasan por el proxy: se orquestan
|
||||
server-side en `POST /api/book`. Así el navegador nunca puede listar/borrar/modificar
|
||||
clientes ni citas, ni volcar datos personales de EA.
|
||||
|
||||
## Comportamiento multiservicio
|
||||
|
||||
|
||||
Reference in New Issue
Block a user