Proyecto

General

Perfil

Acciones

Desarrollo #482

cerrada

En scrapper debe agregarse nuevo comando para registro de nuevo comercio

Añadido por Luciano Vega hace 2 meses. Actualizado hace alrededor de 1 mes.

Estado:
Cerrada
Prioridad:
Normal
Asignado a:
Fecha de inicio:
2026-06-25
Fecha fin:
% Realizado:

100%

Tiempo estimado:

Descripción

Se debe tomar en cuenta la definicion de nuevo endpoint para registro de comercio, revisa metodo de autenticacion usado en el envio de datos de precios para aplicar en la peticion a realizar (toma los datos del correspondiente .env)

Se debe generar como un comando python ejecutado por un script bash especifico (tiene el objetivo de asegurarse que el venv este actualizado y usar el venv local comun) que permitira llamar al nuevo endpoint y debera olicitar toda la informacion necesaria, que al confirmar envie los datos y muestre el resultado.


Documentacion de nuevo endpoint

POST /admin/comercios — Crear Nuevo Comercio

Autenticación: Requiere clave KEY_INT enviada en el body (key).

Body JSON

{
  "key": "KEY_INT_SECRET",
  "enterprice": {
    "name": "Supermercado X",
    "type": "supermarket",
    "website": "https://supermercadox.com",
    "logo_url": "https://supermercadox.com/logo.png",
    "active": true
  },
  "branch": {
    "branch_name": "Sucursal Centro",
    "address": "Av. Siempre Viva 123",
    "latitude": -34.603722,
    "longitude": -58.381592,
    "city": "Buenos Aires"
  }
}

Campos

Campo Tipo Requerido Descripción
key string Clave de autenticación interna
enterprice.name string Nombre de la empresa (único)
enterprice.type string Tipo de comercio
enterprice.website string Sitio web
enterprice.logo_url string URL del logo
enterprice.active boolean Si está activo (default: true)
branch.branch_name string Nombre de la sucursal
branch.address string Dirección
branch.latitude number Latitud
branch.longitude number Longitud
branch.city string Ciudad

Comportamiento

  • Crea registro en tablas enterprice y branch en una transacción atómica
  • Refresca automáticamente los diccionarios en memoria
  • Si el nombre de empresa ya existe, retorna error por duplicado

Respuesta 200 (Éxito)

{
  "stat": true,
  "items": {
    "enterprice": {
      "id": 1,
      "name": "Supermercado X",
      "type": "supermarket",
      "website": "https://supermercadox.com",
      "logo_url": "https://supermercadox.com/logo.png",
      "active": true
    },
    "branch": {
      "id": 1,
      "branch_name": "Sucursal Centro",
      "enterprise_id": 1,
      "address": "Av. Siempre Viva 123",
      "latitude": -34.603722,
      "longitude": -58.381592,
      "city": "Buenos Aires"
    }
  }
}

Respuesta 401 (Autenticación)

{
  "stat": false,
  "error": "Error de autenticación"
}

Respuesta 400 (Validación)

{
  "stat": false,
  "error": "Falta campo requerido: enterprice.name"
}

Respuesta 409 (Duplicado)

{
  "stat": false,
  "error": "Ya existe un comercio con ese nombre"
}
Acciones #1

Actualizado por Luciano Vega hace 2 meses

  • Tipo cambiado de Errores a Desarrollo
Acciones #2

Actualizado por Luciano Vega hace 2 meses

Se agrega documentacion de endpoint

Acciones #3

Actualizado por Luciano Vega hace 2 meses

Re-extracción y actualización de categorías en 7 módulos de scraping. Se agregaron nuevas categorías en region20, veromar y libreriatandil. Se incluye nuevo script registrar_comercio.py

Acciones #4

Actualizado por Luciano Vega hace alrededor de 2 meses

feat: agregar comando registrar_comercio.py con script bash, y mejorar bucle de envío de productos

Cambios en enviar_productos.py:

  • Se añade --interval (default 30s) para configurar tiempo entre ciclos de espera.
  • Se implementa modo espera: si no hay datos pendientes o hay errores, espera interval segundos sin romper el bucle.
  • Se agrega limpieza de pantalla cada 10 envíos (CLEAR_INTERVAL) y contador total_enviados.
  • Se elimina la interrupción break al quedarse sin datos; ahora reintenta infinitamente.

Nuevo script registrar_comercio.py:

  • Comando interactivo que pide nombre empresa, tipo, web, logo_url, active, y datos de sucursal.
  • Envía vía POST /admin/comercios con autenticación key desde .env.
  • Muestra resultado o error detallado.

Script bash registrar_comercio.sh:

  • Activa el venv local común, ejecuta registrar_comercio.py y muestra salida.

Categorías actualizadas en coopobrera (Toallas y Toallones) y elatril (re-extracción completa).

https://github.com/Greenborn/precios_scraping/commit/935584a5b4793417cfc6d84f854ec99958e9fe6f

Acciones #5

Actualizado por Luciano Vega hace alrededor de 1 mes

feat(registrar_comercio): agregar modo no interactivo con argparse y flag -y

  • Se añade argparse con flags --name, --ent-type, --website, --logo-url, --active, --branch-name, --address, --lat, --lng, --city y -y/--yes.
  • Si se proporciona --name o --branch-name, el script salta la entrada interactiva y usa los valores CLI, validando que ambos estén presentes.
  • La flag -y omite la confirmación manual y envía directamente.
  • Se actualiza run_registrar_comercio.sh con documentación de uso para modo interactivo y no interactivo, y referencia a --help.

https://github.com/Greenborn/precios_scraping/commit/8401613f7f64c3727b5851db6ef860408f101706

Acciones #6

Actualizado por Luciano Vega hace alrededor de 1 mes

feat: eliminar guía de nuevo módulo (nuevo-modulo.md) y refactorizar bucle de envío; agregar comando registrar_comercio interactivo y modo no interactivo con argparse

  • Elimina nuevo-modulo.md (guía obsoleta de scraping).
  • enviar_productos.py: añade --interval (default 30s) para pausa entre ciclos; implementa modo espera sin break al no haber datos; agrega limpieza de pantalla cada 10 envíos y contador total_enviados.
  • Nuevo registrar_comercio.py: comando interactivo que solicita nombre empresa, tipo, web, logo_url, active y datos de sucursal; envía POST /admin/comercios con autenticación vía key desde .env; soporta modo no interactivo con argparse (--name, --branch-name, -y para omisión de confirmación).
  • run_registrar_comercio.sh: activa venv local y ejecuta el script, con documentación de uso.

https://github.com/Greenborn/precios_scraping/commit/0d9a41a30fe1095f6550da1cbc65f98f2a5360f5

Acciones #7

Actualizado por Luciano Vega hace alrededor de 1 mes

feat(server): ejecutar migraciones automáticas antes de cargar configuración

  • Agrega importación de db (./db/db) para acceder a Knex
  • Implementa función ejecutarMigraciones() que llama a db.migrate.latest() y muestra batch y migraciones ejecutadas o mensaje si no hay pendientes
  • En caso de error, detiene el proceso con process.exit(1)
  • Modifica flujo de inicio: primero se ejecutan migraciones, luego cargarConfiguracion() como continuación del .then()

https://github.com/Greenborn/precios_scraping/commit/e4541a90a30ee1e33815968663c5d0d86b847fa2

Acciones #8

Actualizado por Luciano Vega hace alrededor de 1 mes

feat: agregar 25 módulos scraping y migraciones DB para alfajores1823, universogastronomico, aidasports, arredo, biennuestro, bulonfer, chepapa, mestiza, dagliocueros, digiteck, elaljibe, distribuidoramodelo, elgatoneftali, fuerteimpacto, arcoiris, justforme, kevingston, laestacion, matelec, opticacristal, skoops, sohodenim, textilsubte, tatashome, ladystork

https://github.com/Greenborn/precios_scraping/commit/f83a8aa265e97755c17be2e4d2a3d0599c9dd2aa

Acciones #9

Actualizado por Luciano Vega hace alrededor de 1 mes

fix: cambiar puerto CORS y servidor Vite de 5173 a 5174 en .env.example y vite.config.js

https://github.com/Greenborn/precios_scraping/commit/5919a11d371964adc89f49d8ff210aa5fd24554f

Acciones #10

Actualizado por Luciano Vega hace alrededor de 1 mes

feat: actualizar SKILL.md con nuevo flujo de registro de comercio vía API y migraciones Knex

  • Reemplaza inserción SQL directa en config_modulos por registro vía run_registrar_comercio.sh que devuelve branch_id.
  • Agrega paso 7 para crear migración Knex con el branch_id obtenido, incluyendo ejemplo de archivo con knex('config_modulos').insert().
  • Actualiza notas para que branch_id provenga de la API o se infiera del último usado en db/migrations/.
  • Incluye instrucciones para ejecutar la migración (npx knex migrate:latest) antes de verificar integración.

https://github.com/Greenborn/precios_scraping/commit/67213ddd6df532a549577de62121f80e9d3771ed

Acciones #11

Actualizado por Luciano Vega hace alrededor de 1 mes

feat(SKILL.md): actualizar flujo para nuevo módulo: separar registro API y actualización real de branch_id

  • Paso 6: ahora solo registra comercio vía API (obtiene branch_id real).
  • Nuevo Paso 7: actualizar {{BRANCH_ID}} placeholder en get_data.py con el valor real.
  • Nuevo Paso 8: crear migración Knex con el branch_id real.
  • Nuevo Paso 9: probar (get_categorias + get_data).
  • Nuevo Paso 10: verificar integración (ejecutar migración, reiniciar servidor).
  • Se agregan comentarios # ← REEMPLAZAR con valor real tras el Paso 6 en las plantillas de get_data.py (requests, Selenium, Scrapy).

https://github.com/Greenborn/precios_scraping/commit/f5cf5c4aa6894160e13f43db4c465f92e42a9198

Acciones #12

Actualizado por Luciano Vega hace alrededor de 1 mes

  • Proyecto cambiado de 2 a precios_scraping
  • Estado cambiado de Nueva a Resuelta
  • % Realizado cambiado de 0 a 100
Acciones #13

Actualizado por Luciano Vega hace alrededor de 1 mes

  • Estado cambiado de Resuelta a Cerrada
Acciones

Exportar a: Atom PDF