상태: 검토 전 입력 범위:
sample-session.jsonlturn 0–3 결론 신뢰도: 원인·변경·합성 검증은 확인됨, 운영 안정성은 확인 필요
30초 인수인계
| 항목 | 인수인계 내용 |
|---|---|
| 증상 | API 응답은 200이지만 특정 질문의 검색 결과가 0건이었다. |
| 원인 | 적재기는 UUID, 검색기는 경로 기반 ID를 사용해 동일 문서를 서로 다른 키로 참조했다. |
| 결정 | 저장 경계에서 canonical_document_id()를 호출해 ID 규칙을 한 곳으로 모았다. |
| 검증 | 합성 질문 12건을 재실행했고 검색 결과 0건 현상이 재발하지 않았다. |
| 남은 한계 | 운영 트래픽의 장기 안정성과 기존 데이터 전체에 대한 영향은 확인되지 않았다. |
문제 경계
- 기대 상태: 적재된 문서는 같은 질문으로 검색할 수 있어야 한다.
- 실제 상태: API 오류는 없지만 검색 결과만 0건이었다.
- 이번에 확인한 범위: 적재기와 검색기의 문서 키, 저장 경계의 정규화 호출, 합성 질문 12건.
- 이번에 확인하지 않은 범위: 운영 트래픽 장기 관찰과 실제 고객 데이터 전수 검증.
확인된 사실
- [확인됨] 적재기는 UUID, 검색기는 경로 기반 ID를 사용했다. (turn 1)
- [확인됨] 저장 경계에서
canonical_document_id()를 호출하도록 변경했다. (turn 3) - [사용자 결정] WebSocket 전환은 원인과 무관해 제외했다. (turn 2)
판단 기록
채택한 결정
문서가 저장되는 경계에서 ID 정규화를 한 번만 적용한다. 적재와 검색 양쪽에 별도 보정 규칙을 두는 것보다 동일 문서의 기준 키가 갈라지는 지점을 직접 제거하기 때문이다.
배제한 선택
WebSocket 전환은 채택하지 않았다. 관찰된 문제는 전송 방식이 아니라 저장된 문서 키의 불일치였고, 전송 계층 변경으로는 그 불일치를 해소할 근거가 없었다.
실행 또는 재현 절차
| 단계 | 행동 | 기대 신호 | 실행 상태 |
|---|---|---|---|
| 1 | 적재기와 검색기에서 동일 문서의 ID 표본을 비교한다. | UUID와 경로 기반 ID가 같은 문서에 대응한다. | 확인됨 · turn 1 |
| 2 | 저장 경계에서 canonical_document_id()를 호출한다. |
이후 저장되는 문서 키가 단일 규칙을 따른다. | 확인됨 · turn 3 |
| 3 | 합성 질문 12건을 다시 실행한다. | 기존의 검색 결과 0건 현상이 재발하지 않는다. | 확인됨 · turn 3 |
| 4 | 운영 트래픽에서 같은 증상을 일정 기간 관찰한다. | 장기 관찰 기간과 0건 재발 횟수가 기록된다. | 권장·미검증 |
검증 경계
| 검증한 것 | 범위 | 관찰 결과 | 증명하지 못한 것 |
|---|---|---|---|
| 정규화 변경 후 검색 재실행 | 합성 질문 12건 | 검색 결과 0건 현상 재발 없음 | 운영 트래픽의 장기 안정성, 전체 문서 유형에 대한 일반화 |
남은 위험과 후속 작업
- [확인 필요] 운영 트래픽의 관찰 기간과 재발 건수.
- [확인 필요] 기존 데이터 전체가 새 정규화 규칙과 호환되는지 여부.
출처 추적표
| 문서 주장 | 근거 위치 | 상태 |
|---|---|---|
| API 200이지만 검색 결과 0건 | turn 0 | 확인됨 |
| 적재기와 검색기의 ID 규칙 불일치 | turn 1 | 확인됨 |
| WebSocket 전환 제외와 저장 경계 단일화 | turn 2 | 사용자 결정 |
| 정규화 함수 적용, 합성 질문 12건, 운영 관찰 미완료 | turn 3 | 확인됨 |
공개 전 점검
- 고객사 이름은 역할명으로 일반화했다.
- 데이터베이스 연결 문자열은
[비밀값 제거: 연결 문자열]로 제거했다. - 권장 공개 범위: department.
- 사람 검토 항목: 운영 검증이 완료된 것처럼 읽히지 않는지 확인한다.
공유 전 판정
검토 후 부서 공유 가능. 합성 질문 12건의 결과와 운영 장기 관찰 미완료를 함께 유지해야 한다.