# 제22대 법률안 전체 목록 수집

## 구현 범위

- 공식 원천: 대한민국 국회 「법률안 심사 및 처리(의안검색)」
- 공식 안내: https://open.assembly.go.kr/portal/data/service/selectServicePage.do/O4K6HM0012064I15889
- 공공데이터포털: https://www.data.go.kr/data/15125994/openapi.do
- 데이터 API: `https://open.assembly.go.kr/portal/openapi/TVBPMBILL11`
- 인증: 서버에 등록된 열린국회정보 인증키. `KEY` 요청 인자 사용. 브라우저·로그·문서에 키를 노출하지 않습니다.
- 요청: `AGE=22`, `Type=json`, `pIndex=1부터`, `pSize=500`. 공식 가이드는 최대 1,000건입니다.
- 2026-09-30 공식 공개 샘플이 알려준 총건수: 21,083건. 실제 완료 건수와 시간은 /bills 화면을 확인하세요.
- 의원·정부·위원회 등 제안자 종류를 제한하지 않습니다. 제22대 **법률안** 대상이며 예산안·동의안 등 모든 의안 종류나 역대 국회 전체를 의미하지 않습니다.
- 응답 명세는 `data/contracts/TVBPMBILL11-2026-09-30.json`에 공식 문서 서버 응답으로 보존합니다.

## 주요 필드

BILL_ID 의안 ID / BILL_NO 의안번호 / AGE 대수 / BILL_NAME 법률안명 / PROPOSER 제안자 / PROPOSER_KIND 제안자 구분 / PROPOSE_DT 제안일 / CURR_COMMITTEE 소관위원회 / LINK_URL 공식 상세 URL / RST_PROPOSER 대표발의자 / RST_MONA_CD 대표발의자 코드 / PROC_RESULT_CD 본회의 처리결과 / PASS_GUBUN 의안 구분. 위원회·법사위·본회의 단계별 제공 날짜도 저장합니다. 원천에 없는 값을 추정하지 않습니다.

## 검증과 장애 복구

1. 한 번 실행하면 최대 500건 한 페이지를 가져옵니다. 페이지 원문·SHA-256·수집시각을 함께 저장합니다.
2. 저장과 페이지 커서를 하나의 트랜잭션으로 갱신합니다. 중단되면 다음 페이지부터 이어갑니다.
3. 대수·필수 필드·공식 링크·페이지 내/간 ID 중복·공식 총건수를 검증합니다.
4. 마지막 페이지 후 첫 페이지를 다시 받아 총건수와 내용 해시를 대조합니다. 최종 검증 요청만 실패한 경우도 이어서 검증합니다.
5. 수집 중 목록이 바뀌거나 건수가 어긋나면 완료로 표시하지 않습니다. 검증 완료한 이전 회차를 계속 서비스합니다. 첫 회차만 부분 수집임을 명확히 표시합니다.
6. 실패 후 5분 대기, 동시 실행 잠금, 한국시간 오전 4시 기준 같은 수집일 중복 실행 제한이 있습니다. 방문자를 가장하거나 접속 차단을 우회하지 않습니다.
7. 목록 원문은 최근 완료 2회차와 현재 진행 회차를 보존합니다. 24시간 지난 더 오래된 회차는 실행마다 최대 2,000개 목록 행씩 정리합니다. 기존 정치인·법안 상세·표결·사용자 글은 정리 대상이 아닙니다.

공식 API가 시점 고정 스냅샷이나 정렬 계약을 제공한다고 확인된 것은 아닙니다. 위 검증으로 페이지 이동에 따른 누락 위험을 줄이지만, 같은 총건수로 중간 항목이 동시에 교체되는 모든 상황을 완벽하게 감지하지는 못합니다.

## 조회

`GET /api/bill-catalog?q=검색어&page=1` : 검색 결과 30건씩. 이름·의안번호·제안자 검색.

`GET /api/bill-catalog?id=의안ID` : 공식 목록 항목과 출처.

법안 화면 /bills 에서 전체 진행률·마지막 검증 시각·검색·페이지 이동·원문을 확인합니다. 이미 상세 연결한 법안은 기존 상세 화면으로 연결합니다. 전체 목록을 홈 화면에 한꺼번에 내려보내지 않습니다.

관리자는 데이터 출처의 수집 운영 화면에서 **법률안 전체 목록 수집·이어받기**를 누를 수도 있습니다. 이 실행 중에는 화면을 열어두세요. 닫으면 다음 실행에서 저장된 지점부터 이어갑니다.

## 정기 실행 상태 — 예약 등록

2026-10-01 04:43 KST, Sites에 매일 한국시간 오전 4시 예약을 등록하고 활성화했습니다. 첫 예정은 2026-10-02 04:00 KST입니다. 브라우저를 열어두지 않아도 작업이 실행되도록 등록되었습니다. 등록 자체는 무인 수집 실행 성공을 의미하지 않습니다. 실제 결과는 작업 결과 및 화면의 완료 시각으로 확인합니다.

실행 경로는 `POST /api/bill-catalog`이며 고정된 제22대 공식 목록만 한 페이지 수집합니다. 소유자 전용 사이트의 지원되는 서비스 접근을 사용하고, API 키는 서버에 유지합니다. 예약 작업은 매 실행 /docs/COLLECTION_JOB.md 를 읽고 이어받기·검증·오류 보고를 수행합니다. 사이트를 공개할 경우 별도 작업 인증을 먼저 갖춰야 합니다.

오전 4시는 초기 운영 기본값이며 실제 방문량 분석 결과는 아닙니다. 성공한 목록은 같은 수집일에 중복 수집하지 않고, 다음 날 오전 4시부터 새 회차를 시작할 수 있습니다.

## 비용·이용 조건

공공데이터포털은 무료·이용허락범위 제한 없음으로 표시합니다. 개발계정 자동승인/운영계정 심의승인이며 정확한 운영 트래픽은 승인 계정 조건을 확인해야 합니다. 공식 메타데이터의 요청제한횟수는 200,000이고 일별 제한 오류 설명도 있습니다. 계정별 부여량을 이 수치로 확정하지 않습니다. 21,083건 기준 최초 수집은 43페이지와 첫 페이지 재검증 1회입니다. 비용 결제나 추가 계정 생성은 하지 않았습니다.

목록 수집 완료는 모든 원문 전문·개별 공동발의·기명표결·AI 요약의 수집 완료를 뜻하지 않습니다. 대표발의자 이름만으로 통합 Person ID를 만들거나 연결하지 않습니다.
