magma-mart-seed — 오염 주입 더미 판매 마트 생성기
목적
인프런 「Hermes × Codex 가상 오피스」 섹션 7.3(데이터 정제·분석)의 실습 재료. 깨끗한 더미가 아니라 현실에서 만나는 지저분한 상태를 재현한 관계형 마트를 만든다. 시드가 고정돼 있어 강사와 모든 수강생이 완전히 동일한 데이터로 실습한다.
절차
생성기를 실행한다.
python3 scripts/generate_mart.py --out ./magma-mart표준 라이브러리만 사용한다(추가 설치 없음). 출력:
파일 내용 customers.csv 고객 1,030행 (중복 등록 30 포함) products.csv 상품 200행 promotions.csv 프로모션 30행 orders.csv 주문 20,060행 order_items.csv 주문상세 33,370행 schema.sql 스테이징 테이블 DDL (오염을 그대로 받는 텍스트 중심 컬럼) DIRT_REPORT.md 주입된 오염의 종류·개수 요약 (정답지) 사용자에게 생성 결과(행 수·오염 요약)를 보여주고, 데이터베이스 적재 여부를 확인받는다. 확인 없이 적재하지 않는다.
적재 승인 시:
schema.sql로 스테이징 테이블을 만들고 CSV 5종을 넣는다. Supabase라면 대시보드 Table Editor의 CSV import 또는 SQL Editor를 쓴다.적재 후 각 테이블의 행 수를 조회해 CSV 행 수와 일치하는지 검증하고 보고한다.
규칙
--seed값을 임의로 바꾸지 않는다(기본 42). 바꾸면 강의 화면과 수강생 데이터가 어긋난다.- DIRT_REPORT.md는 정제 실습의 정답지다. 실습 전에 학습자에게 먼저 보여주지 않는다.
- 오염을 생성 단계에서 미리 고치지 않는다 — 고치는 일이 실습 그 자체다.
- 생성 데이터는 전부 가상이다. 실존 인물·상호와 무관하며 개인정보가 아니다.
오염 패턴 목록 (교육 포인트)
중복 고객(표기 변형) · 전화 결측 · 지역 표기 비정규(서울/SEOUL/서울특별시) · 이메일 오염 · 음수 가격 · 가격 이상치(단위 오류) · 카테고리 결측 · 날짜 포맷 4종 혼재 · 미래 날짜 · 채널 표기 비정규(online/ONLINE/온라인) · 중복 주문행 · 고아 상품 FK · 음수 수량 · 금액 표기 4종 혼재(₩·콤마·'원'·소수점)