Commit Graph
47 Commits
Author SHA1 Message Date
Lizandro GD e5849549a0 Agrega API de pagos externos: tokens por servicio, atados a pasarela e IP
Permite emitir credenciales (token hasheado + IP/CIDR opcional) desde
/app/pagos-externos para que aplicaciones de terceros pidan cobros a
través de Bold/dLocal/PayPal sin acceso a nada más del sistema:

- POST /api/v1/pagos-externos/solicitar genera el link de cobro real
  usando solo las pasarelas habilitadas para ese servicio.
- Los webhooks existentes de Bold/dLocal/PayPal (firma obligatoria,
  idempotentes) ahora también resuelven referencias "extpay-…" sin
  tocar el flujo de contratos ("contrato-{id}").
- Al confirmarse el pago se notifica por webhook firmado (HMAC) y/o
  Telegram, configurable por servicio.
- CRUD de servicios protegido con SoloAdmin; token y callback_secret
  solo se muestran una vez, en DB se guardan hasheados.
2026-08-04 14:16:13 +00:00
Lizandro GDandClaude Opus 5 c8e5afceb2 fix: seguridad de pagos y accesos, integración PayPal y Coolify ampliado
Seguridad (crítico):
- Los webhooks de Bold y dLocal solo validaban la firma si el atacante la
  enviaba: sin cabecera se aceptaba cualquier payload. Ahora es obligatoria.
- GET /pago-exitoso marcaba contratos como pagados leyendo un query param del
  navegador. Ahora solo muestra estado; la confirmación la hace la verificación
  contra la API de la pasarela o el webhook firmado.
- /uploads se servía como estático público: se descargaban RUTs, facturas y
  entregables sabiendo la ruta. Ahora exige sesión.
- Los secretos JWT no se podían sobreescribir por entorno (faltaba el tag env:)
  y su valor estaba en el repo, permitiendo firmarse una sesión de admin. Ahora
  son configurables y el arranque se detiene si siguen con el valor publicado.
- .env y session.db salen del control de versiones.
- Query Runner, gestión de usuarios/roles/módulos y seeds quedan restringidos a
  administradores; antes bastaba con tener sesión.

Pasarelas de pago:
- dLocal generaba enlaces que nunca se reconciliaban: mandaba el ID numérico en
  vez de "contrato-N", la URL de retorno apuntaba a la API de dLocal y nunca se
  enviaba notification_url, así que su webhook jamás se disparaba.
- PayPal solo tenía pantalla de configuración. Se implementa el servicio
  completo (OAuth, orden, captura, verificación de webhook) y queda
  seleccionable como pasarela.
- La moneda estaba fija en COP: un contrato en USD generaba un cobro por esa
  cifra en pesos.

Contratos:
- pago_confirmado nunca volvía a false, así que el segundo ciclo de renovación
  no se cobraba aunque el cliente pagara. Se reinicia al generar enlace nuevo.
- Los contratos vencidos nunca cambiaban de estado y recibían correo a diario
  de forma indefinida; ahora se cierran tras 30 días de gracia.

Otros:
- Coolify: coolifyCall ignoraba el status HTTP y reportaba errores como éxito.
  El agente pasa de 10 a cobertura completa (servicios, bases de datos,
  variables de entorno, proyectos, equipos y recursos de servidor).
- SeedBalanceData ya no corre en cada arranque (recreaba transacciones
  borradas); ahora se invoca con SEED_BALANCE=1.
- Los seeds dejan de devolver permisos revocados en cada despliegue.
- Timeouts en las llamadas HTTP a Telegram y dLocal que podían colgarse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 03:20:00 +00:00
Lizandro Guarnizo 6a3793a63b feat: soporte Google Gemini en IA controller + UI 2026-07-07 00:22:58 -05:00
Lizandro Guarnizo 38ff9270ab fix: ia controller soporta OpenAI-compatible + native Ollama; TelegramChatID en Users 2026-07-06 23:54:21 -05:00
Lizandro Guarnizo b6522fa850 fix: ia streaming usa json.Decoder en vez de Scanner + loggeo + manejo error interno Ollama 2026-07-06 23:40:56 -05:00
Lizandro Guarnizo 9dfa3afab0 fix: ia controller usa endpoint default si no hay config en BD + valida status HTTP de Ollama 2026-07-06 23:37:26 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 6062f31c70 feat(ai): integrar Ollama en AiConfig para ia_controller, query_runner y landing
- Agrega provider 'ollama' al panel de AiConfig con badge azul y hint de URL
- ia_controller: reemplaza webhook n8n hardcodeado por llamada directa a Ollama vía AiConfig (módulo 'ia')
- query_runner: agrega soporte explícito de ollama (model fallback gemma3:1b, Basic Auth para URL pública)
- HTML: agrega módulo 'IA / vCard' en el selector de módulos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 09:33:22 -05:00
Lizandro Guarnizo c05a2a8137 up 2026-06-03 21:32:50 -05:00
Lizandro Guarnizo 28d0eae715 up 2026-06-02 13:13:29 -05:00
Lizandro Guarnizo f8b352eb03 add logo_url to landing questions; add color/foto_perfil extraction to vcard 2026-05-28 22:44:42 -05:00
Lizandro Guarnizo 52ce8638a8 replace cta with social_media question; add SocialMedia field to landing_session 2026-05-28 20:49:35 -05:00
Lizandro Guarnizo 06d85dc0bf up 2026-05-27 10:16:28 -05:00
Lizandro Guarnizo 498e1d5743 up 2026-05-27 09:34:21 -05:00
Lizandro Guarnizo 7f309186d6 up 2026-05-18 23:50:50 -05:00
Lizandro Guarnizo 67f9466991 up 2026-05-13 22:30:13 -05:00
Lizandro Guarnizo 381425b7e6 ip 2026-05-12 22:34:10 -05:00
Lizandro Guarnizo aead156ba8 up 2026-05-12 22:07:31 -05:00
Lizandro Guarnizo fd8b5d68fa up 2026-05-12 21:41:26 -05:00
Lizandro Guarnizo 9ca202b3bd up 2026-05-12 21:33:54 -05:00
Lizandro Guarnizo fbd75d8cc6 up 2026-05-12 21:22:30 -05:00
Lizandro Guarnizo 217e1b550f up 2026-05-12 20:41:50 -05:00
Lizandro Guarnizo 25e3cd6254 up 2026-05-12 19:41:17 -05:00
Lizandro Guarnizo 1a8cc92a22 up 2026-05-06 15:29:14 -05:00
Lizandro Guarnizo 4913fdf984 up 2026-05-02 11:09:58 -05:00
Lizandro Guarnizo c3b2bbc413 up 2026-05-02 09:41:58 -05:00
Lizandro Guarnizo 560359173b up 2026-05-01 22:55:51 -05:00
Lizandro Guarnizo ddbabea23f up 2026-05-01 17:37:10 -05:00
Lizandro Guarnizo c9024274f0 up 2026-05-01 17:36:17 -05:00
Lizandro Guarnizo 3f6eb7dddc p 2026-05-01 13:44:37 -05:00
Lizandro Guarnizo 5e0b6ae2f0 up 2026-05-01 12:02:21 -05:00
Lizandro Guarnizo 357bdc7397 feat: integracion Bold y pagina unificada de pasarelas de pago 2026-05-01 11:05:54 -05:00
lizandrogd 94d206a469 Update ia_controller.go 2025-09-09 11:24:26 -05:00
lizandrogd 37b99a95e6 Update ia_controller.go 2025-08-11 18:31:52 -05:00
lizandrogd 2aff7953db ia ollama 2025-08-05 14:48:12 -05:00
lizandrogd bf0abc65f1 Update vcard_qr.go 2025-06-11 02:20:17 -05:00
lizandrogd 30dfce6373 Update vcard_qr.go 2025-06-11 02:19:11 -05:00
lizandrogd a34e2b7143 up 2025-06-07 19:00:44 -05:00
lizandrogd 65d6361ea7 update 2025-05-30 19:40:26 -05:00
lizandrogd 31483591f1 dlocal services 2025-05-12 14:36:23 -05:00
lizandrogd 81af8269d6 update 2025-05-08 20:14:58 -05:00
lizandrogd beb50ad892 update 2025-05-03 00:09:03 -05:00
Lizandro Guarnizo 98d77f4b9a vcf 2025-04-28 20:11:04 -05:00
root fd739f8675 Descripción de los cambios 2025-04-24 02:07:47 +00:00
Lizandro Guarnizo ae91566738 Update vcard_qr.go 2025-04-23 21:02:18 -05:00
Lizandro Guarnizo 0de5960974 Update vcard_qr.go 2025-04-19 10:11:05 -05:00
Lizandro Guarnizo 79d6cca94d qr vcard 2025-04-18 07:38:32 -05:00
Lizandro Guarnizo 6d8f1bcd6f Initial commit 2025-02-06 14:22:29 -05:00