# Documentación — `backend_scrapper` | Carpeta | Qué contiene | Cuándo se lee | |---|---|---| | [`referencia/`](./referencia/) | Cómo es el sistema hoy y cómo se opera | Antes de tocar código, y cuando algo se rompe | | [`completado/`](./completado/) | Planes ya ejecutados | Cuando alguien pregunta *por qué* algo es así | | [`pendiente/`](./pendiente/) | Trabajo abierto | Al elegir qué sigue | ## Referencia - [`ARCHITECTURE.md`](./referencia/ARCHITECTURE.md) — decisiones de diseño con sus ADR. El ADR-5 (base nueva y separada en vez de escribir a `scrapper_db`) es el que más consecuencias tuvo y explica por qué el corte final no fue el que decía el plan original. - [`RUNBOOK.md`](./referencia/RUNBOOK.md) — qué hacer cuando algo falla en producción. - [`IOL_API.md`](./referencia/IOL_API.md) — la API de InvertirOnline: OAuth2, cupos, cadencia. - [`HOMEBROKER_PROTOCOL.md`](./referencia/HOMEBROKER_PROTOCOL.md) — el protocolo de Veta Capital. Es SignalR **2.x de ASP.NET**, incompatible con `@microsoft/signalr` de npm (que es SignalR Core); ese detalle es la razón de que exista el sidecar en Python. ## Completado [`completado/migracion-nodejs/`](./completado/migracion-nodejs/) — la migración del scraper de Python a Node.js + Prisma, de punta a punta. Está en producción. Los planes se mueven **enteros**, con sus links internos intactos. Que la carpeta esté en `completado/` no significa que cada checkbox adentro esté marcado: lo que falta está en [`pendiente/README.md`](./pendiente/README.md), que es la fuente de verdad.