Skip to main content
GET /analyses/:analysisId는 필드가 30개가 넘습니다. 이 페이지는 필드 정의가 아니라 읽는 순서와 해석 규칙을 다룹니다. 필드 목록과 타입은 API 레퍼런스를, 용어는 핵심 개념을 참조하세요.

읽는 순서

1

status 확인

completed가 아니면 아래로 내려가지 마세요. failederror.code · error.message를 기록하고 아이템 상태를 점검합니다.
2

outputFormatting.status 확인

systemMetadata.outputFormatting.statusformatted 또는 validation_failed일 때만 extractedData가 출력 스키마 구조입니다. skipped · fallback_raw면 봉투가 없습니다(아래 참조).
3

verificationStatus로 분기

verified → 자동 승인, pending_review → 검토 큐, rejected → 거부. 세부 판정은 그다음입니다.
4

extractedData와 details[] 읽기

값은 봉투의 value, 이유는 reasoning, 비어 있는 필드의 원인은 details[]reasonCode.
5

필요하면 agentAuditLog

어떤 단계가 무엇을 근거로 판정했는지, 외부 엔진 호출이 성공했는지는 감사 로그에 있습니다.

extractedData 봉투

출력 스키마의 말단 필드마다 값 대신 세 키를 가진 객체가 들어옵니다. 중간 객체와 배열 구조는 스키마 그대로입니다.
규칙:
  • 값을 얻지 못한 필드도 value: null자리를 유지합니다. extractedData의 필드 목록은 출력 스키마와 항상 같습니다.
  • 상위 객체 자체가 산출되지 않으면 그 아래 경로는 만들지 않습니다. 이때 details[]에 상위 항목의 reasonCode: "PARENT_MISSING" 한 건이 남습니다.
  • reasoning은 분석 완료 시점에 저장된 값입니다. 다시 조회해도 바뀌지 않습니다.
  • sourceStep은 실행 순서 번호라 워크플로우를 수정하면 다음 분석부터 달라질 수 있습니다. 단계를 안정적으로 가리키려면 agentAuditLog.steps[].work_id를 쓰세요.
  • 0false는 유효한 값입니다. 비어 있음의 기준은 null / "" / [] / {}입니다.

봉투가 없는 경우

fallback_raw는 “출력 스키마의 모든 필드가 비어 보이는” 가장 흔한 원인입니다. 스키마 키로 값을 찾기 전에 status부터 분기하세요. validation_failed는 조립은 됐지만 스키마 검증에 어긋난 항목이 있다는 뜻이며, 봉투는 정상이고 ajvErrors[]에 불일치 목록이 있습니다.
2026-08-14 이전에 완료된 분석에는 outputFormatting이 없습니다. 이때는 outputSchemanull인지로 봉투 유무를 판단하세요.

비어 있는 필드의 사유

값이 채워지지 않은 필드는 봉투에 value: null로 남고, details[]category: "JSON_OUTPUT" 항목이 추가되어 Analysis Score의 outputCompleteness를 낮춥니다.
  • reasonCode확장 가능한 열거형입니다. 표에 없는 값이 와도 오류 없이 처리하세요. type(OUTPUT_MISSING / OUTPUT_EMPTY 등 고정 6종)과는 별개의 축입니다.
  • reasonCode · message · stepIdJSON_OUTPUT 항목에만 붙습니다. STEP · TOOL 항목에는 없습니다.
  • message는 담당 단계가 남긴 판단 근거이고, 봉투의 reasoning필드 단위 사유를 우선합니다. 두 문장은 다를 수 있으므로 필드별 맥락은 reasoning을 먼저 읽으세요.
  • target은 실제 인스턴스 경로입니다. 배열은 원소 수만큼 인덱스로 펼쳐집니다(ubo_register[0].name). 빈 배열이나 배열 키 부재는 ubo_register 한 건으로 계상합니다.
  • Omni는 원본 문서를 다시 검사하지 않습니다. “문서에 그 값이 없었다”는 판정은 하지 않으며, 상한선은 “추출 결과에 포함되지 않았다”(NOT_IN_FINAL_OUTPUT)입니다.

사유를 제공하지 못하는 경우

reasoning: null은 “근거가 없다”가 아니라 “사유를 제공하지 못했다”는 뜻입니다. 과거 분석에 소급 생성하지 않습니다.

extractionStatus는 쓰지 마세요

extractionStatus는 하위 호환용 deprecated 필드입니다. 스키마 최상위 키 단위(extracted / missing)라 중첩 필드나 배열 원소를 구분하지 못합니다. 신규 연동은 봉투의 valuedetails[]를 사용하세요. 값의 판정 기준은 봉투와 같습니다(0 · falseextracted). 출력 스키마가 없는 분석에서는 extractedData의 최상위 키 기준 맵을 돌려줍니다.

판정 값 읽기

응답 안에는 이름이 비슷한 판정이 세 층위에 있고 값 집합이 다릅니다. 최상위 판정은 액션 결과의 집계입니다. failed가 하나라도 있으면 rejected, 전부 passedverified, 그 외 pending_review. summary.overall_decision도 같은 집계라 passedverified, needs_reviewpending_review, failedrejected로 대응합니다. findings[].result는 같은 액션 결과를 UI용으로 바꾼 값입니다(needs_reviewwarning).

confidence와 confidenceScore

confidenceScore가 높아도 confidence.score는 낮을 수 있습니다. 모든 단계를 통과했지만 출력 스키마가 비어 있는 경우가 대표적입니다. 자동 승인 조건에는 verificationStatus와 함께 confidence.scoredetails[]를 넣으세요. 가중치와 등급 구간은 핵심 개념에 있습니다.

어떤 플레이북으로 판정했는가

분석은 실행 시점의 플레이북을 동결해 playbookSnapshot으로 함께 돌려줍니다. 이후 워크플로우를 수정해도 과거 분석의 근거는 그대로 남습니다. 감사 목적으로 근거를 보관한다면 frozen인 분석의 playbookSnapshot을 저장하세요. outputSchema도 같은 방식으로 실행 시점에 동결됩니다.

감사 로그 읽기

agentAuditLog는 단계별 실행 기록입니다. 최상위 필드와 달리 스네이크 케이스(work_id, executed_at, duration_ms)를 씁니다.
  • 단계 식별: step은 실행 순서, work_id는 플레이북 액션의 고정 ID입니다. GET /workflows/:workflowIdworkflowActions[].workId와 대응합니다.
  • 단계 판정: status(passed / needs_review / failed)와 reasoning이 대시보드 Summary 탭의 판단 줄입니다. rule은 그 단계가 수행한 지시입니다.
  • 외부 엔진 호출: mcpcalls[]successerror_code로 실패를 판단하세요. HTTP 상태 코드는 없습니다. fallback_to_rag: true는 엔진 실패 후 문서 검색으로 대체 실행했다는 뜻입니다.
  • 같은 호출을 액션 기준으로 보려면 rawActionResults.{action}.mcpResults[]를 쓰세요. 이쪽은 카멜 케이스(durationMs, errorCode, fallbackToRag)입니다.
  • 실행되지 않은 단계는 systemMetadata.workflowHistory[]에도 나오지 않습니다. 전체 단계 정의는 워크플로우 응답의 workflowActions에서 확인하세요. 미실행 단계는 details[]STEP_NOT_EXECUTED로 남습니다.

후속 처리 패턴

  • 검토자에게는 details[]target · reasonCode · message와 봉투의 reasoning을 함께 보여주면 원인 파악이 빠릅니다.
  • 아이템을 보강한 뒤 같은 프로파일에서 다시 분석하면 새 analysisId가 발급됩니다. 이전 결과는 유지되며 대시보드의 Run 선택으로 비교할 수 있습니다.
  • 사람이 읽는 리포트가 필요하면 GET /analyses/:analysisId/report로 PDF를 받으세요.