Borrador Esta versión aún no es pública Solo tú la ves. El sitio en vivo todavía muestra la versión anterior. Revisar y publicar
Reporte de ingeniería · SOZU

Resumen Ejecutivo de Desarrollo

admin.sozu.com · App Clientes SOZU · Landings de proyecto

10 repositorios activos 6 desarrolladores Corte: 6 de agosto de 2026 Medido sobre origin/main
Todos los reportes
Del 31 de julio al 6 de agosto · 7 días Del 1 al 6 de agosto · 6 días

Esta semana · 31 de julio al 6 de agosto Agosto a la fecha · 1 al 6 de agosto

213
Commits productivos
223 la semana anterior
121
Pull requests
81 admin · 40 app
97
Nuevas funcionalidades
1.4 por cada corrección
67
Correcciones
31% del total
33
Migraciones de BD
15% del total
2
Commits en landings
1 landing actualizada
183
Commits productivos
30.5 por día
109
Pull requests
71 admin · 38 app
88
Nuevas funcionalidades
1.4 por cada corrección
61
Correcciones
33% del total
32
Migraciones de BD
17% del total
2
Commits en landings
1 landing actualizada

Agosto lleva 6 días. Esta vista no es comparable con el cierre de julio (737 commits en 26 días activos): mide una fracción del mes, no una caída de actividad. La vista semanal es la que sirve para comparar contra la semana pasada.

Lo más relevante

Seis frentes concentraron los 213 commits de esta semana. Dos de ellos no existían el jueves pasado, y uno cerró una exposición de datos que llevaba tiempo abierta.

Se cerró la lectura anónima de datos sensibles

El hallazgo más importante de la semana. El rol anon —el de cualquier petición hecha con la llave pública que viaja en el bundle del front— podía leer tablas completas sin autenticación de ningún tipo. Verificado por HTTP contra producción: 5,029 personas con 3,805 correos y 4,866 teléfonos, 1,797 cuentas de cobranza con su CLABE, 53,941 propiedades, 1,939 compradores y 623 usuarios.

La causa: trece tablas usaban el patrón current_socio_bancario_id() IS NULL para acotar a los socios bancarios. Para un anónimo esa función devuelve NULL, y NULL IS NULL es verdadero — la restricción funcionaba como pase libre. En personas era peor: la condición era directamente true. La escritura sí estaba bloqueada; el problema era de lectura.

Fase 0 revocó todo privilegio de anon sobre las cuatro tablas que ningún código público necesita, comprobado rastreando las 27 páginas públicas y los 125 archivos que alcanzan. Fase 1 dejó tendidas tres RPC acotadas por id de oferta para sustituir el acceso amplio que hoy requiere el flujo de apartado, sin romper nada todavía.

Autenticación reconstruida de raíz

29 entregas, el segundo frente de la semana. Biometría atada a una cuenta concreta y solo para clientes; el modo administrador dejó de ser un interruptor manual y ahora se abre con Ctrl+Alt+A en escritorio o long-press en móvil. El acceso se gatea por rol_id y no por el nombre del rol, que era frágil. Y los mensajes de error dicen la causa real: por qué Auth rechazó la contraseña, si el enlace venció, o si no se envió por límite de correos.

Portal de Tickets, de cero a operativo en cuatro días

33 entregas. Arrancó el 3 de agosto con el modelo de datos y cierra la semana con CRUD real contra Supabase, Kanban de columnas colapsables, evidencia en foto y video, notas de voz grabadas o importadas, múltiples solicitantes por ticket, multi-propietario con auditoría, folio buscable, y notificaciones por correo y WhatsApp.

Migración de HubSpot al CRM propio

2,938 contactos y 1,846 negocios importados con sus notas, tareas y pipelines, en una migración idempotente respaldada por columnas hubspot_id. Se suma el rol Agente Externo, que solo ve sus propios leads con filtrado del lado del servidor, y el disparo de evento Purchase a Meta al ganar un negocio.

Herramientas de desarrollo del equipo

12 entregas en los scripts que usa el equipo a diario: dev.sh resuelve el puente de adb para hot reload en dispositivo físico —calculando el nodo USB real en vez de adivinarlo—, check.sh se alineó con el CI, y web.sh sirve la web en release para medir rendimiento. Trabajo que no se ve en el producto pero que le quita fricción a cada jornada.

Publicación automatizada y avisos de build

