ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ› ๏ธ merge_payment_ledger: Merge Gumroad, Stripe, and PayPal CSVs into a unified ledger for easy
Dev.toDev.to
Backend

์ด์ข… ํ”Œ๋žซํผ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ผ ์Šคํ‚ค๋งˆ๋กœ ํ†ตํ•ฉํ•˜๋Š” Lightweight ETL ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌํ˜„

๐Ÿ› ๏ธ merge_payment_ledger: Merge Gumroad, Stripe, and PayPal CSVs into a unified ledger for easy

Golden Alien2026๋…„ 4์›” 24์ผ6๋ถ„beginner

Context

Gumroad, Stripe, PayPal ๋“ฑ ์„œ๋กœ ๋‹ค๋ฅธ CSV ํฌ๋งท์˜ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ ๋ฐœ์ƒ. ํ”Œ๋žซํผ๋ณ„ ์ƒ์ดํ•œ ์ปฌ๋Ÿผ ๋ช…์นญ๊ณผ ๋ฐ์ดํ„ฐ ํฌ๋งท์œผ๋กœ ์ธํ•ด ์ˆ˜๋™ ํ†ตํ•ฉ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋†’์€ ์šด์˜ ๊ณต์ˆ˜์™€ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ์ €ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.

Technical Solution

  • Header Pattern Analysis๋ฅผ ํ†ตํ•œ ์ž…๋ ฅ ํŒŒ์ผ์˜ ํ”Œ๋žซํผ ์ž๋™ ์‹๋ณ„ ๋กœ์ง ๊ตฌํ˜„
  • ํ”Œ๋žซํผ๋ณ„ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„๋“œ ๋งตํ•‘ ์ •๋ณด๋ฅผ ๊ณตํ†ต ์Šคํ‚ค๋งˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Normalization Layer ์„ค๊ณ„
  • External Dependency๋ฅผ ๋ฐฐ์ œํ•œ Python Standard Library ๊ธฐ๋ฐ˜์˜ ๊ฒฝ๋Ÿ‰ ์•„ํ‚คํ…์ฒ˜ ์ฑ„ํƒ์œผ๋กœ ๋ฐฐํฌ ๋ฐ ์‹คํ–‰ ํ™˜๊ฒฝ ์ œ์•ฝ ์ตœ์†Œํ™”
  • Date-based Sorting ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ์„ ํ†ตํ•œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐ ํ†ตํ•ฉ Ledger ์ƒ์„ฑ
  • KeyError ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ๊ฒฐ์ธก ๋ฐ์ดํ„ฐ ๋ฐœ์ƒ ์‹œ ์‹œ์Šคํ…œ ์ค‘๋‹จ ๋ฐฉ์ง€ ๋ฐ ์—๋Ÿฌ ๋กœ๊ทธ ๋ถ„๋ฆฌ
  • CLI ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์˜ ์ž…๋ ฅ-์ถœ๋ ฅ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์„ ํ†ตํ•œ ์ž๋™ํ™” ๊ฐ€๋Šฅ ๊ตฌ์กฐ ์„ค๊ณ„

1. ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ๋‹ค์–‘ํ•  ๋•Œ ํ”Œ๋žซํผ๋ณ„ ํŠน์„ฑ์„ ์บก์Аํ™”ํ•œ ํŒŒ์‹ฑ ๋กœ์ง์„ ๋ถ„๋ฆฌํ–ˆ๋Š”๊ฐ€?

2. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ์ด์‹์„ฑ์„ ํ™•๋ณดํ–ˆ๋Š”๊ฐ€?

3. ์ƒ์ดํ•œ ๋‚ ์งœ ํฌ๋งท์„ ์ •๊ทœํ™”ํ•˜์—ฌ ์‹œ๊ณ„์—ด ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ๋Š”๊ฐ€?

4. ๋ฐ์ดํ„ฐ ๋ˆ„๋ฝ์ด๋‚˜ ํฌ๋งท ๋ณ€๊ฒฝ์— ๋Œ€๋น„ํ•œ Exception Handling ์ „๋žต์ด ํฌํ•จ๋˜์—ˆ๋Š”๊ฐ€?

์›๋ฌธ ์ฝ๊ธฐ