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

결과물 예시
매장 9곳의 월별 매출 파일을 Excel 보고서 하나로 합치기
실행 방법
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO 폴더: sales/2026-10, 파일 9개 발견
2026-11-02 09:14:03 INFO shop-01.csv: 1,284행
2026-11-02 09:14:04 INFO shop-02.xlsx: 967행
2026-11-02 09:14:04 WARN shop-07.csv: 가격 없는 3행 건너뜀 (88, 412, 913번 줄)
2026-11-02 09:14:05 INFO 완료: 10,412행 -> report-2026-10.xlsx ("매출", "합계" 시트)
코드가 아닌 설정으로
매장별 열 이름은 settings.ini에 있어서, 매장이 새로 생기거나 열 이름이 바뀌면 그곳에 한 줄만 고치면 됩니다.
[columns]
date = 날짜, 판매일, 일자
product = 상품, 품목, 상품명
quantity = 수량, 개수, 판매 수량
price = 가격, 단가
코드 일부
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""매장 파일 하나를 읽고 열 이름을 보고서 기준으로 바꿉니다."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: '{name}'에 해당하는 열이 없습니다 (찾은 이름: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
파일: merge_sales.py(310줄), settings.ini, requirements.txt, 그리고 Python 설치, 스크립트 실행, 로그 메시지별 의미를 설명한 README가 들어 있는 ZIP 압축 파일. 고객이 자신의 컴퓨터에서 직접 실행합니다.
고객: 문구점 9곳을 운영하는 작은 체인. 매장마다 한 달 매출을 CSV나 Excel 파일로 보내는데, 열 이름이 조금씩 다릅니다. 과제: 폴더 안의 모든 파일을 읽고 열을 하나의 형식으로 맞춘 뒤, 전체 매출과 매장별 합계 시트가 담긴 Excel 보고서 하나로 저장하는 스크립트.
고객과 모든 정보는 가상입니다.
서비스 소개
쇼핑몰이나 예약 사이트가 밤에 다운되면 아침에 고객에게서야 알게 될 수도 있습니다. 이 Python 스크립트는 지정하신 페이지를 몇 분마다 열어 보고, 응답이 없거나 오류를 돌려주거나, 스탠다드부터는 장바구니 담기 버튼처럼 꼭 있어야 할 단어 없이 열리면 이메일을 보냅니다. 경고하기 전에 다시 시도하므로 응답이 한 번 느렸다고 깨우지 않으며, 사이트가 복구되면 다시 알려 줍니다. 이메일은 고객님의 메일 계정에서 발송되며, 발송용 비밀번호는 고객님이 직접 설정에 넣으십니다. 계속 켜져 있고 사이트가 올라간 곳과는 다른 컴퓨터나 서버에서 실행하세요. 그렇지 않으면 사이트와 함께 멈춰 버립니다. 문제를 알려 줄 뿐 고치지는 않습니다.
포함 사항
- 받으시는 결과물Python 스크립트, 단계별 안내가 담긴 README, 스탠다드부터는 주소와 메일 설정이 담긴 설정 파일이 들어 있는 ZIP 압축 파일. 코드는 주문 페이지에서도 볼 수 있습니다.
- 다운과 복구멈추면 한 번, 복구되면 한 번 이메일
- 잘못된 경고 없음알리기 전에 다시 시도
- 페이지 내용 확인스탠다드부터, 페이지에 꼭 있어야 할 단어
- 고객님의 메일 계정에서고객님의 메일 계정, 비밀번호는 코드 밖에
- 읽기 쉬운 코드주석이 있어 나중에 페이지 추가가 쉬움
진행 방식
- 1작업확인할 페이지와 알림을 받을 곳을 알려 주세요
- 2코드스크립트와 실행 안내서를 작성합니다
- 3시험 실행없는 페이지로 실행해 알림이 오는지 확인하세요
- 4수정패키지 범위 안에서 수정을 요청하고 오류 메시지가 있으면 보내 주세요
준비해 주실 내용
확인할 주소(홈 페이지, 장바구니, 예약 페이지), 확인 주기, 스탠다드부터는 페이지마다 보여야 할 단어나 문구. 알림을 받을 곳과 발송할 메일 계정(메일 서비스 이름만 알려 주시면 발송 설정을 안내해 드리며, 비밀번호는 고객님이 직접 넣으십니다). 스크립트를 실행할 곳: 계속 켜져 있는 컴퓨터 또는 서버와 그 운영 체제(Windows, macOS, Linux).
다음 내용을 여쭤봅니다:
- 어떤 페이지를 확인할까요?
- 얼마나 자주, 어떤 상태를 다운으로 볼까요?
- 알림은 어디로 보낼까요?
- 어디에서 실행하나요?
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
어디에서 실행해야 하나요?
사무실 컴퓨터, 집의 미니 서버, 작은 임대 서버처럼 항상 켜져 있고 사이트와 분리된 기기에서 실행하세요. 사이트와 같은 서버에서 실행하면 함께 다운되어 경고를 보낼 수 없습니다.
이메일 대신 문자를 보낼 수 있나요?
이 서비스는 이메일을 보냅니다. 많은 휴대폰에서 이메일을 알림으로 볼 수 있으며, 공개 API가 있는 서비스로 메시지를 보내는 기능은 고객님의 키를 설정에 넣는 방식으로 패키지 범위 안에서 더할 수 있습니다.
사이트 속도나 보안도 확인하나요?
페이지마다 응답 시간을 재고, 프리미엄에서는 정하신 한도를 넘으면 경고합니다. 보안을 시험하거나 바이러스를 찾거나 관리자 페이지에 로그인하지는 않습니다.
이메일은 몇 통이나 보내나요?
상태가 바뀔 때만 보냅니다. 페이지가 멈출 때 한 번, 복구될 때 한 번이므로 메일 서비스의 발송 한도에 한참 못 미칩니다.
답을 찾지 못하셨나요?


