Skip to content

feat(crossref): 학술 메타데이터 읽기 서비스 (works/journals 검색·조회)#13

Merged
ArcSolver merged 3 commits into
mainfrom
feat/crossref
Jun 3, 2026
Merged

feat(crossref): 학술 메타데이터 읽기 서비스 (works/journals 검색·조회)#13
ArcSolver merged 3 commits into
mainfrom
feat/crossref

Conversation

@ArcSolver

Copy link
Copy Markdown
Owner

개요

Crossref REST API 기반 학술 메타데이터 읽기 서비스. OpenAlex와 동형(무인증, polite pool mailto 선택)이라 코어 변경 없이 추가됩니다. 학술 읽기 3종(OpenAlex·Crossref·Zotero) 라인을 완성합니다.

도구 (4종, 전부 GET·읽기)

  • crossref_search_works(query?, filter?, sort?, order?, rows?, offset?)/works
  • crossref_get_work(doi)/works/{doi}
  • crossref_search_journals(query?, rows?, offset?)/journals
  • crossref_get_journal(issn)/journals/{issn}

설계

  • 인증: 무인증. polite pool은 CROSSREF_MAILTO(선택) → 쿼리 파라미터 + User-Agent.
  • 코어 의존: get_json만 — 새 HTTP 동사 불필요. 페이지네이션·건수는 응답 본문 message.
  • 에러 3형태 모델링: 성공(message 객체) / 400 validation(message 배열) / 404 text/plain.

검증

  • 교차 독립 검증(라이브 end-to-end): 실제 api.crossref.org 호출로 정상 4경로가 pydantic 모델로 파싱됨을 확인, 404(text/plain)·400(message 배열) 에러 경로 재현·매핑 확인.
  • 테스트 37 passed · ruff clean · 전체 스위트 240 passed.
  • 검증에서 발견·반영한 개선: offset+rows ≤ 10000 합산 경계 정밀화(라이브 확인), Work.published 주석 provenance 보정.

통합 노트

🤖 Generated with Claude Code

ArcSolver and others added 3 commits June 3, 2026 20:25
works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool
mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인:
  rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단.
- Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/
  published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일.
- 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ArcSolver ArcSolver merged commit 7ddfc58 into main Jun 3, 2026
2 checks passed
@ArcSolver ArcSolver deleted the feat/crossref branch June 3, 2026 11:27
ArcSolver added a commit that referenced this pull request Jun 4, 2026
* feat(crossref): 학술 메타데이터 읽기 서비스 (works 검색·조회)

works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool
mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(crossref): offset+rows 합산 경계 정밀화 + published 주석 provenance 보정

- offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인:
  rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단.
- Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/
  published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일.
- 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(crossref): 카탈로그·체인지로그 재생성 (crossref 반영)

discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant