51a6f7c9af
- run_eval.py: --queries-order / --order-groups / --output-order / --debug 옵션 추가. 기존 legacy CSV 스키마/값 불변 (출력 소비자 보호). - Tier 1A/1B/2 지표 구현: cross_format_link_success (top-10 공식 + top-5 보조, eligible/success 분수), top_5_document_match (guardrail + 절대 건수), manual_refind_flag (v0 heuristic), chunk_idx_stddev, range/page_citation_available capability flags. - order_groups.yaml: 발주건 3건 매핑 (TKP-26-0114/0132/0112, 10 docs). - queries_order_baseline.yaml: 12개 질문 (A:4 B:4 C:3 D:1). plan: ~/.claude/plans/merry-yawning-owl.md
267 lines
9.2 KiB
YAML
267 lines
9.2 KiB
YAML
version: "0.1"
|
|
created_at: "2026-04-20"
|
|
notes: |
|
|
Phase 0 발주건 단위 baseline 질문셋. 12개, 분포 A:B:C:D = 4:4:3:1.
|
|
|
|
카테고리:
|
|
A. 발주서 내부 찾기 (품목명/수량·단가·금액/납기/공급처)
|
|
B. 발주서 PDF 변환본 대응 (xlsx↔PDF 일치, PDF 페이지 위치)
|
|
C. 세금계산서/명세표 연결 (대응 invoice/statement 존재, 금액 일치, 발주건 식별)
|
|
D. 포맷 간 일치성 (핵심 필드 일치 or PDF만으로 발주건 식별)
|
|
|
|
expected_locations 스키마:
|
|
- doc_id : order_groups.yaml의 doc_id
|
|
- role : order_xlsx | order_pdf | invoice | statement
|
|
- location_type : sheet_range | page | document_only
|
|
- location_value : xlsx는 A1 notation 예) "발주서!F9", PDF는 "p1"
|
|
document_only일 때는 null
|
|
- is_primary : 해당 role이 이 질문의 1차 정답 포맷인가
|
|
|
|
document_only 허용 규칙:
|
|
- 원칙: 가능한 경우 sheet_range 또는 page로 라벨링
|
|
- 예외: 근거 위치를 안정적으로 특정할 수 없을 때 또는 여러 문서 간 "일치성" 자체가 질문일 때
|
|
- 규칙: document_only 사용 시 notes 필드에 이유 필수 기재
|
|
|
|
2026-04-20 초안 (Claude 자동 draft, 사용자 검수 대기):
|
|
- 발주서 xlsx의 핵심 셀 매핑 (전 발주건 공통):
|
|
D5 ORDER DATE, D6 PO NO, F9 공급처, F11 주소, F13 전화, W9 납기일,
|
|
W12 프로젝트, W13 담당자, B17~ 품목 행, V17~ 수량, X17~ 단가, AB17~ 금액, AB23 TOTAL
|
|
- PDF는 모두 1페이지 분량 → p1 고정
|
|
- 실제 오라벨 가능성 있으니 사용자 확인 필요 (sheet range 특히)
|
|
|
|
questions:
|
|
# ─────────────────────────────
|
|
# A. 발주서 내부 찾기 (4)
|
|
# ─────────────────────────────
|
|
- id: Q-A-001
|
|
query: "TKP-26-0114 발주의 공급처는 어디인가?"
|
|
category: A
|
|
order_group_id: TKP-26-0114
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8853
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!F9"
|
|
is_primary: true
|
|
- doc_id: 8854
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: (주)대연기업. xlsx F9."
|
|
|
|
- id: Q-A-002
|
|
query: "TKP-26-0132 발주의 납기일은?"
|
|
category: A
|
|
order_group_id: TKP-26-0132
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8856
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!W9"
|
|
is_primary: true
|
|
- doc_id: 8857
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 2026-02-23. xlsx W9."
|
|
|
|
- id: Q-A-003
|
|
query: "TKP-26-0112 plate 절단 단가는 얼마인가?"
|
|
category: A
|
|
order_group_id: TKP-26-0112
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8851
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!X17"
|
|
is_primary: true
|
|
- doc_id: 8852
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 650,000원 (1개 항목). xlsx X17."
|
|
|
|
- id: Q-A-004
|
|
query: "TKP-26-0114 발주의 총 금액은?"
|
|
category: A
|
|
order_group_id: TKP-26-0114
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8853
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!AB23"
|
|
is_primary: true
|
|
- doc_id: 8854
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 845,000원 (부가세 별도). xlsx AB23."
|
|
|
|
# ─────────────────────────────
|
|
# B. 발주서 PDF 변환본 대응 (4)
|
|
# ─────────────────────────────
|
|
- id: Q-B-001
|
|
query: "TKP-26-0114에서 2:1 HEAD SA516-70 품목의 수량은?"
|
|
category: B
|
|
order_group_id: TKP-26-0114
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8853
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!V17"
|
|
is_primary: true
|
|
- doc_id: 8854
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 2 EA. xlsx V17 / PDF p1 품목표. B 카테고리 = xlsx↔PDF 대응 확인."
|
|
|
|
- id: Q-B-002
|
|
query: "TKP-26-0132 발주서 총액은 얼마이고 PDF 변환본에서도 확인 가능한가?"
|
|
category: B
|
|
order_group_id: TKP-26-0132
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8856
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!AB20"
|
|
is_primary: true
|
|
- doc_id: 8857
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 74,290원. xlsx AB20 / PDF p1 TOTAL. 두 포맷 모두 일치해야 함."
|
|
|
|
- id: Q-B-003
|
|
query: "TKP-26-0112 PO 번호를 PDF 변환본에서 확인"
|
|
category: B
|
|
order_group_id: TKP-26-0112
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8852
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: true
|
|
- doc_id: 8851
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!D6"
|
|
is_primary: false
|
|
notes: "정답: TKP-26-0112. PDF만으로도 식별 가능한지 확인 (primary=order_pdf)."
|
|
|
|
- id: Q-B-004
|
|
query: "TKP-26-0114 발주서 담당자는 누구인가?"
|
|
category: B
|
|
order_group_id: TKP-26-0114
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8853
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!W13"
|
|
is_primary: true
|
|
- doc_id: 8854
|
|
role: order_pdf
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: false
|
|
notes: "정답: 안현기(Hyunki,Ahn). xlsx W13 (PREPAIRED BY) / PDF p1."
|
|
|
|
# ─────────────────────────────
|
|
# C. 세금계산서/명세표 연결 (3)
|
|
# ─────────────────────────────
|
|
- id: Q-C-001
|
|
query: "TKP-26-0132 세금계산서의 공급가액은?"
|
|
category: C
|
|
order_group_id: TKP-26-0132
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8858
|
|
role: invoice
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: true
|
|
notes: "정답: 74,290원. invoice p1 공급가액 칸. 발주서 총액과 일치 확인용."
|
|
|
|
- id: Q-C-002
|
|
query: "TKP-26-0114 발주금액과 세금계산서 공급가액이 일치하는가?"
|
|
category: C
|
|
order_group_id: TKP-26-0114
|
|
intent: comparison
|
|
expected_locations:
|
|
- doc_id: 8855
|
|
role: invoice
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: true
|
|
- doc_id: 8853
|
|
role: order_xlsx
|
|
location_type: sheet_range
|
|
location_value: "발주서!AB23"
|
|
is_primary: false
|
|
notes: |
|
|
정답: 일치 (양쪽 845,000원). invoice 공급가액 + xlsx TOTAL 비교 필요 —
|
|
cross-format retrieval 특성 강조. C 카테고리지만 order_xlsx도 근거로 필요.
|
|
|
|
- id: Q-C-003
|
|
query: "TKP-26-0132 거래명세표에 기재된 품목은 무엇인가?"
|
|
category: C
|
|
order_group_id: TKP-26-0132
|
|
intent: fact_lookup
|
|
expected_locations:
|
|
- doc_id: 8859
|
|
role: statement
|
|
location_type: page
|
|
location_value: "p1"
|
|
is_primary: true
|
|
notes: |
|
|
정답: "레이져 A516-70 가공비 12t x 1197 x 1197" 외 1건.
|
|
statement p1 품목 테이블.
|
|
|
|
# ─────────────────────────────
|
|
# D. 포맷 간 일치성 (1)
|
|
# ─────────────────────────────
|
|
- id: Q-D-001
|
|
query: "TKP-26-0132 발주번호가 발주서·PDF·세금계산서·거래명세표 4개 문서에 모두 나오는가?"
|
|
category: D
|
|
order_group_id: TKP-26-0132
|
|
intent: comparison
|
|
expected_locations:
|
|
- doc_id: 8856
|
|
role: order_xlsx
|
|
location_type: document_only
|
|
location_value: null
|
|
is_primary: true
|
|
- doc_id: 8857
|
|
role: order_pdf
|
|
location_type: document_only
|
|
location_value: null
|
|
is_primary: false
|
|
- doc_id: 8858
|
|
role: invoice
|
|
location_type: document_only
|
|
location_value: null
|
|
is_primary: false
|
|
- doc_id: 8859
|
|
role: statement
|
|
location_type: document_only
|
|
location_value: null
|
|
is_primary: false
|
|
notes: |
|
|
정답: 모두 나옴 — order_xlsx(D6), order_pdf(PO NO), invoice(<안현기님-TKP-26-0132>),
|
|
statement(<안현기님-TKP-26-0132>). D 카테고리는 "여러 문서 간 일치성" 자체가
|
|
질문이라 document_only 사용 — 위치보다 "같은 발주건에 속하는가"가 본질.
|