Portal de comercios¶
Plataforma¶
RF-C-01¶
Acceso web responsivo
Aplicación web accesible desde escritorio y móvil, sin aplicación nativa en el piloto. La pantalla de validación en mostrador debe ser completamente usable en un ancho de 360 píxeles y con una sola mano: el campo de código y el botón de confirmar deben quedar en la mitad inferior de la pantalla. Navegadores soportados: Chrome, Edge y Safari en sus dos últimas versiones.
RF-C-02¶
Zona horaria y reloj autoritativo
Toda la lógica de ventanas, expiraciones y publicaciones se resuelve en la zona
America/Managua. El almacenamiento es en tiempo universal coordinado. El reloj
del servidor es la única fuente de verdad: la hora del dispositivo del comercio
se guarda como dato declarado cuando se opera sin conexión, pero nunca determina
si una ventana está abierta ni si una entrega llegó a tiempo.
Afiliación¶
RF-C-03¶
Formulario público de solicitud
Campos obligatorios: nombre comercial, RUC o cédula del responsable, tipo de negocio entre restaurante, panadería, cafetería y otro, dirección exacta, ubicación en mapa con pin arrastrable y seis decimales de precisión, teléfono del negocio, correo del responsable, nombre y cargo del responsable, horario de atención por día y foto de fachada. Opcional: licencia sanitaria o permiso municipal en PDF o JPG de hasta cinco megabytes. El formulario conserva lo ingresado si el navegador se cierra antes de enviar.
RF-C-04¶
Verificación de contacto del solicitante
Verificación obligatoria de ambos canales antes de que la solicitud llegue a revisión: código de seis dígitos por mensaje de texto al teléfono del responsable, con vigencia de cinco minutos y reenvío habilitado a los sesenta segundos, y código o enlace al correo con vigencia de veinticuatro horas. El destino al que se envió cada código queda congelado, de modo que cambiar el dato después no invalida el código ya enviado.
RF-C-05¶
Unicidad de comercio
El RUC o cédula y el correo del responsable son únicos en todo el sistema. El sistema rechaza una solicitud cuyo nombre comercial normalizado coincida con el de otro comercio ya registrado dentro de un radio de cincuenta metros. Cuando el nombre coincide pero la distancia es mayor, la solicitud se admite y se marca como posible duplicado, con el comercio candidato señalado para la revisión.
RF-C-06¶
Estados de la cuenta del comercio
Pendiente de revisión, Información requerida, Rechazado, Activo, Pausado por el comercio, Suspendido por administración y Dado de baja. Solo Activo permite publicar y recibir reservas. Pausado y Suspendido conservan el acceso al portal porque el comercio debe resolver sus reservas vivas. Cada cambio de estado registra fecha, hora, usuario responsable y motivo.
RF-C-07¶
Resultado de la solicitud
Al aprobar, el sistema envía un correo con un enlace de un solo uso y vigencia de setenta y dos horas para que el responsable cree la contraseña del usuario administrador. Al rechazar, envía correo y mensaje de texto con el motivo seleccionado por administración y la fecha a partir de la cual puede volver a aplicar, que es quince días después de la resolución. Al reaplicar, el expediente anterior se reabre con los datos que no motivaron el rechazo.
RF-C-08¶
Aceptación de términos comerciales
Casilla obligatoria con tres compromisos explícitos: inocuidad alimentaria, incluida la declaración veraz del contenido y de sus posibles alérgenos en la descripción de la oferta; cobro exacto del precio publicado en efectivo; y respeto de la ventana de recogida. Se registra la versión del documento, la fecha, la hora, la dirección de origen y el usuario que aceptó.
Autenticación¶
RF-C-09¶
Inicio de sesión
Correo y contraseña. Tras cinco intentos fallidos consecutivos sobre el mismo identificador, el acceso se bloquea durante quince minutos y se envía un aviso por correo al titular. El mensaje de error no distingue entre correo inexistente y contraseña incorrecta. Cada intento, exitoso o no, queda registrado con el identificador tal como se tecleó y la dirección de origen.
RF-C-10¶
Recuperación de contraseña
Enlace de un solo uso al correo registrado, con vigencia configurable. Al establecer la contraseña nueva, el sistema revoca todas las sesiones abiertas de esa cuenta. Si el correo no corresponde a ninguna cuenta, la respuesta es idéntica a la del caso exitoso.
RF-C-11¶
Sesión del portal
Sesión con expiración por inactividad de doce horas y vencimiento absoluto configurable. Cada usuario del comercio ve la fecha de su último ingreso. Una persona que pertenece a varios comercios elige en cuál opera al iniciar sesión, y la sesión queda acotada a ese comercio hasta que la cierre.
Usuarios¶
RF-C-12¶
Roles del comercio
Administrador: gestiona el equipo, precios, horarios, ventanas, plantillas, ficha pública y reportes, además de todo lo que hace un operador. Operador: valida entregas, registra cobros, ajusta stock y consulta el tablero del día. Un comercio habilitado para publicar no puede quedar sin ningún administrador activo; el sistema rechaza la operación que lo dejaría sin uno.
RF-C-13¶
Alta y baja de usuarios
El administrador invita por correo indicando el rol; el invitado recibe un enlace de un solo uso para crear su contraseña. Si el correo ya tiene cuenta en el sistema, el canje agrega la membresía sin crear una cuenta nueva. Máximo configurable de operadores activos por comercio, con cinco por defecto. Desactivar a un usuario revoca de inmediato sus sesiones en ese comercio y conserva íntegramente su historial de validaciones.
RF-C-14¶
Bitácora del comercio
Registro consultable de las acciones del comercio: creación y edición de ofertas, cambios de precio, ajustes de stock, validaciones, cancelaciones, accesos a datos de contacto de clientes y cambios de configuración. Cada entrada guarda usuario, fecha, hora, dirección de origen y, cuando aplica, valor anterior y valor nuevo. Filtrable por tipo de acción, usuario y rango de fechas. Las entradas no son editables ni eliminables.
Perfil público¶
RF-C-15¶
Ficha pública del comercio
Logo de al menos 256 por 256 píxeles, descripción de hasta trescientos caracteres, referencias de llegada de hasta ciento cincuenta caracteres, teléfono público opcional y galería de hasta cinco fotos del local. Cada imagen no puede exceder cinco megabytes y se comprime del lado del servidor para el modo bajo consumo de datos de la aplicación. Los cambios en estos campos se publican de inmediato.
RF-C-16¶
Cambios sujetos a aprobación
El nombre comercial, la categoría de comida, la dirección y un movimiento del pin mayor a cien metros no se aplican de inmediato: quedan en una cola de revisión y la ficha pública conserva el valor anterior hasta que administración resuelva. No puede haber dos propuestas pendientes sobre el mismo campo. Un movimiento del pin menor a cien metros se aplica directamente.
Horarios¶
RF-C-17¶
Horario de atención base
Por cada día de la semana: cerrado, u hora de apertura y hora de cierre. Es la restricción maestra: ninguna ventana de recogida puede quedar fuera de él. No se admite cruzar la medianoche; un local que cierra después de las cero horas configura el día que termina hasta las 23:59 y el siguiente desde las 00:00. Reducir el horario está bloqueado si dejaría fuera alguna ventana activa, y el sistema nombra cuáles.
RF-C-18¶
Definición de ventana de recogida
Hora de inicio, hora de fin y etiqueta libre de hasta cuarenta caracteres. Duración mínima de quince minutos y máxima de doscientos cuarenta, ambas configurables por administración. Debe quedar contenida en el horario de atención de su día y no puede cruzar la medianoche. El sistema propone por defecto los últimos sesenta minutos antes del cierre.
RF-C-19¶
Horario semanal recurrente por oferta
Cada plantilla de oferta tiene una programación de lunes a domingo. Por cada día: activo o inactivo, ventana de recogida asignada y cantidad por defecto. La ventana asignada debe pertenecer al mismo comercio y al mismo día de la semana. Esta programación es la que alimenta la generación automática de las publicaciones diarias.
RF-C-20¶
Múltiples ventanas por día
Hasta tres ventanas de recogida por día y comercio, número configurable por administración, por ejemplo el cierre del almuerzo y el cierre de la noche. Las ventanas activas del mismo día no pueden solaparse ni siquiera en un minuto. Cada publicación diaria queda asociada a una sola ventana. Una ventana desactivada libera su franja horaria pero conserva las publicaciones históricas que la referencian.
RF-C-21¶
Días especiales
Calendario donde se agrega una excepción para una fecha concreta con tres acciones posibles: marcar el día como cerrado, modificar el horario de una ventana, o modificar la cantidad de una plantilla. Un cierre excluye cualquier otra excepción del mismo día. La excepción no altera el horario semanal recurrente y el sistema retoma la programación regular al pasar la fecha. Se pueden definir excepciones hasta noventa días hacia adelante.
RF-C-22¶
Pausa temporal del comercio
Un solo control que suspende la generación y publicación de ofertas, oculta la ficha del mapa y bloquea reservas nuevas. Requiere elegir duración (hoy, hasta una fecha, o indefinida) y motivo de lista cerrada. No cancela reservas ya confirmadas: el sistema muestra el contador de reservas vivas y exige resolverlas antes de permitir la pausa. Solo puede haber una pausa vigente a la vez.
Publicación¶
RF-C-23¶
Generación automática de la publicación diaria
Un proceso programado crea las publicaciones del día a partir del horario semanal recurrente, tomando precio, descripción y cantidad por defecto de la plantilla y aplicando las excepciones de calendario vigentes. La hora de generación es configurable por comercio, con las seis de la mañana por defecto, o bien un número de horas antes del inicio de la ventana. Las publicaciones nacen en estado Programada. Si el proceso corre dos veces para la misma fecha, no duplica inventario.
RF-C-24¶
Publicación manual y horizonte permitido
El comercio puede crear una publicación puntual fuera de la programación semanal, eligiendo fecha, ventana, contenido, precio y cantidad. Horizonte máximo configurable, con cuarenta y ocho horas por defecto. No puede existir más de una publicación de la misma plantilla para la misma fecha y ventana.
RF-C-25¶
Momento en que la oferta es reservable
Configurable por comercio: desde la generación, o desde un número de horas antes del inicio de la ventana, con ocho por defecto. Antes de ese instante la oferta puede mostrarse en la aplicación como disponible más tarde, sin permitir reserva. Una publicación sin declaración de aptitud nunca llega a ser reservable.
RF-C-26¶
Cierre de reservas
Las reservas se aceptan hasta agotar la disponibilidad o hasta el corte configurado antes del fin de la ventana, con quince minutos por defecto. Cumplido el corte, la publicación deja de ser reservable y se retira del mapa, aunque le queden unidades. Las reservas ya confirmadas conservan íntegro su derecho de retiro dentro de la ventana.
Ofertas¶
RF-C-27¶
Plantillas reutilizables
Cada plantilla contiene nombre, tipo entre pack sorpresa y oferta específica, categoría de comida, descripción, foto, precio, valor de referencia y cantidad por defecto. Máximo configurable de plantillas activas por comercio, con cinco por defecto. Dos plantillas activas del mismo comercio no pueden llamarse igual. Una plantilla no se elimina: se desactiva, y las publicaciones ya generadas a partir de ella siguen su curso.
RF-C-28¶
Reglas del pack sorpresa
La descripción exacta queda deshabilitada. Es obligatorio indicar la categoría general y una lista de entre tres y ocho elementos bajo el rótulo de contenido posible. La aplicación muestra automáticamente el aviso de contenido variable. Una plantilla de este tipo no puede activarse con menos de tres elementos en su lista.
RF-C-29¶
Reglas de la oferta específica
Nombre del plato o combo obligatorio de hasta sesenta caracteres, descripción obligatoria de veinte a doscientos caracteres y foto obligatoria de hasta cinco megabytes. La descripción es el lugar donde el comercio declara ingredientes y advertencias relevantes, incluida la presencia de alérgenos, conforme al compromiso de inocuidad que aceptó al afiliarse.
RF-C-30¶
Precio y valor de referencia
Ambos en córdobas con hasta dos decimales. El valor de referencia debe ser estrictamente mayor que el precio. El sistema exige un descuento mínimo configurable, con treinta por ciento por defecto, y marca para revisión las publicaciones que superan el umbral alto, con ochenta por ciento por defecto. Precio mínimo configurable. El precio de una publicación con al menos una reserva queda congelado.
RF-C-31¶
Cantidad disponible
Entero entre cero y cincuenta por publicación, con el máximo configurable. El sistema impide reducir la cantidad total por debajo de las unidades ya reservadas y muestra el mínimo permitido con el motivo. La cifra visible al usuario es la disponibilidad, es decir, la cantidad total menos lo ya reservado.
RF-C-32¶
Ajuste de stock en tiempo real
El comercio puede aumentar o reducir la cantidad durante la ventana. El cambio se refleja en la aplicación en treinta segundos o menos. Si la disponibilidad llega a cero, la publicación pasa a agotada; si vuelve a ser positiva, regresa a publicada. Cada ajuste queda en bitácora con valor anterior, valor nuevo y usuario.
RF-C-33¶
Marcar como agotado
Un control que iguala la cantidad total a las unidades ya reservadas, con lo que la disponibilidad queda en cero y la oferta se marca como agotada en la aplicación. No pone la cantidad en cero ni cancela ninguna reserva: la obligación de entrega de las reservas existentes queda intacta.
RF-C-34¶
Duplicar publicación
Acción de un paso para replicar una publicación anterior en una fecha nueva, copiando contenido, precio y cantidad, y resolviendo los instantes con la ventana correspondiente a la fecha destino. La publicación resultante conserva el enlace a la que la originó y exige confirmar de nuevo la declaración de aptitud.
RF-C-35¶
Declaración de aptitud
Casilla obligatoria en cada publicación que confirma que los alimentos son aptos para consumo y no están vencidos. Se registra fecha, hora y usuario que la declaró. Sin ella la publicación permanece programada y nunca se abre a reservas.
Reservas¶
RF-C-36¶
Tablero del día
Vista principal agrupada por ventana de recogida, con contadores en vivo de unidades publicadas, reservadas, entregadas, pendientes de retiro, canceladas y expiradas. Actualización automática cada treinta segundos o mediante conexión persistente. Es la pantalla de arranque del portal.
RF-C-37¶
Detalle de la reserva
Identificador de la reserva, código de retiro, nombre del usuario, cantidad, monto exacto a cobrar en efectivo, fecha y hora en que reservó, ventana asignada, estado actual y, si lo tiene, su desenlace con motivo.
RF-C-38¶
Minimización de datos personales
El comercio ve el nombre del usuario y los últimos cuatro dígitos de su teléfono. El número completo se revela solo cuando el comercio lo solicita explícitamente para abrir una incidencia o confirmar una no presentación, y ese acceso queda registrado con el usuario que lo consultó, la fecha y el motivo. El titular del dato puede consultar quién accedió a él.
RF-C-39¶
Aviso de nueva reserva
Notificación visual y sonora en el panel abierto, con contador de reservas sin atender en el encabezado, más aviso por correo opcional al administrador. El aviso lleva directamente al tablero en la ventana correspondiente.
RF-C-40¶
Cancelación por el comercio
Requiere seleccionar un motivo de lista cerrada: se vendió en el local, error de publicación, cierre imprevisto, alimento no apto, u otro con nota obligatoria. Al confirmar, libera las unidades, deja la reserva como cancelada por el comercio y notifica al usuario por push con respaldo por mensaje de texto o correo. Incrementa el contador de cancelaciones que alimenta los indicadores de cumplimiento. Una reserva ya validada no puede cancelarse.
RF-C-41¶
Prohibición de eliminación
Ninguna reserva puede borrarse por ningún medio ni por ningún rol. Los datos comerciales de una reserva tampoco pueden modificarse una vez creada. El único desenlace posible es entregarla, cancelarla con motivo o dejarla expirar, todo el ciclo queda en el historial consultable.
Datos comerciales de una reserva:
- Código
- Usuario
- Publicación
- Cantidad
- Precio unitario
Validación¶
RF-C-42¶
Pantalla de validación
Dos métodos en la misma pantalla: ingreso manual del código de seis caracteres y lectura del código de barras bidimensional que muestra el usuario. El ingreso manual es insensible a mayúsculas e ignora espacios y guiones. El resultado es visible en menos de dos segundos con indicación inequívoca de éxito o error.
RF-C-43¶
Reglas de aceptación y mensajes de error
Acepta únicamente códigos que pertenezcan al propio comercio, correspondan a una reserva confirmada y se presenten dentro de la ventana, con la tolerancia configurable posterior al cierre, de diez minutos por defecto. Rechaza con mensaje específico y diferenciado para código inexistente, código ya utilizado, código de otro comercio, presentación antes del inicio de la ventana, presentación fuera de tolerancia y reserva cancelada. Todo intento, exitoso o no, queda registrado.
RF-C-44¶
Un solo uso e idempotencia
Una reserva se valida a lo sumo una vez. Un segundo intento con el mismo código no genera una segunda entrega: muestra la pantalla de código ya entregado con la fecha, la hora y el nombre del operador que lo validó originalmente.
RF-C-45¶
Confirmación de cobro en efectivo
Al validar, el operador confirma el monto recibido, precargado con el monto de la reserva. Si hay diferencia, debe registrar el monto real y una nota obligatoria que la justifique. El registro del cobro forma parte de la misma transacción que la validación, no de un paso posterior.
RF-C-46¶
Entrega parcial
Si se entregan menos unidades de las reservadas, el operador registra la cantidad efectivamente entregada y selecciona el motivo de una lista cerrada. El sistema recalcula el monto, cierra la reserva como retirada con marca de entrega parcial y notifica al usuario el ajuste. Las unidades no entregadas no vuelven a estar disponibles: la ventana ya está en curso.
RF-C-47¶
Cierre de ventana y no presentaciones
Al vencer la tolerancia, el sistema marca como expirada toda reserva no validada y presenta al comercio el listado del día para confirmar los casos de no presentación. Esa confirmación queda registrada con su autor y alimenta el control de incumplimientos del usuario.
RF-C-48¶
Modo contingencia sin conexión
Si el panel pierde conexión durante la ventana, permite validar contra la copia local de las reservas del día, guardando cada operación con la hora declarada por el dispositivo. Al recuperar la conexión, sincroniza la cola y resuelve cada validación con la hora del servidor. Una validación cuya reserva ya no era validable al sincronizar se registra marcada como conflicto, no cierra la reserva y entra en una cola de resolución.
Incidencias¶
RF-C-49¶
Bandeja de incidencias
El comercio ve los reportes que los usuarios abren sobre sus reservas, con categoría, descripción, folio e identificador de la reserva. Cuando administración lo solicita, puede presentar un descargo de hasta mil caracteres dentro del plazo indicado. El proceso admite varias rondas de descargo. La resolución final la define administración.
Reputación¶
RF-C-50¶
Calificaciones recibidas
Vista con el promedio, el número total de valoraciones y los comentarios individuales con la fecha de la reserva que los originó. El comercio no puede editar ni eliminar valoraciones. Puede responder una sola vez por comentario, con hasta trescientos caracteres, y la respuesta se publica solo después de la moderación de administración.
RF-C-51¶
Indicadores de cumplimiento
Cálculo diario de tasa de entrega, tasa de cancelación por el comercio, tasa de expiración e incidencias por cada cien reservas, en ventanas móviles de catorce y treinta días. Un comercio sin reservas en la ventana no muestra cero: muestra que no hay dato. Al superar los umbrales configurados se genera una alerta en el panel de administración.
Reportes¶
RF-C-52¶
Tablero de desempeño
Por rango de fechas: unidades publicadas, reservadas, entregadas, canceladas y expiradas; ingreso total en efectivo; ticket promedio; y tasa de venta del stock publicado, con comparativo contra el periodo anterior. Solo las reservas entregadas cuentan como ingreso.
RF-C-53¶
Análisis por ventana
Detalle de unidades publicadas frente a unidades vendidas por día de la semana y por ventana de recogida, para que el comercio ajuste sus cantidades por defecto. Incluye la tasa de venta de cada combinación y señala las que quedan sistemáticamente por debajo del promedio del comercio.
RF-C-54¶
Panel de impacto
Unidades rescatadas acumuladas y kilogramos estimados de alimento evitado, calculados con el factor de conversión por categoría vigente en la fecha de cada reserva, no con el factor actual. Se muestra por mes y acumulado desde la afiliación.
RF-C-55¶
Exportación
Descarga del historial de reservas del periodo en CSV y XLSX, con una fila por reserva incluyendo identificador, oferta, cantidad reservada y entregada, monto cobrado, estado, ventana, fecha y hora de validación y operador. La exportación no incluye datos personales de consumidores más allá del nombre. Cada exportación queda registrada en bitácora.
Notificaciones¶
RF-C-56¶
Recordatorio de publicación
Si a la hora configurada no existe publicación para el día y la programación semanal indicaba día activo, el sistema envía un recordatorio por correo y mensaje de texto al administrador del comercio, indicando qué plantillas quedaron sin publicar.
RF-C-57¶
Avisos de ventana
Aviso al inicio de la ventana con el total de reservas a entregar, y aviso quince minutos antes del cierre con el listado de las que siguen pendientes de retiro, para que el comercio pueda anticipar las no presentaciones.
RF-C-58¶
Preferencias
Cada usuario del comercio activa o desactiva de forma independiente los avisos por correo y por mensaje de texto, por categoría. Los avisos de cancelación por parte del usuario y de reservas pendientes al cierre de la ventana son transaccionales y no pueden desactivarse.