Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

61 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฆ ๋ฌผ๋ฅ˜ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ์‹œ์Šคํ…œ v3.19

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ด๋ฆ„: ๋ฌผ๋ฅ˜ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ์‹œ์Šคํ…œ
๋ชฉ์ : ๋ฌผ๋ฅ˜ ํ˜„์žฅ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ œ๊ฐ๊ฐ์ธ ์—‘์…€/CSV ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜๊ณ , 3PL ๋ฐฐ์†ก ์–‘์‹์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜
๊ธฐ์ˆ  ์Šคํƒ: Python, Streamlit, Pandas, OpenPyXL, XlsxWriter
GitHub: https://github.com/urimeee/LogiFlow-Auto

๐ŸŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ URL

์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค: https://3000-ip2l928h0vug305w91va9-d0b9e1e2.sandbox.novita.ai

์œ„ URL๋กœ ์ ‘์†ํ•˜์—ฌ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๐Ÿš€ ์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/urimeee/LogiFlow-Auto.git
cd LogiFlow-Auto

2. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™” (์„ ํƒ์‚ฌํ•ญ)

python -m venv venv
source venv/bin/activate  # Linux/Mac
# ๋˜๋Š”
venv\Scripts\activate  # Windows

3. ์˜์กด์„ฑ ์„ค์น˜

pip install -r requirements.txt

4. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

# .env.example ํŒŒ์ผ์„ .env๋กœ ๋ณต์‚ฌ
cp .env.example .env

# .env ํŒŒ์ผ ํŽธ์ง‘ (ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
# API_KEY=your_api_key_here

5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

streamlit run app.py

๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8501๋กœ ์ ‘์†ํ•˜์„ธ์š”.

๐Ÿ”’ ๋ณด์•ˆ ๋ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ (.env)

  • ์ ˆ๋Œ€ GitHub์— ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š”!
  • .env.example ํ…œํ”Œ๋ฆฟ์„ ์ฐธ๊ณ ํ•˜์—ฌ .env ํŒŒ์ผ ์ƒ์„ฑ
  • API ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” .env์—๋งŒ ์ €์žฅ

์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •
APP_NAME=๋ฌผ๋ฅ˜ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ์‹œ์Šคํ…œ
APP_VERSION=3.16
MAX_UPLOAD_SIZE=200
LOG_LEVEL=INFO

# ํ–ฅํ›„ ํ™•์žฅ ๊ฐ€๋Šฅ (API ํ‚ค ๋“ฑ)
# API_KEY=your_api_key_here
# SECRET_KEY=your_secret_key_here

๐Ÿ“‹ 32๊ฐœ ํ‘œ์ค€ 3PL ๋ฐฐ์†ก ์ปฌ๋Ÿผ (v3.4+)

์‹œ์Šคํ…œ์€ ๋‹ค์Œ 32๊ฐœ์˜ ํ‘œ์ค€ 3PL ๋ฐฐ์†ก ์–‘์‹ ์ปฌ๋Ÿผ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค:

# ์ปฌ๋Ÿผ๋ช… ๊ฐ’ ์˜ˆ์‹œ ์„ค๋ช…
1 ์‡ผํ•‘๋ชฐ ์ฝ”๋“œ ONLINE1 ๊ณ ์ •๊ฐ’
2 ์‡ผํ•‘๋ชฐ ์ด๋ฆ„ ์นดํŽ˜24, ์•ฑ, ์ฟ ํŒก, ๋„ค์ด๋ฒ„ ํ”Œ๋žซํผ ์ž๋™ ๊ฐ์ง€
3 ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ (์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ๋™์ผ) ์ž๋™ ๋ณต์‚ฌ
4 ๋ฌถ์Œ๋ฐฐ์†ก์œ ๋ฌด ์œ  ๊ณ ์ •๊ฐ’
5 ์ ‘์ˆ˜์ผ์‹œ 2026-02-25 ์˜ค๋Š˜ ๋‚ ์งœ ์ž๋™ ์ž…๋ ฅ
6 ๊ฒฐ์ œ์ผ์‹œ 2026-02-25 ์˜ค๋Š˜ ๋‚ ์งœ ์ž๋™ ์ž…๋ ฅ
7 ์ˆ˜์ทจ์ธ ์ƒ์„ธ ์ฃผ์†Œ . ๊ณ ์ •๊ฐ’
8 ์ˆ˜์ทจ์ธ ์ „ํ™”[์•ˆ์‹ฌ ๋ฒˆํ˜ธ] (์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ) ์ž๋™ ๋ณต์‚ฌ
9 ์ˆ˜์ทจ์ธ ์ „ํ™”๋ฒˆํ˜ธ (์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ) ์ž๋™ ๋ณต์‚ฌ
10 ์ˆ˜์ทจ์ธ ๊ฑด๋ฌผ ๊ด€๋ฆฌ๋ฒˆํ˜ธ (๊ณต๋ฐฑ) ๋นˆ ๊ฐ’
11 ์ฃผ๋ฌธ์ž ๋ช… (์ˆ˜์ทจ์ธ ๋ช…) ์ž๋™ ๋ณต์‚ฌ
12 ์ฃผ๋ฌธ์ž ์ด๋ฉ”์ผ AA@aa.com ๊ณ ์ •๊ฐ’
13 ์ˆ˜์ทจ์ธ ์šฐํŽธ๋ฒˆํ˜ธ (๊ณต๋ฐฑ) ๋นˆ ๊ฐ’
14 ์ˆ˜์ทจ์ธ ์ฃผ์†Œ ์œ ํ˜• ๋ฏธํ™•์ธ ๊ณ ์ •๊ฐ’
15 ์ฃผ๋ฌธ์ž ์ „ํ™”[์•ˆ์‹ฌ ๋ฒˆํ˜ธ] (์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ) ์ž๋™ ๋ณต์‚ฌ
16 ์ฃผ๋ฌธ์ž ์ „ํ™”๋ฒˆํ˜ธ (์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ) ์ž๋™ ๋ณต์‚ฌ
17 ์ฃผ๋ฌธ์ž ํ•ธ๋“œํฐ (์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ) ์ž๋™ ๋ณต์‚ฌ
18 ์ถ”๊ฐ€ ์ƒํ’ˆ ์—ฌ๋ถ€ ์ถ”๊ฐ€์ƒํ’ˆ ๊ณ ์ •๊ฐ’
19 ํƒ๋ฐฐ ์šด์ž„ ์ง€๋ถˆ ๋ฐฉ์‹ ์‹ ์šฉ ๊ณ ์ •๊ฐ’
20 ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ 1, 2, 3... ์ˆœ์ฐจ ๋ฒˆํ˜ธ (v3.4+)
21 ๊ฒฐ์ œ๊ธˆ์•ก (๊ณต๋ฐฑ) ๋นˆ ๊ฐ’
22 ๊ณ ๊ฐ ์ฐธ์กฐ๋ฒˆํ˜ธ (๊ณต๋ฐฑ) ๋นˆ ๊ฐ’
23 ์š”์ฒญ(ํฌ๋ง)๋ฐฐ์†ก ์ผ์ž 2026-02-25 ์˜ค๋Š˜ ๋‚ ์งœ (v3.4+)
24 ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ 20260220-0000171 ์ฃผ๋ฌธ๋ฒˆํ˜ธ
25 ์ˆ˜์ทจ์ธ ๋ช… ํ™๊ธธ๋™ ์›๋ณธ ๋ฐ์ดํ„ฐ
26 ์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ 010-1234-5678 ์›๋ณธ ๋ฐ์ดํ„ฐ
27 ์ˆ˜์ทจ์ธ ๊ธฐ๋ณธ ์ฃผ์†Œ ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ... ์›๋ณธ ๋ฐ์ดํ„ฐ
28 ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ DA-DI-PW ๋งค์นญ ๊ฒฐ๊ณผ
29 ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ด๋ฆ„ ๋”ฅ ํŽ˜๋ฆฌ์œ™ํด ๋งค์นญ ๊ฒฐ๊ณผ
30 ์‡ผํ•‘๋ชฐ ์˜ต์…˜ ์ด๋ฆ„ DI-PW ๋งค์นญ ๊ฒฐ๊ณผ
31 ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰ 1 (์•ฑ), N (๊ธฐํƒ€) ์•ฑ์€ ํ•ญ์ƒ 1 (v3.7)
32 ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€ ๋ฒจx, ๋ฌธ์ž (์•ฑ) ์•ฑ์€ ๊ณ ์ •๊ฐ’ (v3.7)

์ถ”๊ฐ€ ๋””๋ฒ„๊น… ์ปฌ๋Ÿผ (33-34):

  • 33: ๋งค์นญ ๋ฐฉ๋ฒ• (์ฝ”๋“œ ์ •ํ™• ๋งค์นญ, ์ƒํ’ˆ๋ช… ํŒจํ„ด ๋งค์นญ ๋“ฑ)
  • 34: ํ™•์ธ ํ•„์š” (True/False)

๐ŸŽฏ v3.7 ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ

  • ์•ฑ ํŒŒ์ผ ํŠน๋ณ„ ์ฒ˜๋ฆฌ:
    • ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰: ํ•ญ์ƒ 1๋กœ ๊ณ ์ •
    • ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€: ํ•ญ์ƒ **"๋ฒจx, ๋ฌธ์ž"**๋กœ ๊ณ ์ •

๐ŸŽฏ v3.4-v3.5 ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ

  • ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ (20๋ฒˆ): 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆœ์ฐจ ๋ฒˆํ˜ธ ์ž๋™ ์ƒ์„ฑ (int64)
    • ๋‹ค์ค‘ ํ”Œ๋žซํผ ํ†ตํ•ฉ ์‹œ ์ค‘๋ณต ๋ฐฉ์ง€: ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด 1~N ์ˆœ๋ฒˆ ์žฌํ• ๋‹น
  • ์š”์ฒญ(ํฌ๋ง)๋ฐฐ์†ก ์ผ์ž (23๋ฒˆ): ์˜ค๋Š˜ ๋‚ ์งœ ์ž๋™ ์ž…๋ ฅ (YYYY-MM-DD ํ˜•์‹)

๐ŸŽฏ v3.0 ์ฃผ์š” ์—…๋ฐ์ดํŠธ

โœจ ํ†ตํ•ฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์›

  • ๋‹จ์ผ ํŽ˜์ด์ง€์—์„œ ์นดํŽ˜24, ์•ฑ, ์ฟ ํŒก, ๋„ค์ด๋ฒ„ ๋ชจ๋“  ํŒŒ์ผ ๋™์‹œ ์—…๋กœ๋“œ
  • ์ž๋™ ํ”Œ๋žซํผ ๊ฐ์ง€: ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ์ž๋™์œผ๋กœ ํ”Œ๋žซํผ ๋ถ„๋ฅ˜
  • ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„: ๊ฐ ํ”Œ๋žซํผ์˜ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธ
  • 10๊ฐœ ์ปฌ๋Ÿผ ์ถœ๋ ฅ: ํ”Œ๋žซํผ ์ปฌ๋Ÿผ ์ถ”๊ฐ€๋กœ ์ถœ์ฒ˜ ๋ช…ํ™•ํ™”

๐Ÿ” ํ”Œ๋žซํผ๋ณ„ ๋งค์นญ ๋กœ์ง

  • ์นดํŽ˜24: ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ๋งค์นญ (100%)
  • ์ฟ ํŒก: ์˜ต์…˜ID โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ๋งค์นญ (100%)
  • ์•ฑ: ์ฃผ๋ฌธ์ƒํ’ˆ ํŒŒ์‹ฑ ([์ƒํ’ˆ๋ช…] N๊ฐœ (์˜ต์…˜)) โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ํŒจํ„ด ๋งค์นญ (100%)
    • ํŠน๋ณ„ ์ฒ˜๋ฆฌ: ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰ ํ•ญ์ƒ 1, ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€ ํ•ญ์ƒ "๋ฒจx, ๋ฌธ์ž"
  • ๋„ค์ด๋ฒ„: ์ƒํ’ˆ๋ฒˆํ˜ธ โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ๋งค์นญ

๐Ÿ› v3.0.3 ๋ฒ„๊ทธ ์ˆ˜์ •

  • ํ”Œ๋žซํผ ์ด๋ฆ„ ๋งคํ•‘ ์ถ”๊ฐ€: ์˜๋ฌธ(cafe24) โ†’ ํ•œ๊ธ€(์นดํŽ˜24) ์ž๋™ ๋ณ€ํ™˜
  • KeyError ํ•ด๊ฒฐ: ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ์‹œ ํ•œ๊ธ€ ํŒ๋งค์ฒ˜๋ช… ์‚ฌ์šฉ
  • Arrow ํƒ€์ž… ์˜ค๋ฅ˜ ์ˆ˜์ •: ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Streamlit ํ˜ธํ™˜์„ฑ ๊ฐœ์„ 

์ฃผ์š” ๊ธฐ๋Šฅ

