안전 결제자세히
- 패키지 범위 내 수정은 무료입니다.
- 납품 후 3일 이내에 응답하지 않으면 작업이 자동으로 승인됩니다.
결제 시 금액이 예치되며, 작업을 승인해야만 지급됩니다.

결과물 예시
코드 리뷰: 소규모 온라인 쇼핑몰의 주문 가져오기 파이썬 스크립트
코드가 하는 일
- 쇼핑몰에서 내보낸
orders.csv를 읽습니다. - 주문 줄마다
stock.xlsx에서 SKU로 상품을 찾아 수량을 뺍니다. - 바뀐 재고를 다시 저장하고 합계를
import_log.txt에 기록합니다.
구조가 명확하고 함수 이름도 잘 지어져 있습니다. 문제 대부분은 스크립트가 예상하지 못한 형태의 입력이 들어올 때 생깁니다.
버그와 취약점
| 번호 | 줄 | 심각도 | 내용 |
|---|---|---|---|
| 1 | 48 | 높음 | 같은 CSV를 두 번 가져올 수 있음. 이미 처리한 주문 번호를 확인하지 않음. 재고가 마이너스가 되는 가장 유력한 원인 |
| 2 | 72 | 높음 | 환불 주문의 빈 값이나 "2.0" 같은 값에서 int(row["qty"])가 오류로 멈춤 |
| 3 | 95 | 중간 | SKU 비교가 대소문자를 구분해서 "gt-101"과 "GT-101"을 다른 상품으로 처리 |
| 4 | 130 | 중간 | encoding="utf-8" 없이 파일을 열어 윈도우에서 한글 상품명이 깨짐 |
| 5 | 201 | 낮음 | 맨 except:가 실제 오류를 숨겨 로그가 쓸모없어짐 |
수정 코드(일부)
문제 1: 이미 가져온 주문 건너뛰기
processed = load_processed_ids("processed_orders.txt")
for row in reader:
if row["order_id"] in processed:
continue
# ... 기존 처리 로직 ...
processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)
이유: 같은 파일로 스크립트를 다시 실행해도 주문은 한 번만 반영됩니다.
문제 2: 수량을 안전하게 읽기
raw = (row.get("qty") or "").strip()
try:
qty = int(float(raw))
except ValueError:
log.warning("주문 %s: 잘못된 수량 %r, 건너뜀", row["order_id"], raw)
continue
이유: 환불이나 부분 취소 줄은 전체 작업을 멈추지 않고, 알아보기 쉬운 기록을 남긴 채 건너뜁니다.
문제 3: SKU 정규화
sku = row["sku"].strip().upper()
재고 딕셔너리를 만들 때도 같은 .strip().upper()를 적용하세요.
스타일과 가독성
process()가 90줄입니다.read_orders,apply_to_stock,write_report로 나누세요.row[7]처럼 숫자로 적은 열 번호는 헤더 이름으로 바꾸세요.
꼭 확인하세요: 각 수정 사항은 파일 사본으로 먼저 테스트하세요. 이번 리뷰는 코드를 읽고 진행했으며 실행은 하지 않았습니다.
의뢰인: 차 전문 쇼핑몰 운영자. 쇼핑몰에서 내려받은 주문 CSV를 재고 시트에 반영하는 310줄짜리 파이썬 스크립트를 직접 작성 문의 내용: "가끔 재고가 마이너스가 되고, 어떤 파일에서는 스크립트가 멈춰요."
고객과 모든 정보는 가상입니다.
서비스 소개
레이아웃 버그의 원인은 대개 몇 가지로 좁혀집니다. 휴대폰에서 넘치는 고정 너비, 잘못 설정된 flex나 grid 컨테이너, 쌓임 맥락 때문에 먹히지 않는 z-index, 서로 충돌하는 미디어 쿼리 같은 것들입니다. HTML과 CSS를 붙여 넣고 현재 모습과 원하는 모습의 스크린샷을 함께 보내 주시면 레이아웃이 깨지는 이유를 설명하고 수정된 CSS를 드립니다. 대체 텍스트, 폼 레이블, 제목 순서처럼 바로 개선할 수 있는 접근성 사항도 짚어 드립니다.
포함 사항
- 제공 내용주문 페이지에 서면 리뷰를 드립니다. 레이아웃이 깨지는 이유, 데스크톱과 모바일용으로 수정한 HTML 및 CSS 코드 조각, 접근성 메모가 포함됩니다. 프리미엄에서는 스타일시트를 재사용 가능한 클래스로 정리하는 계획도 드립니다.
- 레이아웃 수정Flexbox, grid, overflow
- 반응형 규칙서로 충돌하지 않는 미디어 쿼리
- 쌓임 순서와 z-index요소가 다른 요소 뒤로 숨는 이유
- 시맨틱 HTML제목, 랜드마크, 버튼
- 접근성 기본대체 텍스트, 레이블, 대비
진행 방식
- 1요청 사항코드와 스크린샷을 붙여 넣어 주세요
- 2분석레이아웃을 깨뜨리는 규칙을 찾습니다
- 3검토수정된 CSS와 메모를 받으세요
준비해 주실 내용
텍스트로 붙여 넣은 HTML과 CSS, 데스크톱과 휴대폰에서 문제가 보이는 스크린샷, 문제가 발생하는 브라우저, 원하는 모습을 보내 주세요.
다음 내용을 여쭤봅니다:
- 순수 CSS인가요, 프레임워크인가요?
- 어떤 화면 크기와 브라우저에서 깨지나요?
- 해당 섹션은 어떻게 보여야 하나요?
- 페이지를 사이트 빌더로 만드셨나요, 직접 코드로 작성하셨나요?
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
실제 브라우저에서 확인해 주시나요?
아니요, 코드와 스크린샷을 보고 분석합니다. 수정된 CSS는 게시하기 전에 사용하시는 브라우저에서 확인해 주세요.
Wix나 Tilda로 만든 페이지도 고쳐 주시나요?
그곳에 직접 추가한 사용자 정의 코드만 가능합니다. 빌더 자체의 레이아웃은 보내 주실 수 있는 코드가 아니라 빌더 편집기에서 제어됩니다.
전체 접근성 감사인가요?
아니요. 보내 주신 코드에서 명확한 문제를 짚어 드리며, 전체 감사는 운영 중인 페이지에서 스크린 리더로 테스트해야 합니다.