# Arquitectura — Instalaciones CRM PerfectPool

> Cómo se construye el sistema. Se actualiza al cambiar la estructura.

## Contexto e integración

- **Fuente de las visitas:** CRM **vTiger 7.4** (servidor propio). Las visitas/instalaciones
  ya existen en el CRM, asignadas a un técnico y a un vendedor (el del pedido).
- **Programación de logística (existente, a revisar en `legacy/`):** se conecta al CRM,
  **toma fotos y las sube al CRM**. Reutilizaremos su mecanismo de fotos↔CRM.
- **OT (a construir):** formulario que se llena desde la visita, genera un **PDF** (basado en
  las plantillas de `legacy/ot_pdf/`), lo **sube al CRM** y lo **envía por correo**.

## Flujo objetivo (Órdenes de Trabajo)

```
1. Técnico inicia sesión (instalaciones.perfectcrm.cl)
2. Ve SUS visitas asignadas (leídas del CRM vTiger vía Webservice API)
3. Botón "Crear OT" sobre una visita
4. Llena la OT:
   - Puede guardar como BORRADOR y retomar
   - Campos según la plantilla PDF (legacy/ot_pdf)
   - Sube FOTOS (mecanismo reutilizado de la programación de logística)
5. Al completar → genera la OT física en PDF
6. El PDF se SUBE al CRM (adjunto a la visita/pedido)
7. Se ENVÍA por correo:
   - Para: vendedor asignado al pedido (la visita del técnico)
   - CC: el propio técnico
```

## Componentes (a definir con el material de legacy)

| Componente | Rol | Base / dependencia |
|------------|-----|--------------------|
| Login técnico | Autenticación y sesión | Patrón de Control CRM (usuarios + roles) |
| Listado de visitas | Trae visitas del técnico | vTiger Webservice API (ripcord / vtiger_api) |
| Editor de OT | Formulario borrador/completo | Campos de la plantilla PDF |
| Captura de fotos | Subir evidencias al CRM | Reusar programación de logística (legacy) |
| Generador de PDF | OT física desde los datos | Basado en las plantillas PDF de legacy |
| Envío de correo | Al vendedor + CC técnico | PHPMailer (como en los conectores) |

## Datos (tentativo, validar con CRM y planillas)

- **Visita/OT:** `n_ot`, `visita_id_crm`, `tecnico`, `vendedor`, `cliente`, `direccion`,
  `tipo_instalacion`, `fecha`, `estado` (borrador / completa / enviada), campos de la plantilla,
  fotos (rutas/ids en CRM), `pdf_generado`.
- **Técnico / usuario:** `nombre`, `correo`, `activo`, rol.

## Notas
- Secretos (API keys, credenciales vTiger/SMTP) fuera del repo (`.env`/config local).
- Evidencias (fotos) y PDFs generados no se versionan (ver `.gitignore`).
- Pendiente confirmar del material de `legacy/`: endpoints y credenciales del Webservice vTiger,
  módulo/tabla donde viven las visitas, y estructura exacta de la plantilla de OT.