Versionado vigesimal automático que mantiene Android, iOS y web en el mismo número; el versionCode se calcula desde lo que ya existe en Play en vez de llevarse a mano. Las credenciales de Play se validan antes de compilar, y cada build o publicación avisa por WhatsApp al terminar.

Los primeros seis días de agosto concentran 183 commits en tres frentes.

Portal de Tickets

33 entregas, todas de agosto: es un módulo que nació este mes. Del modelo de datos al tutorial guiado interactivo, pasando por notas de voz, evidencia multimedia y notificaciones por WhatsApp.

Autenticación

28 entregas: gate de acceso por tipo de rol, confirmación de correo diferenciada, homologación del restablecimiento de contraseña y mensajes de error que dicen la causa real en vez de un fallo genérico.

CRM con los datos de HubSpot dentro

16 entregas: la migración de 2,938 contactos y 1,846 negocios, el rol Agente Externo con filtrado server-side, adjuntos en comentarios y el disparo de Purchase a Meta.

Ritmo de entrega

Commits por día en los cuatro repositorios de código, del viernes 31 al jueves 6. El fin de semana del 1 y 2 de agosto explica el valle. Commits por día en agosto. Pasa el cursor sobre cada barra para ver el detalle.

30 5 1 45 63 33 36
31123456
5 1 45 63 33 36
123456

Distribución del trabajo

Nuevas funciones97
Correcciones67
Refactor / estilo20
Otros13
CI / docs9
Mantenimiento7
Nuevas funciones88
Correcciones61
Refactor / estilo18
CI / docs9
Mantenimiento7

Relación funcionalidad/corrección de 1.4 : 1, mejor que el 1.2 : 1 de la semana pasada. Con dos módulos nuevos naciendo al mismo tiempo, la proporción se cargó del lado de la construcción. Relación funcionalidad/corrección de 1.4 : 1 en lo que va del mes.

Actividad por repositorio

Repositorio Qué contiene Semana Agosto
sozu-adminPlataforma administrativa y portales9069
sozu-cliente-appApp Clientes en Flutter7163
sozu-supabase-migrationsBase de datos, RLS y funciones3332
sozu-edge-functionsBackend y API de la app1919
landings (1 repo actualizado)Sitios públicos de proyecto22

sozu-cliente-app pasó de 15 commits la semana pasada a 71: la reconstrucción de autenticación vive ahí.

Plataforma administrativa · admin.sozu.com

90 commits y 81 PRs esta semana. Módulos con mayor actividad: 69 commits y 71 PRs en agosto. Módulos con mayor actividad:

Tickets 23 CRM 9 Expediente 6 Autenticación 5 Portal Bancos 4 Documentos 3 Alta Dirección 3 Roles 2 Escrituración 2 Cobranza 2 Agentes 2
Tickets 23 CRM 7 Expediente 5 Autenticación 5 Portal Bancos 4 Alta Dirección 3 Roles 2 Documentos 2 Cobranza 2 Agentes 2

Portal de Tickets

Módulo nuevo. Empezó el 3 de agosto y en cuatro días quedó operativo de punta a punta.

CRM

Accesos, roles y usuarios

Expediente unificado

Portal Bancos, pagos y otros portales

App Clientes SOZU

71 commits en sozu-cliente-app (40 PRs) y 19 en sozu-edge-functions. La semana más intensa de la app desde que nació. 63 commits en sozu-cliente-app (38 PRs) y 19 en sozu-edge-functions.

Autenticación · el frente grande de la semana

Publicación en tiendas · estado de las cuentas de desarrollador

Android ya está en tienda; iOS depende de un trámite de cuenta, no de desarrollo. Este es el estado al corte:

Google PlayPublicada

Google aprobó la revisión: la App Clientes SOZU está publicada y disponible para descarga. El repositorio arrancó el 7 de julio, así que la app pasó de no existir a estar en tienda en menos de un mes.

El versionCode ya se calcula desde lo que existe en Play, así que las siguientes publicaciones no dependen de llevar la cuenta a mano.
Apple DeveloperEn gestión

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. El código de iOS ya compila y está listo.

Entrega continua y herramientas

Backend de la app · edge functions

Landings de proyecto

2 commits esta semana sobre 1 landing actualizada, de 28 repositorios revisados en landings-sozu y sozu-com. La semana se fue completa en plataforma y app.

Landing Organización Último push Semana
tallwood-weblandings-sozu5 ago2

En tallwood-web: unificación tipográfica a Switzer, eliminación de las animaciones de scroll y compresión de imágenes para bajar el tiempo de carga.