โœจ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ๐ŸŽฏ 3PL ๋ฐฐ์†ก ์–‘์‹ ์ž๋™ ๋ณ€ํ™˜ (NEW!)
  • ๐Ÿง  ์ง€๋Šฅํ˜• ์ƒํ’ˆ ์ฝ”๋“œ ๋งค์นญ (NEW!)
  • ๐Ÿ“Š ๋งค์นญ ๊ฒฐ๊ณผ ๋ถ„์„ ๋ฐ ํ†ต๊ณ„ (NEW!)
  • ๐Ÿ“ค ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ: ์—ฌ๋Ÿฌ ์—‘์…€/CSV ํŒŒ์ผ์„ ๋™์‹œ์— ์—…๋กœ๋“œ
  • ๐Ÿ”„ ์ž๋™ ์ปฌ๋Ÿผ ํ‘œ์ค€ํ™”: ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ๋ช…์„ ํ‘œ์ค€ ํ˜•์‹์œผ๋กœ ์ž๋™ ํ†ตํ•ฉ
  • ๐ŸŒ ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ: UTF-8, CP949, EUC-KR ๋“ฑ ์ž๋™ ๊ฐ์ง€ ๋ฐ ์ฒ˜๋ฆฌ
  • ๐Ÿ”“ ์•”ํ˜ธํ™” ํŒŒ์ผ ์ง€์›: ์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ์—‘์…€ ํŒŒ์ผ ์ž๋™ ๋ณตํ˜ธํ™” ์‹œ๋„
  • ๐Ÿ“Š ๋‹ค์–‘ํ•œ ์—‘์…€ ํ˜•์‹: XLSX, XLS ๊ตฌํ˜• ํ˜•์‹ ๋ชจ๋‘ ์ง€์›
  • ๐Ÿ“ฅ ๋‚ ์งœ๋ณ„ ๋‹ค์šด๋กœ๋“œ: {์˜ค๋Š˜๋‚ ์งœ}_3PL๋ฐฐ์†ก์—…๋ฌด.xlsx ํ˜•์‹์œผ๋กœ ์ž๋™ ์ €์žฅ
  • ๐Ÿ‘€ ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ํ™•์ธ

๐Ÿ’ผ ํ†ตํ•ฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ๋ชจ๋“œ

๐Ÿ“ค ๋‹จ์ผ ํŽ˜์ด์ง€ ์—…๋กœ๋“œ

  • ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ํŒŒ์ผ 1๊ฐœ + ๋ชจ๋“  ํ”Œ๋žซํผ ํŒŒ์ผ์„ ๋™์‹œ์— ์—…๋กœ๋“œ
  • ์ž๋™ ํ”Œ๋žซํผ ๊ฐ์ง€ ๋ฐ ๋ถ„๋ฅ˜
  • ์‹ค์‹œ๊ฐ„ ํŒŒ์ผ ์ •๋ณด ํ‘œ์‹œ

๐ŸŽฏ ์ง€์› ํ”Œ๋žซํผ

  1. ์นดํŽ˜24: CSV ํŒŒ์ผ, ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ๋งค์นญ
  2. ์•ฑ: CSV ํŒŒ์ผ, ์ฃผ๋ฌธ์ƒํ’ˆ ํŒŒ์‹ฑ ํ›„ ๋งค์นญ
  3. ์ฟ ํŒก: XLSX ํŒŒ์ผ, ์˜ต์…˜ID ๊ธฐ๋ฐ˜ ๋งค์นญ
  4. ๋„ค์ด๋ฒ„: CSV/XLSX ํŒŒ์ผ, ์ƒํ’ˆ๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ ๋งค์นญ

๐Ÿ“‹ 3PL ํ‘œ์ค€ ์–‘์‹ ์ปฌ๋Ÿผ (v3.0)

์ปฌ๋Ÿผ๋ช… ์„ค๋ช… ์†Œ์Šค
ํ”Œ๋žซํผ ์ฃผ๋ฌธ ํ”Œ๋žซํผ cafe24, app, coupang, naver
์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ ๊ณ ์œ  ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ
์ˆ˜์ทจ์ธ ๋ช… ๋ฐ›๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„ ๋ฐ›๋Š”์‚ฌ๋žŒ
์ˆ˜์ทจ์ธ ํ•ธ๋“œํฐ ๋ฐ›๋Š” ์‚ฌ๋žŒ ์—ฐ๋ฝ์ฒ˜ ์ˆ˜๋ น์ธํœด๋Œ€ํฐ
์ˆ˜์ทจ์ธ ๊ธฐ๋ณธ ์ฃผ์†Œ ๋ฐฐ์†ก ์ฃผ์†Œ ๋ฐฐ์†ก์ฃผ์†Œ
์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ ์ƒํ’ˆ ์ฝ”๋“œ ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ โ†’ ๋งค์นญ
์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ด๋ฆ„ ์ƒํ’ˆ๋ช… ์ƒํ’ˆ๋ช… โ†’ ๋งค์นญ
์‡ผํ•‘๋ชฐ ์˜ต์…˜ ์ด๋ฆ„ ์˜ต์…˜ ์ •๋ณด ์˜ต์…˜ โ†’ ๋งค์นญ
์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰ ์ฃผ๋ฌธ ๊ฐœ์ˆ˜ ์ˆ˜๋Ÿ‰
๋ฐฐ์†ก ๋ฉ”์„ธ์ง€ ๋ฐฐ์†ก ์š”์ฒญ์‚ฌํ•ญ ๋ฐฐ์†ก๋ฉ”์„ธ์ง€
๋งค์นญ ๋ฐฉ๋ฒ• ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ ์ •ํ™• ๋งค์นญ, ์ƒํ’ˆ๋ช… ๋งค์นญ ๋“ฑ
ํ™•์ธ ํ•„์š” ์ˆ˜๋™ ํ™•์ธ ํ•„์š” ์—ฌ๋ถ€ True/False

๐Ÿ” ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง

โœ… v3.0 ์—…๋ฐ์ดํŠธ: ํ”Œ๋žซํผ๋ณ„ ๋งค์นญ ์ „๋žต

ํ”Œ๋žซํผ๋ณ„ ์ฝ”๋“œ ์ถ”์ถœ:

  • ์นดํŽ˜24: ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ
  • ์ฟ ํŒก: ์˜ต์…˜ID โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ
  • ์•ฑ: ์ฃผ๋ฌธ์ƒํ’ˆ ํŒŒ์‹ฑ ([์ƒํ’ˆ๋ช…] N๊ฐœ (์˜ต์…˜)) โ†’ ์ƒํ’ˆ๋ช… ์ถ”์ถœ
  • ๋„ค์ด๋ฒ„: ์ƒํ’ˆ๋ฒˆํ˜ธ โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ

3๋‹จ๊ณ„ ์ง€๋Šฅํ˜• ๋งค์นญ

1๋‹จ๊ณ„: ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ์ •ํ™• ๋งค์นญ โญ
    ์ž…๋ ฅ ํŒŒ์ผ์˜ ์ฝ”๋“œ == ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ
    โœ… 100% ์ •ํ™• ๋งค์นญ (ํ™•์ธ ํ•„์š” ์—†์Œ)
    ์˜ˆ์‹œ:
      - ์นดํŽ˜24: DA_DIP_PW โ†’ DA-DI-PW (๋”ฅ ํŽ˜๋ฆฌ์œ™ํด)
      - ์ฟ ํŒก: 9353006240 โ†’ C-AR-GRK-03 (๊ทน๋ฝ 3๊ฐœ)

2๋‹จ๊ณ„: ์ƒํ’ˆ๋ช… + ์˜ต์…˜๋ช… ์กฐํ•ฉ ๋งค์นญ
    ์ž…๋ ฅ ์ƒํ’ˆ๋ช… ํฌํ•จ ๊ฒ€์‚ฌ โ†’ ๋งˆ์Šคํ„ฐ ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ด๋ฆ„
    +
    ์ž…๋ ฅ ์˜ต์…˜๋ช… ํฌํ•จ ๊ฒ€์‚ฌ โ†’ ๋งˆ์Šคํ„ฐ ์‡ผํ•‘๋ชฐ ์˜ต์…˜ ์ด๋ฆ„
    โš ๏ธ ์˜ต์…˜ ์—†์„ ์‹œ ํ™•์ธ ํ•„์š” ํ‘œ์‹œ

3๋‹จ๊ณ„: ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ
    ์ƒํ’ˆ๋ช… ์œ ์‚ฌ๋„ (70%) + ์˜ต์…˜๋ช… ์œ ์‚ฌ๋„ (30%)
    ์œ ์‚ฌ๋„ 50% ์ด์ƒ โ†’ ์ž๋™ ์ถ”์ฒœ
    โš ๏ธ ํ™•์ธ ํ•„์š” ํ‘œ์‹œ

๐Ÿ“Š ์‹ค์ œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ (v3.0.3)

ํ”Œ๋žซํผ ํ…Œ์ŠคํŠธ ๊ฑด์ˆ˜ ๋งค์นญ ์„ฑ๊ณต๋ฅ  ๋น„๊ณ 
์นดํŽ˜24 49๊ฑด 49/49 (100%) โœ…
์ฟ ํŒก 26๊ฑด 26/26 (100%) โœ…
์•ฑ 1๊ฑด ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ•„์š” โš ๏ธ
๋„ค์ด๋ฒ„ - ๋งˆ์Šคํ„ฐ 8๊ฑด ์ค€๋น„ โœ…

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๐ŸŽฏ ํ†ตํ•ฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ๋ชจ๋“œ ์‚ฌ์šฉ๋ฒ•

1๋‹จ๊ณ„: ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ์—…๋กœ๋“œ

  1. ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ๋ฌผ๋ฅ˜_์ฝ”๋“œ๋ช….xlsx ํŒŒ์ผ ์—…๋กœ๋“œ
  2. "โœ… ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ๋กœ๋“œ ์™„๋ฃŒ" ๋ฉ”์‹œ์ง€ ํ™•์ธ
  3. ํ”Œ๋žซํผ๋ณ„ ์ƒํ’ˆ ์ˆ˜ ํ™•์ธ (์˜ˆ: ์นดํŽ˜24 65๊ฐœ, ์ฟ ํŒก 4๊ฐœ, ๋„ค์ด๋ฒ„ 8๊ฐœ, ์•ฑ 1๊ฐœ)

2๋‹จ๊ณ„: ๋ชจ๋“  ํ”Œ๋žซํผ ํŒŒ์ผ ๋™์‹œ ์—…๋กœ๋“œ

  1. ๋ฉ”์ธ ์˜์—ญ ํŒŒ์ผ ์—…๋กœ๋”์—์„œ ์—ฌ๋Ÿฌ ํŒŒ์ผ ๋™์‹œ ์„ ํƒ
    • ์นดํŽ˜24 CSV ํŒŒ์ผ
    • ์•ฑ CSV ํŒŒ์ผ
    • ์ฟ ํŒก XLSX ํŒŒ์ผ
    • ๋„ค์ด๋ฒ„ CSV ํŒŒ์ผ
  2. ์ž๋™์œผ๋กœ ํ”Œ๋žซํผ ๊ฐ์ง€ ๋ฐ ๋ถ„๋ฅ˜
  3. ๊ฐ ํ”Œ๋žซํผ๋ณ„ ํŒŒ์ผ ๊ฐœ์ˆ˜ ํ™•์ธ

3๋‹จ๊ณ„: ๋งค์นญ ๊ฒฐ๊ณผ ํ™•์ธ

  • ํŒŒ์ผ ์ •๋ณด ํ…Œ์ด๋ธ”: ํ”Œ๋žซํผ๋ณ„ ์›๋ณธ ํ–‰ ์ˆ˜, ๋งค์นญ ์„ฑ๊ณต๋ฅ , ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ์ˆ˜
  • ํ†ตํ•ฉ ๊ฒฐ๊ณผ ํ†ต๊ณ„: ์ด ์ฃผ๋ฌธ ์ˆ˜, ๋งค์นญ ์„ฑ๊ณต, ํ™•์ธ ํ•„์š”, ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์ˆ˜
  • ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„: ๊ฐ ํ”Œ๋žซํผ์˜ ์ฃผ๋ฌธ ์ˆ˜์™€ ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ
  • ๋งค์นญ ๋ฐฉ๋ฒ•๋ณ„ ๋ถ„์„: ์ฝ”๋“œ ์ •ํ™• ๋งค์นญ, ์ƒํ’ˆ๋ช… ๋งค์นญ ๋“ฑ ํ†ต๊ณ„

4๋‹จ๊ณ„: ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

  • ์ „์ฒด ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ํ™•์ธ
  • "ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ๋งŒ ๋ณด๊ธฐ" ํ•„ํ„ฐ ์‚ฌ์šฉ
  • ๋…ธ๋ž€์ƒ‰ ๊ฐ•์กฐ ํ•ญ๋ชฉ ์ˆ˜๋™ ํ™•์ธ

5๋‹จ๊ณ„: ๋‹ค์šด๋กœ๋“œ

  • "๐Ÿ“ฅ ํ†ตํ•ฉ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ" ๋ฒ„ํŠผ ํด๋ฆญ
  • YYYYMMDD_ํ†ตํ•ฉ3PL๋ฐฐ์†ก์—…๋ฌด.xlsx ํŒŒ์ผ ์ €์žฅ
  • ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ์€ ์ˆ˜๋™์œผ๋กœ ์ตœ์ข… ํ™•์ธ

โœ๏ธ ์ˆ˜๋™ ์ฃผ๋ฌธ ์ž…๋ ฅ ๊ธฐ๋Šฅ (v3.19+)

