Detalle
Qué datos se guardan
Por cada producto escaneado se registra, en la base del comercio:
- El código de barras, el nombre, la marca, el precio y el stock.
- El grupo y el rubro, como los tiene ordenados el comercio.
- La fecha y hora del último cambio y el nombre de quien lo hizo.
Además quedan:
- Las cuentas del comercio: nombre de usuario, PIN hasheado y rol.
- Los dispositivos que se conectaron, con un identificador y la última vez que se los vio.
- Las sesiones abiertas, identificadas por un token y con fecha de vencimiento.
- El catálogo de productos consultado (nombre, marca, precio de referencia, imagen y
enlace de origen).
Dónde se guardan
- El inventario vive en una base de datos SQLite en el servidor que
opera el servicio, en
server/data/inventory.db. Cada comercio ve solamente
sus propias filas.
- La web (la planilla) y la app Android se comunican con ese servidor
por HTTPS. El camino pasa por el CDN de Cloudflare, que hace de puente entre el
navegador y el servidor.
- El acceso se hace con un PIN por comercio. La web usa una cookie de
sesión que el navegador no puede leer (es
HttpOnly) y que se descarta al
cerrar la sesión.
- Los respaldos son copias de la base guardadas en el mismo servidor,
en un repositorio privado y en un almacenamiento mío en la nube de Cloudflare. Las
copias que salen de la máquina van saneadas: sin sesiones ni datos de dispositivos.
Lo único que puede salir de ese servidor es lo que el propio comercio pide: si
conecta su cuenta de Google, cada escaneo se escribe también en la hoja de su Drive.
Esa hoja es del comercio, la maneja el comercio y de ella no se lee nada.
Permisos que pide el celular
La app Android pide un solo permiso sensible:
CAMERA — para leer el código de barras en pantalla.
El escaneo se hace en el dispositivo, con un modelo de ML Kit
empaquetado en la app: no sale ninguna imagen a internet. Tampoco pide permiso de
ubicación, de contactos ni de archivos.
Servicios de terceros
Hay consultas a catálogos públicos de productos, únicamente cuando escaneás un código que
todavía no está cargado o buscás un producto por nombre:
- Open Food Facts, para resolver nombre, marca e imagen a partir del
código de barras.
- Carrefour Argentina y Mercado Libre, para buscar
productos por nombre y obtener su precio de referencia e imagen.
A esos servicios se envía el código o el texto que buscaste, nada más. No se envía
información del inventario ni identificadores de tu cuenta. Si preferís que la app no los
consulte, se puede trabajar solo con el catálogo local ya descargado.
Y hay un caso opcional, que lo pide el comercio y no la app: la réplica en Google
Sheets. Si el administrador conecta su cuenta de Google desde el panel, cada escaneo se
escribe también en una hoja de su Drive. Parallo se hace por la API de Sheets con el
permiso que esa cuenta da, y el servidor guarda el permiso de forma cifrada para poder
seguir escribiendo sin pedirlo cada vez. Si el comercio nunca lo conecta, no hay ninguna
copia en Google.
Cómo revocar el acceso
El acceso es por comercio y por persona, y lo administra el administrador de cada
comercio:
- Desde la app, el administrador puede desactivar una cuenta: sus sesiones se cierran en
el momento.
- Para cambiar el PIN de una cuenta, el administrador lo hace desde la pantalla de
permisos.
- En la web, el botón Salir cierra la sesión y borra la cookie.
Para borrar todos los datos de un comercio, se elimina su fila de la base: eso borra
productos, cuentas, sesiones y conteos.
Contacto
Para cualquier consulta sobre esta política, escribí a quien administra el servicio del
proyecto Inventario.