|
| 1 | +# Arquitectura del ERP — Grupo Tesela |
| 2 | + |
| 3 | +> Documento vivo. **v2 — corregida** a partir del diseño inicial. |
| 4 | +> Sector: **construcción · arquitectura · promoción inmobiliaria** (en ese orden). |
| 5 | +> Stack basado en los conectores (MCP) disponibles en el entorno de trabajo. |
| 6 | +
|
| 7 | +--- |
| 8 | + |
| 9 | +## 0. Qué ha cambiado respecto a la v1 (registro de correcciones) |
| 10 | + |
| 11 | +Esta versión corrige los problemas detectados en la revisión del diseño inicial: |
| 12 | + |
| 13 | +- **Coherencia arquitectónica:** las automatizaciones (Make/Zapier) **ya no |
| 14 | + escriben directamente a Postgres**; pasan por la API / Edge Functions de |
| 15 | + Supabase, para no saltarse las reglas de negocio ni romper la "fuente única de |
| 16 | + verdad". (En la v1 el diagrama conectaba Make/Zapier directos a la BD.) |
| 17 | +- **Priorización por sector:** **Obras/Proyectos y Promoción inmobiliaria pasan |
| 18 | + a ser el núcleo (Fase 1-2)**, no módulos tardíos. En construcción/promoción el |
| 19 | + negocio es el control de costes por obra y la comercialización de unidades. |
| 20 | +- **Fiscalidad española añadida:** IVA con **inversión del sujeto pasivo** |
| 21 | + (ejecuciones de obra), retenciones, **SII / Verifactu**, certificaciones. |
| 22 | +- **Build-vs-buy explícito** para el núcleo Finanzas/Contabilidad (Holded/Odoo o |
| 23 | + software de construcción tipo Presto vs desarrollo a medida). |
| 24 | +- **Recortes:** se marca el solapamiento Make+Zapier y Airtable+Notion+Supabase; |
| 25 | + Supermetrics se mueve a fase tardía; el "Inventario/Almacén" genérico se |
| 26 | + sustituye por "Aprovisionamiento y subcontratas por obra". |
| 27 | +- **Secciones nuevas:** modelo de datos inicial, seguridad/RGPD/backups, KPIs. |
| 28 | +- **Aviso de disponibilidad:** **Coupler.io no tiene conector MCP** en este |
| 29 | + entorno hoy; su rol de ETL queda como "a confirmar / alternativa". |
| 30 | + |
| 31 | +> ⚠️ **Riesgo de ubicación:** este documento vive en un *fork* de |
| 32 | +> `github-mcp-server`. Una sincronización con el upstream lo borra (ya pasó). Lo |
| 33 | +> antes posible debería moverse a un **repositorio propio del ERP**. |
| 34 | +
|
| 35 | +--- |
| 36 | + |
| 37 | +## 1. Principios de diseño |
| 38 | + |
| 39 | +1. **Fuente única de verdad:** todos los datos del negocio viven en una base de |
| 40 | + datos central (Supabase/Postgres). El resto de herramientas leen/escriben |
| 41 | + **a través de la API**, nunca directamente a las tablas. |
| 42 | +2. **Modular y por fases:** cada área es un módulo activable de forma |
| 43 | + independiente. No se construye todo de golpe. |
| 44 | +3. **Automatización orquestada:** las tareas repetitivas se automatizan **contra |
| 45 | + la API**, no contra la BD ni a mano. |
| 46 | +4. **API-first:** todo expone API para conectarse con cualquier herramienta. |
| 47 | +5. **Coste escalado:** plan gratuito primero; premium cuando el módulo lo |
| 48 | + justifique. |
| 49 | +6. **Cumplimiento desde el día 1:** RGPD, copias de seguridad y control de |
| 50 | + accesos no son una fase posterior. |
| 51 | + |
| 52 | +--- |
| 53 | + |
| 54 | +## 2. Stack elegido |
| 55 | + |
| 56 | +| Capa | Herramienta | Notas | |
| 57 | +|------|-------------|-------| |
| 58 | +| **Núcleo de datos / Backend** | **Supabase** | Postgres + Auth + API + Storage + Edge Functions. El corazón. | |
| 59 | +| **Núcleo fiscal/contable** *(decisión pendiente)* | **Holded / Odoo** *(o Presto para obra)* | Ver §6 build-vs-buy. Evita reinventar contabilidad y fiscalidad ES. | |
| 60 | +| **Código y CI/CD** | **GitHub** | Repos, ramas, PRs, despliegues. | |
| 61 | +| **Automatización principal** | **Make.com** | Orquestador de flujos contra la API. | |
| 62 | +| **Automatización secundaria** | **Zapier** | Solo "larga cola" que Make no cubra (evitar solape con Make). | |
| 63 | +| **Diseño de interfaz** | **Figma** | Frontend del ERP y design-to-code. | |
| 64 | +| **CRM / Ventas** | **Attio** | Pipeline comercial. Para venta de inmuebles, evaluar CRM inmobiliario específico. | |
| 65 | +| **Vistas operativas ligeras** | **Airtable** | Solo donde Supabase+frontend aún no llegue (evitar duplicar la BD). | |
| 66 | +| **Documentación / Wiki** | **Notion** | Manual y procesos internos. | |
| 67 | +| **Ofimática y correo** | **Google Workspace** | Gmail + Calendar + Drive. | |
| 68 | +| **Reuniones** | **Zoom** | Grabaciones y resúmenes. | |
| 69 | +| **Gestión dev** | **Linear** | Roadmap del propio ERP. | |
| 70 | +| **Marketing (tardío)** | **Supermetrics** | Solo con inversión publicitaria seria (Fase 3). | |
| 71 | +| **ETL / BI** *(a confirmar)* | **Coupler.io** | Sin conector MCP aquí hoy; alternativa: Edge Functions + Supabase. | |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 3. Arquitectura por capas (corregida) |
| 76 | + |
| 77 | +```mermaid |
| 78 | +flowchart TB |
| 79 | + subgraph PRES["🖥️ Presentación"] |
| 80 | + UI["Frontend ERP (Figma→código)"] |
| 81 | + AIR["Airtable (vistas operativas)"] |
| 82 | + NOT["Notion (wiki)"] |
| 83 | + end |
| 84 | +
|
| 85 | + subgraph APP["⚙️ Aplicación / Lógica"] |
| 86 | + API["API REST/GraphQL (auto)"] |
| 87 | + EF["Edge Functions (reglas de negocio)"] |
| 88 | + end |
| 89 | +
|
| 90 | + subgraph DATA["🗄️ Datos — FUENTE ÚNICA DE VERDAD"] |
| 91 | + PG[("Supabase PostgreSQL")] |
| 92 | + ST["Storage (planos, facturas, licencias)"] |
| 93 | + AUTH["Auth (usuarios y roles)"] |
| 94 | + end |
| 95 | +
|
| 96 | + subgraph AUTO["🔄 Automatización"] |
| 97 | + MAKE["Make.com"] |
| 98 | + ZAP["Zapier (larga cola)"] |
| 99 | + end |
| 100 | +
|
| 101 | + subgraph FIN["🧾 Núcleo fiscal/contable"] |
| 102 | + HOLDED["Holded / Odoo / Presto"] |
| 103 | + end |
| 104 | +
|
| 105 | + subgraph COLAB["👥 Colaboración"] |
| 106 | + GW["Google Workspace"] |
| 107 | + ZOOM["Zoom"] |
| 108 | + ATT["Attio (CRM)"] |
| 109 | + end |
| 110 | +
|
| 111 | + subgraph DEV["🛠️ Desarrollo"] |
| 112 | + GH["GitHub"] |
| 113 | + LIN["Linear"] |
| 114 | + end |
| 115 | +
|
| 116 | + UI --> API |
| 117 | + AIR --> API |
| 118 | + NOT --> API |
| 119 | + API --> EF |
| 120 | + EF --> PG |
| 121 | + EF --> ST |
| 122 | + EF --> AUTH |
| 123 | + %% Las automatizaciones pasan por la API, no por la BD directamente |
| 124 | + MAKE --> API |
| 125 | + ZAP --> API |
| 126 | + HOLDED <--> API |
| 127 | + ATT <--> MAKE |
| 128 | + COLAB <--> MAKE |
| 129 | + GH --> EF |
| 130 | + LIN -.gestiona.-> GH |
| 131 | +``` |
| 132 | + |
| 133 | +--- |
| 134 | + |
| 135 | +## 4. Módulos del ERP (reordenados por sector) |
| 136 | + |
| 137 | +```mermaid |
| 138 | +flowchart LR |
| 139 | + CORE[("Núcleo Supabase\nDatos + Auth")] |
| 140 | + CORE --- M1["🏗️ Obras / Proyectos\n(núcleo)"] |
| 141 | + CORE --- M2["🏠 Promoción y\nVentas inmobiliarias"] |
| 142 | + CORE --- M3["💰 Finanzas analítica\npor obra + fiscal ES"] |
| 143 | + CORE --- M4["🧱 Compras y\nsubcontratas"] |
| 144 | + CORE --- M5["📁 Documentación\n(planos, licencias)"] |
| 145 | + CORE --- M6["🤝 CRM (Attio)"] |
| 146 | + CORE --- M7["📣 Marketing\n(tardío)"] |
| 147 | + CORE --- M8["📈 BI / Reporting"] |
| 148 | + CORE --- M9["👤 RRHH y Nóminas"] |
| 149 | +``` |
| 150 | + |
| 151 | +| # | Módulo | Conectores | Fase | |
| 152 | +|---|--------|-----------|------| |
| 153 | +| 1 | **Obras / Proyectos** (presupuesto vs real, certificaciones, planificación) | Supabase + Linear/Airtable + Make | **Fase 1** | |
| 154 | +| 2 | **Promoción y ventas inmobiliarias** (promociones, unidades, reservas/arras, estado comercial) | Supabase + Attio/CRM inmobiliario + Make | **Fase 2** | |
| 155 | +| 3 | **Finanzas analítica por obra + fiscalidad ES** | Holded/Odoo + Supabase + Make | **Fase 1** | |
| 156 | +| 4 | **Compras y subcontratas** (aprovisionamiento por obra) | Supabase + Gmail + Make | Fase 2 | |
| 157 | +| 5 | **Documentación de proyecto** (planos, licencias, CAD/BIM) | Drive + Notion + Supabase Storage | **Fase 1** | |
| 158 | +| 6 | CRM comercial | Attio + Supabase | Fase 2 | |
| 159 | +| 7 | Marketing | Supermetrics | Fase 3 | |
| 160 | +| 8 | BI y reporting | Supabase + (Coupler.io a confirmar) | Fase 3 | |
| 161 | +| 9 | RRHH y nóminas | Supabase + Google Workspace + gestoría | Fase 3 | |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## 5. Hoja de ruta por fases (corregida) |
| 166 | + |
| 167 | +- **Fase 0 — Cimientos:** Supabase (BD + Auth + RLS) + GitHub + estructura de |
| 168 | + datos central + diseño en Figma + **backups y política RGPD**. |
| 169 | +- **Fase 1 — Núcleo de obra:** Obras/Proyectos (costes por obra, certificaciones) |
| 170 | + + Finanzas analítica + Documentación de proyecto + automatizaciones core. |
| 171 | +- **Fase 2 — Comercial y compras:** Promoción/ventas inmobiliarias + CRM + |
| 172 | + Compras/subcontratas. |
| 173 | +- **Fase 3 — Avanzado:** Marketing (Supermetrics), BI/reporting, RRHH/nóminas. |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +## 6. Decisión clave: build-vs-buy del núcleo fiscal/contable |
| 178 | + |
| 179 | +En construcción/promoción la contabilidad es **analítica por obra** y la |
| 180 | +fiscalidad ES es exigente (IVA con **inversión del sujeto pasivo** en ejecuciones |
| 181 | +de obra, retenciones, **SII/Verifactu**, certificaciones). Reimplementar esto a |
| 182 | +medida sobre Supabase+Make es caro y arriesgado. |
| 183 | + |
| 184 | +| Opción | Pros | Contras | |
| 185 | +|--------|------|---------| |
| 186 | +| **Comprar (Holded / Odoo)** | Contabilidad y fiscalidad ES resueltas; rápido | Menos a medida; integrar vía API con el núcleo Supabase | |
| 187 | +| **Software de obra (Presto/Arquímedes)** | Presupuestos y certificaciones potentes | No es ERP completo; hay que integrarlo | |
| 188 | +| **A medida (Supabase)** | Control total y datos unificados | Mucho desarrollo; riesgo fiscal/legal | |
| 189 | + |
| 190 | +**Recomendación:** comprar el núcleo fiscal/contable (Holded u Odoo) e integrarlo |
| 191 | +por API con Supabase como fuente única; construir a medida solo Obras/Promoción. |
| 192 | + |
| 193 | +--- |
| 194 | + |
| 195 | +## 7. Modelo de datos inicial (esqueleto, a detallar) |
| 196 | + |
| 197 | +Entidades mínimas para arrancar Fase 0-1 (nombres orientativos): |
| 198 | + |
| 199 | +- `obras` (proyecto, cliente, presupuesto, fechas, estado) |
| 200 | +- `partidas` / `capitulos` (presupuesto por obra) |
| 201 | +- `certificaciones` (avance/facturación por obra) |
| 202 | +- `proveedores` y `subcontratas` |
| 203 | +- `pedidos_compra` (ligados a obra) |
| 204 | +- `promociones` y `unidades` (inmuebles: estado comercial, precio, reserva) |
| 205 | +- `clientes` / `contactos` |
| 206 | +- `documentos` (planos, licencias; referencia a Storage) |
| 207 | +- `usuarios` y `roles` (Auth + RLS) |
| 208 | + |
| 209 | +> Cada tabla con **Row Level Security** y acceso solo vía API/Edge Functions. |
| 210 | +
|
| 211 | +--- |
| 212 | + |
| 213 | +## 8. Seguridad y cumplimiento (nuevo) |
| 214 | + |
| 215 | +- **RGPD:** base legal del tratamiento, registro de actividades, derechos ARCO, |
| 216 | + encargados de tratamiento (proveedores cloud) y DPA firmados. |
| 217 | +- **Backups:** copias automáticas de Supabase + retención definida + prueba de |
| 218 | + restauración periódica. |
| 219 | +- **Accesos:** roles por módulo, principio de mínimo privilegio, RLS en todas las |
| 220 | + tablas, 2FA en cuentas críticas. |
| 221 | +- **Entornos:** separación dev / producción. |
| 222 | + |
| 223 | +--- |
| 224 | + |
| 225 | +## 9. KPIs por fase (nuevo) |
| 226 | + |
| 227 | +- **Fase 1:** % obras con presupuesto vs real al día; nº certificaciones |
| 228 | + gestionadas; tiempo de cierre mensual. |
| 229 | +- **Fase 2:** unidades comercializadas; conversión de leads; plazo medio de |
| 230 | + reserva→venta. |
| 231 | +- **Fase 3:** coste de adquisición de cliente; cuadros de mando en uso. |
| 232 | + |
| 233 | +--- |
| 234 | + |
| 235 | +## 10. Plan de cuentas premium (qué pagar y cuándo) |
| 236 | + |
| 237 | +> Precios **aproximados** y orientativos por mes; confirmar en cada web. |
| 238 | +
|
| 239 | +| Prioridad | Servicio | Plan | Coste aprox. | ¿Premium? | |
| 240 | +|-----------|----------|------|--------------|-----------| |
| 241 | +| 🔴 1 (ya) | **Supabase** | Pro | ~25 $/mes | SÍ. Es el núcleo. | |
| 242 | +| 🔴 1 (ya) | **Make.com** | Core/Pro | ~9–16 $/mes | SÍ. Motor de automatización. | |
| 243 | +| 🔴 1 (ya) | **Google Workspace** | Business Starter | ~6–7 €/usuario | SÍ. Correo + Drive. | |
| 244 | +| 🔴 1 (ya) | **Núcleo fiscal (Holded/Odoo)** | según módulos | ~consultar | SÍ, si se opta por comprar (§6). | |
| 245 | +| 🟠 2 | **Attio** | Plus/Pro | ~29 $/usuario | Al arrancar lo comercial. | |
| 246 | +| 🟠 2 | **Airtable** | Team | ~20 $/usuario | Solo si hay vistas operativas. | |
| 247 | +| 🟡 3 | **Supermetrics** | según fuentes | ~100–200+ €/mes | Solo con inversión publicitaria. | |
| 248 | +| 🟡 3 | **Coupler.io** | según volumen | ~49–99 $/mes | Solo si se confirma su uso (sin MCP aquí). | |
| 249 | +| 🟡 3 | **Notion / Figma** | Plus / Pro | ~10–15 $/usuario | Opcional. | |
| 250 | +| 🟢 4 | **GitHub / Linear** | Free→Team | 0 → ~4–8 $ | Gratis basta al inicio. | |
| 251 | +| 🟢 4 | **Zapier / Zoom** | Starter / Pro | ~14–30 $ | Solo si hacen falta. | |
| 252 | + |
| 253 | +### Inversión mínima para arrancar (Fase 0-1) |
| 254 | +**Supabase Pro + Make Core + Google Workspace** (+ núcleo fiscal si se compra) → |
| 255 | +del orden de **~40–50 €/mes** sin el ERP fiscal; con Holded/Odoo, sumar su plan. |
| 256 | + |
| 257 | +--- |
| 258 | + |
| 259 | +## 11. Cómo se gestiona |
| 260 | + |
| 261 | +- Se conecta cada herramienta **por módulo y por fase**, no todas el día 1. |
| 262 | +- Cada servicio que requiera login se pide **solo al activarlo**. |
| 263 | +- Código y configuración versionados en **GitHub** (idealmente, repo propio del |
| 264 | + ERP — ver aviso de §0). |
| 265 | + |
| 266 | +--- |
| 267 | + |
| 268 | +## 12. Pendiente de confirmar |
| 269 | + |
| 270 | +- ✅ **Sector:** construcción · arquitectura · promoción inmobiliaria (resuelto). |
| 271 | +- **Decisión build-vs-buy** del núcleo fiscal (§6). |
| 272 | +- **Nº de usuarios** previstos (para dimensionar planes por usuario). |
| 273 | +- **Software actual** del que migrar datos (contabilidad, presupuestos de obra). |
| 274 | +- **Repo propio** del ERP (sacarlo del fork de github-mcp-server). |
0 commit comments