La tabla lista solo las landings actualizadas en el periodo, es decir, con commits en su rama principal. Los otros 27 repositorios se revisaron y no tuvieron cambios; no aparecen para no llenar la tabla de ceros.

Nota metodológica: este corte excluye sozu-avances, el sitio de este mismo reporte. Sus 7 commits de la semana son publicaciones automáticas del propio pipeline —todos con el mensaje "avances: reporte del ... (draft)"— y contarlos como avance de desarrollo sería circular. Habrían representado el 78% del total de landings.

Base de datos e infraestructura

33 migraciones esta semana. Principales bloques: 32 migraciones en agosto. Principales bloques:

Tickets 11 CRM 7 Pagos 4 Roles 2 Portal Bancos 1 Seguridad 1

Modelo de datos nuevo

Seguridad

Rendimiento y RPCs

Equipo

Commits productivos por persona esta semana. Haz clic en los encabezados para reordenar. Commits productivos por persona en agosto. Haz clic en los encabezados para reordenar.

Persona Foco de la semana Admin Apps Edge BD Total
Jorge MendozaCierre de la lectura anónima, autenticación, Portal Bancos y publicación. Además: infraestructura, DevOps, DNS, servidores y VPN, y administración de las herramientas de desarrollo2126121069
Eduardo AraujoAutenticación de la app, expediente unificado y herramientas de desarrollo13453667
Sergio GarcíaPortal de Tickets completo y migración de HubSpot al CRM33041754
gpt-engineer-appGeneración asistida de UI1300013
José Ramón EscobarAlta Dirección: citas comerciales y filtros de pipeline80008
Tomás PetersonPortal de Escrituración20002
Persona Foco principal Admin Apps Edge BD Total
Jorge MendozaAutenticación, publicación en tiendas, Portal Bancos y seguridad. Además: infraestructura, DevOps, DNS, servidores y VPN, y administración de las herramientas de desarrollo212512967
Eduardo AraujoAutenticación de la app y expediente unificado10383657
Sergio GarcíaPortal de Tickets y CRM31041752
José Ramón EscobarAlta Dirección70007

Infraestructura, herramientas y costos

Trabajo que no se refleja en el conteo de commits, pero que sostiene la operación de todo el equipo.

Infraestructura y DevOps

Optimización de costos

Claude · julio−34.7%

Julio cerró en 2,580.72 USD, contra un promedio de 3,950 USD mensuales que se venía pagando desde mayo. Son 1,369 USD menos al mes. La cifra es de todo el grupo, no solo de SOZU: cubre a todas las empresas que usan la plataforma bajo la misma cuenta.

De ese total, 629.22 USD corresponden a SOZU — el 24 por ciento.
Lovable · agosto100 USD

El plan reajustado se mantiene en 100 USD mensuales para agosto, sin cambios respecto al mes anterior.

Es el resultado del ajuste hecho en julio; no requirió intervención nueva.

Evaluación y administración de herramientas

Incidencias que afectaron el desarrollo

Dos situaciones ajenas al código frenaron el ritmo esta semana. Se documentan porque explican tiempos y porque una de las dos sigue abierta.

GitHub caído ~8 horas el 6 de agostoResuelto

La plataforma estuvo fuera de servicio buena parte del jueves. Con GitHub abajo, el CI/CD de SOZU quedó inactivo: los cambios ligados a issues y a nuevas funcionalidades no se pudieron desplegar con la inmediatez habitual y hubo que esperar a que el servicio volviera. No hubo pérdida de trabajo —los commits se acumularon en local— pero sí retraso en la entrega de lo que estaba listo.

El mismo día se corrigió, aparte, que una caída del marketplace de GitHub silenciara las notificaciones de PRs sin que nadie se enterara. Dos recordatorios en una sola jornada de cuánto depende la operación de un proveedor externo.

El equipo de desarrollo trabaja al límite de memoriaEn gestión

La carga de trabajo de las últimas semanas —varias sesiones de Claude en paralelo, las ventanas de Chrome necesarias para revisar portales, y la sincronización de OneDrive— dejó la laptop de Jorge operando entre 90 y 95 por ciento de memoria RAM de forma sostenida. El efecto directo es desarrollo más lento: el equipo pasa más tiempo administrando memoria que ejecutando.

Ya se tomaron las medidas que estaban al alcance: se sacaron los repositorios y el tooling de OneDrive, se limitaron las ventanas de Chrome a las indispensables, y se cierran las sesiones de terminal en cuanto dejan de usarse.

Aun así el equipo sigue al tope: no baja del 85 por ciento. Al corte marca 13.8 de 15.7 GB en uso, con apenas 1.9 GB disponibles. El dato que mejor lo explica es la memoria comprometida: 33.5 GB contra 15.7 GB físicos, más del doble de lo que la máquina tiene. Todo ese excedente vive en disco, y cada vez que el sistema necesita algo que paginó, se paga en tiempo de espera.

Ya se está cotizando un equipo nuevo. Las optimizaciones se agotaron y lo que queda es una limitación física: con 16 GB no hay margen para el modo de trabajo actual, y la lentitud se paga todos los días en horas de desarrollo.

La cotización se está armando con las recomendaciones de otros desarrolladores del grupo y contrastando cada opción contra el trabajo diario real: cuántas sesiones se abren en paralelo, qué tan pesados son los repositorios, qué corre simultáneamente. El criterio es que no quede rebasado en el corto plazo: comprar justo lo que hoy alcanza significa repetir esta conversación en unos meses.

Pendientes y riesgos

Lo que queda abierto al corte y lo que conviene vigilar.

Trece commits en admin se llaman solo "Changes"Vigilar

El 14% de lo que entró a sozu-admin esta semana tiene como mensaje la palabra Changes, sin más. Son cambios que existen en el historial pero que nadie puede rastrear sin abrir el diff: no se sabe qué resuelven ni por qué. El resto del equipo escribe conventional commits con alcance, así que la convención existe y funciona — el problema es que estos no la siguen. Un hook que rechace mensajes de menos de N caracteres o sin alcance lo cierra de raíz.

Portal de Tickets: cuatro días de cero a producciónVigilar

33 entregas en cuatro días, incluyendo modelo de datos, CRUD, multimedia, notas de voz y notificaciones. Es una velocidad notable, pero el tutorial guiado necesitó cinco correcciones en un solo día y las categorías tuvieron que arreglarse por duplicados. Nada de eso es grave; lo que conviene es una pasada de pruebas con usuarios reales antes de abrirlo a operación, porque el módulo no tuvo tiempo de asentarse.

Migración de HubSpot sin verificación reportadaRiesgo alto

Entraron 2,938 contactos y 1,846 negocios con sus notas, tareas y pipelines. La migración es idempotente y eso está bien resuelto, pero no hay constancia de una conciliación posterior: cuántos registros quedaron sin dueño, cuántos con campos vacíos, o si los totales cuadran contra HubSpot. Es la base de datos comercial de la empresa; conviene un reporte de conciliación antes de apagar la fuente anterior.

8,291 documentos siguen siendo descargables por URL directaRiesgo alto

Detectado durante el mismo trabajo de seguridad y documentado explícitamente como fuera de alcance de ese cambio. El bucket de almacenamiento documentos está configurado como público, y el código usa getPublicUrl: cualquiera con la URL puede descargar el archivo, sin sesión. Ningún REVOKE en la base de datos lo corrige, porque el problema no está en las tablas sino en el almacenamiento. Requiere pasar el bucket a privado y migrar el front a URLs firmadas. Es, hoy, la exposición más grande que queda abierta.

La fase 2 del cierre de lectura anónima toca cinco páginas públicasEn curso

Las fases 0 y 1 fueron deliberadamente seguras: la primera revocó solo lo que ningún código público usa, y la segunda tendió tres RPC de reemplazo sin revocar nada todavía. La fase 2 sí corta el acceso amplio, y para eso hay que migrar cinco páginas públicas y lib/offers/use-offer-db.ts. Ya sabemos de julio que estas revocaciones tumban portales cuando una ruta dependía del permiso que se quita; aquí la red está tendida de antemano, que es la forma correcta de hacerlo, pero el corte sigue pendiente y la exposición sigue viva hasta entonces.

iOS sin fecha, y es el único frente de publicación abiertoEn curso

Google Play ya publicó la app, así que Android queda cerrado. Falta Apple: se retomará la cuenta preexistente de SOZU con datos actualizados y ese trámite no tiene fecha comprometida. El lanzamiento depende de que Apple valide esa información, no del desarrollo — el código ya compila.

Vuelven las colisiones de timestamp en migracionesVigilar

Pasó dos veces más esta semana: la migración de Purchase del CRM y la de multi-propietario de tickets tuvieron que renombrarse. Es el tercer reporte consecutivo en que aparece. Con varios frentes tocando el mismo esquema va a seguir pasando; un chequeo de unicidad en CI antes del merge lo resuelve.