Skip to content

[Feat/#72] 내부 API 동기화와 서버 안 주기 인덱스 갱신 - #73

Open
overhyeon wants to merge 3 commits into
mainfrom
feat/#72-index-refresh
Open

overhyeon wants to merge 3 commits into
mainfrom
feat/#72-index-refresh

Conversation

@overhyeon

@overhyeon overhyeon commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

#️⃣연관된 이슈

#72

📝작업 내용

공지·행사·아카이빙·열린피드백을 백엔드 내부 API(billilge/stream-server#312, /v1/ai/**)에서 받아, 서버 안에서 10분마다 검색 인덱스를 다시 만들어 바꿔 끼웁니다.
지금은 이미지 빌드 때 한 번 만든 인덱스(시드·가짜 데이터)만 써서 재배포해야만 갱신됐습니다. 이미지를 다시 빌드하는 게 아니라 컨테이너 안 index/에 파일만 새로 씁니다.

  • sync.py (신규): 내부 API 4개를 X-Internal-Token으로 불러 인덱싱 문서 모양으로 변환. 문서ID 접두어·메타데이터는 기존 build_index.py 로더와 같습니다. 행사·아카이빙은 날짜·장소를 본문에 넣었습니다
  • refresh.py (신규): 동기화 → 새 폴더(index/build_YYYYMMDD_HHMMSS/)에 빌드 → 검사 → 메모리 인덱스·index/current 링크 교체 → 이전 빌드 3개만 남김 (AGENTS.md 「인덱스 갱신」)
    • 실패하거나 받은 문서가 0건·직전 절반 아래면 기존 인덱스를 그대로 씁니다
    • 갱신은 별도 스레드에서 돌아 학생 질문을 막지 않습니다
  • search.py (공용): 인덱스를 바꿔 끼우는 use_index(path) 추가. 기존 search(query) 사용법은 그대로입니다
  • app.py: 서버가 켜질 때 주기 갱신 시작(lifespan). BACKEND_BASE_URL과 INTERNAL_TOKEN이 없으면 꺼짐(로컬 개발·평가)
  • 문서: AGENTS.md 디렉터리·배포 확인, deploy.md 「인덱스 주기 갱신」·막히는 곳, .env.example의 INDEX_REFRESH_SECONDS

로컬 확인 (가짜 /v1/ai/** 백엔드, 갱신 주기 4초):

경우 결과
"헤커톤 신청 언제까지야?" (오타) 동기화된 해커톤 공지로 "11월 14일 18시까지" + 출처
새 공지 추가 → 5초 뒤 "붕어빵 나눔 언제 어디서 해?" 새 공지로 답함
백엔드 500 갱신 실패 로그, 직전 인덱스로 계속 답함
문서 8건 → 1건 "크게 줄었습니다" 경고 후 교체 안 함
빌드 폴더 3개만 남고 current가 최신을 가리킴
로그에 토큰 0회

💬리뷰 요구사항(선택)

승빈 sync.py·build_index.py는 승빈 담당 파일인데, 일정 때문에 내부 API 연결을 제가 먼저 만들었습니다(합의). sync.py의 문서 변환(본문에 어떤 필드를 넣을지)과 search.py에 추가한 use_index 확인 부탁해요. 시드 문서·FAQ는 매번 같이 넣고, test_data의 예전 가짜 공지·행사는 갱신 후에는 넣지 않습니다.

  • stream-server#312(내부 API)가 dev에 배포돼야 실제로 돕니다. 그 전에 머지되면 404로 갱신만 실패하고 기존 인덱스로 답합니다(챗봇은 멈추지 않음)
  • 새 환경변수 없음: BACKEND_BASE_URL([Feat/#69] 빌릴게 재고 도구를 백엔드 실데이터로 연결 #70)과 기존 INTERNAL_TOKEN을 씁니다
  • 갱신 성공 로그는 INFO라 지금 로깅 설정으로는 Coolify에 안 보입니다. 확인은 dev에서 새 공지를 올리고 10분 안에 챗봇이 답하는지로 합니다

@coderabbitai

coderabbitai Bot commented Nov 9, 2026

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: abd5c03c-b962-4c68-ac64-dd8f8618ad4c
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

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