Estzapros.ru en agosto de 2026: pagos, seguridad, correo y generación de contenido
- Publicado el
- • 5 min de lectura•--- vistas
En agosto de 2026 dediqué 17 días de trabajo a estzapros.ru, un servicio que pone en contacto a clientes con contratistas. El mes dejó 196 commits en 413 archivos, con 38 744 líneas añadidas y 15 897 eliminadas. Todas las cifras salen del historial del repositorio.
El trabajo se repartió en varias líneas: pagos, seguridad, correo, generación de contenido, nuevas funciones, la interfaz y una revisión final del sitio en producción. Abajo cada una sigue el mismo orden: qué fallaba, qué cambió y a qué llevó.
Pagos
Problema. El pago de las tarifas tenía errores que hacían perder dinero y dejaban compras colgadas. El importe se calculaba mal en algunos casos, y cuando el procesamiento fallaba el sitio respondía igualmente OK al banco.
Solución. Seis correcciones. El estado de la compra y la entrega de lo comprado ahora van en una sola transacción, y cuando el procesamiento falla el banco recibe RETRY en lugar de OK. Las suscripciones se buscan por estado y no por una columna que no existía, y los datos de T-Bank se leen de la configuración y no del entorno.
Resultado. Un pago fallido ya no se pierde: el banco lo reintenta, y una compra ya no puede quedar pagada pero sin entregar.
Seguridad
Problema. Un invitado podía hacerse pasar por otro usuario, las cuentas se podían enumerar y el manejador onclick del bloque de contactos tenía una inyección. El derecho a responder a una solicitud solo se comprobaba en la plantilla.
Solución. Ocho correcciones. El permiso para responder se comprueba ahora en el controlador, los endpoints de moderación exigen autorización, la documentación de la API está detrás de una contraseña y el archivo .env queda cerrado a terceros tras cada despliegue.
Resultado. Los fallos críticos están cerrados, y las reglas de acceso se aplican en el servidor, donde una petición manipulada no puede saltárselas.
Correo
Problema. Los correos no llegaban, perdían el asunto, dejaban a gente sin acceso y acababan en spam. Las notificaciones de ofertas salían con la lista de destinatarios vacía, y durante años el registro las anotó como enviadas.
Solución. Doce correcciones. El enlace de confirmación del correo vuelve a funcionar y los usuarios sin confirmar ya no pueden entrar. Quienes habían quedado bloqueados por un envío fallido recuperaron el acceso, los asuntos vacíos se repararon con una migración en la base de producción y las notificaciones de ofertas vuelven a llegar a sus autores. La parte de texto de cada correo se limpió de marcado y se quitó un contador oculto de aperturas. En el servidor de correo, nueve firmas DKIM por mensaje se redujeron a una.
Resultado. Los correos del sitio vuelven a llegar a sus destinatarios, y quienes estaban sin acceso pueden entrar.
Generación de contenido
Problema. El marketplace necesitaba anuncios y respuestas nuevas, y el primer generador mantenía el formato de salida solo con el texto del prompt. Cuando el modelo respondía en prosa, el formato se desmoronaba.
Solución. Cuatro workflows de n8n: anuncios nuevos según un calendario, respuestas a solicitudes recientes y antiguas con dos calendarios, un sub-workflow común que genera las respuestas y un workflow de alertas cuando una serie falla. Los registros generados llevan la marca is_fake, la generación usa un esquema JSON estricto de OpenAI y los contactos de servicio de los registros generados se ocultan en el servidor.
Resultado. El contenido llega según el calendario y con un formato fijo, y una serie fallida aparece como alerta y no como un hueco silencioso.
Nuevas funciones e interfaz
Problema. Los contadores de la portada eran números fijos en el código, las categorías ocultadas en bloque en 2020 seguían ocultas y la versión móvil se desplazaba hacia los lados.
Solución. La portada tiene ahora un feed de solicitudes recientes cuyas pestañas, ciudades y páginas cambian sin recargar, con caché en Redis. Se pueden subir avatares: se recodifican con GD y se guardan fuera del webroot con un nombre aleatorio. Es posible suscribirse gratis a las nuevas solicitudes de una categoría, las ciudades y categorías están disponibles en /api/v1, y el orden de las categorías y los textos de la interfaz se definen desde el panel de administración. En la interfaz hubo 17 correcciones: sin desplazamiento horizontal, zonas táctiles de al menos 44px y contraste del texto elevado a WCAG AA.
Resultado. El sitio vuelve a mostrar cifras reales y el contenido oculto, y se puede usar cómodamente desde el móvil.
Revisión del sitio en producción
El 30 de agosto recorrí de principio a fin los escenarios reales: una solicitud, una respuesta, un mensaje privado, una suscripción, la recuperación de contraseña y el área personal. La revisión encontró seis defectos y todos quedaron resueltos. Dos de ellos hacían caer un formulario con un error 500, y en la sección «Mis ofertas» 366 personas veían sus propias solicitudes.
Calidad
La batería tiene 751 tests en 83 archivos, todos en verde, y el análisis estático no reporta ningún aviso. Cada corrección está cubierta por un test que fallaba antes del cambio, y la batería y el análisis se ejecutan antes de cada despliegue. Ningún despliegue del mes salió con tests en rojo.
El informe completo está abajo.
Disponible para colaboración por contrato
Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.
Agenda una llamada de 30 min