kb-meta-fetch
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKB Meta Fetch
KB元数据获取
Core Goal
核心目标
- Pull records from Crossref after a given
journal-article.--from-date - Read ISSN seed rows from (
journals_issn,journal).issn1 - Insert rows into with
journals.ON CONFLICT (doi) DO NOTHING - Keep the implementation aligned with .
1_crossref_multi_increment.py
- 从Crossref拉取指定之后的
--from-date记录。journal-article - 从表读取ISSN种子数据行(
journals_issn、journal字段)。issn1 - 使用语句将数据行插入
ON CONFLICT (doi) DO NOTHING表。journals - 保持实现与一致。
1_crossref_multi_increment.py
Run Workflow
运行流程
- Set database connection env vars (user-managed keys prefixed with ):
KB_
KB_DB_HOSTKB_DB_PORTKB_DB_NAMEKB_DB_USERKB_DB_PASSWORD- (required, log output directory)
KB_LOG_DIR
- Run incremental fetch with a required date:
bash
python3 scripts/crossref_multi_increment.py --from-date 2024-05-01- If executing through an tool call, set timeout to 1800 seconds (30 minutes).
exec
- Check logs in:
- (UTC timestamp, one file per run)
${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log
- Build user-facing summary strictly from the current run output:
- Prefer emitted by
RUN_SUMMARY_JSON.crossref_multi_increment.py - If JSON is unavailable, parse only this run's .
${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log - must mean rows inserted in this run (after DOI dedup), not cumulative rows in table.
total_inserted
- 设置数据库连接环境变量(用户管理的密钥前缀为):
KB_
KB_DB_HOSTKB_DB_PORTKB_DB_NAMEKB_DB_USERKB_DB_PASSWORD- (必填,日志输出目录)
KB_LOG_DIR
- 使用必填的日期参数运行增量获取:
bash
python3 scripts/crossref_multi_increment.py --from-date 2024-05-01- 如果通过工具调用执行,设置超时时间为1800秒(30分钟)。
exec
- 查看日志:
- (UTC时间戳,每次运行生成一个文件)
${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log
- 严格基于当前运行输出构建面向用户的摘要:
- 优先使用输出的
crossref_multi_increment.py。RUN_SUMMARY_JSON - 如果JSON不可用,仅解析本次运行的日志文件。
${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log - 必须表示本次运行中插入的行数(经过DOI去重后),而非表中的累计行数。
total_inserted
Behavior Contract
行为约定
- Query Crossref endpoint: .
https://api.crossref.org/journals/{issn}/works - Filter with .
type:journal-article,from-pub-date:<from-date> - Keep only items whose equals target journal title (case-insensitive).
container-title - Continue pagination with cursor until no matching items remain.
- Store fields in :
journals,title,doi,journal,authors.date - Reporting/announcement metrics must use current-run log/summary only.
- Do not compute announcement counts via database-wide or time-window SQL such as .
WHERE date >= ...
- 查询Crossref的端点:。
https://api.crossref.org/journals/{issn}/works - 使用过滤条件:。
type:journal-article,from-pub-date:<from-date> - 仅保留与目标期刊标题匹配的条目(不区分大小写)。
container-title - 使用游标继续分页,直到没有匹配的条目为止。
- 在表中存储以下字段:
journals、title、doi、journal、authors。date - 报告/通知指标必须仅使用当前运行的日志/摘要。
- 禁止通过全库或时间窗口SQL(如)计算通知计数。
WHERE date >= ...
Scope Boundary
范围边界
- Implement only Crossref incremental fetch + insert into .
journals
- 仅实现Crossref增量获取 + 插入表的功能。
journals
Script
脚本
scripts/crossref_multi_increment.py
scripts/crossref_multi_increment.py