Saltar a contenido

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.