fix(classify): data_origin enum 검증 — knowledge 등 잘못된 값 cascade fail 방지

AI 응답에서 dataOrigin='knowledge' 같은 doc_purpose enum 값이 data_origin
컬럼에 잘못 매핑되면 asyncpg InvalidTextRepresentationError 발생. 같은
classify_worker session 의 후속 autoflush 호출이 PendingRollbackError
로 cascade 되어 batch 안 다른 문서까지 모두 실패.

doc_purpose 처럼 enum 허용값(work/external) 검증 후 박도록 수정. 외 값은
skip (data_origin NULL 유지). 가스기사 토픽 결손 15건의 RAG 결손 root cause.
This commit is contained in:
Hyungi Ahn
2026-04-28 10:01:45 +09:00
parent 37e9391d0d
commit 7dd77ec926
+6 -1
View File
@@ -370,8 +370,13 @@ async def process(document_id: int, session: AsyncSession) -> None:
# source/origin
if parsed.get("sourceChannel") and not doc.source_channel:
doc.source_channel = parsed["sourceChannel"]
# data_origin enum 검증 — AI 가 'knowledge' 같은 doc_purpose 값을 잘못 던지면
# asyncpg InvalidTextRepresentationError → 같은 session 후속 호출 cascade fail.
# 허용값(work/external) 외는 skip (NULL 유지).
if parsed.get("dataOrigin") and not doc.data_origin:
doc.data_origin = parsed["dataOrigin"]
origin = parsed["dataOrigin"]
if origin in ("work", "external"):
doc.data_origin = origin
# 용도 (AI는 빈 값만 채움 — 수동/업로드 명시값 우선)
if parsed.get("docPurpose") and not doc.doc_purpose: