diff --git a/app/workers/classify_worker.py b/app/workers/classify_worker.py index 644e0c7..3ceb57a 100644 --- a/app/workers/classify_worker.py +++ b/app/workers/classify_worker.py @@ -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: