나라장터 공공 입찰

[입찰 프로젝트] 전자 입찰 관련 데이터 크롤링과 중앙 관리 시스템 구축을 위한 개발 요구 사항 정리 #1

khakiskech 2025. 4. 7. 01:26

1. 개요

국내 전자입찰 시스템은 나라장터(G2B)를 비롯하여 국방전자조달, 수자원공사, 한국전력공사, 한국도로공사, 한국가스공사, 한국토지주택공사, K-apt, 15예가조합 등 여러 기관에서 운영되고 있습니다. 이들 시스템의 데이터를 중앙에서 통합 관리할 수 있도록 크롤링하고, 표준화된 데이터로 저장 및 검색할 수 있는 시스템을 구축하는 것이 목표입니다.


2. 데이터 항목 정의

각 입찰 공고의 정보를 아래와 같이 표준화하여 저장합니다.

A. 기본 필수 항목

  • 공고명
    입찰 공고의 제목 그대로 표기. (예: “OO건설사업 입찰 공고”)
  • 사업 분야
    • 1차 분류:
      • 전체, 토목, 건축, 토건, 조경, 산업, 환경, 철콘, 토공, 상하수도, 금속, 창호, 실내건축, 석공, 조경, 식재, 시설물, 시설물유지 등
    • 2차 세부 분류:
      • 도장, 포장, 습식, 방수, 비계, 보링, 강구조물, 판금, 건축물, 수중, 승강기, 철도, 궤도, 철강재, 준설, 삭도, 기계설비, 가스시설1, 가스시설2, 가스시설3, 난방1, 난방2, 난방3, 지하수, 전기, 정보통신, 전문, 소방, 소방기계, 소방전기, 문화재조경, 문화재보수, 하수처리, 소음진동, 대기방지, 수질방지, 산림사업, 골재채취, 옥외광고, 기타
  • 발주처
    입찰을 진행하는 기관(중앙정부, 지방자치단체, 공공기관 등)
  • 입찰 공고 일자
    공고가 등록된 날짜 (데이터의 최신성 확인용)
  • 마감일
    입찰 접수 종료일 (입찰 참여 기한)
  • 입찰 방식
    예시: “최저가입찰”, “제한수의 입찰” 등
  • 사업 상세 내용
    사업의 범위, 요구사항, 세부 설명 및 기타 참고사항
  • 첨부 파일
    관련 도면, 명세서, 참고자료 등의 파일 목록 및 링크

B. 추가 분류 항목

  • 지역
    • 예시 값: 전체, 전국, 서울, 인천, 부산, 대구, 대전, 광주, 울산, 세종, 강원, 경기, 경남, 경북, 전남, 전북, 제주, 충남, 충북
      → 발주처의 소재지 또는 사업 시행 지역을 나타내며, 검색 필터로 활용

3. 크롤링 시스템 개발 요구사항

A. 크롤러 모듈 설계

  • 모듈화 및 독립성
    • 각 전자입찰 시스템(나라장터, 국방전자조달, 수자원공사, 한국전력공사, 한국도로공사, 한국가스공사, 한국토지주택공사, K-apt, 15예가조합 등)에 대해 개별 크롤러를 독립 모듈로 구성
    • 시스템 구조 변경 시 유연하게 대응 가능
  • 스케줄링 및 주기
    • 정해진 주기(예: 매일 또는 실시간 업데이트)로 자동 크롤링 수행
    • 배치 처리 스케줄러 또는 이벤트 기반 업데이트 구현
  • HTTP 요청 및 데이터 파싱
    • HTML, JSON, XML 등 다양한 포맷의 데이터를 안정적으로 파싱
    • BeautifulSoup, lxml 등 파서 라이브러리 활용
  • 로그인 및 세션 관리
    • 인증이 필요한 시스템에 대해 로그인, 쿠키, 세션 유지 관리 기능 포함
  • 오류 처리 및 모니터링
    • 네트워크 장애, 페이지 구조 변경, 파싱 오류에 대한 예외 처리 및 자동 재시도 로직 구현
    • 각 크롤러의 실행 상태, 오류 로그를 기록하고 모니터링

B. 데이터 정제 및 표준화

  • 정제 과정
    • HTML 태그, 중복 데이터 제거 및 필요한 정보만 선별
  • 표준 스키마 적용
    • 수집한 데이터를 앞서 정의한 항목(공고명, 사업 분야, 발주처, 입찰 공고 일자, 마감일, 입찰 방식, 사업 상세 내용, 첨부 파일) 기준으로 통일된 형식으로 변환

4. 중앙 관리 시스템 구축 요구사항

A. 데이터 저장 및 통합

  • 데이터베이스 설계
    • 관계형 DB(MySQL, PostgreSQL) 또는 NoSQL(MongoDB) 중 선택
    • 표준화된 스키마에 따라 입찰공고, 발주처, 첨부파일 등의 테이블 구조 설계
  • 데이터 적재
    • 크롤링 모듈에서 정제된 데이터를 실시간 또는 배치 방식으로 중앙 DB에 적재

B. 데이터 검색 및 필터링

  • 통합 검색 엔진
    • 키워드 검색, 날짜, 지역, 사업 분야(1차 및 2차 분류)별 필터링 기능
    • 최신순, 마감일 임박순 등 정렬 옵션 제공

C. 관리자 대시보드 및 API

  • 웹 기반 대시보드
    • 크롤링 현황, 업데이트 내역, 오류 로그 등 모니터링 기능 제공
    • 공고 통계(지역별, 사업 분야별 분포 등) 시각화 기능 포함
  • RESTful API 제공
    • 외부 시스템 연동 및 데이터 조회를 위한 API 설계
    • API 문서화 및 엔드포인트 명세 제공

D. 보안 및 접근 제어

  • 사용자 인증 및 권한 관리
    • 관리자와 일반 사용자 등 역할 기반 접근 제어 구현
  • 데이터 암호화 및 로그 관리
    • 저장 데이터 암호화, API 접근 로그, 변경 이력 관리

E. 확장성 및 유지보수

  • 모듈화 설계
    • 새로운 전자입찰 시스템 추가 시 최소 코드 수정으로 통합 가능하도록 설계
  • 유지보수 계획
    • 주기적 시스템 점검, 크롤러 업데이트, DB 백업 등 절차 수립

5. 종합 아키텍처

  1. 크롤링 레이어
    • 개별 전자입찰 사이트 별 독립 크롤러가 주기적으로 데이터를 수집
    • 데이터 정제 및 표준화 과정을 거쳐 통일된 형식으로 변환
  2. 중앙 데이터베이스
    • 정제된 데이터를 실시간 또는 배치 방식으로 중앙 DB에 적재
    • 인덱싱 및 통합 검색 엔진을 통해 데이터 조회 최적화
  3. 프론트엔드/관리자 대시보드
    • 웹 기반 인터페이스를 통해 입찰 공고 모니터링, 통계, 검색, 필터링 제공
  4. API 서비스
    • 외부 연동 및 사용자 데이터 조회를 위한 RESTful API 제공
  5. 보안 및 모니터링
    • 사용자 인증, 접근 제어, 데이터 암호화 및 로그 관리를 통한 보안 체계 구축

결론

본 요구사항은 전자입찰 데이터를 효율적으로 크롤링하여 통합 관리할 수 있도록 설계된 시스템 구축을 목표로 합니다. 각 전자입찰 시스템의 데이터를 표준화된 형식으로 수집, 저장하고, 중앙 관리 시스템에서 검색, 모니터링, 외부 연동 기능을 제공하여 사용자에게 신뢰성 있고 최신의 입찰 정보를 제공할 수 있도록 하는 것이 핵심입니다.