# Changelog of Surplex Scraper — Europe Industrial Auctions​‌​ (`rastriq/surplex-auction-scraper`) Actor

- **URL**: https://apify.com/rastriq/surplex-auction-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/rastriq/surplex-auction-scraper.md

## Changelog — Surplex Scraper — Europe Industrial Auctions​‌​

### 2026-10-04 — claves legacy del snapshot → ext\_\* al servir (contrato FTP-28)

- preloaded: `_legacy_to_ext` renombra claves sin prefijo del snapshot a ext\_\* (valor intacto, no pisa ext\_ existente).

### 2026-10-04 — convención tiempo_uso

- tiempo_uso sin cambios de formato. Nueva ext_tiempo_uso_unidad ('h'; null si tiempo_uso null) y ext_tiempo_uso_calidad ('cero' si 0; 'nlp_plazo' si el valor sale del NLP y es con certeza un plazo -'within 48 hours', '24 hours notice'...-, solo marcado, nunca filtrado) en los 4 mappers y en preloaded (derivado de lo almacenado, idempotente, antes de \_to_out). dataset_schema.json declara las 2 ext.
- Pendiente (no aplicado, decision David): en preloaded bid-history con outputSchema=english, el orden \_to_out -> \_coerce_ftp_types pierde hours y emite claves FTP.

### 2026-09-18 — T7 push

- T9 (push 2026-09-18): \_map_listing_lot_to_ftp (listing) anadia solo 27/31 claves FTP-28 -- completadas tipo_motor/fabric_motor/pot_motor/carga (None, sin fuente en el payload de listado); dataset_schema.json renombra access_mode/data_level -> ext_access_mode/ext_data_level para que coincidan con lo que ya emite el codigo desde T8.

- T8 (push 2026-09-18): access_mode/data_level -> ext_access_mode/ext_data_level en los 4 mappers (conformidad); \_coerce_ftp_types (preloaded_bid_history) hace fallback correo <- email cuando el dataset legacy trae ese campo sin renombrar.

- T7 (push 2026-09-18): \_coerce_ftp_types (preloaded_bid_history) ahora emite las 31 claves FTP-28 (antes solo 8/31); las 23 nuevas quedan en None cuando el dataset legacy no trae la fuente -- fix de CONFORMIDAD (presencia de claves), no de completitud.

Formato: que cambio, por que, y **la medicion que lo respalda**. Un cambio sin numero detras es
una opinion; en este repo no cuenta como entrada de changelog.

Las versiones son las de Apify (`mayor.menor`). La plataforma no admite numero de parche.

### \[1.4] — 19 de agosto de 2026

#### Corregido — el descubrimiento se rendia al 61% y reportaba exito

Se paraba en la pagina 552 de 898, se quedaba con el 61% del catalogo y terminaba en `SUCCEEDED`.
Ahora salta la pagina fallida en lugar de abortar, con 6 reintentos.

#### Cambiado — descubrimiento en paralelo

De serie a 4 hilos, con tamano de pagina negociado (200 / 100 / 96 / 48). Concurrencia 8 la rechaza
el servidor. **De 82 minutos a ~25.**

#### Corregido — los runs de admin facturaban PPE

El modo admin volcaba tambien al dataset por defecto, lo que dispara el cobro por resultado contra
nuestra propia cuenta. Un run llego al tope de $40,24 y murio despues de haber hecho todo el
trabajo. Ahora el modo admin no toca el dataset por defecto.

#### Cerrado — el historial de pujas no existe

El endpoint esta retirado. Comprobado con cookie de sesion, Bearer, cuenta verificada, lotes
abiertos y cerrados, y cuatro variantes de ruta: 404 en todas. El GraphQL de la tienda no expone
ninguna query de pujas entre sus 44. `ext_bid_history` y `ext_total_bids_history` estan muertos.

#### Pendiente

El catalogo de cerrados es una **ventana movil de unos cuatro meses**: el snapshot de agosto
(42.100) no contiene 22.297 lotes que si trajo el de julio (48.096). El historico real son los
64.397 de la union. Sin acumular por `item_id`, la historia se pierde sola.