์‹œ๋”ฉ/CS ์ฃผ๋ฌธ์„ ์ง์ ‘ ์ž…๋ ฅํ•˜์—ฌ 3PL ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€

๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ:

  • โœ… ๋‹ค์ค‘ ์ˆ˜์ทจ์ธ ์ž…๋ ฅ: ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ช…์˜ ์ˆ˜์ทจ์ธ ์ •๋ณด ์ž…๋ ฅ ๊ฐ€๋Šฅ
  • โœ… ์ž๋™ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ƒ์„ฑ: {๋‚ ์งœ}_{Seed/CS}_{a,b,c,...} ํ˜•์‹
  • โœ… ์ž๋™ ์ƒํ’ˆ์ฝ”๋“œ ์ƒ์„ฑ: {๋‚ ์งœ}_{Seed/CS}_{a,b,c,...} ํ˜•์‹
  • โœ… ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ: ์ˆ˜์ทจ์ธ, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ ๊ฐœ์ˆ˜ ์ผ์น˜ ํ™•์ธ
  • โœ… ์‹ค์‹œ๊ฐ„ ๋ชฉ๋ก ํ‘œ์‹œ: ์ถ”๊ฐ€๋œ ์ฃผ๋ฌธ ๋ชฉ๋ก ์ฆ‰์‹œ ํ™•์ธ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•:

  1. "โœ๏ธ ์ˆ˜๋™ ์ž…๋ ฅ" ํƒญ ์„ ํƒ

  2. ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ: Seed ๋˜๋Š” CS

  3. ๋‹ค์ค‘ ์ฃผ๋ฌธ ์ •๋ณด ์ž…๋ ฅ (์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„):

    • ์ˆ˜์ทจ์ธ ์ด๋ฆ„:
      ๊น€์œ ๋ฆผ
      ๊น€์ข…๊ตญ
      ์ดํšจ๋ฆฌ
      
    • ์ „ํ™”๋ฒˆํ˜ธ:
      010-1234-5678
      010-2345-6789
      010-3456-7890
      
    • ์ฃผ์†Œ:
      ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ 123
      ๊ฒฝ๊ธฐ๋„ ์„ฑ๋‚จ์‹œ ๋ถ„๋‹น๊ตฌ ํŒ๊ต๋กœ 456
      ๋ถ€์‚ฐ์‹œ ํ•ด์šด๋Œ€๊ตฌ ์„ผํ…€๋Œ€๋กœ 789
      
    • ์ƒํ’ˆ๋ช…: ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ‚จ์ผ€์–ด ์„ธํŠธ (์‡ผํ•‘๋ชฐ ์ƒํ’ˆ๋ช…/์˜ต์…˜๋ช…์œผ๋กœ ์‚ฌ์šฉ)
    • ์ˆ˜๋Ÿ‰: 1
    • ๋ฐฐ์†ก ๋ฉ”์‹œ์ง€ (์„ ํƒ์‚ฌํ•ญ)
  4. "โž• ์ฃผ๋ฌธ ์ถ”๊ฐ€" ๋ฒ„ํŠผ ํด๋ฆญ

  5. ์ถ”๊ฐ€๋œ ์ฃผ๋ฌธ ํ™•์ธ:

    • ์ฃผ๋ฌธ๋ฒˆํ˜ธ: 20260322_Seed_a, 20260322_Seed_b, 20260322_Seed_c
    • ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ: 20260322_Seed_a, 20260322_Seed_b, 20260322_Seed_c
  6. 3PL ๋ณ€ํ™˜์— ์ž๋™ ํฌํ•จ๋˜์–ด ์ฒ˜๋ฆฌ

์ƒ์„ฑ ์˜ˆ์‹œ:

์นดํ…Œ๊ณ ๋ฆฌ: Seed
๋‚ ์งœ: 2026-03-22

์ž…๋ ฅ:
  - ์ˆ˜์ทจ์ธ 3๋ช… (๊น€์œ ๋ฆผ, ๊น€์ข…๊ตญ, ์ดํšจ๋ฆฌ)
  - ์ƒํ’ˆ๋ช…: ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ‚จ์ผ€์–ด ์„ธํŠธ

์ƒ์„ฑ ๊ฒฐ๊ณผ:
  1. ์ฃผ๋ฌธ๋ฒˆํ˜ธ: 20260322_Seed_a
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ: 20260322_Seed_a
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ๋ช…/์˜ต์…˜๋ช…: ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ‚จ์ผ€์–ด ์„ธํŠธ
     
  2. ์ฃผ๋ฌธ๋ฒˆํ˜ธ: 20260322_Seed_b
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ: 20260322_Seed_b
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ๋ช…/์˜ต์…˜๋ช…: ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ‚จ์ผ€์–ด ์„ธํŠธ
     
  3. ์ฃผ๋ฌธ๋ฒˆํ˜ธ: 20260322_Seed_c
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ: 20260322_Seed_c
     ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ๋ช…/์˜ต์…˜๋ช…: ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ‚จ์ผ€์–ด ์„ธํŠธ

๐Ÿ“Š ๋ฌผ๋ฅ˜_์ฝ”๋“œ๋ช… ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ˜•์‹

ํ•„์ˆ˜ ์ปฌ๋Ÿผ

์ปฌ๋Ÿผ๋ช… ์„ค๋ช… ์˜ˆ์‹œ
ํŒ๋งค์ฒ˜ ํŒ๋งค ํ”Œ๋žซํผ (ํ•œ๊ธ€) ์นดํŽ˜24, ์ฟ ํŒก, ๋„ค์ด๋ฒ„, ์•ฑ
ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ๋‚ด๋ถ€ ์ƒํ’ˆ ์ฝ”๋“œ DA_DIP_PW, 9353006240
์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ ์™ธ๋ถ€ ์ƒํ’ˆ ์ฝ”๋“œ DA-DI-PW, C-AR-GRK-03
์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ด๋ฆ„ ์ƒํ’ˆ๋ช… ๋”ฅ ํŽ˜๋ฆฌ์œ™ํด, ๊ทน๋ฝ 3๊ฐœ
์‡ผํ•‘๋ชฐ ์˜ต์…˜ ์ด๋ฆ„ ์˜ต์…˜ ์ •๋ณด DI-PW, LFT4W
๊ตฌ์„ฑํ’ˆ ๊ตฌ์„ฑ ํ’ˆ๋ชฉ ๋”ฅT, ๊ทน๋ฝT

โš ๏ธ ์ค‘์š” ์‚ฌํ•ญ

  • ํŒ๋งค์ฒ˜ ์ปฌ๋Ÿผ: ๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€๋กœ ์ž…๋ ฅ (์นดํŽ˜24, ์ฟ ํŒก, ๋„ค์ด๋ฒ„, ์•ฑ)
  • ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ: ๊ฐ ํ”Œ๋žซํผ์˜ ๊ณ ์œ  ์ƒํ’ˆ ์ฝ”๋“œ์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•จ
    • ์นดํŽ˜24: ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ ๊ฐ’
    • ์ฟ ํŒก: ์˜ต์…˜ID ๊ฐ’
    • ์•ฑ: ์ฃผ๋ฌธ์ƒํ’ˆ์—์„œ ํŒŒ์‹ฑํ•œ ์ƒํ’ˆ๋ช…
    • ๋„ค์ด๋ฒ„: ์ƒํ’ˆ๋ฒˆํ˜ธ ๊ฐ’

์ง€์› ํŒŒ์ผ ํ˜•์‹

  • โœ… Excel: .xlsx (์ตœ์‹  ํ˜•์‹)
  • โœ… Excel: .xls (๊ตฌํ˜• ํ˜•์‹)
  • โœ… CSV: .csv (UTF-8, CP949, EUC-KR ์ž๋™ ๊ฐ์ง€)
  • โœ… ์•”ํ˜ธ ๋ณดํ˜ธ๋œ ์—‘์…€ ํŒŒ์ผ (๋นˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” VelvetSweatshop ์•Œ๊ณ ๋ฆฌ์ฆ˜)

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ๋ฆ„

์ผ๋ฐ˜ ํ†ตํ•ฉ ๋ชจ๋“œ

์—…๋กœ๋“œ โ†’ ์ธ์ฝ”๋”ฉ ๊ฐ์ง€ โ†’ ํŒŒ์ผ ์ฝ๊ธฐ โ†’ ์ปฌ๋Ÿผ ํ‘œ์ค€ํ™” 
    โ†’ ๋ฐ์ดํ„ฐ ๋ณ‘ํ•ฉ โ†’ ์—‘์…€ ์ƒ์„ฑ โ†’ ๋‹ค์šด๋กœ๋“œ

3PL ๋ณ€ํ™˜ ๋ชจ๋“œ

๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๋กœ๋“œ
    โ†“
์นดํŽ˜24 CSV ์—…๋กœ๋“œ
    โ†“
1๋‹จ๊ณ„: ์ฝ”๋“œ ์ •ํ™• ๋งค์นญ
    โ†“ (์‹คํŒจ)
2๋‹จ๊ณ„: ์ƒํ’ˆ๋ช…+์˜ต์…˜๋ช… ๋งค์นญ
    โ†“ (์‹คํŒจ)
3๋‹จ๊ณ„: ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ
    โ†“
ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ํ‘œ์‹œ
    โ†“
3PL ํ‘œ์ค€ ์–‘์‹ ์ƒ์„ฑ
    โ†“
๋‹ค์šด๋กœ๋“œ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

webapp/
โ”œโ”€โ”€ app.py                    # ๋ฉ”์ธ Streamlit ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”œโ”€โ”€ requirements.txt          # Python ํŒจํ‚ค์ง€ ์˜์กด์„ฑ
โ”œโ”€โ”€ ecosystem.config.cjs      # PM2 ์„ค์ • ํŒŒ์ผ
โ”œโ”€โ”€ .gitignore               # Git ์ œ์™ธ ํŒŒ์ผ ๋ชฉ๋ก
โ””โ”€โ”€ README.md                # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ

๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ

์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Streamlit: ์›น UI ํ”„๋ ˆ์ž„์›Œํฌ
  • Pandas: ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋ถ„์„
  • OpenPyXL: ์ตœ์‹  XLSX ํŒŒ์ผ ์ฝ๊ธฐ
  • XLRD: ๊ตฌํ˜• XLS ํŒŒ์ผ ์ฝ๊ธฐ
  • XlsxWriter: ์—‘์…€ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์Šคํƒ€์ผ๋ง
  • Chardet: ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ์ž๋™ ๊ฐ์ง€
  • msoffcrypto-tool: ์•”ํ˜ธํ™”๋œ Office ํŒŒ์ผ ๋ณตํ˜ธํ™”
  • difflib: ๋ฌธ์ž์—ด ์œ ์‚ฌ๋„ ๋ถ„์„

ํŠน๋ณ„ ์ฒ˜๋ฆฌ ์‚ฌํ•ญ

  • 3๋‹จ๊ณ„ ์ง€๋Šฅํ˜• ์ฝ”๋“œ ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ž๋™ ์ถ”์ฒœ (SequenceMatcher)
  • ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ์‹œ๊ฐ์  ๊ฐ•์กฐ (๋…ธ๋ž€์ƒ‰ ๋ฐฐ๊ฒฝ)
  • CSV ํŒŒ์ผ์˜ ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€
  • ์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ์—‘์…€ ํŒŒ์ผ ์ž๋™ ๋ณตํ˜ธํ™”
  • ๋นˆ ํ–‰ ์ž๋™ ์ œ๊ฑฐ
  • ์—ด ๋„ˆ๋น„ ์ž๋™ ์กฐ์ •

๋ฐฐํฌ

PM2๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ์ปฌ ์„œ๋ฒ„ ์šด์˜

# PM2๋กœ ์„œ๋น„์Šค ์‹œ์ž‘
pm2 start ecosystem.config.cjs

# PM2 ์ƒํƒœ ํ™•์ธ
pm2 list

# ๋กœ๊ทธ ํ™•์ธ
pm2 logs logistics-app --nostream

# ์žฌ์‹œ์ž‘
fuser -k 3000/tcp 2>/dev/null || true
pm2 restart logistics-app

# ์ค‘์ง€
pm2 stop logistics-app

# ์‚ญ์ œ
pm2 delete logistics-app

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

๋งค์นญ ์ •ํ™•๋„ ํ–ฅ์ƒ ๋ฐฉ๋ฒ•

  1. ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ์ •ํ™•์„ฑ ํ™•์ธ

    • ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ๊ฐ€ ์ •ํ™•ํ•œ์ง€ ํ™•์ธ
    • ์ƒํ’ˆ๋ช…๊ณผ ์˜ต์…˜๋ช…์ด ์ผ๊ด€๋˜๊ฒŒ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  2. ์นดํŽ˜24 ๋ฐ์ดํ„ฐ ํ™•์ธ

    • ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
    • ์ƒํ’ˆ๋ช…๊ณผ ์˜ต์…˜ ์ •๋ณด๊ฐ€ ๋ช…ํ™•ํ•œ์ง€ ํ™•์ธ
  3. ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ์ฒ˜๋ฆฌ

    • ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์—์„œ ๋…ธ๋ž€์ƒ‰ ํ•ญ๋ชฉ ํ™•์ธ
    • ์ˆ˜๋™์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ ์ž…๋ ฅ ํ›„ ์žฌ์—…๋กœ๋“œ

