# πŸ“¦ EZ Pickup β€” μ°½κ³  ν”½μ—… μ΅œλ‹¨κ²½λ‘œ μ΅œμ ν™” (포트폴리였 데λͺ¨) > 솑μž₯ 번호만 μž…λ ₯ν•˜λ©΄, ν”½μ—…ν•  μƒν’ˆλ“€μ˜ μœ„μΉ˜λ₯Ό μ°½κ³  λ„λ©΄μ—μ„œ μ°Ύμ•„ **μ΅œλ‹¨ 이동 경둜**λ₯Ό κ³„μ‚°ν•΄μ£ΌλŠ” λ¬Όλ₯˜ ν”½μ—… 지원 μ‹œμŠ€ν…œ. ## 이 ν”„λ‘œμ νŠΈκ°€ ν•˜λŠ” 일 λ¬Όλ₯˜μ„Όν„°μ—μ„œ 배솑을 λ‚˜κ°€κΈ° μ „, λ‹΄λ‹ΉμžλŠ” μ—¬λŸ¬ 솑μž₯에 ν¬ν•¨λœ μƒν’ˆμ„ μ°½κ³ μ—μ„œ ν•˜λ‚˜μ”© 골라야 ν•©λ‹ˆλ‹€. 솑μž₯ μˆ˜μ‹­ 건이 μŒ“μ΄λ©΄ "μ–΄λŠ μƒν’ˆμ΄ μ–΄λ”” 있고, μ–΄λ–€ μˆœμ„œλ‘œ κ°€μ•Ό κ°€μž₯ λΉ λ₯Έμ§€"λ₯Ό 머리둜 κ³„μ‚°ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. 이 μ‹œμŠ€ν…œμ€ 이 과정을 μžλ™ν™”ν•©λ‹ˆλ‹€: 1. **솑μž₯ μž…λ ₯** β†’ 솑μž₯ λ²ˆν˜Έμ— ν•΄λ‹Ήν•˜λŠ” μƒν’ˆ 내역을 μžλ™ 쑰회 - (싀무 버전: μ΄μ§€μ–΄λ“œλ―Ό(EasyAdmin) κ΄€λ¦¬μž νŽ˜μ΄μ§€ μžλ™ 둜그인 ν›„ 크둀링) 2. **μƒν’ˆ μ’Œν‘œ λ§€ν•‘** β†’ μƒν’ˆλ³„ μ°½κ³  μœ„μΉ˜(μΉΈ/μΈ΅)λ₯Ό λ„λ©΄μ—μ„œ 쑰회 3. **μ΅œλ‹¨ 경둜 계산** β†’ BFS둜 ν†΅λ‘œ κ°„ 거리λ₯Ό κ³„μ‚°ν•˜κ³ , TSP(μ™ΈνŒμ› 문제)둜 λ°©λ¬Έ μˆœμ„œ μ΅œμ ν™” 4. **κ²°κ³Ό 제곡** β†’ μ°½κ³  도면 μœ„μ— 색상별 경둜 + ν”½μ—… 체크리슀트(μˆ˜λŸ‰/측수)λ₯Ό ν•œ 화면에 ν‘œμ‹œ ## 핡심 기술 포인트 | ꡬ뢄 | λ‚΄μš© | |------|------| | μ°½κ³  λͺ¨λΈλ§ | 도면 μ‹œνŠΈλ₯Ό κ·Έλ¦¬λ“œλ‘œ λ³€ν™˜ β€” `warehouse`(μƒν’ˆμΉΈ) / `Corridor`(ν†΅λ‘œ) / `START`(좜발점) | | 경둜 탐색 | BFS(λ„ˆλΉ„ μš°μ„  탐색)둜 ν†΅λ‘œ κ°„ μ΅œλ‹¨κ±°λ¦¬ ν–‰λ ¬ 계산 | | μˆœμ„œ μ΅œμ ν™” | μˆœμ—΄ 탐색 기반 TSP β€” λ°©λ¬Έ μˆœμ„œλ₯Ό λ°”κΏ”κ°€λ©° 총 이동거리 μ΅œμ†Œν™” | | μ‹œκ°ν™” | matplotlib둜 도면 + 경둜(ꡬ간별 μƒ‰μƒΒ·ν™”μ‚΄ν‘œ) + ν”½μ—…μΉΈ κ°•μ‘° 이미지 생성 | | κ²°κ³Ό 곡유 | λ‹΄λ‹Ήμžλ³„ κ²°κ³Ό νŽ˜μ΄μ§€ 생성 β€” 싀무 버전은 GitHub Pages μ—…λ‘œλ“œ + QR 곡유 | ## 데λͺ¨ μ‹€ν–‰ 방법 ```bash pip install -r requirements.txt python app.py ``` λΈŒλΌμš°μ €μ—μ„œ **http://localhost:3939** 접속 β†’ μ˜ˆμ‹œ 솑μž₯ `00001`~`00010` 쀑 μ•„λ¬΄κ±°λ‚˜ 2~3개 선택 ν›„ **제좜** β†’ μ΅œλ‹¨ 경둜 이미지 + ν”½μ—… 체크리슀트 확인. > πŸ’‘ `00010` 솑μž₯μ—λŠ” **μ’Œν‘œκ°€ μ—†λŠ” μƒν’ˆ(λ―Έλ°°μΉ˜μƒν’ˆ)**이 ν¬ν•¨λ˜μ–΄ μžˆμ–΄, > μ²΄ν¬λ¦¬μŠ€νŠΈμ— 빨간색 κ²½κ³ κ°€ ν‘œμ‹œλ˜λŠ” μ—λŸ¬ 처리 흐름도 ν•¨κ»˜ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ## ν”„λ‘œμ νŠΈ ꡬ쑰 ``` ez-pickup-demo/ β”œβ”€β”€ app.py # Flask μ›Ή μ„œλ²„ (데λͺ¨: 둜컬 데이터 μ‚¬μš©) β”œβ”€β”€ navi.py # 핡심 μ•Œκ³ λ¦¬μ¦˜ β€” κ·Έλ¦¬λ“œ λ‘œλ”© / BFS / TSP / μ‹œκ°ν™” β”œβ”€β”€ data/ β”‚ β”œβ”€β”€ demo_data.xlsx # μ°½κ³  도면 + μ˜ˆμ‹œ μƒν’ˆ μœ„μΉ˜ (싀데이터 비식별화) β”‚ └── sample_invoices.json # μ˜ˆμ‹œ 솑μž₯ β†’ μƒν’ˆ λ§€ν•‘ β”œβ”€β”€ templates/ # 메인 νŽ˜μ΄μ§€ / κ²°κ³Ό νŽ˜μ΄μ§€ β”œβ”€β”€ static/results/ # μƒμ„±λœ 경둜 이미지 + κ²°κ³Ό HTML └── requirements.txt ``` ## 싀무 적용 μŠ€ν† λ¦¬ - **문제**: κ³ μ • 배솑 인λ ₯ + κ΅μœ‘λΉ„λ₯Ό 듀여도, μ‹ κ·œ μ•Œλ°”λŠ” μ°½κ³  μœ„μΉ˜λ₯Ό λͺ°λΌ 첫날뢀터 μ œλŒ€λ‘œ 일할 수 μ—†μŒ - **ν•΄κ²°**: 이 μ•± ν•˜λ‚˜λ©΄ **λˆ„κ΅¬λ‚˜** 솑μž₯만 μž…λ ₯해도 μ΅œλ‹¨ κ²½λ‘œμ™€ ν”½μ—… λͺ©λ‘μ„ 받을 수 μžˆμ–΄, κ³ μ • 인λ ₯ 없이 μœ μ—°ν•œ μ•Œλ°” 체제둜 μ „ν™˜ κ°€λŠ₯ (λΆˆν•„μš”ν•œ μ‹œκΈ° 인원 감좕 λͺ©μ ) - **섀계 μ˜λ„**: μ˜ˆμΈ‘μ„ κ°•μ œν•˜μ§€ μ•Šκ³  "μ°Έκ³  도ꡬ"둜 μ œκ³΅ν•΄ ν˜„μž₯ 반발 없이 λ„μž… κ°€λŠ₯ν•˜κ²Œ 섀계 --- *λ³Έ 데λͺ¨λŠ” μ‹€μ œ 운영 데이터(μƒν’ˆλͺ…/계정 정보)λ₯Ό λͺ¨λ‘ μ˜ˆμ‹œ λ°μ΄ν„°λ‘œ κ΅μ²΄ν•œ λ²„μ „μž…λ‹ˆλ‹€.*