# ๐Ÿš€ Project Roadmap ## Phase 1: MVP (Minimum Viable Product) โœ… ์™„๋ฃŒ ### ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [x] ์›น ํฌ๋กค๋ง (Selenium ๊ธฐ๋ฐ˜) - [x] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ (SQLite) - [x] ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ (Windows Toast) - [x] HWP ๋ณด๊ณ ์„œ ์ƒ์„ฑ - [x] ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ - [x] ์„ค์ • ๊ด€๋ฆฌ --- ## Phase 2: ์•ˆ์ •ํ™” ๋ฐ ๊ณ ๋„ํ™” ๐Ÿ”„ ์ง„ํ–‰ ์ค‘ ### 2.1 ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„  - [x] ReportService ๋ฆฌํŒฉํ† ๋ง (1056์ค„ โ†’ 400์ค„) - [x] Controller ๋ฆฌํŒฉํ† ๋ง (730์ค„ โ†’ 487์ค„) - Manager ํŒจํ„ด ์ ์šฉ - [x] ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฒด๊ณ„ ๊ตฌ์ถ• (`core/exceptions.py`) - [x] ๋กœ๊น… ์ฒด๊ณ„ ๊ฐœ์„  - [x] Docstring ์ƒ์„ธํ™” ### 2.2 ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  - [x] ๊ธฐ์กด ๋ณด๊ณ ์„œ ์ค‘๋ณต ์ฒดํฌ - [x] ํžˆ์Šคํ† ๋ฆฌ ๋‹ค์ด์–ผ๋กœ๊ทธ ์„ค์ • ๋ฒ„ํŠผ - [ ] ์—ด์ฐจ๋ฒˆํ˜ธ ์กฐํšŒ ์‹คํŒจ ์‹œ UI ๊ฐœ์„  - [ ] ๋ณด๊ณ ์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ - [ ] ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ํŒŒ์ผ ์ฒจ๋ถ€ ### 2.3 ์„ฑ๋Šฅ ์ตœ์ ํ™” - [ ] ํฌ๋กค๋ง ์†๋„ ๊ฐœ์„  (๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ) - [ ] DB ์ธ๋ฑ์Šค ์ตœ์ ํ™” - [ ] ์‹œ๊ฐํ‘œ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„  (์บ์‹ฑ) --- ## Phase 3: ๊ธฐ๋Šฅ ํ™•์žฅ ๐Ÿ“… ๊ณ„ํš ์ค‘ ### 3.1 ๋‹ค์ค‘ ํ˜ธ์„  ์ง€์› - [ ] 2ํ˜ธ์„  ์‹œ๊ฐํ‘œ ์ถ”๊ฐ€ - [ ] 3ํ˜ธ์„  ์‹œ๊ฐํ‘œ ์ถ”๊ฐ€ - [ ] ํ˜ธ์„ ๋ณ„ ์„ค์ • ๋ถ„๋ฆฌ - [ ] ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ ### 3.2 ํ†ต๊ณ„ ๋ฐ ๋ถ„์„ ๐Ÿ“Š #### 3.2.1 VOC ํ†ต๊ณ„/ํ†ตํ•ฉ ๋ถ„์„๋ณด๊ณ ์„œ (์‹ ๊ทœ ์ œ์•ˆ) **๋ชฉํ‘œ**: ์ˆ˜์ง‘๋œ VOC ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต๊ณ„ ๋ถ„์„ ๋ฐ ํ†ตํ•ฉ ๋ณด๊ณ ์„œ ์ƒ์„ฑ **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: - [ ] **๊ธฐ๊ฐ„๋ณ„ ํ†ต๊ณ„** - ์ผ๊ฐ„/์ฃผ๊ฐ„/์›”๊ฐ„/์—ฐ๊ฐ„ VOC ๋ฐœ์ƒ ๊ฑด์ˆ˜ - ๋ถ€์„œ๋ณ„ VOC ๋ถ„ํฌ (์ฐจ๋Ÿ‰, ์‹œ์„ค, ์—ญ๋ฌด ๋“ฑ) - ์ฒ˜๋ฆฌ ์ƒํƒœ๋ณ„ ํ˜„ํ™ฉ (์ ‘์ˆ˜, ์ฒ˜๋ฆฌ์ค‘, ์™„๋ฃŒ) - ๊ณต๊ฐœ/๋น„๊ณต๊ฐœ ๋น„์œจ - [ ] **ํ‚ค์›Œ๋“œ ๋ถ„์„** - ๋นˆ์ถœ ํ‚ค์›Œ๋“œ TOP 10 - ํ‚ค์›Œ๋“œ๋ณ„ ๋ฐœ์ƒ ์ถ”์ด (์‹œ๊ณ„์—ด) - ์›Œ๋“œ ํด๋ผ์šฐ๋“œ ์ƒ์„ฑ - [ ] **์—ญ๋ณ„ ๋ถ„์„** - ์—ญ๋ณ„ VOC ๋ฐœ์ƒ ๊ฑด์ˆ˜ (ํžˆํŠธ๋งต) - ๋ฌธ์ œ ๋‹ค๋ฐœ ๊ตฌ๊ฐ„ ์‹๋ณ„ - ์‹œ๊ฐ„๋Œ€๋ณ„ ๋ฐœ์ƒ ํŒจํ„ด - [ ] **ํ†ตํ•ฉ ๋ณด๊ณ ์„œ ์ƒ์„ฑ** - PDF/Excel ํ˜•์‹ ์ง€์› - ์ฐจํŠธ ๋ฐ ๊ทธ๋ž˜ํ”„ ์ž๋™ ์ƒ์„ฑ (matplotlib/plotly) - ์›”๊ฐ„ ์ •๊ธฐ ๋ณด๊ณ ์„œ ์ž๋™ ์ƒ์„ฑ - ์ด๋ฉ”์ผ ์ž๋™ ๋ฐœ์†ก (์„ ํƒ) **๊ธฐ์ˆ  ์Šคํƒ**: - `pandas`: ๋ฐ์ดํ„ฐ ๋ถ„์„ - `matplotlib` / `plotly`: ์‹œ๊ฐํ™” - `openpyxl`: Excel ์ƒ์„ฑ - `reportlab`: PDF ์ƒ์„ฑ **์˜ˆ์ƒ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„**: 2์ฃผ **์šฐ์„ ์ˆœ์œ„**: ์ค‘๊ฐ„ (v2.5 ๋ชฉํ‘œ) #### 3.2.2 ๊ธฐํƒ€ ๋ถ„์„ ๊ธฐ๋Šฅ - [ ] VOC ๋ฐœ์ƒ ์ถ”์ด ๊ทธ๋ž˜ํ”„ (์‹ค์‹œ๊ฐ„) - [ ] ๋ถ€์„œ๋ณ„ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ - [ ] ์‘๋‹ต ์‹œ๊ฐ„ ๋ถ„์„ (์ ‘์ˆ˜ โ†’ ์™„๋ฃŒ) - [ ] ์žฌ๋ฐœ VOC ์ถ”์  ### 3.3 ์™ธ๋ถ€ ์—ฐ๋™ - [ ] ์—‘์…€ ๋‚ด๋ณด๋‚ด๊ธฐ - [ ] ์ด๋ฉ”์ผ ์ž๋™ ๋ฐœ์†ก - [ ] ๋ฉ”์‹ ์ € ์•Œ๋ฆผ (์นด์นด์˜คํ†ก, ์Šฌ๋ž™) - [ ] API ์„œ๋ฒ„ ๊ตฌ์ถ• --- ## Phase 4: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ ๐Ÿ’ก ์•„์ด๋””์–ด ### 4.1 ํ˜‘์—… ๊ธฐ๋Šฅ - [ ] ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์ง€์› - [ ] ๊ถŒํ•œ ๊ด€๋ฆฌ (๊ด€๋ฆฌ์ž/์ผ๋ฐ˜) - [ ] ๋Œ“๊ธ€ ๋ฐ ๋ฉ”๋ชจ ๊ธฐ๋Šฅ - [ ] ์ž‘์—… ํ• ๋‹น ๋ฐ ์ถ”์  ### 4.2 ๊ณ ๊ธ‰ ๋ถ„์„ - [ ] AI ๊ธฐ๋ฐ˜ VOC ๋ถ„๋ฅ˜ - [ ] ๊ฐ์ • ๋ถ„์„ (๊ธ์ •/๋ถ€์ •) - [ ] ์ž๋™ ์‘๋‹ต ํ…œํ”Œ๋ฆฟ ์ถ”์ฒœ - [ ] ์˜ˆ์ธก ๋ถ„์„ (๋ฐœ์ƒ ํŒจํ„ด) ### 4.3 ํ”Œ๋žซํผ ํ™•์žฅ - [ ] ์›น UI (Flask/FastAPI) - [ ] ๋ชจ๋ฐ”์ผ ์•ฑ (React Native) - [ ] ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™” - [ ] ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์ง€์› (macOS, Linux) --- ## ๐Ÿ’ก ์•„์ด๋””์–ด ๋ณด๊ด€ํ•จ (Icebox) ### ์ฐฝ์˜์  ์•„์ด๋””์–ด - **์Œ์„ฑ ์ธ์‹**: ์ „ํ™” VOC ์ž๋™ ํ…์ŠคํŠธ ๋ณ€ํ™˜ - **OCR**: ์ด๋ฏธ์ง€ ์ฒจ๋ถ€ํŒŒ์ผ ํ…์ŠคํŠธ ์ถ”์ถœ - **์ฑ—๋ด‡**: ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์ž๋™ ์‘๋‹ต - **๋Œ€์‹œ๋ณด๋“œ**: ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™”๋ฉด (TV ์ถœ๋ ฅ์šฉ) - **๊ฒŒ์ž„ํ™”**: VOC ์ฒ˜๋ฆฌ ์‹œ ํฌ์ธํŠธ ์ ๋ฆฝ, ๋žญํ‚น ### ๊ธฐ์ˆ  ์‹คํ—˜ - **Playwright**: Selenium ๋Œ€์ฒด ๊ฒ€ํ†  - **FastAPI**: ์›น API ์„œ๋ฒ„ ๊ตฌ์ถ• - **Docker**: ์ปจํ…Œ์ด๋„ˆํ™” - **CI/CD**: ์ž๋™ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ### ๐ŸŽฏ ์ž๋™ ์—…๋ฐ์ดํŠธ ์‹œ์Šคํ…œ [์™„๋ฃŒ] โœ… **์š”์ฒญ์ผ**: 2026-02-18 **์™„๋ฃŒ์ผ**: 2026-02-18 **๋ชฉํ‘œ**: ํ”„๋กœ๊ทธ๋žจ์˜ ์ž๋™ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ **์™„๋ฃŒ๋œ ๊ธฐ๋Šฅ**: - [x] Supabase ๊ธฐ๋ฐ˜ ์›๊ฒฉ ๋ฒ„์ „ ๊ด€๋ฆฌ - [x] 1์‹œ๊ฐ„๋งˆ๋‹ค ์ž๋™ ์—…๋ฐ์ดํŠธ ์ฒดํฌ - [x] ์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ ๋ฐ ์ž๋™ ์„ค์น˜ - [x] ๋ฉ€ํ‹ฐํ”„๋กœ์ ํŠธ ์ง€์› (์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ ์„ค๊ณ„) - [x] updater.exe ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜ (๋ณ„๋„ ํŒจํ‚น) - [x] CustomTkinter ๊ธฐ๋ฐ˜ ์ตœ์†Œ GUI **๊ตฌํ˜„ ํŒŒ์ผ**: - `app/updater/__init__.py`: ๋ชจ๋“ˆ ์ดˆ๊ธฐํ™” - `app/updater/__version__.py`: ๋ฒ„์ „ ์ •๋ณด - `app/updater/update_manager.py`: ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ์šฉ ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ์ž - `app/updater/updater_gui.py`: updater.exe์šฉ GUI - `app/updater/updatelog.md`: ์—…๋ฐ์ดํŠธ ๋กœ๊ทธ **์ƒ์„ธ ๋‚ด์šฉ**: `docs/project_spec.md` 10์žฅ ์ฐธ์กฐ --- **์ฐธ๊ณ **: ์ด ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ„๋„ ๋ชจ๋“ˆ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. --- ## ๐Ÿ“Š ์šฐ์„ ์ˆœ์œ„ ๋งคํŠธ๋ฆญ์Šค | ๊ธฐ๋Šฅ | ์ค‘์š”๋„ | ๊ธด๊ธ‰๋„ | ์šฐ์„ ์ˆœ์œ„ | |------|--------|--------|----------| | Controller ๋ฆฌํŒฉํ† ๋ง | ๋†’์Œ | ๋†’์Œ | ๐Ÿ”ด ์ฆ‰์‹œ | | ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ฐœ์„  | ๋†’์Œ | ๋†’์Œ | ๐Ÿ”ด ์ฆ‰์‹œ | | ์—ด์ฐจ๋ฒˆํ˜ธ UI ๊ฐœ์„  | ์ค‘๊ฐ„ | ๋†’์Œ | ๐ŸŸก ์ด๋ฒˆ ์ฃผ | | **VOC ํ†ต๊ณ„/ํ†ตํ•ฉ ๋ถ„์„๋ณด๊ณ ์„œ** | **๋†’์Œ** | **์ค‘๊ฐ„** | **๐ŸŸก ๋‹ค์Œ ๋‹ฌ** | | ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ | ์ค‘๊ฐ„ | ๋‚ฎ์Œ | ๐ŸŸข ๋‹ค์Œ ๋‹ฌ | | ๋‹ค์ค‘ ํ˜ธ์„  ์ง€์› | ๋†’์Œ | ๋‚ฎ์Œ | ๐ŸŸข ๋‹ค์Œ ๋‹ฌ | | ์›น UI | ๋‚ฎ์Œ | ๋‚ฎ์Œ | โšช ๋ณด๋ฅ˜ | --- ## ๐ŸŽฏ ๋งˆ์ผ์Šคํ†ค ### v2.0 (2026-02-17) โœ… ์™„๋ฃŒ - ReportService ๋ฆฌํŒฉํ† ๋ง - ๊ธฐ์กด ๋ณด๊ณ ์„œ ์ค‘๋ณต ์ฒดํฌ - ๋ฌธ์„œ ์ฒด๊ณ„ ์ •๋น„ ### v2.1 (2026-02-18) โœ… ์™„๋ฃŒ - Controller ๋ฆฌํŒฉํ† ๋ง (Manager ํŒจํ„ด ์ ์šฉ) - ReportManager, FileManager, UIManager ์‹ ๊ทœ ์ƒ์„ฑ - ๊ธฐ์กด Manager ๊ฐœ์„  (SchedulerManager, NotificationManager) - ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฒด๊ณ„ ์™„์„ฑ (`core/exceptions.py`) - UI ๊ฐœ์„  (์—ด์ฐจ๋ฒˆํ˜ธ ์กฐํšŒ ์‹คํŒจ ์ฒ˜๋ฆฌ - CTkComboBox ๋ฌธ์ œ ํ•ด๊ฒฐ) - ์„ค์ • ๋‹ค์ด์–ผ๋กœ๊ทธ Z-order ๋ฌธ์ œ ํ•ด๊ฒฐ - ์•Œ๋žŒ ์‹œ์Šคํ…œ ๊ฐœ์„  - ํ‚ค์›Œ๋“œ ํ•„ํ„ฐ๋ง ์ œ๊ฑฐ (๋ชจ๋“  ๊ด€์‹ฌ๊ธ€ ์•Œ๋ฆผ) - ๋ฏธํ™•์ธ ๊ธ€ ์ฃผ๊ธฐ์  ์•Œ๋ฆผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (30๋ถ„๋งˆ๋‹ค) - last_check_time ์˜์†ํ™” - ์ค‘๋ณต ์•Œ๋ฆผ ๋ฐฉ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ถ”๊ฐ€ - ์‹ ๊ทœ/๋ฏธํ™•์ธ ์•Œ๋ฆผ ์ฃผ๊ธฐ ์„ค์ •ํ™” - ๋ฏธํ™•์ธ 30๋ถ„ ๊ฒฝ๊ณผ ์กฐ๊ฑด ON/OFF ํ† ๊ธ€ ์ถ”๊ฐ€ ### v2.5 (2026-03-31 ๋ชฉํ‘œ) - ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ - ์—‘์…€ ๋‚ด๋ณด๋‚ด๊ธฐ - ์„ฑ๋Šฅ ์ตœ์ ํ™” ### v3.2 (2026-02-18) โœ… ์™„๋ฃŒ - ์ž๋™ ์—…๋ฐ์ดํŠธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - UpdateManager: Supabase ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ์ฒดํฌ - UpdaterGUI: ๋ณ„๋„ ์‹คํ–‰ํŒŒ์ผ์šฉ ์—…๋ฐ์ดํŠธ GUI - updater.exe ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜ ์ ์šฉ - updatelog.md ์œ„์น˜ ๋ณ€๊ฒฝ (docs/ โ†’ app/updater/) - ๋ฉ”์ธ ์•ฑ ํ†ตํ•ฉ (ํŠธ๋ ˆ์ด ์ˆ˜๋™ ํ™•์ธ + ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒดํฌ + ์Šน์ธ ์‹คํ–‰ ํ”Œ๋กœ์šฐ) - ๋นŒ๋“œ ์ฒด์ธ ์ถ”๊ฐ€ (updater ๋‹จ๋… ๋นŒ๋“œ + ๋ฉ”์ธ ํŒจํ‚ค์ง• ํฌํ•จ) ### v3.0 (2026-06-30 ๋ชฉํ‘œ) - ๋‹ค์ค‘ ํ˜ธ์„  ์ง€์› - ์›น UI ๋ฒ ํƒ€ - API ์„œ๋ฒ„ ๊ตฌ์ถ• --- ์ž‘์„ฑ์ž: KH.Choi ์ตœ์ข… ์ˆ˜์ •: 2026-02-18