Devin.KR

수집·변환·저장 분리

분석 코드를 파일 기반 ETL로 분리합니다.

진도 0%

레슨

  1. 실행 환경과 모듈 구성

    로컬 가상환경에서 수집·변환·저장 모듈과 테스트를 구성하고 의존성을 기록합니다.

  2. 수집과 원본 보존

    로컬 HTTP 모의 서버의 공개 데이터 응답을 받아 원본과 체크섬을 보존하고 시간 초과를 처리합니다.

  3. 입력 스키마 검증 함수

    표준 입력 JSON에서 필수 열·타입·날짜·범위를 검사하고 오류 목록을 출력합니다.

  4. ETL 단계와 실패 경계

    m04 정제 함수를 변환 단계로 재사용하고 로컬 SQLite 저장 전에 스키마 오류를 차단합니다.

수집·변환·저장 분리 결과물 통합

m06-visual-evidence 미션 solution 전체를 포함한 ZIP에서 시작합니다. 기존 60개 검사를 유지하며 파일 수집·정제·SQLite 전체 스냅샷 저장을 etl 패키지로 연결합니다.

요구사항

  • m01~m06 산출물을 유지하면서 collect/transform/load 단계를 독립 함수로 분리합니다.
  • 입력 스키마와 단계별 파일 경로·실행 순서를 pipeline.json에 기록합니다.
  • 네트워크 없는 표본 실행을 기본으로 제공하고 실제 출처 수집은 선택 기능으로 둡니다.
  • SQLite observations는 검증된 입력 전체로 교체합니다. 증분 누적·upsert는 다음 모듈 범위로 둡니다.

완료 기준

  • 기본 검사 명령으로 기존 60개와 새 20개 총 80개 테스트 통과입니다. starter는 실제 DB 저장 검사가 실패합니다.
  • 열 누락 입력은 load 호출 전에 실패하며 기존 DB 바이트와 입력 파일 체크섬을 유지합니다. 잘못된 날짜·키 충돌도 저장 전에 차단합니다.
  • 기본 입력 6행의 영점과 NULL을 보존하고 재실행 후 같은 논리적 행을 유지합니다. pipeline.json의 실행 순서와 경로 겹침을 검사합니다.
  • HTTP 오류·시간 초과·잘못된 JSON은 응답 주입 검사로 확인합니다. BOOTCAMP_HTTP=1 python3 -m unittest discover -s tests -v로 실제 127.0.0.1 모의 서버 통합 9개를 추가 실행합니다. 작성 샌드박스의 포트 권한 거부로 이 통합 검증은 PENDING입니다.
python3 -m unittest discover -s tests -v
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 판단 근거와 제외 조건을 데이터와 연결해 설명합니다.
  • 앞 단계 산출물을 재사용하고 원본을 보존합니다.