์ผ๋ฐ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ

CSV ํŒŒ์ผ์ด ๊นจ์ ธ์„œ ๋ณด์ด๋Š” ๊ฒฝ์šฐ

  • ์—ฌ๋Ÿฌ ์ธ์ฝ”๋”ฉ์„ ์ž๋™์œผ๋กœ ์‹œ๋„ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ์—†์Œ
  • ๊ทธ๋ž˜๋„ ์•ˆ ๋˜๋ฉด ๋ฉ”๋ชจ์žฅ์—์„œ UTF-8๋กœ ์ €์žฅ ํ›„ ์žฌ์‹œ๋„

์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ์—‘์…€ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ

  • ์—‘์…€์—์„œ ํŒŒ์ผ ์—ด๊ธฐ โ†’ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ
  • ๋„๊ตฌ โ†’ ์ผ๋ฐ˜ ์˜ต์…˜ โ†’ ์•”ํ˜ธ ์ œ๊ฑฐ

์›น ์‚ฌ์ดํŠธ ์ ‘์† ์•ˆ ๋จ

  • PM2 ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ: pm2 list
  • ํฌํŠธ 3000 ํ™•์ธ: fuser -k 3000/tcp
  • ์„œ๋น„์Šค ์žฌ์‹œ์ž‘: pm2 restart logistics-app

์™„๋ฃŒ๋œ ๊ธฐ๋Šฅ

v3.19 (2026-03-22) โœ… ์ตœ์‹  ๋ฒ„์ „

โœ… ์ˆ˜๋™ ์ฃผ๋ฌธ ์ž…๋ ฅ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ - ์‹œ๋”ฉ/CS ์ฃผ๋ฌธ ์ง์ ‘ ์ž…๋ ฅ

  • ์‹ ๊ทœ ๊ธฐ๋Šฅ:
    • "โœ๏ธ ์ˆ˜๋™ ์ž…๋ ฅ" ํƒญ ์ถ”๊ฐ€
    • ์‹œ๋”ฉ/CS ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ ๊ฐ€๋Šฅ
    • ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ž๋™ ์ƒ์„ฑ:
      • ์‹œ๋”ฉ: {์˜ค๋Š˜๋‚ ์งœ}_Seed_{๊ณ ์œ ๋ฒˆํ˜ธ} (์˜ˆ: 20260322_Seed_a)
      • CS: {์˜ค๋Š˜๋‚ ์งœ}_CS_{๊ณ ์œ ๋ฒˆํ˜ธ} (์˜ˆ: 20260322_CS_a)
    • ์ฃผ๋ฌธ ์ •๋ณด ์ž…๋ ฅ ํผ:
      • ์ฃผ๋ฌธ์ž๋ช…, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ (ํ•„์ˆ˜)
      • ์ƒํ’ˆ ์ฝ”๋“œ (๋งˆ์Šคํ„ฐ ์ฝ”๋“œ์—์„œ ์ž๋™ ๋ถˆ๋Ÿฌ์˜ด)
      • ์ˆ˜๋Ÿ‰, ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€ (์„ ํƒ)
    • ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ์ •๋ณด ์ž๋™ ๋งค์นญ
    • ์‹ค์‹œ๊ฐ„ ์ฃผ๋ฌธ ๋ชฉ๋ก ํ™•์ธ ๋ฐ ์ผ๊ด„ ์‚ญ์ œ
    • ํŒŒ์ผ ์—…๋กœ๋“œ ์ฃผ๋ฌธ๊ณผ ํ•จ๊ป˜ ํ†ตํ•ฉ ์ฒ˜๋ฆฌ
  • ๊ธฐ์ˆ  ๊ตฌํ˜„:
    • st.session_state๋กœ ์ˆ˜๋™ ์ฃผ๋ฌธ ๋ชฉ๋ก ๊ด€๋ฆฌ
    • ์•ŒํŒŒ๋ฒณ ๊ณ ์œ ๋ฒˆํ˜ธ ์ž๋™ ์ƒ์„ฑ (a, b, c...)
    • 3PL 32๊ฐœ ํ‘œ์ค€ ์ปฌ๋Ÿผ ์ž๋™ ๋ณ€ํ™˜
    • ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„์— "์ˆ˜๋™์ž…๋ ฅ" ์ถ”๊ฐ€
  • ๋ฒ„๊ทธ ์ˆ˜์ •:
    • 'ํ™•์ธ ํ•„์š”' ์ปฌ๋Ÿผ ํƒ€์ž… ์˜ค๋ฅ˜ ์ˆ˜์ • (๋ฌธ์ž์—ด โ†’ ๋ถˆ๋ฆฐ ์นด์šดํŠธ)
    • ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„ ์ง‘๊ณ„ ์˜ค๋ฅ˜ ์ˆ˜์ •

v3.19 (2026-03-22)

โœ… ์ˆ˜๋™ ์ž…๋ ฅ UI ๋Œ€ํญ ๊ฐœ์„  - ๋‹ค์ค‘ ์ฃผ๋ฌธ ์ž…๋ ฅ ์ง€์›

  • ํ•ต์‹ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ:
    • ์ƒํ’ˆ ์ฝ”๋“œ selectbox โ†’ text input์œผ๋กœ ๋ณ€๊ฒฝ
    • ๋‹ค์ค‘ ์ˆ˜์ทจ์ธ ์ž…๋ ฅ ์ง€์› (์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„)
    • ์ž…๋ ฅํ•œ ์ƒํ’ˆ๋ช…์ด ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ๋ช…/์˜ต์…˜๋ช…์œผ๋กœ ์ง์ ‘ ์‚ฌ์šฉ
    • ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ "Seed"/"CS"๋กœ ๋ณ€๊ฒฝ (๊ธฐ์กด "์‹œ๋”ฉ"/"CS")
  • ์ž๋™ ์ƒ์„ฑ ํ˜•์‹:
    • ์ฃผ๋ฌธ๋ฒˆํ˜ธ: {๋‚ ์งœ}_{Seed/CS}_{a,b,c,...}
    • ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ: {๋‚ ์งœ}_{Seed/CS}_{a,b,c,...}
    • ์˜ˆ์‹œ: 20260322_Seed_a, 20260322_CS_b
  • ๋‹ค์ค‘ ์ž…๋ ฅ ๋ฐฉ์‹:
    ์ˆ˜์ทจ์ธ ์ด๋ฆ„:       ์ „ํ™”๋ฒˆํ˜ธ:           ์ฃผ์†Œ:
    ๊น€์œ ๋ฆผ           010-1234-5678     ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ...
    ๊น€์ข…๊ตญ           010-2345-6789     ๊ฒฝ๊ธฐ๋„ ์„ฑ๋‚จ์‹œ...
    ์ดํšจ๋ฆฌ           010-3456-7890     ๋ถ€์‚ฐ์‹œ ํ•ด์šด๋Œ€๊ตฌ...
    
  • ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ:
    • ์ˆ˜์ทจ์ธ, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ ๊ฐœ์ˆ˜ ์ผ์น˜ ํ™•์ธ
    • ๋นˆ ์ค„ ์ž๋™ ์ œ๊ฑฐ
    • ์˜ค๋ฅ˜ ์‹œ ๋ช…ํ™•ํ•œ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ:
    • โœ… Seed ์ฃผ๋ฌธ 3๊ฐœ ์ƒ์„ฑ (20260322_Seed_a/b/c)
    • โœ… CS ์ฃผ๋ฌธ 2๊ฐœ ์ƒ์„ฑ (20260322_CS_a/b)
    • โœ… ์ฃผ๋ฌธ๋ฒˆํ˜ธ ๋ฐ ์ƒํ’ˆ์ฝ”๋“œ ๊ณ ์œ ์„ฑ ๊ฒ€์ฆ ํ†ต๊ณผ
    • โœ… ํ˜•์‹ ๊ฒ€์ฆ ํ†ต๊ณผ
  • ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ:
    • ๋งˆ์Šคํ„ฐ ํŒŒ์ผ ๋ถˆํ•„์š” (์ˆ˜๋™ ์ž…๋ ฅ ์‹œ)
    • ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ ์ž…๋ ฅ ๊ฐ€๋Šฅ
    • ์‹ค์‹œ๊ฐ„ ์ฃผ๋ฌธ ๋ชฉ๋ก ํ™•์ธ
    • 3PL ๋ณ€ํ™˜์— ์ž๋™ ํฌํ•จ

v3.18 (2026-03-07)

โœ… ๊ณต๊ฐœ Google Sheets ์—ฐ๋™์œผ๋กœ ๋ณต๊ท€ - ์ธ์ฆ ๋ถˆํ•„์š”

  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ:
    • Service Account ์ธ์ฆ ๋ฐฉ์‹ ์ œ๊ฑฐ (๋ณต์žก๋„ ๊ฐ์†Œ)
    • ๊ณต๊ฐœ CSV Export URL ๋ฐฉ์‹์œผ๋กœ ๋ณต๊ท€
    • ์ธ์ฆ ๋ถˆํ•„์š” - ๋งํฌ ๊ณต์œ ๋งŒ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ํƒญ ์ด๋ฆ„์— ํ•œ๊ธ€/๊ด„ํ˜ธ ํฌํ•จ โ†’ urllib.parse.quote๋กœ URL ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ
  • sheets_utils.py ๋ณต์›:
    • CSV Export URL: https://docs.google.com/.../export?format=csv&sheet=์ƒํ’ˆ ์ฝ”๋“œ ์ตœ์ข…(๋งˆ์Šคํ„ฐ ์ฝ”๋“œ)
    • ํƒญ ์ด๋ฆ„: ์ƒํ’ˆ ์ฝ”๋“œ ์ตœ์ข…(๋งˆ์Šคํ„ฐ ์ฝ”๋“œ) (ํ•œ๊ธ€/๊ด„ํ˜ธ ์ž๋™ ์ธ์ฝ”๋”ฉ)
    • gspread, google-auth ์˜์กด์„ฑ ์ œ๊ฑฐ
    • ๊ฐ„๋‹จํ•œ requests.get() ํ˜ธ์ถœ๋กœ ๋ฐ์ดํ„ฐ ๋กœ๋“œ
  • webhook_server.py ๊ฐ„์†Œํ™”:
    • Secret token ๊ฒ€์ฆ ์ œ๊ฑฐ (๊ณต๊ฐœ webhook)
    • ๋‹จ์ˆœ POST ์—”๋“œํฌ์ธํŠธ๋กœ ๋ณ€๊ฒฝ
  • Google Apps Script ๊ฐ„์†Œํ™”:
    • google_apps_script.js (Service Account ๋ฒ„์ „ ์ œ๊ฑฐ)
    • ๊ณต๊ฐœ Sheets ์ „์šฉ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€๊ฒฝ
    • B~F์—ด ๋ณ€๊ฒฝ ๊ฐ์ง€ (onEdit ํŠธ๋ฆฌ๊ฑฐ)
    • ์ธ์ฆ ๋ถˆํ•„์š” - ๋‹จ์ˆœ webhook POST
  • ๋ฌธ์„œ ์ •๋ฆฌ:
    • Service Account ๊ด€๋ จ ๋ฌธ์„œ ๋ชจ๋‘ ์ œ๊ฑฐ
    • GOOGLE_SHEETS_SETUP.md - ๊ณต๊ฐœ ๋งํฌ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ
    • ์„ค์ • ์‹œ๊ฐ„: 20๋ถ„ โ†’ 5๋ถ„์œผ๋กœ ๋‹จ์ถ•
  • ์žฅ์ :
    • โœ… ์„ค์ • ๊ฐ„๋‹จ (Google Cloud Console ๋ถˆํ•„์š”)
    • โœ… ์ธ์ฆ ๋ถˆํ•„์š” (๋งํฌ ๊ณต์œ ๋งŒ ํ•„์š”)
    • โœ… ์ฝ”๋“œ ๊ฐ„๊ฒฐ (์˜์กด์„ฑ ๊ฐ์†Œ)
    • โœ… ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด

v3.17 (2026-03-07)

