Consult AS Technology f0f923b2ef feat(monday): alinear Frasa-CAS con CRM real del cliente (7 mejoras)
- Vocabulario funnel: labels Intento de contacto/Abandono en Leads,
  etapas completas en Oportunidades (Cotizador, Ganado, Perdido...)
- Apartados: pipeline Enkontrol (8 estados) + checkboxes CURP/RFC/Comprobante
  que la app de alta prende al subir documentos
- Motivos No Compra: board catálogo + dropdown + endpoint /oportunidades/:id/perder
- Perfil demográfico en Contactos mapeado desde el alta (estado civil,
  vivienda, propósito, fecha nac., rango de edad calculado)
- Desarrollos: catálogo maestro sincronizado (precios, m2, tipo, entrega)
- Actividades: board nuevo + creación automática en round-robin e inactividad
- Cobranza: plan liquidado mueve el apartado a 'X Escriturar' en Monday
- Scripts: setup:crm y sync:desarrollos (idempotentes)
- Tests 119/119 verdes
2026-08-22 07:18:48 +00:00

FRASA Ecosystem

Ecosistema comercial de Frasa Desarrollos S.A.P.I. de C.V.

Componentes

Componente Ruta Descripción
apps/landing / Entrada al ecosistema
apps/cotizador /quote/ Cotizador financiero (4 propuestas, PDF ANEXO A)
apps/alta-clientes /client/ Alta de clientes (wizard, firma digital, PDFs PLD)
apps/cobranza /pay/ Planes de enganche, vencidos, estados de cuenta
api-gateway /api/ Express 5 + Prisma + integración Monday.com

Desarrollo local

Cada app es un proyecto Vite independiente: npm install && npm run dev (o npm run preview tras npm run build). Tests: npx vitest run en cada paquete. El API: cd api-gateway && npm install && npx prisma migrate dev && npm run dev.

Variables de entorno: copiar .env.example a .env y completar (el .env nunca se commitea).

Servidor actual (LXC sin Docker)

Esta máquina es un contenedor LXC sin nesting: Docker no puede correr contenedores. El stack corre directo en el host:

  • NGINX (apt) sirve los dist/ de las apps y proxifica /api/ → 127.0.0.1:3000. Config: deploy/nginx-host.conf → /etc/nginx/sites-available/frasa.
  • API como servicio systemd: deploy/frasa-api.service → frasa-api.service (systemctl status frasa-api, logs en /var/log/frasa-api.log).
  • Rebuild de apps tras cambios: VITE_API_URL=/api npm run build en cada app + systemctl reload nginx (no requiere restart).

El docker-compose.yml queda listo para cuando el stack se mude a una VM con Docker.

Deploy con Docker (VM futura)

git clone https://git.consultoria-as.com/consultoria-as/FRASA-CAS.git /opt/frasa-ecosystem
cd /opt/frasa-ecosystem
cp .env.example .env && nano .env        # completar secretos

# SSL: webroot (funciona con nginx corriendo y renueva sin downtime)
docker compose up -d nginx               # primer arranque SIN ssl: ver nota abajo
certbot certonly --webroot -w /var/www/certbot -d frasadesarrollos.ddns.net

docker compose build && docker compose up -d
docker compose logs -f api
curl https://frasadesarrollos.ddns.net/api/health

Modo local sin SSL (LAN): .env con NGINX_CONF=nginx.http.conf hace que NGINX sirva todo por HTTP en el puerto 80. Cuando el DDNS apunte a este servidor: certbot certonly --webroot -w /var/www/certbot -d frasadesarrollos.ddns.net, quita NGINX_CONF del .env (vuelve nginx.conf con 443) y docker compose restart nginx. Renovación: certbot renew --deploy-hook "docker compose -f /opt/frasa-ecosystem/docker-compose.yml restart nginx".

Backup: scripts/backup.sh (cron sugerido 17 2 * * *).

Monday.com

Workspace Frasa-CAS. Tableros: Contactos, Desarrollos, Unidades (inventario importado), Leads, Oportunidades, Apartado, Ventas. Los board IDs están en .env.example. Webhook: POST /api/webhooks/monday (responde el challenge de activación).

Pendientes conocidos

  • Migrar Prisma de SQLite a Postgres 16 (dinero a Decimal).
  • Auth JWT, helmet, rate-limit, CORS restringido (hoy: red interna).
  • Self-hostear worker/wasm de tesseract.js (OCR sin internet).
  • Automatizaciones Monday (round-robin, recordatorios 10 días) y cron de cobranza en el API.
Description
Integracion de operacion con monday para los departamentos de Cobranza, Ventas y Servicio al cliente de FRASA DESARROLLOS
Readme 14 MiB
Languages
TypeScript 94.9%
Python 2.8%
JavaScript 1.9%
CSS 0.2%
HTML 0.1%