Skip to content

External-source publications: verify ingest + profile render (code merged #1670) #1672

Description

@paulalbert1

Goal

Surface manually-added external-source publications (Scopus / OpenAlex / WOS, added by curators in Publication Manager — ReCiter #659/#661) in SPS scholar profiles alongside PubMed pubs, without breaking bibliometrics or publication identity.

How it flows

ExternalArticle (DynamoDB) → reciterdb external_article → STEP 6b unions into analysis_summary_article / analysis_summary_author (ReCiterDB #101, shipped) → SPS reciter ETL ingests into Publication.

Work

Design outcome

No SPS schema migration. article_id (source-prefixed, ≤32 chars for every current source) fits the existing Publication.pmid VarChar(32) and encodes the source in its prefix, so external-ness derives from the pmid (numeric = PubMed). Stable identity comes from article_id rather than the synthetic pmid, which reciterdb recomputes every nightly.

⛔ Hazard — #1670 is NOT safe to merge yet

SPS #1670 adds article_id to the SELECT ... FROM analysis_summary_article in the reciter ETL. If that column does not exist in the reciterdb the SPS ETL reads, the query fails with MySQL 1054 Unknown column 'article_id' in 'field list' and the nightly reciter ETL breaks. It does not degrade gracefully. Merging #1670 auto-deploys to staging, so it would break the staging nightly.

Note the feature is dormant (0 external rows until cutover) but this schema dependency is not — the ETL reads the column on every run regardless.

Deploy order (must hold)

  1. ReCiterDB B19 — Reciter → DynamoDB consistency-window UI placeholder #118 merged to master (30147ab) — column added to the DDL, populated in STEP 6b.
  2. Apply alter_add_article_id_analysis_summary_article_v1.7.sql to the reciterdb instance the SPS ETL reads. Merging B19 — Reciter → DynamoDB consistency-window UI placeholder #118 does not apply it — manual operator step.
  3. Confirm whether that instance is built from reciterdb master or dev. B19 — Reciter → DynamoDB consistency-window UI placeholder #118 targeted master only (the B02 — /api/edit authorization predicate + 403 telemetry #101 union went to both master B17 — VPC endpoints for Secrets Manager / S3 / OpenSearch #116 and dev B18 — OpenSearch alias-swap pattern (scholars_v{N}) #117). If SPS reads a dev-built reciterdb, a dev counterpart of B19 — Reciter → DynamoDB consistency-window UI placeholder #118 is also required.
  4. ⬜ Mark SPS External-source publications: SPS ingest + render (#101 downstream) #1670 ready and merge (it is currently a draft to prevent an accidental early merge).
  5. ⬜ In-cluster load-verify (ReCiterDB B02 — /api/edit authorization predicate + 403 telemetry #101 remaining) that external rows land in analysis_summary_article with article_id populated.

The feature stays dormant until the upstream ReCiter #626 / PM #719 cutover — 0 external rows until then.

Remaining

Refs

ReCiterDB #101 / #116 / #117 / #118; SPS #1670; ReCiter #659 / #660 / #661 / #662 / #665; PM #771 / #772; upstream cutover ReCiter #626 + PM #719.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions