Files
Aislo/B08_Quantity/B08_Quantity_Build_WorkItemMaster_Forms.py
T
eomsangdonandClaude Opus 5 1414c4d3cd fix(b08): 3바퀴 — 잘린 계수 34 되살림 · 못 읽던 [주] 세 꼴 · 실값 13표를 sub_requirement 로
브레인 3바퀴 차례대로.

**① 잘린 진짜 계수 되살림** — 2바퀴에서 34건이 함께 잘렸던 자리. 까닭 둘이었음:
  · 「> 【산출 예시】」 인용이 [주] 중간에 끼면 거기서 끊었음 → 뒤에 오는 ⑤⑥ 가산·할증이 사라짐
  · 「- 4. 고철공제 : A=1㎥×0.008×…」처럼 **번호를 달고 이어지는 진짜 규칙**을 절 제목으로 봤음
  ⇒ 끊는 자리를 **구조**(다음 절 · 새 표)로만 두고, 그 사이는 **건너뛰되 안 끊음**.
    제목은 **알맹이 없는 짧은 줄**(콜론·등호·백분율 없고 30자 이하)일 때만.
    ⚠ 「숫자가 있으면 제목 아님」으로는 못 가름 — 「- 3. 뿌리제거(100본당)」이 제목임(두 번 겪음)
  되살아난 것 — 고철 공제 50kg/㎥ · 위험목 인력 100% 가산 · 벌채 관목 30%·조재 20% ·
  집재 주행곤란·잔존목 10% · 할인할증 줄 여럿

**② 못 읽던 [주] 세 꼴** (랩탑 메인이 짚음)
  · 별표로 시작하는 줄 — 이어짐 글머리에 `*` 를 넣음
  · 인용 산출예시 뒤에 오는 줄 — ①에서 함께 풀림
  · **긴 표에 붙은 [주]** — 줄 수 제한(48)이 긴 표를 잘랐음 → 구조로만 끊고 수는 안전망으로만(400)
  ⇒ 산림 notes 표 306 → 309 · 줄 1,082 → 1,154

**③ 실값인데 「참고」로 빠져 있던 표 13** → `sub_requirement`
  ⚠ `requirement` 로 올리지 않음 — 상위 공종이 이미 세는 몫을 두 번 셈
    (F0393 은 `B09_Estimation_Euroform`, F0408·F0410 은 B08 표가 이미 직접 읽음).
    `reference` 면 금액이 0원 증발 ⇒ 「값은 실값, 자리는 상위 공종 종속」 딱지를 둠(안티그래비티 권고)
  보고서가 27 중 19만 가려 놓아 남은 여덟을 훑어 **F0338(콘크리트 포장 인력 · 포장공 3인·시공량 100/150㎥)**
  하나를 더 찾음. 나머지 열넷은 설계 규격·조건 분류·배합비율 조견표라 `reference` 가 맞음

자동 대조 장부(`work_item_master_source_known.json`) 손질 — 고쳐진 줄은 `--prune`,
남은 어긋남은 **사유를 달아** 적음. ⚠ 남은 [주] 어긋남은 다 **마스터가 더 가진 쪽** —
고칠 자리는 마스터가 아니라 **원문 md 쪽 추출**임(인용 뒤·별표·긴 표에서 아직 끊김)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsGw1Dz9HmhuAxGisxmDPF
2026-09-18 00:35:00 +09:00

