GST 특허관리시스템 아키텍처

이 문서는 특허 PDF 원본부터 대시보드 시각화, 그리고 RAG(검색 증강 생성) 확장까지 GST 특허관리시스템이 데이터를 처리하고 서비스를 제공하는 전체 구조를 설명합니다. 프런트엔드, 데이터 파이프라인, 배포 전략, 모니터링 전략을 한눈에 파악할 수 있습니다.

1. 시스템 개요

핵심 구성 요소

  • 정적 프런트엔드: Tailwind + Vanilla JS 기반 대시보드
  • PatentManager: 검색/필터/페이지네이션을 담당하는 전역 상태 매니저
  • Local DB 파이프라인: PDF → JSON → 통합 인덱스 자동화
  • 차트 & 타임라인: Chart.js, ECharts, 커스텀 타임라인 매니저

운영 목표

  • 데이터 정합성과 최신성을 유지하면서 3초 이하의 초기 로딩 시간 달성
  • 사용자 필터링/검색 시 즉시 반응하는 대시보드 경험 제공
  • 향후 RAG 모듈과의 무중단 연동을 고려한 확장성 확보
  • 스크립트 기반 데이터 빌드로 반복 가능한 데이터 배포 지원

전체 구조 요약

① Ingestion

PDF 원본을 파싱해 페이지 텍스트, 이미지 메타, 특허 메타데이터를 추출합니다.

② Normalization

노드 스크립트가 JSON을 정규화하여 `patents-index.json`과 통계 정보를 생성합니다.

③ Delivery

Cloudflare Pages가 정적 자산을 전 세계 PoP에 배포하고, 서비스 워커가 캐싱을 담당합니다.

④ Experience

PatentManager가 데이터를 메모리에 적재하고 대시보드, 검색, 시각화를 구동합니다.

2. 아키텍처 레이어

프런트엔드 & 사용자 경험

  • PatentManager: URL 상태 복원, 페이징, 필터, 검색, 통계 갱신 통합
  • 대시보드 카드: 필터링 결과를 실시간 반영 (총 특허, 활성 특허, 기술 분야, 등록 기간, 평균 중요도)
  • 차트/타임라인: Chart.js와 ECharts로 범주 분포·연도 트렌드·기술 타임라인 시각화
  • 접근성: aria 속성, 키보드 내비게이션, 라이브 리전 활용

데이터 파이프라인 & 서비스 계층

  • PDF 추출: `pdfminer.six`로 텍스트를 추출하고, 이미지/메타데이터 구조를 유지
  • 정규화 빌드: Node 스크립트가 통계를 사전 계산하고 `data-source` 메타를 주입
  • 캐싱 전략: 서비스 워커가 정적 자산을 캐시하고 JSON은 no-store 정책으로 갱신 유지
  • RAG 준비도: 임베딩·벡터 DB·LLM 호출을 위한 표준 API 형식을 명세

3. 핵심 구성요소

데이터 파이프라인

  • update-patents-from-pdf.py: PDF → JSON 변환 및 텍스트 정제
  • build-local-db.js: JSON 통합, 통계 산출, `patents-index.json` 생성
  • 검증: 스크립트 실행 시 성공/실패 로그와 분류 통계 출력

PatentManager

  • 로컬 DB → 메모리 로딩 후 검색/필터/페이지 상태를 단일 진실 소스로 유지
  • `gst:patents-ready` & `gst:patents-changed` 이벤트를 발행하여 대시보드, 차트, 타임라인과 동기화
  • 검색 제안, 디바운스, 가상 리스트(페이지네이션), 접근성 처리를 포함

분석 & 시각화

  • Chart.js: 기술 분야 분포, 연도별 등록 추세
  • ECharts: 카테고리별 기술 타임라인(산점도)
  • 동적 재계산: 필터 변경 → PatentManager → ChartManager/TImeLineManager 업데이트

4. 데이터 플로우

1 Acquire

특허 PDF 원본을 수집하여 `data/pdf/` 디렉터리에 저장합니다. 수시로 원본이 업데이트되면 동일 디렉터리에 덮어쓰기만 하면 됩니다.

2 Transform

`python3 scripts/update-patents-from-pdf.py` 실행 → PDF를 JSON으로 변환, 페이지 텍스트/이미지/메타데이터 추출, 정상/실패 로그 출력.

3 Normalize

`node scripts/build-local-db.js` 실행 → JSON을 통합해 `data/patents-index.json` 생성, 통계/카테고리 분포 계산, 실패 항목을 리포팅.

4 Deliver & Interact

브라우저가 `data/patents-index.json`을 fetch → PatentManager가 로드 → 검색/필터/차트/타임라인을 실시간으로 갱신합니다.

5. 벡터 데이터베이스 설계 (준비중)

설계 원칙

  • 컬렉션: 특허 단위 컬렉션(`gst_patents`)과 문단 단위 chunk 보관
  • 임베딩 모델: upstage/solar-embedding-1-large (국내 특허 텍스트 대응)
  • 메타데이터: 특허번호, 기술분야, 등록일, 페이지, 중요도 점수
  • 검색 전략: cosine similarity + 키워드 필터링 하이브리드

구현 체크리스트

  • 1) `patents-index.json` → 임베딩 파이프라인 연결
  • 2) 임베딩 생성 & 업서트 스크립트 작성 (`scripts/embed-patents.py` 예정)
  • 3) RAG API 호출 시 top-k 결과에 메타데이터 포함
  • 4) 검색 결과를 프런트엔드 채팅 UI와 연결

6. LLM 통합 전략

API 어댑터

OpenAI, Claude, Upstage 등 멀티 벤더를 선택적으로 호출할 수 있는 추상화 계층을 제공하며, 토큰/비용 계산 로직을 내장합니다.

프롬프트 레이어

특허 문서 서식을 반영한 시스템 프롬프트, 사용자 요청 분류, 하이라이트 추출, 참고 문서 링크 삽입을 지원합니다.

안전장치

사용 목적 외 질의는 거부하고, 참조 문서를 항상 첨부하도록 가이드합니다. 로깅/감사 기능은 서버 사이드 게이트웨이에서 수행 예정입니다.

7. 배포 및 운영 전략

Cloudflare Pages

  • • 정적 사이트 + API 프록시 구성
  • • `_headers`, `_redirects`를 통한 CSP/HSTS 관리
  • • 글로벌 CDN PoP로 200ms 내 응답 시간 확보

CI/CD & 품질

  • • PDF/JSON/인덱스 변경 시 스크립트 재실행 후 커밋
  • • Lighthouse, Core Web Vitals 수동 검증
  • • 필요 시 GitHub Actions로 자동 빌드/배포 구성

8. 모니터링 & 운영 체크리스트

데이터 품질

  • • 빌드 스크립트 로그의 성공/실패 항목 확인
  • • `patents-index.json` 총 개수/카테고리 분포 검증
  • • 비정상 항목은 PDF/JSON 소스부터 재처리

성능

  • • Lighthouse 95+/Best-Practice 90+ 유지
  • • Core Web Vitals (LCP, FID, CLS) 주기적 측정
  • • 검색/필터 응답 시간 200ms 이하 유지

확장 계획

  • • 벡터 DB/LLM 연결 시 서버 게이트웨이 도입
  • • 인증/권한 관리 추가 시 API 보호 계층 고려
  • • 분석 로그 수집 시 Cloudflare Workers/Pages Functions 활용