Desarrollo #482
cerradaEn scrapper debe agregarse nuevo comando para registro de nuevo comercio
100%
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
enterpriceybranchen 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"
}
Actualizado por Luciano Vega hace 2 meses
- Tipo cambiado de Errores a Desarrollo
Actualizado por Luciano Vega hace 2 meses
- Se actualizó Descripción (diferencias)
Se agrega documentacion de endpoint
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
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
intervalsegundos sin romper el bucle. - Se agrega limpieza de pantalla cada 10 envíos (
CLEAR_INTERVAL) y contadortotal_enviados. - Se elimina la interrupción
breakal 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/comercioscon autenticaciónkeydesde.env. - Muestra resultado o error detallado.
Script bash registrar_comercio.sh:
- Activa el venv local común, ejecuta
registrar_comercio.pyy muestra salida.
Categorías actualizadas en coopobrera (Toallas y Toallones) y elatril (re-extracción completa).
https://github.com/Greenborn/precios_scraping/commit/935584a5b4793417cfc6d84f854ec99958e9fe6f
Actualizado por Luciano Vega hace alrededor de 1 mes
feat(registrar_comercio): agregar modo no interactivo con argparse y flag -y
- Se añade
argparsecon flags--name,--ent-type,--website,--logo-url,--active,--branch-name,--address,--lat,--lng,--cityy-y/--yes. - Si se proporciona
--nameo--branch-name, el script salta la entrada interactiva y usa los valores CLI, validando que ambos estén presentes. - La flag
-yomite la confirmación manual y envía directamente. - Se actualiza
run_registrar_comercio.shcon documentación de uso para modo interactivo y no interactivo, y referencia a--help.
https://github.com/Greenborn/precios_scraping/commit/8401613f7f64c3727b5851db6ef860408f101706
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 sinbreakal no haber datos; agrega limpieza de pantalla cada 10 envíos y contadortotal_enviados. - Nuevo
registrar_comercio.py: comando interactivo que solicita nombre empresa, tipo, web, logo_url, active y datos de sucursal; envíaPOST /admin/comercioscon autenticación víakeydesde.env; soporta modo no interactivo con argparse (--name,--branch-name,-ypara 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
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 adb.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
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
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
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_modulospor registro víarun_registrar_comercio.shque devuelvebranch_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_idprovenga de la API o se infiera del último usado endb/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
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_idreal). -
Nuevo Paso 7: actualizar
{{BRANCH_ID}}placeholder enget_data.pycon el valor real. -
Nuevo Paso 8: crear migración Knex con el
branch_idreal. -
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 6en las plantillas deget_data.py(requests, Selenium, Scrapy).
https://github.com/Greenborn/precios_scraping/commit/f5cf5c4aa6894160e13f43db4c465f92e42a9198
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
Actualizado por Luciano Vega hace alrededor de 1 mes
- Estado cambiado de Resuelta a Cerrada