โœ… Google Service Account ์ธ์ฆ์œผ๋กœ ์ „ํ™˜ - ๋น„๊ณต๊ฐœ Sheets ์‹ค์‹œ๊ฐ„ ์—ฐ๋™

  • ๊ตฌํ˜„ ๋‚ด์šฉ:
    • Google Service Account ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ (gspread + google-auth)
    • ๋น„๊ณต๊ฐœ Google Sheets ์ ‘๊ทผ ๊ฐ€๋Šฅ (Service Account JSON ํ‚ค)
    • st.secrets๋กœ ์ธ์ฆ ์ •๋ณด ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌ
    • B~F์—ด ์ „์ฒด ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ (gid ๊ธฐ๋ฐ˜)
    • Webhook Secret Token ๊ฒ€์ฆ ์ถ”๊ฐ€ (๋ฌด๋‹จ ํ˜ธ์ถœ ๋ฐฉ์ง€)
  • sheets_utils.py ์—…๋ฐ์ดํŠธ:
    • CSV export ๋ฐฉ์‹ โ†’ Service Account ์ธ์ฆ ๋ฐฉ์‹
    • gspread๋กœ ์ง์ ‘ Sheets API ํ˜ธ์ถœ
    • ์•ฑ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์ž๋™์œผ๋กœ Sheets์—์„œ ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๋กœ๋“œ
  • webhook_server.py ์—…๋ฐ์ดํŠธ:
    • Secret token ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€
    • ์ธ์ฆ ์‹คํŒจ ์‹œ 401 Unauthorized ์‘๋‹ต
    • Token ์„ค์ • ์ƒํƒœ๋ฅผ /health ์—”๋“œํฌ์ธํŠธ์— ํฌํ•จ
  • Google Apps Script ์ฝ”๋“œ ์ถ”๊ฐ€:
    • google_apps_script_service_account.js
    • B~F์—ด ๋ณ€๊ฒฝ ๊ฐ์ง€ (onEdit ํŠธ๋ฆฌ๊ฑฐ)
    • Webhook POST ์š”์ฒญ (secret token ํฌํ•จ)
    • ์„ค์ • ๋ฐ ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜ ํฌํ•จ (setupTrigger, testWebhook, checkConfiguration)
  • ์„ค์ • ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ž‘์„ฑ:
    • GOOGLE_SERVICE_ACCOUNT_SETUP.md - Service Account ๋ฐœ๊ธ‰ ๊ฐ€์ด๋“œ
    • SETUP_GUIDE.md - ์ „์ฒด ์„ค์ • ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ
    • .streamlit/secrets.toml.example - Secrets ํ…œํ”Œ๋ฆฟ
    • SERVICE_ACCOUNT_SUMMARY.md - ์™„๋ฃŒ ์š”์•ฝ ๋ฌธ์„œ
  • ๋ณด์•ˆ ๊ฐ•ํ™”:
    • .gitignore์— Service Account JSON ํŒŒ์ผ ์ถ”๊ฐ€
    • secrets.toml์€ ์ ˆ๋Œ€ ์ปค๋ฐ‹ ์•ˆ ๋จ
    • ๋ชจ๋“  ์ธ์ฆ ์ •๋ณด๋Š” st.secrets ๋˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ๋งŒ ๊ด€๋ฆฌ
  • ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ:
    • โœ… ๋น„๊ณต๊ฐœ Google Sheets ์ ‘๊ทผ (Service Account)
    • โœ… ์•ฑ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ Sheets์—์„œ ๋งˆ์Šคํ„ฐ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ
    • โœ… Sheets B~F์—ด ๋ณ€๊ฒฝ ์‹œ ์ฆ‰์‹œ Streamlit ์•ฑ์— ๋ฐ˜์˜ (webhook)
    • โœ… Polling ๋ฐฉ์‹ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
    • โœ… Secret token์œผ๋กœ webhook ๋ณด์•ˆ
    • โœ… ์ธ์ฆ ์ •๋ณด๋Š” ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€

v3.16 (2026-03-07)

โœ… ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ ๋™๊ธฐํ™” ์ด์Šˆ ์™„์ „ ํ•ด๊ฒฐ

  • ๋ฌธ์ œ: ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์—๋Š” ์ ‘๋ฏธ์‚ฌ(a, b, c...)๊ฐ€ ์ •์ƒ ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ, ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ
  • ์›์ธ: ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋ฅผ ์ดˆ๊ธฐ์— ์›๋ณธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•˜๊ณ , ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€ ํ›„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Œ
  • ํ•ด๊ฒฐ: ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋ฅผ ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€ ํ›„์—๋งŒ ์„ค์ •ํ•˜์—ฌ ํ•ญ์ƒ ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€
  • ๊ฒ€์ฆ ๊ฒฐ๊ณผ:
    • โœ… ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ == ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ (100% ์ผ์น˜)
    • โœ… ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ๊ณ ์œ ์„ฑ ๋ณด์žฅ (์ ‘๋ฏธ์‚ฌ: a, b, c...)
    • โœ… ์กฐ๊ฑด 1, 2, 3 ๋ชจ๋‘ ์ถฉ์กฑ
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค:
    ์›๋ณธ: 20260225-83316T835 (3๊ฐœ ์ค‘๋ณต)
    ๊ฒฐ๊ณผ: 
      - 20260225-83316T835  (์ฒซ ๋ฒˆ์งธ)
      - 20260225-83316T835a (๋‘ ๋ฒˆ์งธ, ์ ‘๋ฏธ์‚ฌ a)
      - 20260225-83316T835b (์„ธ ๋ฒˆ์งธ, ์ ‘๋ฏธ์‚ฌ b)
    ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ: ๊ฐ๊ฐ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋จ โœ…
    

v3.15 (2026-03-07)

โœ… ๋„ค์ด๋ฒ„(์Šค๋งˆํŠธ์Šคํ† ์–ด) ํŒŒ์ผ ์ฒ˜๋ฆฌ ์™„์ „ ์ง€์›

  • ๋„ค์ด๋ฒ„ ํŒŒ์ผ skiprows=1 ์ž๋™ ์ฒ˜๋ฆฌ (ํ—ค๋” ํ–‰ ๊ฑด๋„ˆ๋›ฐ๊ธฐ)
  • ๋„ค์ด๋ฒ„ ํŒŒ์ผ ํŠนํ™” ๋งคํ•‘:
    • ์ฃผ๋ฌธ๋ฒˆํ˜ธ โ†’ ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ
    • ์ˆ˜์ทจ์ธ๋ช… โ†’ ์ˆ˜์ทจ์ธ ๋ช…
    • ๊ตฌ๋งค์ž๋ช… โ†’ ์ฃผ๋ฌธ์ž ๋ช… (๋„ค์ด๋ฒ„๋งŒ ๊ตฌ๋ถ„)
    • ์ˆ˜์ทจ์ธ์—ฐ๋ฝ์ฒ˜1 โ†’ ์ˆ˜์ทจ์ธ ์ „ํ™”๋ฒˆํ˜ธ
    • ํ†ตํ•ฉ๋ฐฐ์†ก์ง€ โ†’ ์ˆ˜์ทจ์ธ ๊ธฐ๋ณธ ์ฃผ์†Œ
    • ๋ฐฐ์†ก๋ฉ”์„ธ์ง€ โ†’ ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€
  • ์ƒํ’ˆ๋ฒˆํ˜ธ๋กœ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ๋งค์นญ (100% ์„ฑ๊ณต)
  • ์•”ํ˜ธํ™”๋œ ์Šค๋งˆํŠธ์Šคํ† ์–ด ํŒŒ์ผ ์ž๋™ ๋ณตํ˜ธํ™”
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: 2๊ฑด ๋ชจ๋‘ 100% ๋งค์นญ ์„ฑ๊ณต โœ…

v3.14 (2026-03-07)

โœ… ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์•”ํ˜ธ ์ž…๋ ฅ ๊ธฐ๋Šฅ

  • ๋„ค์ด๋ฒ„ ํƒญ์— ํŒŒ์ผ ์•”ํ˜ธ ์ž…๋ ฅ ํ•„๋“œ ์ถ”๊ฐ€
  • ์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ์—‘์…€ ํŒŒ์ผ ์ž๋™ ๋ณตํ˜ธํ™”
  • ๋ณตํ˜ธํ™” ์šฐ์„ ์ˆœ์œ„: โ‘  ์‚ฌ์šฉ์ž ์ œ๊ณต ๋น„๋ฐ€๋ฒˆํ˜ธ โ†’ โ‘ก ๋นˆ ๋น„๋ฐ€๋ฒˆํ˜ธ โ†’ โ‘ข VelvetSweatshop ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์•”ํ˜ธ ์˜ค๋ฅ˜ ์‹œ ๋ช…ํ™•ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
  • ์‚ฌ์šฉ๋ฒ•: ๋„ค์ด๋ฒ„ ํƒญ์—์„œ ์•”ํ˜ธ ์ž…๋ ฅ โ†’ ํŒŒ์ผ ์—…๋กœ๋“œ
  • ์•”ํ˜ธํ™”๋œ ๋„ค์ด๋ฒ„ ํŒŒ์ผ 100% ์ง€์› โœ…

v3.13 (2026-03-07)

โœ… ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ ๋™๊ธฐํ™”

  • ์กฐ๊ฑด 1: ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋Š” ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ํ•ญ์ƒ ๋™์ผ
  • ์กฐ๊ฑด 2: ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ๋Š” ๊ณ ์œ ์„ฑ ๋ณด์žฅ (์ ‘๋ฏธ์‚ฌ ์ž๋™ ์ถ”๊ฐ€)
  • ์กฐ๊ฑด 3: ๋‘˜ ๋‹ค ๊ฐ™์€ ์ ‘๋ฏธ์‚ฌ ์ ์šฉ
  • ๋ฌธ์ œ: ์ฃผ๋ฌธ๋ฒˆํ˜ธ์— ์ ‘๋ฏธ์‚ฌ๊ฐ€ ๋ถ™์–ด๋„ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋Š” ์›๋ณธ ์œ ์ง€๋จ
  • ํ•ด๊ฒฐ: ensure_unique_order_numbers() ์‹คํ–‰ ํ›„ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋ฅผ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ๋™๊ธฐํ™”
  • ์˜ˆ์‹œ: 20260301-0000277 โ†’ 20260301-0000277a (๋‘˜ ๋‹ค ๊ฐ™์€ ์ ‘๋ฏธ์‚ฌ)
  • 100% ๋™๊ธฐํ™” ๋‹ฌ์„ฑ โœ…

v3.12 (2026-03-02)

โœ… ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ค‘๋ณต ๋ฐฉ์ง€ - ์ž๋™ ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€

  • ๋™์ผํ•œ ์ฃผ๋ฌธ๋ฒˆํ˜ธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€ (a, b, c...)
  • ์˜ˆ์‹œ: 20260225-83316T835 โ†’ 20260225-83316T835, 20260225-83316T835a, 20260225-83316T835b
  • ensure_unique_order_numbers() ํ•จ์ˆ˜๋กœ ๋ชจ๋“  ์ฃผ๋ฌธ๋ฒˆํ˜ธ์˜ ๊ณ ์œ ์„ฑ ๋ณด์žฅ
  • convert_to_3pl_format() ํ•จ์ˆ˜์—์„œ ์ž๋™ ํ˜ธ์ถœ
  • ์ค‘๋ณต 0๊ฐœ, 100% ๊ณ ์œ ํ•œ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ƒ์„ฑ โœ…

v3.11 (2026-03-02)

โœ… ์•ฑ ๋งค์นญ ์˜ค๋ฅ˜ ์ˆ˜์ • - ํ™ฉ์œค์ • & ๊น€์˜ˆ์€ ์ผ€์ด์Šค

  • ํ™ฉ์œค์ •: "[Dip] 1๊ฐœ (๋”ฅ ํŽ˜๋ฆฌ์œ™ํด 1๊ฐœ)" โ†’ ๋”ฅ ํ”Œ๋Ÿผ์ด ์•„๋‹Œ ๋”ฅ ํŽ˜๋ฆฌ์œ™ํด ์ •ํ™•ํžˆ ๋งค์นญ โœ…
  • ๊น€์˜ˆ์€: "[(์•ฑํŠน๊ฐ€) ์•„ํฌ ๊ทน๋ฝ ๋ฒˆ๋“ค] 1๊ฐœ (์•„์ด์Šค 1๊ฐœ)" โ†’ PL์ด ์•„๋‹Œ IC ๋ฒ„์ „ ์ •ํ™•ํžˆ ๋งค์นญ โœ…
  • 4๋‹จ๊ณ„ ์ง€๋Šฅํ˜• ํ•„ํ„ฐ๋ง: ์›๋ณธ ๋ฌธ์ž์—ด โ†’ ์˜ต์…˜๋ช… โ†’ IC/PL ํ‚ค์›Œ๋“œ โ†’ ์ตœ๋‹จ ๋งค์นญ
  • IC/PL ํ‚ค์›Œ๋“œ ์ž๋™ ๊ฐ์ง€: ๋ชจ๋“  ๊ด„ํ˜ธ ๋‚ด์šฉ ๋ถ„์„ํ•˜์—ฌ "์•„์ด์Šค" โ†’ IC, "ํ”Œ๋Ÿผ" โ†’ PL ๊ตฌ๋ถ„
  • ๋„์–ด์“ฐ๊ธฐ ๋ณด์กด: "๋”ฅ ํŽ˜๋ฆฌ์œ™ํด" vs "๋”ฅ ํ”Œ๋Ÿผ" ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ (์ด์ „์—๋Š” "๋”ฅํŽ˜๋ฆฌ์œ™ํด"๋กœ ํ•ฉ์ณ์„œ ๋งค์นญ ์‹คํŒจ)
  • ์ •๊ทœ์‹ โ†’ ๋‹จ์ˆœ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰: ๊ด„ํ˜ธ ํŠน์ˆ˜๋ฌธ์ž ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๋งค์นญ ์„ฑ๊ณต๋ฅ  100% ๋‹ฌ์„ฑ (ํ™ฉ์œค์ • 1/1, ๊น€์˜ˆ์€ 1/1)

v3.7 (2026-02-25)

