Legal Code Manager
배송 업무에 활용하는 법정동코드의 변경사항을 자동으로 추적하는 CLI 도구. code.go.kr에서 최신 데이터를 다운로드하고 이전 데이터와 비교하여 DB 업데이트 직전까지의 프로세스를 자동화합니다.
Overview
프로젝트 개요
배송과 관련된 업무에서는 행정동/법정동 코드를 시스템에 등록하여 활용합니다. 문제는 이 법정동 코드가 종종 변경된다는 것입니다. 시군구 통합, 명칭 변경, 폐지 등이 발생하면 수작업으로 확인하고 반영해야 했습니다.
이 도구는 code.go.kr에서 법정동코드 전체자료를 자동 다운로드하고, 이전 데이터와 메모리 내에서 비교하여 변경내역을 도출합니다. 내부 절차상 100% 자동화는 어렵지만, DB 업데이트 직전까지의 프로세스를 자동화할 수 있었습니다.
Architecture
프로젝트 구조
legal-code-manager/
├── automate_legal_codes.py # 자동화 파이프라인 (단일 파일)
├── requirements.txt # 의존성 정의
├── data/ # 다운로드 원본 이력 (txt)
│ ├── 법정동코드_20250301.txt
│ └── 법정동코드_20260329.txt
└── output/ # 최종 결과 (xlsx)
└── 법정동코드_변경내역_20260329.xlsx다운로드 & 파싱
code.go.kr에서 법정동코드 전체자료 zip을 다운로드합니다. EUC-KR/CP949 인코딩을 자동 감지하여 탭 구분 텍스트를 DataFrame으로 변환합니다.
시군구 추출 & 비교
10자리 법정동코드에서 시군구 레벨(시도2+시군구3)만 추출합니다. 이전/신규 데이터를 비교하여 5가지 변경 유형(N/D/U/P/R)을 분류합니다.
중복 감지 & 파일 관리
SHA256 해시로 이전 데이터와 동일하면 저장·비교를 건너뜁니다. data/ 디렉토리에 날짜별 원본을 보관하여 이력을 추적합니다.
Key Features
주요 기능
자동 다운로드 & 파싱
code.go.kr에서 법정동코드 전체자료를 자동으로 다운로드합니다. zip 압축 해제, 한글 인코딩 감지, 탭 구분 파싱까지 원커맨드로 처리합니다.
5가지 변경 유형 분류
신규(N), 삭제(D), 명칭변경(U), 폐지전환(P), 복원(R) 5가지 유형으로 변경사항을 정확하게 분류하여 업무 대응이 용이합니다.
SHA256 중복 감지
이전 데이터와 해시를 비교하여 변경이 없으면 즉시 종료합니다. cron으로 매일 실행해도 불필요한 처리 없이 효율적으로 동작합니다.
CLI 옵션
--skip-download로 로컬 데이터만으로 비교하거나, --old-file로 비교 기준을 직접 지정할 수 있습니다. 유연한 옵션으로 다양한 상황에 대응합니다.
Flow
실행 흐름
code.go.kr에서 법정동코드 전체자료 zip 다운로드 및 압축 해제
EUC-KR/CP949 자동 감지 후 탭 구분 텍스트를 DataFrame으로 변환
10자리 코드에서 시군구 레벨만 필터링, 시도/시군구명 분리
이전 데이터와 코드별 비교, 5가지 변경 유형(N/D/U/P/R) 분류
터미널 테이블 출력 + 변경내역 xlsx 파일 저장
Roadmap
향후 개선 과제
cron 자동 실행
매일 정해진 시간에 자동으로 다운로드 & 비교를 수행합니다. 변경이 감지된 경우에만 후속 프로세스를 트리거합니다.
변경 알림
새로운 변경이 감지되면 macOS 알림, Slack, 이메일 등으로 담당자에게 즉시 알림을 전송합니다.
비교 레벨 선택
현재 시군구 레벨만 지원하지만, --level 옵션으로 읍면동·리 레벨까지 비교 범위를 확장합니다.
이력 자동 정리
data/ 디렉토리의 오래된 원본 파일을 보관 기간 설정에 따라 자동으로 정리합니다.
Comments
댓글
불러오는 중...