291 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""공종 마스터 — **사람이 가른 표 형태** (2026-09-13 축 C 1장 · 미판정 표 판정).
자동 판정(`detect_form`)이 못 가르거나(undetermined 76표) 잘못 가른 표만 싣는다.
표마다 **왜 그렇게 갈랐는지 한 줄** — 원문 `(산림청고시 제2025-82호) 산림사업 표준품셈.md`.
⚠⚠ 뒤집히면 20배 틀림 — `productivity`(1÷값) / `requirement`(값÷밑수)는 **표 머리와 표 바로 위
본문의 단위 표현**으로만 가른다. 행 이름·비고의 직종 이름에 끌려 읽지 않는다.
⚠ **못 가른 표는 싣지 않는다** — undetermined 로 남는다.
2026-09-17 안티그래비티 원문 대조로 **마지막 14표를 가름** — 산림 미판정이 0 이 됐다.
⚠ `coefficient`·`reference` 로 가른 표는 일위대가 줄로 안 읽힌다(자원 축이 건너뜀) — 시공능력
공식 계수는 형태와 상관없이 공식 읽기가 표를 직접 본다.
⚠ 표 번호는 원천 차례로 매긴 것이라 **절 번호를 함께 대조**한다 — 어긋나면 빌드를 멈춘다.
"""
from __future__ import annotations
#: 표 번호 → (절 번호, 형태, 까닭).
FORM_JUDGMENTS: dict[str, tuple[str, str, str]] = {
# ── 제2장 재료 기준 ─────────────────────────────────────────────
"F0044": (
"2-1-1",
"reference",
"기계별 주연료(ℓ/일·대)·잡품(%) — 행이 자원이 아니라 기계, 재료비 산출 기준",
),
"F0045": ("2-1-1", "reference", "위와 같은 모양(2드럼 케이블윈치)"),
"F0047": (
"2-1-2",
"reference",
"기계별 경유(ℓ/일·대)·잡품(%) — [주]③ 「1일당 소요량」, 행이 기계",
),
"F0048": ("2-1-3", "reference", "머리 「소요비용(원)」 — 품이 아니라 교체 1회당 금액"),
"F0054": ("2-1-5", "requirement", "본문 「(본당)」 + 행 「소금처리량(g)」 — 본당 재료 소요량"),
"F0063": (
"2-1-13",
"reference",
"「소모율 0.00125개/hr」 — 기계 시간당 소모품, 공종 밑수가 아님",
),
# ── 제5장 조림·녹화 ─────────────────────────────────────────────
"F0100": ("5-3-1", "reference", "수종별 묘목 규격(소·중·대묘) 표"),
"F0101": ("5-3-1", "reference", "간장·근원경 규격 기준 표"),
"F0105": ("5-3-4", "coefficient", "지주목 미설치 감률 「인력품의 10%·20%」"),
"F0107": ("5-3-5", "coefficient", "위와 같은 감률(흉고직경 표)"),
"F0137": ("5-24-2", "reference", "머리 「종자배합비율(%)」 조견표"),
"F0138": ("5-24-2", "reference", "위와 같은 조견표(기타 적용지역)"),
"F0146": ("5-29", "coefficient", "행이 K(버킷계수)·f·E·Cm — 굴착기 작업량 공식 계수"),
# ── 제7장 수확·운재 ─────────────────────────────────────────────
"F0187": ("7-9-2", "coefficient", "본문 「(단위 : %)」 — 집재재적·거리별 수집량 증가율"),
"F0189": ("7-11", "productivity", "표 바로 위 「(㎥/1대, 1일)」 — 대당 일 작업량"),
"F0190": ("7-11", "productivity", "위와 같음(최대집재거리 80m 이하)"),
"F0194": ("7-13", "reference", "검척 산출 예시(말구직경×개수) 표"),
"F0196": (
"7-15-1",
"productivity",
"표 바로 위 「(㎥/1대, 1일)」 — 「운반량」 줄이 작업량, 「회수」 줄은 참고",
),
"F0197": (
"7-15-2",
"productivity",
"표 바로 위 「(㎥/1대, 1일)」 — 「운재량」 줄이 작업량, [주]① 1대 1일",
),
"F0198": ("7-16", "productivity", "표 바로 위 「(㎥/1대, 1일)」 — 「운반량」 줄이 작업량"),
"F0199": ("7-17", "productivity", "표 바로 위 「(㎥/1대, 1일)」 — 「운반량」 줄이 작업량"),
"F0200": ("7-18", "productivity", "표 바로 위 「(㎥/1대, 1일)」 — 「운반량」 줄이 작업량"),
# ── 제8장 방제 ──────────────────────────────────────────────────
"F0205": ("8-2-1", "reference", "약제 이름·제형 목록"),
"F0208": ("8-2-2", "reference", "선정약제 목록 + 원액 주입량(㎖/㎝) 기준 — 품 표는 따로 있음"),
"F0212": ("8-2-3", "reference", "위와 같은 선정약제 목록"),
"F0216": ("8-2-4", "reference", "위와 같은 선정약제 목록"),
"F0218": ("8-2-5", "reference", "위와 같은 선정약제 목록"),
"F0453": (
# 2026-09-14 절 8-2-3 → 14-2 — 원본이 [주] 「…8-2-3 굴착기(2025)」…」 를 절로 읽던 것을
# 앞 절 이어받기로 고치자 부록 앞 마지막 절(14-2)로 옮겨 감. 부록엔 절 번호가 없어 여전히
# 제자리가 아님 — 참고표라 값에 안 닿음.
"14-2",
"reference",
"〔부록 2〕 산림사업별 적용 가능 공종 목록 — 절 경계가 밀려 붙음",
),
"F0220": (
"8-3",
"productivity",
"머리 「벌목조재 (㎥/인)·무더기 훈증 (RM/인)·그루터기 박피 (본/인)」 — 인당 작업량",
),
"F0221": ("8-3", "coefficient", "본문 「(단위: %)」 — 수종·직경별 지조율"),
"F0222": ("8-3", "coefficient", "머리 「비율(수간재적의 %)」 — 근주재적 산정율"),
"F0227": ("8-6-1", "reference", "기종별 희석배수별 약제량(L, 1회) — 살포 계산표"),
"F0231": ("8-6-3", "reference", "희석배수별 약제소요량(㎖) — 물의 양 대비 계산표"),
# ── 제9장 토공 — 시공능력 공식 계수 ────────────────────────────
"F0281": ("9-15-1", "coefficient", "행이 K·f·E·Cm — [주]② Q1=3600×q×K×f×E/Cm"),
"F0282": ("9-15-2", "coefficient", "행이 T·L·E·q — 불도저 작업량 공식 계수"),
"F0284": ("9-16-2", "coefficient", "행이 V·W·E·D — [주]② Q=1000×V×W×E×D×f/N"),
"F0285": ("9-16-3", "coefficient", "흡입준비·운반·흡입·대기 시간 — 살수차 사이클 시간"),
"F0287": ("9-18", "coefficient", "행이 K·f·E·Cm — [주]① Q1=3600×q×K×f×E/Cm"),
"F0295": ("9-22", "coefficient", "행이 K·f·E·Cm — [주]③ Q1=3600×q×K×f×E/Cm"),
# ── 제10장 운반 ─────────────────────────────────────────────────
"F0300": ("10-3-3", "reference", "「운반비·하차비」 적용 항목 — 값이 없는 구성 안내"),
"F0301": ("10-4", "coefficient", "t1·t2·t3·t4 — 트레일러 운반 사이클 시간"),
"F0308": ("10-7-4", "coefficient", "1사이클당 운반량 q — 모노레일 공식 계수"),
"F0309": ("10-7-4", "coefficient", "본문 「(단위: 분/1회당)」 — 적재·짐부리기 시간"),
"F0316": ("10-9-1", "reference", "규격별 1회당 표준 운반량(kg·개·㎡) — 적재 기준"),
"F0319": ("10-11", "coefficient", "행이 L·E·q0 — [주]② q=3.2×e, Cm 공식 계수"),
"F0320": ("10-12-1", "coefficient", "행이 K·E0·Cm — 굴착기 적재 공식 계수"),
"F0321": ("10-12-1", "coefficient", "적재·t2·적하 시간 — 덤프트럭 사이클 공식 계수"),
"F0324": (
"10-13-2",
"reference",
"드론운반 단가산출 항목(준비시간·왕복비행시간 식) — [주] 일본 산출 예",
),
# ── 제11·12장 ───────────────────────────────────────────────────
"F0328": ("11-4", "coefficient", "행이 q·k·f·E — [주]① Q=3600×q×k×f×E/Cm"),
# 2026-09-14 절 12-2 → 12-17-1 — 원본이 펌프카 타설 [주] 「…12-2 표면 마무리를 따른다.」 를
# 절 제목으로 읽어 12-2 에 붙어 있던 표(빌더가 앞 절 이어받기로 고침). 형태 판정은 그대로.
"F0358": ("12-17-1", "reference", "시설유형 Type-~Ⅳ 적용 기준 설명"),
"F0360": ("12-17-1", "reference", "현장조건 Type-~Ⅲ 적용 기준 설명"),
"F0385": (
"12-34-1",
"requirement",
"인력(인)·기계(대, Q=5.4㎥/hr) 소요량 표 — 「별도계상」 은 레미콘 자재 줄 비고일 뿐",
),
"F0388": (
"12-34-4",
"sub_requirement",
"신축이음 채움재 — 필요수량·고철대 감 3% 가 적힌 실값 표",
),
"F0390": (
"12-36",
"sub_requirement",
"P.C BOX 설치 — 미장공 0.14인·보통인부 0.05인 실값 표",
),
"F0392": ("12-38-1", "coefficient", "사용횟수별 잔존율(12회 25%·25회 10%)"),
"F0394": ("12-38-2", "coefficient", "부자재 요율 「주자재비의 24%·52%·79%」"),
"F0396": ("12-38-3", "reference", "설치 유형(복잡·보통·간단) 적용 시설 설명"),
# ── 제13장 구조물 ───────────────────────────────────────────────
"F0400": ("13-2-3", "reference", "큰돌 직경별 뒷길이 기준(㎝)"),
"F0406": (
"13-4-1", # 2026-09-17 절 바로잡음 — [주]④ 인용을 13-3 제목으로 읽었던 것(표는 13-4-1 메쌓기 아래)
"reference",
"〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준",
),
"F0408": (
"13-4-3",
"sub_requirement",
"고임돌 소요량(㎥/㎡) — 석재 투입 체적 실값(B08 고임돌표가 이미 읽음)",
),
"F0410": (
"13-4-4",
"sub_requirement",
"찰쌓기 뒷채움 콘크리트(㎥/㎡) — 레미콘 실값(B08 채움표가 이미 읽음)",
),
"F0411": ("13-4-4", "reference", "[주]⑨ 성토 뒤채움 조약돌 두께(㎝) 기준"),
"F0412": (
"13-4-4",
"reference",
"[주]⑩ 뒷길이 표준(㎝) — 자동 판정이 「(m)」에 걸려 소요량형으로 오판",
),
"F0413": (
"13-4-4",
"reference",
"[주]⑪ 표준경사(1:n) — 자동 판정이 소요량형으로 오판, 찰쌓기(인력)를 막음",
),
"F0429": ("13-10-2", "coefficient", "[주]⑥ 관입률별 계수"),
"F0439": ("13-12-2", "coefficient", "[주]⑦ 높이·기울기 할증(%)"),
"F0446": ("13-15-2", "reference", "작업조건(어려운·쉬운) 구분 기준"),
# ── 미판정 14 — 2026-09-17 안티그래비티 원문 대조 규명(브레인 넘김) ─────────────
# `산림품셈_form_미판정_14개_원문대조_규명.json` · 머리 소실 9 · 혼합 3 · 공식 1 · 글값 1.
# ⚠ 여기까지가 산림 미판정 전부다 — 다 채우면 `form_undetermined` 가 0 이 된다.
"F0140": (
"5-26-1",
"requirement",
"머리 소실 — 윗 2줄 막갈이깊이(cm)를 열 머리로 되살림, 토성×깊이별 보통인부(100㎡당)",
),
"F0141": ("5-26-2", "requirement", "위와 같은 모양(중갈이) — 토성×깊이별 보통인부(100㎡당)"),
"F0142": ("5-26-3", "requirement", "위와 같은 모양(전면갈이) — 토성×깊이별 보통인부(100㎡당)"),
"F0195": (
"7-14",
"productivity",
"머리 소실 — 값이 「1인 1일 공정량」이라 생산량형(품 = 1 ÷ 값)",
),
"F0248": ("9-7-1", "coefficient", "머리 소실 — 값이 품이 아니라 계산식 파라미터"),
"F0322": ("10-13-1", "requirement", "머리 소실 — 묘목 1,000본당 소요량"),
"F0323": ("10-13-2", "requirement", "위와 같음(묘목 1,000본당)"),
"F0333": ("12-1-3", "requirement", "머리 소실 — ㎥당 소요량"),
"F0346": ("12-11-1", "requirement", "머리 소실 — m당 소요량"),
"F0169": ("7-1-1", "productivity", "혼합 — 값이 「㎥/인·일」이라 생산량형"),
"F0304": ("10-6-3", "requirement", "혼합 — 소요량형(밑수는 표 밖이라 미확보로 남김)"),
"F0356": ("12-17-1", "productivity", "혼합 — 값이 「㎥/일」이라 생산량형"),
# ⚠ 안티그래비티는 이 표를 `formula` 로 적었으나 **낱말을 새로 만들지 않는다** —
# 받는 쪽이 모르는 형태를 만나면 조용히 건너뛴다. 뜻이 같은 `coefficient`(계산식 파라미터)로 둔다.
"F0257": (
"9-11-1",
"coefficient",
"공식 명세 — 시공능력 공식 파라미터(안티그래비티 판정 `formula`)",
),
"F0349": (
"12-11-3",
"requirement",
"글값 — 값이 글로 적힌 소요량형(밑수는 표 밖이라 미확보로 남김)",
),
# ── 실값인데 「참고」로 빠져 있던 표 — 2026-09-18 2바퀴 대조(안티그래비티 권고) ─────
# ⚠ **`requirement` 로 올리지 않는다.** 이 표들은 홀로 발주되지 않고 **상위 공종에 딸린**
# 자재·노무 산출표라, 품으로 세우면 위 공종이 이미 세는 몫을 **두 번 센다**
# (F0393 은 `B09_Estimation_Euroform` 이, F0408·F0410 은 B08 표가 이미 직접 읽는다).
# 그렇다고 `reference` 로 두면 **금액이 0원으로 증발한다** — 그래서 낱말을 하나 둔다.
# `sub_requirement` = 「값은 실값, 자리는 상위 공종 종속」. 오늘 읽는 쪽은 건너뛰고,
# 자원 축이 붙는 날 이 딱지만 보면 된다(로직은 나중에 · 브레인).
"F0369": ("12-22", "sub_requirement", "P.V.C 파이프 설치 — 아스팔트 4kg·방수공 0.034인 실값"),
"F0380": ("12-30-1", "sub_requirement", "다웰바 신축이음부 — 재료비의 5%·특별인부 0.1인 실값"),
"F0381": ("12-30-2", "sub_requirement", "다웰바 접속스라브부 — 위와 같음"),
"F0382": ("12-31", "sub_requirement", "물끊기 홈 — 특별인부 0.1인·보통인부 0.001인 실값"),
"F0383": ("12-32", "sub_requirement", "전선관 설치 — 설치비(주재료비의 5%) 실값"),
"F0386": ("12-34-2", "sub_requirement", "합판거푸집(3회) — 보통인부 0.29인·진동기 2대 실값"),
"F0391": (
"12-37",
"sub_requirement",
"무근콘크리트 타설 — 콘크리트공 0.15인·보통인부 0.27인 실값",
),
"F0393": ("12-38-2", "sub_requirement", "유로폼 사용수량 — 부자재 주재료비의 24~79% 실값"),
# 보고서가 셈에서 빠뜨린 자리 하나 — 27 중 19만 가려 놓았는데, 남은 여덟을 훑어 찾음.
"F0338": (
"12-6",
"sub_requirement",
"콘크리트 포장(인력) — 포장공 3인·시공량 100/150㎥ 작업조 실값",
),
}
#: 표 번호 → (절 번호, 밑수 수, 밑수 단위, 까닭).
#: **머리가 소실돼 자동으로는 못 읽는 표**의 밑수만 싣는다 — 원문 대조로 확인한 것만.
#: ⚠ 자동으로 읽히는 표는 여기 넣지 않는다. 두 곳에서 값을 매기면 어느 쪽이 정본인지 흐려진다.
#: 근거 — `resources/knowledge/technical_info/01_임도/05_원가정보/
#: 산림품셈_form_미판정_14개_원문대조_규명.json` (2026-09-17 안티그래비티 원문 대조).
BASIS_JUDGMENTS: dict[str, tuple[str, float, str, str]] = {
"F0140": ("5-26-1", 100.0, "㎡", "막갈이 — 머리 소실 · 원문 「100㎡당」"),
"F0141": ("5-26-2", 100.0, "㎡", "중갈이 — 위와 같음"),
"F0142": ("5-26-3", 100.0, "㎡", "전면갈이 — 위와 같음"),
"F0322": ("10-13-1", 1000.0, "본", "묘목 운반 — 원문 「묘목 1,000본당」"),
"F0323": ("10-13-2", 1000.0, "본", "위와 같음"),
"F0333": ("12-1-3", 1.0, "㎥", "원문 「㎥당」"),
"F0346": ("12-11-1", 1.0, "m", "원문 「m당」"),
# ── 원문 md ↔ 마스터 전수 대조 60건 중 **원문 괄호가 분명하고 분모가 하나인 것만** ────
# 안티그래비티 보고(02544795) · 원문 줄을 직접 열어 괄호 글을 확인한 것만 싣는다.
# ⚠ 보고가 적은 단위를 그대로 믿지 않는다 — 「인」을 밑수로 적은 자리가 셋 있었고
# 그 자리(8-6-2 드론방제·8-6-3 지상방제)는 **2026-09-09 에 오독으로 판정된 바로 그 표**다.
"F0082": ("3-8", 1.0, "ha", "드론 영상 촬영 — 원문 「(단위 : 인/ha)」"),
"F0256": ("9-11-1", 1.0, "일", "원문 「(단위: 일당)」"),
"F0310": ("10-7-4", 1.0, "일", "원문 「(단위: 인/1일당)」"),
"F0311": ("10-7-4", 1.0, "기", "원문 「(단위: 1기당)」"),
"F0312": ("10-7-4", 1.0, "일", "원문 「(단위: 1일당)」"),
"F0313": ("10-8-1", 1.0, "일", "원문 「(단위: 인/1일당)」"),
"F0314": ("10-8-2", 1.0, "기", "원문 「(단위: 1기당)」"),
"F0315": ("10-8-3", 1.0, "일", "원문 「(단위: 1일당)」"),
"F0356": ("12-17-1", 1.0, "일", "원문 「(단위: ㎥/일 당)」"),
"F0424": ("13-8", 1.0, "㎡", "원문 「(단위: 인/㎡)」"),
"F0444": ("13-14", 1.0, "개", "원문 「(단위: 인/개)」"),
# ⚠ **작업조 표는 넣지 않는다**(2026-09-17 유로폼 호표가 사라져 드러남).
# 12-7-1·12-7-2·12-8 콘크리트 타설 · 12-38-3 유로폼 설치·해체 · 13-16-2 — 원문이 「(단위: 일 당)」
# 이라 넣고 싶어지지만, 이 표들은 **밑수가 시공량 열**이다(1단위당 = 인원 ÷ 시공량 ·
# B09 CrewOutput). 「1일」을 밑수로 박으면 그 길이 막혀 **호표가 통째로 사라진다**
# (2026-09-14 301 판정이 그래서 작업조 표를 미확보 목록에서도 뺐다).
# ⚠ **왜곡 고침 하나** — 값이 아니라 **밑수 단위**가 틀려 있던 자리.
# 원문 L7489 가 「(단위: 1일당)」인데 마스터가 「개」로 서 있었다(13-10-2 윈치말뚝 박기).
"F0430": ("13-10-2", 1.0, "일", "왜곡 고침 — 원문 「(단위: 1일당)」인데 「개」로 서 있었음"),
}
def judged_basis(table_id: str, number: str | None) -> tuple[float, str, str] | None:
"""사람이 확인한 `(밑수 수, 단위, 까닭)`. 없으면 `None`. 절 번호가 어긋나면 멈춘다."""
found = BASIS_JUDGMENTS.get(table_id)
if found is None:
return None
section, quantity, unit, why = found
if section != number:
raise ValueError(
f"밑수 판정 {table_id} 의 절 {section} 이 원천의 {number} 와 다릅니다 — "
"원천 표 차례가 바뀌었으니 판정을 다시 대조할 것"
)
return quantity, unit, f"사람 판정 — {why}"
def judged_form(table_id: str, number: str | None) -> tuple[str, str] | None:
"""사람이 가른 `(형태, 까닭)`. 없으면 `None`. 절 번호가 어긋나면 멈춘다."""
found = FORM_JUDGMENTS.get(table_id)
if found is None:
return None
section, form, why = found
if section != number:
raise ValueError(
f"표 형태 판정 {table_id} 의 절 {section} 이 원천의 {number} 와 다릅니다 — "
"원천 표 차례가 바뀌었으니 판정을 다시 대조할 것"
)
return form, f"사람 판정 — {why}"