You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
모델 사용/실행 경로/임베딩/우회/버전 등 수집, 명시적 false와 미수집 null 구분
GA에 질문·답변·대화 원문이나 링크 식별자를 추가하지 않음
위 PR들의 CHANGELOG.md와 관련 회귀 테스트 반영
이미 있던 기능 — 재구현하지 않음
SummaryStatus의 PENDING/PROCESSING/COMPLETED/FAILED 상태 관리
요약 실패 dead-letter 기록 및 관리자 조회·재처리·무시 처리
requestId/traceId 로그 문맥, AI 호출·비동기 실패 지표, 채팅 query_id
제목/메모 수정 등의 LinkSyncEvent와 커밋 후 비동기 동기화
남은 백엔드 작업 — 우선순위
P1. DB의 최종 요약 상태·선택 요약을 검색 인덱스에 동기화
초기 요약 완료/실패 및 재처리 상태 변경 후, 커밋된 최종 DB 상태를 전송
사용자가 요약을 수정하거나 선택 요약을 바꾼 경우 검색 인덱스에도 반영
이벤트 역전·중복·삭제/탈퇴와의 경합으로 오래된 상태가 덮어쓰이지 않는 방안 및 테스트
요약이 없거나 실패한 링크도 metadata 검색 대상에 포함할 적재 계약 검증
근거: SummaryWorkerFacade의 상태 변경과 SummaryCommandService의 요약 저장/선택은 DB를 변경하지만, 확인한 main 코드에는 해당 최종 변경을 전달하는 LinkSyncEvent가 없습니다. 초기 요약 요청의 summaryStatus는 PROCESSING이므로 요청 DTO 추가만으로 Qdrant 최종 상태가 COMPLETED/FAILED가 되지는 않습니다. 요약 실패한 링크 검색의 정합성을 위해 우선 보강해야 합니다.
P1. 재인덱싱 및 최종 동기화 실패 복구
관리자 권한의 페이지/커서 기반 export 또는 재인덱싱 job: 삭제되지 않은 링크 + DB 메타데이터 + 선택 요약
신규/수정 요청과 같은 계약 사용, 최초 저장일 보존, 소유권/탈퇴 검증
속도 제한·중단/재개·중복 실행 안전성·부분 실패 목록과 재처리
CREATE/UPDATE/DELETE 동기화의 최종 실패를 내구성 있는 재처리 대상으로 보존
요약 실패 dead-letter는 이미 존재하지만, LinkSyncEventListener.recover는 현재 로그와 실패 카운터를 남깁니다. 링크 동기화의 내구성 있는 복구 큐와 전체 reindex는 별도 미완료입니다. 실제 reset/reindex 실행은 구현 및 운영 계획 검토 후 별도로 결정합니다.
P2. 안정적인 과거 카드 순번 참조
새 메시지의 참조 링크 순서를 영속화하고 history 조회 시 같은 순서로 제공
순서를 실제 보장하는 새 기록에만 linkOrderKnown=true
순서를 알 수 없는 과거 기록은 false 유지; 임의 복원 금지
이는 “두 번째 링크” 같은 기능을 지원하려면 필요한 추가 백엔드 작업입니다. 링크 제목/URL로 대상을 지정하는 후속 질문은 #321의 계약으로 먼저 대응할 수 있습니다.
P2. 오류 원인 및 서비스 간 추적 보강
n8n/renderer의 실패 이유를 안전한 오류 코드로 구분·보존하는 계약 (예: 빈 본문, 접근 차단, 미지원 형식, 시간 초과)
요청/trace/query 식별자를 RAG 호출까지 연결하고 비동기 재시도 로그와 연계
마지막 실패 분류·시도 횟수의 조회 가능성 및 민감한 외부 응답 원문을 저장하지 않는 정책 검증
기존 dead-letter의 errorCode/exceptionType/failureReason/requestId/traceId 및 호출 지표를 확장하는 작업입니다. 기존 기능을 모두 미구현으로 취급하지 않습니다. n8n이 잘못된 요청을 일반 500으로 바꾸면 #322가 원래 4xx 원인을 알 수 없으므로 HTTP 오류 계약의 공동 검증도 필요합니다.
P2. 계약·방어 장치의 추가 결정 사항
updatedAt/동기화 버전, documentType, 명시적 hasSummary가 필요한 경로를 정하고 DTO·JSON 계약 확장 여부 결정
최종 사용자 답변에 내부 식별자가 새는 경우의 백엔드 방어 정책 및 회귀 테스트 검토
임의 숫자·날짜·기술 용어를 전부 삭제하는 방식은 피하고, 실제 참조 식별자 및 명시적 ID 표현으로 범위를 제한
목적과 범위
linkiving-core가 RAG에 제공하는 데이터 계약, 동기화 신뢰성, 실패 관리, 관측성과 통합 검증을 관리하는 백엔드 부모 이슈입니다.2026-09-19 기준으로 병합된 작업과 현재 main 구현을 반영했습니다. 머지 완료와 운영 배포/통합 검증 완료는 구분합니다. DB/Qdrant reset, 기존 데이터 수정·재인덱싱을 이 이슈의 갱신만으로 실행하지 않습니다.
n8n 프롬프트·라우팅·후속 질문 해석·Qdrant 노드 수정은 이 저장소의 구현 할 일이 아닙니다. 별도 RAG 작업에서 관리하며, 아래에는 백엔드 계약과 배포 후 공동 확인에 필요한 의존성만 적습니다.
완료 — 병합된 백엔드 변경
savedAt,savedAtEpochMs,summaryStatus전달updatedAt,documentType, 명시적hasSummary까지 확장한 계약은 아님assistant역할,messageId, 링크 제목·URL·선택 요약·메모·저장일·상태 전달linkIds순서대로 보존, 중복/잘못된 ID 제거message_link에는 순서가 없어linkOrderKnown=false; 과거 순번 참조는 미해결query_response_complete에 전달false와 미수집null구분CHANGELOG.md와 관련 회귀 테스트 반영이미 있던 기능 — 재구현하지 않음
남은 백엔드 작업 — 우선순위
P1. DB의 최종 요약 상태·선택 요약을 검색 인덱스에 동기화
근거:
SummaryWorkerFacade의 상태 변경과SummaryCommandService의 요약 저장/선택은 DB를 변경하지만, 확인한 main 코드에는 해당 최종 변경을 전달하는 LinkSyncEvent가 없습니다. 초기 요약 요청의summaryStatus는 PROCESSING이므로 요청 DTO 추가만으로 Qdrant 최종 상태가 COMPLETED/FAILED가 되지는 않습니다.요약 실패한 링크검색의 정합성을 위해 우선 보강해야 합니다.P1. 재인덱싱 및 최종 동기화 실패 복구
요약 실패 dead-letter는 이미 존재하지만,
LinkSyncEventListener.recover는 현재 로그와 실패 카운터를 남깁니다. 링크 동기화의 내구성 있는 복구 큐와 전체 reindex는 별도 미완료입니다. 실제 reset/reindex 실행은 구현 및 운영 계획 검토 후 별도로 결정합니다.P2. 안정적인 과거 카드 순번 참조
linkOrderKnown=true이는 “두 번째 링크” 같은 기능을 지원하려면 필요한 추가 백엔드 작업입니다. 링크 제목/URL로 대상을 지정하는 후속 질문은 #321의 계약으로 먼저 대응할 수 있습니다.
P2. 오류 원인 및 서비스 간 추적 보강
기존 dead-letter의 errorCode/exceptionType/failureReason/requestId/traceId 및 호출 지표를 확장하는 작업입니다. 기존 기능을 모두 미구현으로 취급하지 않습니다. n8n이 잘못된 요청을 일반 500으로 바꾸면 #322가 원래 4xx 원인을 알 수 없으므로 HTTP 오류 계약의 공동 검증도 필요합니다.
P2. 계약·방어 장치의 추가 결정 사항
updatedAt/동기화 버전,documentType, 명시적hasSummary가 필요한 경로를 정하고 DTO·JSON 계약 확장 여부 결정배포 후 통합 검증 — 아직 미완료
is_model_used=false포함 신규 필드가 실제 수집되는지 확인이 검증은 PR 단위 테스트 통과나 n8n 합성 검증만으로 완료 표시하지 않습니다. 새 모델 벤치마크 점수를 백엔드 구현 완료율로 사용하지 않습니다.
부모 이슈를 열어두는 이유와 완료 기준
핵심 요청 계약·history·재시도·GA 전달은 병합됐지만 최종 상태/선택 요약 동기화, 전체 reindex와 동기화 실패 복구, 서비스 간 통합 검증이 남아 있어 부모 이슈를 유지합니다.
위 P1 및 통합 검증을 완료하고, P2 항목은 구현하거나 별도 범위로 명시적으로 이관한 뒤 종료합니다. n8n 전용 구현은 이 저장소에 별도 작업 이슈로 만들지 않습니다.