연결
배경
현재 PR은 항목별 활성 지식이 6건 이상이면 Gemini 임베딩과 pgvector 유사도 Top 5를 사용하도록 설계했다. 하지만 현재 지식은 항목 코드로 이미 정확히 좁혀지고 항목별 후보도 최대 9건 수준이다. 지식 문구에는 연령대·지역·빈도·금액을 직접 비교할 속성이 충분하지 않아 의미 유사도 개인화 효과가 제한적인 반면, 임베딩 API 호출·벡터 저장·모델 버전 관리·실패 fallback이 생성 지연과 운영 복잡성을 증가시킨다.
변경 결정
- pgvector와 미션 지식 전용 Gemini 임베딩을 제거한다.
- 일반 PostgreSQL에서 항목, 활성 상태, 검증 상태, 유효기간으로 모든 후보를 조회한다.
- 모순 검증은 선택 전에 전체 후보를 대상으로 수행한다.
- 공식 출처로 검증된 사용 가능 지식이 0건이면 일반 절약 미션을 생성한다.
- 사용 가능 지식이 1~5건이면 모두 사용한다.
- 사용 가능 지식이 6건 이상이면 생성
jobId를 seed로 하는 결정적 랜덤 순서에서 5건을 선택한다.
- 동일 job 재시도는 같은 지식 조합을 사용하고, 새 job은 다른 조합을 선택할 수 있다.
- 선택된 지식 ID와 선택 정책은 retrieval trace에 기록한다.
- 개인화 입력은 항목, 연령대/지역, 빈도/금액만 Gemini 미션 생성 프롬프트에 전달한다.
변경 후 플로우
- 사용자가 카테고리·항목·주간 빈도·주간 금액으로 미션 생성을 요청한다.
- 서버가 항목의 활성·유효·미거절 지식을 일반 SQL로 모두 조회한다.
- 동일
subject_key에 상충하는 문구가 있으면 등록된 공식 HTTPS 출처를 요청 시점에 검증한다.
- 검증 후 지식이 0건이면 빈 지식 컨텍스트를 사용한다.
- 1~5건이면 모두, 6건 이상이면
jobId 기반 결정적 랜덤 5건을 선택한다.
- 항목·연령대/지역·빈도/금액과 선택 지식을 Gemini에 전달한다.
- Gemini가 대안 문구를 생성하고 서버가 목표 횟수와 예상 절약액을 계산한다.
- 생성 초안과 지식 선택 trace를 저장한다.
제거 범위
vector extension 및 미션 지식 embedding 컬럼
- 지식·검색문 Gemini 임베딩 생성
- pgvector 코사인 유사도 SQL
- 임베딩 원문·모델·생성 시점 관리
- 유사도 점수와 임베딩 모델 trace
유지 범위
- 운영자 관리 지식 본문, 활성 상태, 유효기간, 공식 출처
- 초기 지식 27건
- 사용자 요청 시점 공식 출처 모순 검증
- 지식 0건/조회 실패/검증 후 0건 일반 미션 fallback
- 제거 항목 6개의 비활성화와 기존 미션 soft delete
- 네이버 검색 제거
수용 기준
범위 밖
- 운영자 관리자 UI
- 지식별 가중치·노출 우선순위
- 과거 확정 미션 및 legacy blog tip 물리 삭제
연결
배경
현재 PR은 항목별 활성 지식이 6건 이상이면 Gemini 임베딩과 pgvector 유사도 Top 5를 사용하도록 설계했다. 하지만 현재 지식은 항목 코드로 이미 정확히 좁혀지고 항목별 후보도 최대 9건 수준이다. 지식 문구에는 연령대·지역·빈도·금액을 직접 비교할 속성이 충분하지 않아 의미 유사도 개인화 효과가 제한적인 반면, 임베딩 API 호출·벡터 저장·모델 버전 관리·실패 fallback이 생성 지연과 운영 복잡성을 증가시킨다.
변경 결정
jobId를 seed로 하는 결정적 랜덤 순서에서 5건을 선택한다.변경 후 플로우
subject_key에 상충하는 문구가 있으면 등록된 공식 HTTPS 출처를 요청 시점에 검증한다.jobId기반 결정적 랜덤 5건을 선택한다.제거 범위
vectorextension 및 미션 지식 embedding 컬럼유지 범위
수용 기준
EmbeddingModel과 pgvector 연산자를 사용하지 않는다.범위 밖