โœ… ์•ฑ ํŒŒ์ผ ํŠน๋ณ„ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€

  • ์•ฑ ํ”Œ๋žซํผ ์—…๋กœ๋“œ ์‹œ ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰ ๋ฌด์กฐ๊ฑด 1๋กœ ๊ณ ์ •
  • ์•ฑ ํ”Œ๋žซํผ ์—…๋กœ๋“œ ์‹œ ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€ ๋ฌด์กฐ๊ฑด "๋ฒจx, ๋ฌธ์ž"๋กœ ๊ณ ์ •
  • ๋‹ค๋ฅธ ํ”Œ๋žซํผ(์นดํŽ˜24, ์ฟ ํŒก, ๋„ค์ด๋ฒ„)์€ ์›๋ณธ ๋ฐ์ดํ„ฐ ์œ ์ง€

v3.6 (2026-02-25)

โœ… ์•ฑ ํŒŒ์ผ ๋งค์นญ ๋กœ์ง ์™„์ „ ๊ตฌํ˜„

  • ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ ํ•ด๊ฒฐ: CP949 ๋””์ฝ”๋”ฉ + ์ˆ˜๋™ ์ปฌ๋Ÿผ๋ช… ์„ค์ •
  • parse_app_product() ํ•จ์ˆ˜ ์ถ”๊ฐ€: [์ƒํ’ˆ๋ช…] N๊ฐœ (์˜ต์…˜) ํ˜•์‹ ํŒŒ์‹ฑ
  • ํŒจํ„ด ๋งค์นญ์œผ๋กœ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ์—์„œ ์ƒํ’ˆ ์ •๋ณด ์ž๋™ ์ถ”์ถœ
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: 4๊ฑด ๋ชจ๋‘ 100% ๋งค์นญ ์„ฑ๊ณต โœ…

v3.5 (2026-02-24)

โœ… ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ ์ค‘๋ณต ๋ฐฉ์ง€

  • ๋‹ค์ค‘ ํ”Œ๋žซํผ ํ†ตํ•ฉ ์‹œ ์ „์ฒด ๋ฐ์ดํ„ฐ์— 1๋ถ€ํ„ฐ ์ˆœ๋ฒˆ ์žฌํ• ๋‹น
  • int64 ํƒ€์ž… ์œ ์ง€ (๋ฌธ์ž์—ด ๋ณ€ํ™˜์—์„œ ์ œ์™ธ)
  • ํ…Œ์ŠคํŠธ: 98๊ฐœ ํ–‰์—์„œ 1~98 ์—ฐ์† ๋ฒˆํ˜ธ, ์ค‘๋ณต 0๊ฐœ ํ™•์ธ

v3.4 (2026-02-24)

โœ… ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ ์ถ”๊ฐ€: 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆœ์ฐจ ๋ฒˆํ˜ธ ์ž๋™ ์ƒ์„ฑ
โœ… ์š”์ฒญ(ํฌ๋ง)๋ฐฐ์†ก ์ผ์ž ์ถ”๊ฐ€: ์˜ค๋Š˜ ๋‚ ์งœ YYYY-MM-DD ํ˜•์‹์œผ๋กœ ์ž๋™ ์ž…๋ ฅ

v3.0.3 (2026-02-22)

โœ… ํ”Œ๋žซํผ ์ด๋ฆ„ ๋งคํ•‘ ์ถ”๊ฐ€

  • ์˜๋ฌธ ํ”Œ๋žซํผ ์ด๋ฆ„(cafe24, coupang, naver, app) โ†’ ํ•œ๊ธ€(์นดํŽ˜24, ์ฟ ํŒก, ๋„ค์ด๋ฒ„, ์•ฑ) ์ž๋™ ๋ณ€ํ™˜
  • PLATFORM_NAME_MAP ๋”•์…”๋„ˆ๋ฆฌ ์ถ”๊ฐ€๋กœ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ๋ฌธ์ œ ํ•ด๊ฒฐ

โœ… KeyError ์™„์ „ ํ•ด๊ฒฐ

  • ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ์‹œ ํ•œ๊ธ€ ํŒ๋งค์ฒ˜๋ช… ์‚ฌ์šฉ์œผ๋กœ ๋นˆ DataFrame ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ['์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ด๋ฆ„'] not in index ์˜ค๋ฅ˜ ์™„์ „ ์ œ๊ฑฐ

โœ… Arrow ํƒ€์ž… ๋ณ€ํ™˜ ์˜ค๋ฅ˜ ์ˆ˜์ •

  • ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Streamlit st.dataframe() ํ˜ธํ™˜์„ฑ ๊ฐœ์„ 
  • ์šฐํŽธ๋ฒˆํ˜ธ, ์ˆ˜๋Ÿ‰ ๋“ฑ ์ •์ˆ˜ํ˜• ์ปฌ๋Ÿผ์˜ Arrow ๋ณ€ํ™˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

v3.0.2 (2026-02-22)

โœ… ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ •๊ทœํ™”
โœ… Arrow ๋ณ€ํ™˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

v3.0.1 (2026-02-22)

โœ… ๋นˆ DataFrame ์ฒดํฌ ์ถ”๊ฐ€
โœ… ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ์—†์„ ๋•Œ ๋งค์นญ ์‹คํŒจ ์ฆ‰์‹œ ๋ฐ˜ํ™˜

v3.0 (2026-02-22)

โœ… ํ†ตํ•ฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์› - ๋‹จ์ผ ํŽ˜์ด์ง€์—์„œ ์นดํŽ˜24, ์•ฑ, ์ฟ ํŒก, ๋„ค์ด๋ฒ„ ๋ชจ๋“  ํŒŒ์ผ ๋™์‹œ ์ฒ˜๋ฆฌ
โœ… ์ž๋™ ํ”Œ๋žซํผ ๊ฐ์ง€ - ์ปฌ๋Ÿผ๋ช… ๊ธฐ๋ฐ˜ ์ง€๋Šฅํ˜• ํ”Œ๋žซํผ ๋ถ„๋ฅ˜
โœ… ํ”Œ๋žซํผ๋ณ„ ๋งค์นญ ๋กœ์ง - ๊ฐ ํ”Œ๋žซํผ์˜ ํŠน์„ฑ์— ๋งž๋Š” ์ฝ”๋“œ ์ถ”์ถœ ๋ฐ ๋งค์นญ
โœ… 10๊ฐœ ์ปฌ๋Ÿผ ์ถœ๋ ฅ - ํ”Œ๋žซํผ, ์ฃผ๋ฌธ๋ฒˆํ˜ธ, ์ˆ˜์ทจ์ธ๋ช…, ํ•ธ๋“œํฐ, ์ฃผ์†Œ, ์ƒํ’ˆ์ฝ”๋“œ, ์ƒํ’ˆ๋ช…, ์˜ต์…˜, ์ˆ˜๋Ÿ‰, ๋ฐฐ์†ก๋ฉ”์‹œ์ง€, ๋งค์นญ๋ฐฉ๋ฒ•, ํ™•์ธํ•„์š”
โœ… ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„ - ๊ฐ ํ”Œ๋žซํผ์˜ ๋งค์นญ ๊ฒฐ๊ณผ ๋ฐ ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ํ†ต๊ณ„

v2.2 (2026-02-22)

โœ… 3PL ์ถœ๋ ฅ ์–‘์‹ ์™„์ „ ์ˆ˜์ •
โœ… ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ, ์ƒํ’ˆ ์ด๋ฆ„, ์˜ต์…˜ ์ด๋ฆ„ ๋ชจ๋‘ ๋งˆ์Šคํ„ฐ ํŒŒ์ผ์—์„œ ์ถ”์ถœ
โœ… ํ‘œ์ค€ 9๊ฐœ ์ปฌ๋Ÿผ ์ถœ๋ ฅ
โœ… 100% ๋งค์นญ ์„ฑ๊ณต (49/49๊ฑด)

v2.1 (2026-02-22)

โœ… ๋งค์นญ ๋กœ์ง ์ˆ˜์ •: ์นดํŽ˜24 ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ ๋งค์นญ
โœ… 100% ๋งค์นญ๋ฅ  ๋‹ฌ์„ฑ

v2.0 (2026-01-31)

โœ… 3PL ๋ฐฐ์†ก ์–‘์‹ ์ž๋™ ๋ณ€ํ™˜ ์‹œ์Šคํ…œ
โœ… ๋ฌผ๋ฅ˜_์ฝ”๋“œ๋ช… ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ๋กœ๋“œ
โœ… 3๋‹จ๊ณ„ ์ง€๋Šฅํ˜• ์ฝ”๋“œ ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜
โœ… ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ž๋™ ์ถ”์ฒœ (50% ์ด์ƒ)
โœ… ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ ์‹œ๊ฐ์  ๊ฐ•์กฐ
โœ… ๋งค์นญ ๊ฒฐ๊ณผ ๋ถ„์„ ๋ฐ ํ†ต๊ณ„

v1.1 (2026-01-31)

โœ… ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ
โœ… 8๊ฐ€์ง€ ํ‘œ์ค€ ์ปฌ๋Ÿผ ์ž๋™ ๋งคํ•‘
โœ… ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์ž๋™ ๊ฐ์ง€ (UTF-8, CP949, EUC-KR)
โœ… ์•”ํ˜ธํ™”๋œ ์—‘์…€ ํŒŒ์ผ ์ž๋™ ๋ณตํ˜ธํ™” ์‹œ๋„
โœ… ๊ตฌํ˜• XLS ํ˜•์‹ ์ง€์›
โœ… ์ตœ์‹  XLSX ํ˜•์‹ ์ง€์›
โœ… ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
โœ… ์›น ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์ถ•


์—…๋ฐ์ดํŠธ ๋‚ด์—ญ

v3.15 (2026-03-07) - ๋„ค์ด๋ฒ„(์Šค๋งˆํŠธ์Šคํ† ์–ด) ํŒŒ์ผ ์ฒ˜๋ฆฌ ์™„์ „ ์ง€์› ๐ŸŸข

  • ๐ŸŽ‰ ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์ž๋™ ๊ฐ์ง€ ๋ฐ ์ฒ˜๋ฆฌ
    • ํŒŒ์ผ๋ช…์— '์Šค๋งˆํŠธ์Šคํ† ์–ด' ํฌํ•จ ์‹œ ์ž๋™์œผ๋กœ skiprows=1 ์ ์šฉ
    • ํ—ค๋” ํ–‰(์„ค๋ช…๋ฌธ) ์ž๋™ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
    • 72๊ฐœ ์ปฌ๋Ÿผ ์ค‘ ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ์ž๋™ ์ถ”์ถœ
  • ๐Ÿ” ๋„ค์ด๋ฒ„ ํŠนํ™” ์ปฌ๋Ÿผ ๋งคํ•‘
    • ์ˆ˜์ทจ์ธ๋ช…: '์ˆ˜์ทจ์ธ๋ช…' ์ปฌ๋Ÿผ (๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ ๋ณ„๋„)
    • ๊ตฌ๋งค์ž๋ช…: '๊ตฌ๋งค์ž๋ช…' ์ปฌ๋Ÿผ โ†’ ์ฃผ๋ฌธ์ž ๋ช… (๋„ค์ด๋ฒ„๋งŒ ๊ตฌ๋ถ„)
    • ์ˆ˜์ทจ์ธ ์ „ํ™”: '์ˆ˜์ทจ์ธ์—ฐ๋ฝ์ฒ˜1' ์ปฌ๋Ÿผ
    • ์ˆ˜์ทจ์ธ ์ฃผ์†Œ: 'ํ†ตํ•ฉ๋ฐฐ์†ก์ง€' ์ปฌ๋Ÿผ
    • ๋ฐฐ์†ก๋ฉ”์„ธ์ง€: '๋ฐฐ์†ก๋ฉ”์„ธ์ง€' ์ปฌ๋Ÿผ
  • ๐Ÿ“Š ์ƒํ’ˆ๋ฒˆํ˜ธ ๋งค์นญ
    • ์ƒํ’ˆ๋ฒˆํ˜ธ (11์ž๋ฆฌ ์ˆซ์ž) โ†’ ๋งˆ์Šคํ„ฐ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ
    • ํƒ€์ž… ์ž๋™ ๋ณ€ํ™˜ (int โ†’ str) ์œผ๋กœ 100% ๋งค์นญ
  • ๐Ÿ” ์•”ํ˜ธํ™” ํŒŒ์ผ ์ง€์›
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ž๋™ ๋ณตํ˜ธํ™”
    • ๋ณตํ˜ธํ™” ์„ฑ๊ณต ์‹œ skiprows=1 ์ž๋™ ์ ์šฉ
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
    • 2๊ฑด ๋„ค์ด๋ฒ„ ์ฃผ๋ฌธ ๋ชจ๋‘ 100% ๋งค์นญ ์„ฑ๊ณต
    • ์ƒํ’ˆ๋ฒˆํ˜ธ 11574588816 โ†’ N-AR-GRK-10 / GRS, LFT4W

