admin.sozu.com · App Clientes SOZU · Landings de proyecto
Esta semana · 23 al 30 de julio Julio completo · 1 al 30 de julio
Contexto · acumulado del mes
Seis frentes concentraron los 223 commits de estos siete días.
Dieciséis migraciones dedicadas: se revocó el acceso anon a las funciones SECURITY DEFINER, se eliminó el USING(true) de las políticas RLS que no filtraban nada, y se cerró la escritura anónima en los catálogos abiertos.
Google aprobó la revisión y la app ya está disponible para descarga. Detrás: workflow único de publicación a App Store y Play Store, ícono SOZU en launcher y notificaciones, version gate con aviso y actualización forzada respaldado por su propia edge function, y firma de release con keystore cifrado.
La edge function lead-formulario-web conecta los formularios de las landings con Contactos del CRM guardando el dominio real de origen. Se suma Meta CAPI v2 con event_id, hash de correo y teléfono, reintentos y registro de envíos.
El portal se pinta con la marca del banco de quien entra: color_marca sobrescribe las variables del design system y el logo del banco aparece en el header, junto al de SOZU. Se agregaron logo_url e icono_url a bancos_convenio — las imágenes ya se subían pero no tenían dónde guardarse. Sin imagen, degrada a un cuadro con el color y las iniciales.
Actuaciones con línea de tiempo, multiasunto por expediente, descarga sin salir del portal e integración con el orquestador crear_expediente_y_bloquear_cobranza. Notaría reutiliza el modelo documental común en vez de tablas propias.
Pago de apartado por SPEI con gate por whitelist, token de reservación como credencial de los links públicos, CSF antes del pago con salto para clientes existentes, y compartir la oferta desde pipeline y prospectos.
Seis frentes concentraron los 737 commits de julio.
51 entregas en admin y 22 migraciones: contactos, negocios con pipelines configurables, tablero Kanban, tareas y citas, carga masiva desde Excel, pool de contactos con permisos por dueño e integración con Meta Ads.
El repositorio sozu-cliente-app arrancó el 7 de julio. En 23 días se construyó la app en Flutter para web, Android e iOS con paridad funcional con el portal, y Google Play ya la publicó: de no existir a estar descargable en menos de un mes. iOS solo espera la habilitación de la cuenta Apple.
34 entregas en admin y 28 migraciones: detalle de cuenta con universo completo de deuda, validación de pagos con 6 estados, borrado lógico con motivo, blindaje de pagos STP y paginación server-side.
Bancos, que arrancó el 10 de julio como bandeja de solicitudes de crédito y cierra el mes como portal marca blanca, con el color y el logo de cada institución y aislamiento de datos por banco. Más Socio Bancario (ventas, inventario, expedientes), Notaría (expediente de desarrollo, descargas, relación de pagos) y Jurídico Fase 2 con bitácora inmutable de actuaciones y bloqueo de cobranza.
32 entregas: rediseño completo, desglose de bodega incluida, esquemas escalonados dinámicos, compartir por link con token de reservación y flujo de pago de apartado por SPEI.
En la última semana: políticas RLS corregidas, funciones SECURITY DEFINER cerradas a anon, y baja de decenas de tablas y funciones legacy marcadas como borrar_*.
Commits por día en los cuatro repositorios de código durante la semana. Commits por día en los cuatro repositorios de código durante julio. Pasa el cursor sobre cada barra para ver el detalle.
Relación funcionalidad/corrección de 1.2 : 1 esta semana, contra 1.6 : 1 en el mes. El peso de las correcciones subió por el trabajo de seguridad en la base de datos, que se registra como fix aunque sea trabajo estructural planeado.
Relación funcionalidad/corrección de 1.6 : 1 — el equipo trabajó mayoritariamente en construcción, no en apagar incendios.
| Repositorio | Qué contiene | Semana | Mes |
|---|---|---|---|
| sozu-admin | Plataforma administrativa y portales | 119 | 395 |
| sozu-supabase-migrations | Base de datos, RLS y funciones | 66 | 188 |
| landings (6 repos activos) | Sitios públicos de proyecto | 42 | 141 |
| sozu-edge-functions | Backend y API de la app | 23 | 81 |
| sozu-cliente-app | App Clientes en Flutter | 15 | 73 |
119 commits y 109 PRs esta semana. Módulos con mayor actividad: 395 commits y 332 PRs en julio. Módulos con mayor actividad:
origen, mostrando el dominio real de la landing en vez de sozu.com fijo.@vladmandic/human y expediente unificado.3 entregas en admin y 3 migraciones. El portal dejó de verse igual para todos: ahora cada banco entra a su propia versión. 9 entregas en admin y 8 migraciones. Nació el 10 de julio como bandeja de solicitudes de crédito y cierra el mes como portal marca blanca.
color_marca del convenio. El color se convierte a HSL y sobrescribe las variables del design system en el contenedor raíz, así que todo lo que use bg-primary, text-primary o ring-* hereda la marca sin tocar un solo componente.logo_url e icono_url nuevas en bancos_convenio. La pantalla Bancos ya subía el archivo al bucket documentos e intentaba guardar la URL, pero las columnas no existían: la imagen quedaba huérfana y el botón seguía diciendo «Subir». El header muestra el ícono cuadrado, o el logo si no hay ícono, o un cuadro con el color y las iniciales si no hay ninguno — el portal nunca queda sin identidad visual.useBancosConvenio pedía esas columnas en su consulta completa; al fallar caía a la consulta básica, que tampoco traía tasa_min, tasa_max, cat_min ni cat_max. Con las columnas creadas, el portal recuperó las tasas.usuarios.id_banco, con vista global reservada a Super Admin y «Ver como» por usuario. Bitácora y asignación automática sin DDL, SLA y tasas por banco, desglose de pagos en panel lateral, y expiración de solicitudes por cron..xlsx formateado en vez de CSV, servido como octet-stream porque el tipo anterior corrompía el archivo. Se sumaron columnas de Tipo y estatus al Reporte 7.crear_expediente_y_bloquear_cobranza.
15 commits en sozu-cliente-app y 23 en sozu-edge-functions. La semana se fue en dejarla lista para publicar.
73 commits en sozu-cliente-app (78 PRs) y 81 en sozu-edge-functions. El repositorio nació el 7 de julio: todo lo que sigue se construyó en 23 días.
cliente-app-version.applicationId configurable desde el dashboard, keystore cifrado en Codemagic, firma de release corregida y reemplazo de file_picker por file_selector, que tenía roto el build.main.Android ya está en tienda; iOS depende de un trámite de cuenta, no de desarrollo. Este es el estado al corte:
Google aprobó la revisión: la App Clientes SOZU ya está publicada y disponible para descarga en Play Store. El repositorio arrancó el 7 de julio, así que la app pasó de no existir a estar en tienda en menos de un mes.
Siguiente paso: seguimiento de instalaciones y de reportes de fallo desde la consola.La cuenta sigue en revisión: existía una cuenta previa de SOZU, por lo que en lugar de crear una nueva se va a retomar la existente actualizando los datos de la organización.
Sin fecha comprometida hasta que Apple valide la información actualizada.cliente-app-version: nueva función que respalda el version gate de la app nativa.cliente-expediente extrae automáticamente los datos de CURP y Acta de Nacimiento al subirlos.cliente-documentos mapea el estatus 4 a "vencido"; cliente-perfil incluye ocupación.cliente-push-token y notificaciones-push sobre FCM v1, con preferencia on/off por cliente.
42 commits esta semana sobre 2 landings activas, de 24 repositorios revisados en landings-sozu y sozu-com.
141 commits en julio sobre 6 landings activas, de 24 repositorios revisados en landings-sozu y sozu-com.
| Landing | Organización | Último push | Semana | Mes |
|---|---|---|---|---|
| margot-web | landings-sozu | 24 jul | 23 | 57 |
| bottura-web | landings-sozu | 9 jul | 0 | 27 |
| sozu-avances | landings-sozu | 30 jul | 19 | 19 |
| tallwood-web | landings-sozu | 20 jul | 0 | 18 |
| investimento-web | landings-sozu | 22 jul | 0 | 13 |
| daiku | landings-sozu | 9 jul | 0 | 7 |
Las landings consumen RPCs públicas de Supabase (landing_margot_rpc, landing_daiku_rpc, landing_bottura_rpc) y sus formularios entran al CRM a través de lead-formulario-web, que registra el dominio real de origen. sozu-avances es el sitio de este mismo reporte, no una landing comercial. Los repositorios restantes están archivados, sin actividad desde 2022–2023.
66 migraciones esta semana, la mayoría concentradas en seguridad y esquema. 188 migraciones en julio. Principales bloques:
USING(true) o WITH CHECK(true) —es decir, que no filtraban nada— quedaron corregidas.SECURITY DEFINER quedaron sin permiso de ejecución para anon y PUBLIC.EXECUTE a los helpers de autorización con una whitelist explícita.user_has_permission dejó de exigir la tabla legacy menus_roles.georgia_readonly quedó como miembro de georgia_mcp_ro, para que el agente respete RLS.borrar_*, más un drop dinámico que barre los remanentes de dev.fecha_actualizacion en las tablas del CRM.SECURITY DEFINER en get_offers_with_agent para evitar statement timeout (57014) y conteo estimado en listados grandes.crear_expediente_demanda y bitácora inmutable de actuaciones.landing_margot_rpc, landing_daiku_rpc y landing_bottura_rpc.Commits productivos por persona esta semana. Haz clic en los encabezados para reordenar. Commits productivos por persona en julio. Haz clic en los encabezados para reordenar.
| Persona | Foco de la semana | Admin | Apps | Edge | BD | Total |
|---|---|---|---|---|---|---|
| Jorge Mendoza | Seguridad de BD, App Clientes y publicación a tiendas. Además: infraestructura, DevOps, DNS, servidores y VPN, configuración de los agentes en Platica, y administración de las herramientas de desarrollo | 20 | 15 | 13 | 36 | 84 |
| Eduardo Araujo | Portal Agente, Portal Embajador y oferta digital | 59 | 0 | 3 | 20 | 82 |
| Sergio García | CRM, Meta Ads y captación de leads | 19 | 0 | 7 | 10 | 36 |
| Tomás Peterson | Portal Jurídico Fase 2 y Portal Notaría | 10 | 0 | 0 | 0 | 10 |
| José Ramón Escobar | Bandejas de ejecución y comisiones externas | 9 | 0 | 0 | 0 | 9 |
| Abel Salazar | Embajadores y reglas de comisiones | 2 | 0 | 0 | 0 | 2 |
| Persona | Foco principal | Admin | Apps | Edge | BD | Total |
|---|---|---|---|---|---|---|
| Jorge Mendoza | App Clientes, edge functions, seguridad y permisos. Además: infraestructura, DevOps, DNS, servidores y VPN, configuración de los agentes en Platica, y administración de las herramientas de desarrollo | 83 | 73 | 65 | 93 | 314 |
| Eduardo Araujo | Portal Agente, Portal Embajador, oferta digital, UI | 168 | 0 | 5 | 72 | 245 |
| Sergio García | CRM completo e integración Meta Ads | 54 | 0 | 11 | 23 | 88 |
| Tomás Peterson | Portal Jurídico y Portal Notaría | 31 | 0 | 0 | 0 | 31 |
| José Ramón Escobar | Bandejas de ejecución, comisiones, socios bancarios | 24 | 0 | 0 | 0 | 24 |
| gpt-engineer-app | Generación asistida de UI | 24 | 0 | 0 | 0 | 24 |
| Abel Salazar | Embajadores y reglas de comisiones | 11 | 0 | 0 | 0 | 11 |
Trabajo que no se refleja en el conteo de commits, pero que sostiene la operación de todo el equipo.
avances.sozu.com para este reporte.sozu-admin y las edge functions, Codemagic para la app móvil y Firebase Hosting para el portal del cliente; gestión de secretos, keystores y certificados de firma.sozu-mcp), que expone las herramientas bajo un token propio y el rol de solo lectura georgia_readonly. El agente nunca escribe en la base de datos.Lo que queda abierto al corte y lo que conviene vigilar.
El revoke masivo de anon tumbó el Portal de Agentes, el Admin y el sitio público el mismo día, y hubo que re-otorgar permisos en caliente con una whitelist. Se resolvió, pero revela que no hay forma de saber qué depende de cada función antes de tocarla. Con la cantidad de funciones y políticas modificadas, pueden quedar rutas rotas que aún nadie ha ejercido.
Los 73 commits del mes en sozu-cliente-app son de un único autor. Toda la app —Flutter, pipeline de Codemagic, firma de release, publicación a tiendas y configuración de Firebase— depende de una sola persona; no hay redundancia de conocimiento sobre el proceso de release.
Google Play ya publicó la app, así que Android queda cerrado. Lo que sigue pendiente es Apple: se retomará la cuenta preexistente de SOZU con datos actualizados y ese trámite no tiene fecha comprometida. El lanzamiento en iOS depende de que Apple valide esa información, no del desarrollo — el código para iOS ya está listo y compilando.
Volvió a pasar esta semana entre las ramas de seguridad y limpieza, y ya van varias veces en el mes. Con cuatro frentes trabajando sobre el mismo esquema se va a repetir. Un chequeo automático de unicidad en CI antes del merge lo resolvería de raíz.
Aparecieron statement timeouts (57014) en el listado de propiedades y en get_offers_with_agent. Se resolvieron con conteo estimado y SECURITY DEFINER, pero son parches puntuales: no hay una revisión sistemática de planes de ejecución sobre las vistas de mayor volumen.
El flujo de pago dentro de la oferta digital está activo solo para cuentas en whitelist. Falta definir criterios y calendario de apertura general.
La validación de identidad usa @vladmandic/human ejecutándose localmente en el navegador. Es buena para experiencia de usuario, pero al correr del lado del cliente no constituye por sí sola una prueba de identidad auditable; conviene definir si se requiere respaldo server-side.