Follow-up del ADR 0036. La tabla lateral external_ids(paper_id, engine, id) ya existe en los backends (PR #118) pero no se puebla (decisión consciente, PR #119).
Por qué quedó diferido
Con OpenAlex como único motor, source_id ya guarda el id y provenance.source el motor; external_ids no tiene consumidor todavía (sería redundante). Su razón de ser es el cruce/dedup cross-motor (un paper con su id de OpenAlex y de Semantic Scholar, unificados por DOI).
Qué hacer al sumar el 2º motor (Semantic Scholar)
- En el camino de ingesta de cada adaptador, escribir
external_ids(paper_id, engine, source_id) tras computar el paper_id.
- El enricher/adaptador de cada motor consulta
external_ids[engine=<suyo>] para obtener el id con el que pegarle a su API (en vez de asumir source_id == su id).
- Tests de cruce cross-motor (mismo DOI vía dos motores → un
paper_id, dos filas en external_ids).
Relacionado: ADR 0036 (opción C), PR #118 (infra), PR #119 (core).
Follow-up del ADR 0036. La tabla lateral
external_ids(paper_id, engine, id)ya existe en los backends (PR #118) pero no se puebla (decisión consciente, PR #119).Por qué quedó diferido
Con OpenAlex como único motor,
source_idya guarda el id yprovenance.sourceel motor;external_idsno tiene consumidor todavía (sería redundante). Su razón de ser es el cruce/dedup cross-motor (un paper con su id de OpenAlex y de Semantic Scholar, unificados por DOI).Qué hacer al sumar el 2º motor (Semantic Scholar)
external_ids(paper_id, engine, source_id)tras computar elpaper_id.external_ids[engine=<suyo>]para obtener el id con el que pegarle a su API (en vez de asumirsource_id == su id).paper_id, dos filas enexternal_ids).Relacionado: ADR 0036 (opción C), PR #118 (infra), PR #119 (core).