Files
Aislo/resources/knowledge/original/_pipeline
eomsangdonandClaude Fable 5 6df07f60a1 fix(knowledge): 검토내역 8건 반영 — 상한 제거·행정규칙 부칙 복원·회귀검사 신설
타 AI 검토내역(tmp/기술문서DB_검토내역_260814.md) 전수 검증 후 동의분 적용.

파이프라인:
- fix_fences.py units[:20] / collect_law.py 별표 limit=80·변경이력 [:40] 상한 제거
- gen_md.py 기준목록 출력을 운영본(04_참조_법령기준_목록.md) 경로로 정정
- README 구경로(docs/raw/law) 3곳 현행화, ruff format 일괄 적용
- verify_structure.py 신설: XML↔md 부칙·목·별표·CHANGELOG 행수 회귀검사

신규 발견 결함 2건 정정 (검토내역에 없던 것):
- 행정규칙 XML은 부칙내용이 부칙 직속(부칙단위 래퍼 없음) — 변환기가 미처리해
  행정규칙 md 22건에 부칙 전무. patch_law_md 확장 후 부칙 138건 복원
- patch_law_md 부칙 dedup 키가 괄호형 타법개정 헤더 미매칭 — 재실행 시
  기존 부칙 1,724건 중복 추가되는 비멱등 결함. 정규식 보강

재수집 (law.go.kr):
- 대기환경보전법 시행규칙 별표 PDF 78건 추가 확보 (80→158, 전수)
- CHANGELOG 절단 3건 재생성 (고용보험법 시행령 42·국가계약법 시행령 41·
  대기환경 45회 — API 연혁과 전건 일치 확인)

기술문서·데이터:
- _최종검증로그: 55문서 스냅샷 범위 명시 (현재 65문서, 신설 10건 미검증 주지)
- 제비율.md frontmatter에 조달청 제비율(2026.04.13)·국민연금법 출처 보강
- 원가_입력변수_사전: 장비대금 지급보증을 공사종류별 표로 정정, csv→json 표기
- labor_const JSON: 원문 노임 118건 전건 일치 확인 후 해시만 재동기화
  (원문 변경분 = 신뢰도 플래그 컬럼뿐, 단가 무변)

검증: verify_structure 결함 0건, patch_law_md 재실행 +0 (멱등),
원가 JSON 해시 56건 중 잔여 불일치 1건(coef_2026 — 사용자 협의 대상)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 07:47:36 +09:00
..

_pipeline — 법령·기준 수집·변환 스크립트

original/ 하위 법령·행정규칙·표준시방서·KS 코퍼스를 수집·변환·색인하는 재현용 스크립트. 경로는 이 폴더 위치 기준 상대(ROOT_DIR = 상위 = original/)로 동작한다. 어느 PC에서 clone 해도 그대로 실행된다.

실행 전 준비

  • Python 3.12 + pymupdf, olefile
  • 인증키(커밋 금지):
    • resources/knowledge/.secrets.local.md 에 KCSC 키 (스크립트가 자동 파싱) — 또는 환경변수 KCSC_KEY
    • law.go.kr OC키는 기본 umsangdon (환경변수 LAW_OC 로 교체 가능)

스크립트 → 워크플로(README W1~W6) 대응

스크립트 역할 워크플로
check_law.py law.go.kr 현행본 시행일·개정일 조회 W1 갱신 판별
collect_law.py 법령·행정규칙 원문(현행+교본시점) + 별표 PDF 수집 W2
patch_law_md.py 보관 XML 기준으로 기존 법령 md의 누락분만 보충(부칙·목). 네트워크 미사용 W2 보정
get_attach.py 고시 첨부파일·안내문 별표의 HWP 원본 수집 W3
get_kcsc.py 국가건설기준센터 KCS 본문(OpenApi) 수집 W2
get_ks.py e나라 표준인증 KS 메타데이터·이력 수집(원문은 DRM) W2
hwp5_text.py 구형 HWP5(OLE) 본문 텍스트 추출 W5
hwpx_text.py HWPX(zip+XML) → md(공백·표 보존). 공백 소실 첨부 재추출 W5
pdf2md.py 별표·첨부 PDF → Markdown 변환(표 복원·이미지 pic/ 추출·손실 방지) W4
fix_spacing.py HWP→PDF 공백 소실 별표/첨부의 프로즈 띄어쓰기 복원(표 보존) W5
qc_lint.py md 전수 품질 점검(테이블·사진·내용누락·띄어쓰기·줄바꿈) W5
verify_pdf2md.py 변환 손실·줄누락 검증 W5
build_srcmap.py law API 결과 → 시행일/개정일 맵(srcmap.json) W6
gen_md.py ../04_참조_법령기준_목록.md 재생성(9열·색인) W6
verify_structure.py 법령 XML ↔ md 구조 회귀검사(부칙·목·별표 수량 대조). 네트워크 미사용 W5

data/ (생성 데이터 = gen_md 입력)

이번 세션에서 만든 매핑. 수동 보정이 섞여 있어 함께 보관한다.

파일 내용
srcmap.json 항목별 시행일·개정일·출처
collected_map.json law.go.kr 수집 결과(판본·별표·개정 횟수)
ks_map.json KS 45건 메타·이력
kcsc_map.json 표준시방서 ↔ KCS 코드 수
items_all.json collect_law.py 수집 대상 목록
ks_codes.json KS 조회 코드 목록
lawapi.json law.go.kr 조회 원자료

표준 실행 순서

cd resources/knowledge/original/_pipeline
python collect_law.py data/items_all.json     # 법령·행정규칙 + 별표
python get_attach.py                           # 첨부·HWP
python get_kcsc.py                             # KCS 본문
python get_ks.py                               # KS 메타
python pdf2md.py                               # PDF → md (전건)
python verify_pdf2md.py                        # 검증
python gen_md.py                               # 색인 재생성

수집은 새로 받은 현행본을 현행_새시행일.*추가한다(기존 판본 삭제 금지). 상세 규칙은 resources/knowledge/README.md W1~W6 참조.

변환 규칙이 바뀐 경우 (2026-08-14 감사 반영)

기존 법령 md 에는 수집 이후 후처리(ASCII 박스표 → 마크다운 표, 수식, 이미지)가 적용돼 있다. law_to_md() 로 전체를 다시 렌더링하면 그 결과가 사라지므로 전량 재생성 금지. 대신 누락분만 채우는 patch_law_md.py 를 쓴다.

python patch_law_md.py --dry     # 보충량 확인
python patch_law_md.py           # 저장

과거 결함 2건(이 도구로 보정 완료 — 부칙 2,264건·목 2,114줄):

  • 부칙단위[:20] 상한 → 법제처 XML 은 부칙이 오래된 순이라 최신 부칙(연도별 요율 특례 등)이 통째로 절단됐다. 상한 제거함.
  • (가·나·다…)이 가 아니라 직속 자식으로 오는 구조를 처리 못 해 누락. 항의 자식을 문서 순서대로 순회하도록 수정함.