v3.14 (2026-03-07) - ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์•”ํ˜ธ ์ž…๋ ฅ ๊ธฐ๋Šฅ ๐Ÿ”

  • ๐Ÿ”’ ์•”ํ˜ธํ™”๋œ ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์ง€์›
    • ๋„ค์ด๋ฒ„ ํƒญ์— ํŒŒ์ผ ์•”ํ˜ธ ์ž…๋ ฅ ํ•„๋“œ ์ถ”๊ฐ€
    • st.text_input(type="password") ์‚ฌ์šฉ์œผ๋กœ ๋ณด์•ˆ ๊ฐ•ํ™”
    • ์•”ํ˜ธ ์ž…๋ ฅ ํ›„ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ์ž๋™์œผ๋กœ ๋ณตํ˜ธํ™”
  • ๐Ÿ”ง read_file() ํ•จ์ˆ˜ ๊ฐœ์„ 
    • password ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€: read_file(uploaded_file, password=None)
    • ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์ฝ๊ธฐ ์‹œ ์„ธ์…˜ ์Šคํ…Œ์ดํŠธ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋™ ์ „๋‹ฌ
  • ๐Ÿ” ๋ณตํ˜ธํ™” ์šฐ์„ ์ˆœ์œ„ ์ตœ์ ํ™”
    1. ์‚ฌ์šฉ์ž ์ œ๊ณต ๋น„๋ฐ€๋ฒˆํ˜ธ (์šฐ์„  ์‹œ๋„) โœ…
    2. ๋นˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ('') (๋นˆ ์•”ํ˜ธ ํŒŒ์ผ)
    3. VelvetSweatshop ์•Œ๊ณ ๋ฆฌ์ฆ˜ (๊ธฐ๋ณธ ์•”ํ˜ธ)
  • ๐Ÿ’ฌ ๋ช…ํ™•ํ•œ ํ”ผ๋“œ๋ฐฑ
    • ์•”ํ˜ธ ์„ค์ • ์‹œ: "๐Ÿ” ํŒŒ์ผ ์•”ํ˜ธ๊ฐ€ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค"
    • ๋ณตํ˜ธํ™” ์„ฑ๊ณต: "๐Ÿ”“ ์ œ๊ณต๋œ ์•”ํ˜ธ๋กœ ํŒŒ์ผ ๋ณตํ˜ธํ™” ์„ฑ๊ณต"
    • ๋ณตํ˜ธํ™” ์‹คํŒจ: "๋ณตํ˜ธํ™” ์‹คํŒจ: ์˜ฌ๋ฐ”๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"
  • ๐Ÿ“Š ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    1. ๋„ค์ด๋ฒ„ ํƒญ์—์„œ ํŒŒ์ผ ์•”ํ˜ธ ์ž…๋ ฅ (์•”ํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ)
    2. ๋„ค์ด๋ฒ„ ํŒŒ์ผ ์—…๋กœ๋“œ
    3. ์ž๋™์œผ๋กœ ๋ณตํ˜ธํ™” ๋ฐ ์ฒ˜๋ฆฌ

v3.13 (2026-03-07) - ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ ๋™๊ธฐํ™” ๐Ÿ”—

  • ๐Ÿ› ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ
    • ๋ฌธ์ œ: ์ฃผ๋ฌธ๋ฒˆํ˜ธ์— ์ ‘๋ฏธ์‚ฌ(a, b, c...)๊ฐ€ ๋ถ™์–ด๋„ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋Š” ์›๋ณธ ์œ ์ง€
    • ์›์ธ: ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋Š” ์›๋ณธ result_df['์ฃผ๋ฌธ๋ฒˆํ˜ธ']๋ฅผ ์‚ฌ์šฉ, ensure_unique_order_numbers() ์‹คํ–‰ ํ›„ ์—…๋ฐ์ดํŠธ ์•ˆ ๋จ
    • ํ•ด๊ฒฐ: ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ output_df['์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ'] = output_df['์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ']๋กœ ๋™๊ธฐํ™”
  • ๐Ÿ”ง 3๊ฐ€์ง€ ์กฐ๊ฑด ์™„๋ฒฝ ์ค€์ˆ˜
    1. ์‡ผํ•‘๋ชฐ ๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋Š” ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ํ•ญ์ƒ ๊ฐ™์Œ โœ…
    2. ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ๋Š” ๊ณ ์œ ์„ฑ ๋ณด์žฅ (์ ‘๋ฏธ์‚ฌ ์ž๋™ ์ถ”๊ฐ€) โœ…
    3. ๋‘˜ ๋‹ค ๊ฐ™์€ ์ ‘๋ฏธ์‚ฌ ์ ์šฉ (์˜ˆ: 20260301-0000277a) โœ…
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
    • ์›๋ณธ 2๊ฑด ์ค‘๋ณต: 20260301-0000277, 20260227-0000288
    • ๋ณ€ํ™˜ ํ›„: 20260301-0000277a, 20260227-0000288a (๋ฌถ์Œ ๋ฐฐ์†ก ๋ฒˆํ˜ธ๋„ ๋™์ผ)
    • 192๊ฑด ์ค‘ 190๊ฑด ์ผ์น˜, 2๊ฑด ๋™๊ธฐํ™” ์™„๋ฃŒ โ†’ 100% ์ผ์น˜ โœ…

v3.12 (2026-03-02) - ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ค‘๋ณต ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๐Ÿ”ข

  • โœจ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ๊ณ ์œ ์„ฑ ๋ณด์žฅ
    • ensure_unique_order_numbers() ํ•จ์ˆ˜ ์ถ”๊ฐ€
    • ๋™์ผ ์ฃผ๋ฌธ๋ฒˆํ˜ธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ๋ถ€ํ„ฐ a, b, c... ์ ‘๋ฏธ์‚ฌ ์ž๋™ ์ถ”๊ฐ€
    • ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž 26๊ฐœ ์ง€์› (์ตœ๋Œ€ 27๊ฐœ ์ค‘๋ณต๊นŒ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)
  • ๐Ÿ”ง ์ž๋™ ์ ์šฉ
    • convert_to_3pl_format() ํ•จ์ˆ˜์—์„œ ์ž๋™ ํ˜ธ์ถœ
    • ํ”Œ๋žซํผ ํ†ตํ•ฉ ํ›„ ์ตœ์ข… DataFrame์— ์ ์šฉ
    • ์‚ฌ์šฉ์ž ๊ฐœ์ž… ์—†์ด ์ž๋™์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ
  • ๐Ÿ“Š ์ ์šฉ ์˜ˆ์‹œ
    ์›๋ณธ:
    - 20260225-83316T835
    - 20260225-83316T835
    - 20260225-83316T835
    
    ๋ณ€ํ™˜ ํ›„:
    - 20260225-83316T835
    - 20260225-83316T835a
    - 20260225-83316T835b
    
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: 6๊ฑด ์ค‘๋ณต โ†’ 0๊ฑด ์ค‘๋ณต, 100% ๊ณ ์œ  ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ƒ์„ฑ โœ…

v3.11 (2026-03-02) - ์•ฑ ๋งค์นญ ์˜ค๋ฅ˜ ์ˆ˜์ • (ํ™ฉ์œค์ • & ๊น€์˜ˆ์€) ๐Ÿ”งโœจ

  • ๐Ÿ› ํ™ฉ์œค์ • ๋”ฅ ํŽ˜๋ฆฌ์œ™ํด ๋งค์นญ ์‹คํŒจ ํ•ด๊ฒฐ
    • ๋ฌธ์ œ: "[Dip] 1๊ฐœ (๋”ฅ ํŽ˜๋ฆฌ์œ™ํด 1๊ฐœ)" โ†’ ๋”ฅ ํ”Œ๋Ÿผ์œผ๋กœ ์ž˜๋ชป ๋งค์นญ
    • ์›์ธ: ์˜ต์…˜๋ช…์—์„œ ๋„์–ด์“ฐ๊ธฐ ์ œ๊ฑฐํ•˜์—ฌ "๋”ฅํŽ˜๋ฆฌ์œ™ํด"๋กœ ๋ณ€ํ™˜ โ†’ ๋งˆ์Šคํ„ฐ "๋”ฅ ํŽ˜๋ฆฌ์œ™ํด 1๊ฐœ"์™€ ๋ถˆ์ผ์น˜
    • ํ•ด๊ฒฐ: ๋„์–ด์“ฐ๊ธฐ ๋ณด์กด, ์›๋ณธ ๋ฌธ์ž์—ด ์šฐ์„  ๋งค์นญ
  • ๐Ÿ› ๊น€์˜ˆ์€ ์•„ํฌ ๊ทน๋ฝ IC/PL ๊ตฌ๋ถ„ ์‹คํŒจ ํ•ด๊ฒฐ
    • ๋ฌธ์ œ: "[(์•ฑํŠน๊ฐ€) ์•„ํฌ ๊ทน๋ฝ ๋ฒˆ๋“ค] 1๊ฐœ (์•„์ด์Šค 1๊ฐœ)" โ†’ PL ๋ฒ„์ „์œผ๋กœ ์ž˜๋ชป ๋งค์นญ
    • ์›์ธ: ์ฒซ ๋ฒˆ์งธ ๊ด„ํ˜ธ "(์•ฑํŠน๊ฐ€)"๋งŒ ์ถ”์ถœ โ†’ IC/PL ๊ตฌ๋ถ„ ๋ถˆ๊ฐ€
    • ํ•ด๊ฒฐ: ๋ชจ๋“  ๊ด„ํ˜ธ ๋‚ด์šฉ ๋ถ„์„, IC/PL ํ‚ค์›Œ๋“œ ์ž๋™ ๊ฐ์ง€
  • โœจ parse_app_product ๊ฐœ์„ 
    • ๋ชจ๋“  ๊ด„ํ˜ธ ๋‚ด์šฉ ์ถ”์ถœ ๋ฐ IC/PL ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
    • ์˜ต์…˜_์›๋ณธ ํ•„๋“œ ์ถ”๊ฐ€ (๋„์–ด์“ฐ๊ธฐ ํฌํ•จ)
    • IC/PL_ํ‚ค์›Œ๋“œ ํ•„๋“œ ์ถ”๊ฐ€ (IC, PL, PW ๋“ฑ)
  • ๐Ÿ” 4๋‹จ๊ณ„ ์ง€๋Šฅํ˜• ํ•„ํ„ฐ๋ง
    1. ์›๋ณธ ๋ฌธ์ž์—ด ์ •ํ™• ๋งค์นญ (์˜ˆ: "๋”ฅ ํŽ˜๋ฆฌ์œ™ํด 1๊ฐœ")
    2. ์˜ต์…˜๋ช… (๋„์–ด์“ฐ๊ธฐ ํฌํ•จ) ๋งค์นญ
    3. IC/PL ํ‚ค์›Œ๋“œ๋กœ ๋ฒ„์ „ ๊ตฌ๋ถ„
    4. ์ตœ๋‹จ ๋ฌธ์ž์—ด ์„ ํƒ (๊ฐ€์žฅ ์ •ํ™•ํ•œ ๋งค์นญ)
  • ๐Ÿ”ง ์ •๊ทœ์‹ โ†’ ๋‹จ์ˆœ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰
    • ๊ด„ํ˜ธ () ํŠน์ˆ˜๋ฌธ์ž ๋ฌธ์ œ ํ•ด๊ฒฐ
    • regex=True โ†’ regex=False ๋ณ€๊ฒฝ
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: ํ™ฉ์œค์ • & ๊น€์˜ˆ์€ 100% ์ •ํ™• ๋งค์นญ ์„ฑ๊ณต โœ…

v3.7 (2026-02-25) - ์•ฑ ํŒŒ์ผ ํŠน๋ณ„ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ โš™๏ธ

  • โœจ ์•ฑ ์ „์šฉ ๊ณ ์ •๊ฐ’ ์„ค์ •
    • ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰: ํ•ญ์ƒ 1๋กœ ๊ณ ์ • (๋‹ค๋ฅธ ํ”Œ๋žซํผ์€ ์›๋ณธ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ)
    • ๋ฐฐ์†ก ๋ฉ”์„ธ์ง€: ํ•ญ์ƒ "๋ฒจx, ๋ฌธ์ž"๋กœ ๊ณ ์ • (๋‹ค๋ฅธ ํ”Œ๋žซํผ์€ ์›๋ณธ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ)
  • ๐Ÿ”ง ์กฐ๊ฑด๋ถ€ ๋กœ์ง ์ถ”๊ฐ€
    • if platform == 'app': ์กฐ๊ฑด์œผ๋กœ ์•ฑ ํŒŒ์ผ๋งŒ ํŠน๋ณ„ ์ฒ˜๋ฆฌ
    • ์นดํŽ˜24, ์ฟ ํŒก, ๋„ค์ด๋ฒ„๋Š” ๊ธฐ์กด ๋กœ์ง ์œ ์ง€
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ์™„๋ฃŒ: ์•ฑ ํŒŒ์ผ 4๊ฑด ๋ชจ๋‘ ๊ณ ์ •๊ฐ’ ์ ์šฉ ํ™•์ธ

v3.6 (2026-02-25) - ์•ฑ ํŒŒ์ผ ๋งค์นญ ๋กœ์ง ์™„์ „ ๊ตฌํ˜„ ๐ŸŽ‰

  • ๐Ÿ”ง ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • CP949 ๋””์ฝ”๋”ฉ์œผ๋กœ ํŒŒ์ผ ์ฝ๊ธฐ ์„ฑ๊ณต
    • ์ˆ˜๋™ ์ปฌ๋Ÿผ๋ช… ์„ค์ •์œผ๋กœ ๊นจ์ง„ ํ—ค๋” ๋ฌธ์ œ ํ•ด๊ฒฐ
  • โœจ ์ฃผ๋ฌธ์ƒํ’ˆ ํŒŒ์‹ฑ ํ•จ์ˆ˜ ์ถ”๊ฐ€
    • parse_app_product(): [์ƒํ’ˆ๋ช…] N๊ฐœ (์˜ต์…˜) ํ˜•์‹์—์„œ ์ƒํ’ˆ๋ช…, ์ˆ˜๋Ÿ‰, ์˜ต์…˜ ์ถ”์ถœ
    • ์˜ˆ์‹œ: [Zee] 1๊ฐœ (ํŽ˜๋ฆฌ์œ™ํด PERIWINKLE 1๊ฐœ) โ†’ ์ƒํ’ˆ๋ช…: Zee, ์ˆ˜๋Ÿ‰: 1, ์˜ต์…˜: ํŽ˜๋ฆฌ์œ™ํด PERIWINKLE 1๊ฐœ
  • ๐Ÿ” ํŒจํ„ด ๋งค์นญ ๊ตฌํ˜„
    • ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ์˜ ํŒ๋งค ์ƒํ’ˆ ์ฝ”๋“œ์—์„œ [์ƒํ’ˆ๋ช…] ํŒจํ„ด ๊ฒ€์ƒ‰
    • 100% ๋งค์นญ ์„ฑ๊ณต๋ฅ  ๋‹ฌ์„ฑ (4/4๊ฑด)
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
    • 4๊ฑด์˜ ์•ฑ ์ฃผ๋ฌธ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ๋งค์นญ
    • ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ์ฝ”๋“œ, ์ƒํ’ˆ ์ด๋ฆ„, ์˜ต์…˜ ์ด๋ฆ„ ์ •ํ™•ํžˆ ์ถ”์ถœ

v3.5 (2026-02-24) - ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ ์ค‘๋ณต ๋ฐฉ์ง€ ๐Ÿ”ข

  • ๐Ÿ”ง ํ†ตํ•ฉ ์‹œ ์ˆœ๋ฒˆ ์žฌํ• ๋‹น
    • ๋‹ค์ค‘ ํ”Œ๋žซํผ ํ†ตํ•ฉ ํ›„ merged_df['์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ'] = list(range(1, len(merged_df)+1))
    • ๊ฐ ํ”Œ๋žซํผ์˜ 1N ๋ฒˆํ˜ธ๊ฐ€ ํ†ตํ•ฉ ํ›„ 1์ „์ฒดํ–‰์ˆ˜๋กœ ์žฌํ• ๋‹น
  • ๐Ÿ”ข int64 ํƒ€์ž… ์œ ์ง€
    • ๋ฌธ์ž์—ด ๋ณ€ํ™˜ ์‹œ ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ ์ œ์™ธ
    • if col != '์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ': ์กฐ๊ฑด ์ถ”๊ฐ€
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
    • 49๊ฑด + 49๊ฑด = 98๊ฑด ํ†ตํ•ฉ ์‹œ 1~98 ์—ฐ์† ๋ฒˆํ˜ธ
    • ์ค‘๋ณต 0๊ฐœ, ์ˆœ์ฐจ ์ฆ๊ฐ€ ํ™•์ธ

v3.4 (2026-02-24) - 32๊ฐœ ํ‘œ์ค€ ์ปฌ๋Ÿผ ์™„์„ฑ ๐Ÿ“‹

  • โœจ ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ ์ถ”๊ฐ€ (20๋ฒˆ ์ปฌ๋Ÿผ)
    • 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆœ์ฐจ ๋ฒˆํ˜ธ ์ž๋™ ์ƒ์„ฑ
    • ๋ฐ์ดํ„ฐ ํƒ€์ž…: int64
    • ๊ตฌํ˜„: output_df['์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ ๋ผ์ธ๋ฒˆํ˜ธ'] = list(range(1, n_rows + 1))
  • โœจ ์š”์ฒญ(ํฌ๋ง)๋ฐฐ์†ก ์ผ์ž ์ถ”๊ฐ€ (23๋ฒˆ ์ปฌ๋Ÿผ)
    • ์˜ค๋Š˜ ๋‚ ์งœ YYYY-MM-DD ํ˜•์‹ ์ž๋™ ์ž…๋ ฅ
    • ๋ฐ์ดํ„ฐ ํƒ€์ž…: object (๋‚ ์งœ ๋ฌธ์ž์—ด)
    • ๊ตฌํ˜„: output_df['์š”์ฒญ(ํฌ๋ง)๋ฐฐ์†ก ์ผ์ž'] = [today] * n_rows (today = datetime.now().strftime('%Y-%m-%d'))
  • ๐Ÿ“Š ์ด 34๊ฐœ ์ปฌ๋Ÿผ ์ถœ๋ ฅ: 32๊ฐœ ํ‘œ์ค€ + 2๊ฐœ ๋””๋ฒ„๊น…

v3.0.3 (2026-02-22) - ํ”Œ๋žซํผ ๋งคํ•‘ ๋ฐ ํƒ€์ž… ์˜ค๋ฅ˜ ์ˆ˜์ • ๐Ÿ›

  • ๐Ÿ”ง ํ”Œ๋žซํผ ์ด๋ฆ„ ๋งคํ•‘ ์ถ”๊ฐ€
    • PLATFORM_NAME_MAP ๋”•์…”๋„ˆ๋ฆฌ ์ถ”๊ฐ€: {'cafe24': '์นดํŽ˜24', 'app': '์•ฑ', 'coupang': '์ฟ ํŒก', 'naver': '๋„ค์ด๋ฒ„'}
    • ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ์‹œ ์˜๋ฌธ โ†’ ํ•œ๊ธ€ ์ž๋™ ๋ณ€ํ™˜
  • โœ… KeyError ์™„์ „ ํ•ด๊ฒฐ
    • platform_master = master_df[master_df['ํŒ๋งค์ฒ˜'] == PLATFORM_NAME_MAP.get(platform)]
    • ๋นˆ DataFrame ๋ฌธ์ œ ์™„์ „ ์ œ๊ฑฐ
  • โœ… Arrow ํƒ€์ž… ๋ณ€ํ™˜ ์˜ค๋ฅ˜ ์ˆ˜์ •
    • ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜: merged_df[col].astype(str)
    • 'nan', 'None', '' โ†’ ๋นˆ ๋ฌธ์ž์—ด ์ •๋ฆฌ
  • ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: ์นดํŽ˜24 49๊ฑด, ์ฟ ํŒก 26๊ฑด ๋ชจ๋‘ 100% ๋งค์นญ ์„ฑ๊ณต

v3.0.2 (2026-02-22) - Arrow ๋ณ€ํ™˜ ์˜ค๋ฅ˜ ์ˆ˜์ •

  • ๐Ÿ”ง ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ •๊ทœํ™”
    • ์šฐํŽธ๋ฒˆํ˜ธ, ์ˆ˜๋Ÿ‰ ๋“ฑ ์ •์ˆ˜ํ˜• ์ปฌ๋Ÿผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
    • Streamlit Arrow ํ…Œ์ด๋ธ” ๋ณ€ํ™˜ ํ˜ธํ™˜์„ฑ ๊ฐœ์„ 

v3.0.1 (2026-02-22) - ๋นˆ DataFrame ์ฒดํฌ ์ถ”๊ฐ€

  • ๐Ÿ”ง ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ๊ฐ•ํ™”
    • if platform_master.empty: ์ฒดํฌ ์ถ”๊ฐ€
    • ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ์—†์„ ๋•Œ ์ฆ‰์‹œ ๋งค์นญ ์‹คํŒจ ๋ฐ˜ํ™˜

v3.0 (2026-02-22) - ํ†ตํ•ฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์› ๐ŸŽ‰

  • ๐ŸŽ‰ ๋‹จ์ผ ํŽ˜์ด์ง€ ํ†ตํ•ฉ UI
    • ๋ชจ๋“  ํ”Œ๋žซํผ ํŒŒ์ผ์„ ๋™์‹œ์— ์—…๋กœ๋“œํ•˜๊ณ  ์ฒ˜๋ฆฌ
    • ๋ชจ๋“œ ํ† ๊ธ€ ์ œ๊ฑฐ, ๋‹จ์ˆœํ™”๋œ ์›Œํฌํ”Œ๋กœ์šฐ
  • ๐Ÿง  ์ž๋™ ํ”Œ๋žซํผ ๊ฐ์ง€
    • ์ปฌ๋Ÿผ๋ช… ๊ธฐ๋ฐ˜ ์ง€๋Šฅํ˜• ํ”Œ๋žซํผ ๋ถ„๋ฅ˜
    • detect_platform() ํ•จ์ˆ˜๋กœ ์ž๋™ ํŒ๋ณ„
  • ๐Ÿ“Š ํ”Œ๋žซํผ๋ณ„ ๋งค์นญ ๋กœ์ง
    • ์นดํŽ˜24: ์ž์ฒดํ’ˆ๋ชฉ์ฝ”๋“œ ๋งค์นญ
    • ์ฟ ํŒก: ์˜ต์…˜ID ๋งค์นญ
    • ์•ฑ: ์ฃผ๋ฌธ์ƒํ’ˆ ํŒŒ์‹ฑ ํ›„ ๋งค์นญ
    • ๋„ค์ด๋ฒ„: ์ƒํ’ˆ๋ฒˆํ˜ธ ๋งค์นญ
  • ๐Ÿ“ˆ ํ”Œ๋žซํผ๋ณ„ ํ†ต๊ณ„ ๋ฐ ๋ถ„์„
    • ํŒŒ์ผ ์ •๋ณด ํ…Œ์ด๋ธ”
    • ํ”Œ๋žซํผ๋ณ„ ์ฃผ๋ฌธ ์ˆ˜ ๋ฐ ํ™•์ธ ํ•„์š” ํ•ญ๋ชฉ
    • ๋งค์นญ ๋ฐฉ๋ฒ•๋ณ„ ํ†ต๊ณ„
  • ๐ŸŽจ ๊ฐœ์„ ๋œ UI/UX
    • ์—…๋กœ๋“œ๋œ ํŒŒ์ผ ์ž๋™ ๋ถ„๋ฅ˜ ํ‘œ์‹œ
    • ํ”Œ๋žซํผ๋ณ„ ์นด๋“œ ํ˜•ํƒœ ์ •๋ณด ํ‘œ์‹œ
    • ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„ ๋ฉ”ํŠธ๋ฆญ

v1.1 (2026-01-31)

  • โœจ ์•”ํ˜ธํ™”๋œ ์—‘์…€ ํŒŒ์ผ ์ง€์› ์ถ”๊ฐ€
  • โœจ ๊ตฌํ˜• XLS ํŒŒ์ผ ํ˜•์‹ ์ง€์›
  • ๐Ÿ”ง ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฐœ์„ 

v1.0 (2026-01-31)

  • ๐ŸŽ‰ ์ดˆ๊ธฐ ๋ฒ„์ „ ๋ฆด๋ฆฌ์Šค
  • ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ
  • ์ž๋™ ์ปฌ๋Ÿผ ๋งคํ•‘
  • ์›น ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์ถ•

์ถ”์ฒœ ๋‹ค์Œ ๋‹จ๊ณ„

  1. ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์›: ์ฟ ํŒก, ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธ์Šคํ† ์–ด ๋“ฑ ์ถ”๊ฐ€ โœ… v3.0 ์™„๋ฃŒ
  2. ์•ฑ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€: ๋ฌผ๋ฅ˜_์ฝ”๋“œ๋ช….xlsx์— ์•ฑ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
  3. ์ปค์Šคํ…€ ๋งคํ•‘ ๊ทœ์น™: ์›น์—์„œ ์ง์ ‘ ๋งคํ•‘ ๊ทœ์น™ ์ˆ˜์ •
  4. AI ๊ธฐ๋ฐ˜ ๋งค์นญ: GPT ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ๊ณ ๋„ํ™”๋œ ๋งค์นญ
  5. ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ: ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ ์ตœ์ ํ™”
  6. API ์—ฐ๋™: 3PL ์‹œ์Šคํ…œ๊ณผ ์ง์ ‘ ์—ฐ๋™

๋ผ์ด์„ ์Šค

MIT License

๊ฐœ๋ฐœ์ž

Arooo Operator ๊น€์œ ๋ฆผ


๐ŸŽฏ v3.0 ํ•ต์‹ฌ ๊ฐ€์น˜: ๋ชจ๋“  ์‡ผํ•‘๋ชฐ ํ”Œ๋žซํผ(์นดํŽ˜24, ์•ฑ, ์ฟ ํŒก, ๋„ค์ด๋ฒ„)์˜ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฅ˜_์ฝ”๋“œ๋ช… ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ์™€ ์ง€๋Šฅ์ ์œผ๋กœ ๋งค์นญํ•˜์—ฌ ํ†ตํ•ฉ 3PL ๋ฐฐ์†ก ์–‘์‹์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜, ๋ฌผ๋ฅ˜ ์—…๋ฌด ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค!

About

An automated logistics integration solution that consolidates and transforms order data from Cafe24, Coupang, Naver Smart Store, and internal apps into standardized 3PL formats

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages