Walkee๋ HealthKit๊ณผ ์ฐ๋๋ ๊ฑท๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก
Alan AI๊ฐ ๊ฐ์ธ ๋ง์ถคํ ํ๋ ๋ฐ ๊ฑท๊ธฐ ์ฝ์ค๋ฅผ ์ถ์ฒํ๋ ํฌ์ค์ผ์ด ์ฑ์
๋๋ค.
๊ฐ์ธ์ ๊ฑด๊ฐ ์ํ์ ์ฒด๋ ฅ ์์ค์ ๊ณ ๋ คํ ๋ง์ถคํ ๊ฑท๊ธฐ ์๋ฃจ์
์ ์ ๊ณตํ์ฌ
๊ธฐ์กด ๋ง๋ณด๊ธฐ ์ฑ๊ณผ ๋ฌ๋ฆฌ AI๊ฐ ์ฌ์ฉ์๋ณ ์ต์ ํ๋ ํ๋์ ์ ์ํฉ๋๋ค.
ํ๋์ธ๋ค์ ์ด๋ ๋ถ์กฑ๊ณผ ๊ฑด๊ฐ ๊ด๋ฆฌ์ ๋ํ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
๊ธฐ์กด์ ํ์ผ์ ์ธ ๊ฑด๊ฐ ์ฑ๋ค๊ณผ ๋ฌ๋ฆฌ, ๊ฐ์ธ์ ์ ์ฒด ์กฐ๊ฑด๊ณผ ๊ฑด๊ฐ ์ํ๋ฅผ ๊ณ ๋ คํ ๋ง์ถคํ ์ถ์ฒ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์ธํ: ์ฌ์ฉ์์ ์ฑ๋ณ, ๋์ด, ํค, ๋ชธ๋ฌด๊ฒ, ์ง๋ณ ์ฌ๋ถ๋ฅผ ์ข ํฉ ๋ถ์
- ์ง๋ฅํ: Alan AI๋ฅผ ํตํ ์ค์๊ฐ ๊ฑด๊ฐ ์๋ด ๋ฐ ์ฝ์ค ์ถ์ฒ
- ๋ณด์์ฑ: Face ID/Touch ID ๊ธฐ๋ฐ ๋ฏผ๊ฐ์ ๋ณด ๋ณดํธ
- ํธ์์ฑ: ์ค์๊ฐ ์์ ฏ ๋๊ธฐํ๋ก ์ฑ ์คํ ์์ด๋ ๋ฐ์ดํฐ ํ์ธ
- AI ๊ธฐ๋ฐ ๋ง์ถค ๋ถ์: ๋จ์ ํต๊ณ๊ฐ ์๋ ๊ฐ์ธ๋ณ ๊ฑด๊ฐ ์ํ ๋ถ์
- ์ง์ญ ๊ธฐ๋ฐ ์ฝ์ค ์ถ์ฒ: ๊ณต๊ณต๋ฐ์ดํฐ์ ์ค์๊ฐ ์์น ์ ๋ณด๋ฅผ ํ์ฉํ ์ค์ ๊ฑท๊ธฐ ์ฝ์ค ์ ์
- ๋ํํ ๊ฑด๊ฐ ์๋ด: ๊ฑท๊ธฐ ์ ๋ฌธ ์ฑ๋ด์ ํตํ ์ค์๊ฐ ๊ฑด๊ฐ ์กฐ์ธ
- ์ ์ฐํ ๋ชฉํ ๊ด๋ฆฌ: ๋ ์ง๋ณ๋ก ๋ค๋ฅธ ๋ชฉํ ๊ฑธ์ ์ ์ค์ ๊ฐ๋ฅ
| ๐ ์จ๋ณด๋ฉ | ๐ ๋์๋ณด๋ ํญ | ๐ ์บ๋ฆฐ๋ ํญ | ๐ก ๋ง์ถค์ผ์ด ํญ | ๐ค Alan AI ์ฑ๋ด | ๐ค ํ๋กํ ํญ |
|
|
|
|
|
|
|
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ๐ ์ค๋งํธ ์ฐจํธ | ์ฃผ๊ฐยท์๊ฐ ๋ถ์ + ๋์ด๋๋ณ ์ ์๋ฒ์ ๋น๊ต |
| ๐ ์ ์ฐํ ๋ชฉํ ๊ด๋ฆฌ | ๋ ์ง๋ณ ๋ค๋ฅธ ๋ชฉํ ์ค์ + ๋ฌดํ ์คํฌ๋กค ์บ๋ฆฐ๋ |
| ๐บ ์์น ๊ธฐ๋ฐ ์ฝ์ค | ์ถ์ฒํ์ฌ ์์น ๊ฑฐ๋ฆฌ ๊ณ์ฐ + Apple ์ง๋ ์ฐ๋ |
| ๐ค AI ์ ๋ฌธ ์๋ด | ์ ์ฒด ์กฐ๊ฑด ๊ธฐ๋ฐ ๋ง์ถค ๋ถ์ + ๊ฑท๊ธฐ ์ ์ฉ ์ฑ๋ด |
| ๐ ์์ฒด ์ธ์ฆ ๋ณด์ | Face ID/Touch ID ๊ธฐ๋ฐ ๋ฏผ๊ฐ์ ๋ณด ๋ณดํธ |
| ๐ฑ ์ค์๊ฐ ์์ ฏ | ์ฑ ๋ฏธ์คํ์์๋ ์ค์๊ฐ ๊ฑธ์ ์ ๋๊ธฐํ |
- ๋จ๊ณ๋ณ ๊ฐ์ด๋: ์จ๋ณด๋ฉ ํ์ด์ง ์๋ ํ ๋ค์ ๋จ๊ณ ์งํ
- ์ ๋ ฅ ๊ฒ์ฆ: ํ์ฉ ๋ฒ์ ์ด๊ณผ์ ์น์ ํ ์๋ด ๋ฉ์์ง
- ํ ํฑ ํผ๋๋ฐฑ: ๋ฒํผ ๊ธธ๊ฒ ๋๋ฅด๊ธฐ๋ก ๋น ๋ฅธ ์์น ์กฐ์
- ์ฆ์ ๋ฐ์: ์ค์ ๋ณ๊ฒฝ์ฌํญ์ ์ค์๊ฐ ํ๋ฉด ์ ๋ฐ์ดํธ
- ์์ฒด ์ธ์ฆ: ๋ฏผ๊ฐํ ์ ์ฒด์ ๋ณด ์์ ์ Face ID/Touch ID ์๊ตฌ
- ์๋ ๋ง์คํน: ์ฑ๋ด ์ฌ์ฉ์ ๊ฐ์ธ์ ๋ณด ์๋ ๋น์๋ณํ ์ฒ๋ฆฌ
- ๊ถํ ๊ด๋ฆฌ: ๋ฐ์ดํฐ๋ณ ์ธ๋ถํ๋ ์ ๊ทผ ๊ถํ + ์๊ฐ์ ํ์
Alan AI๋ Walkee์ ํต์ฌ ์ง๋ฅํ ์์ง์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
- ์๊ฐ ํ๋ ์์ฝ: ๊ฑธ์ ์, ์ด๋ ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ข ํฉ ๋ถ์ (ํ๋ฃจ 1ํ ๊ฐฑ์ )
- ๊ฐ์ธ๋ณ ๊ฑด๊ฐ ์๋ด: ์ฑ๋ณ, ๋์ด, ์ฒดํ, ์ง๋ณ ์ฌ๋ถ ๊ณ ๋ คํ ๋ง์ถค ์กฐ์ธ
- ๋์ด๋๋ณ ๋น๊ต: ๋์ฐ๋ น๋ ์ ์ ๋ฒ์์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋น๊ต ๋ถ์
- ๋์ด๋๋ณ ๋ถ๋ฅ: ์ฌ์ฉ์ ์ฒด๋ ฅ์ ๋ง๋ ์ด๋ ค์ยท๋ณดํตยท์ฌ์ ์ฝ์ค ์ ์
- ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ ๋ ฌ: ํ์ฌ ์์น์์ ๊ฐ๊น์ด ์ ๋๋ ์ฝ์ค ๊ธธ์ด์ ์ ๋ ฌ
- ์์ธ ์ ๋ณด ์ ๊ณต: ์์ ์์์๊ฐ, ์ฝ์ค ํน์ง, ์ฃผ์์ฌํญ ์๋ด
- ์ค์๊ฐ ์๋ด: ๊ฑท๊ธฐ, ๋ฌ๋, ํธ๋ ํน ๊ด๋ จ ์ ๋ฌธ ์กฐ์ธ
- ๊ฐ์ธ์ ๋ณด ๋ณดํธ: ๋ฏผ๊ฐ์ ๋ณด ์๋ ๋ง์คํน ์ฒ๋ฆฌ
- ์ธ๋ถ ๋งํฌ ์ฐ๋: ๊ด๋ จ ๊ฑด๊ฐ ์ ๋ณด ์ฌ์ดํธ๋ก Safari ์ฐ๊ฒฐ
- Target: iOS 15.0+
- Language: Swift 5.9+
- IDE: Xcode 14.0+
- Architecture: MVVM + Clean Architecture
- Dependency Injection: DIContainer ๊ธฐ๋ฐ ์์กด์ฑ ๊ด๋ฆฌ
- Concurrency: Swift Concurrency (async/await) ๊ธฐ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- Health Data: HealthKit Framework
- Local Storage: Core Data
- Widget Sync: UserDefaults (App Group)
- Security: Keychain Services + Biometric Authentication
- AI Engine: Alan AI
- Location: Core Location + Apple Maps Integration
- Public Data: ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ API
- UI Framework: UIKit
- Widget: WidgetKit (์ค์๊ฐ ๋๊ธฐํ)
- Charts: Custom Chart Implementation
- Calendar: Custom Infinite Scroll Calendar UI
| ๊ณ์ธต | ์ฃผ์ ์ญํ | ์์ ํ์ผ |
|---|---|---|
| Application | ์ฑ ์คํ/ํ๊ฒฝ์ค์ | AppDelegate, SceneDelegate, AppConfiguration |
| Core | ๊ณตํต ์ ํธ/๋ณด์/DI | DIContainer, CoreDataStack, KeychainWrapper |
| Model | ๋ฐ์ดํฐ ๋ชจ๋ธ | UserInfoEntity, DailyStepEntity, AlanStreamingResponse, WalkingCourse |
| Presentation | UI ํ๋ฉด/์ปดํฌ๋ํธ | Calendar, Dashboard, Chatbot, Onboarding, Profile |
| Services | ๋ฐ์ดํฐ ์๋น์ค ๊ณ์ธต | HealthService, CalendarStepService, WalkingCourseService, StepSyncService |
| ViewModels | UI์ ์๋น์ค ๊ณ์ธต์ ์ฐ๊ฒฐ, ๋ฐ์ดํฐ ์ํ ๊ด๋ฆฌ | CalendarViewModel, DashboardViewModel, UserInfoViewModel, AlanViewModel |
| ๋ชจ๋ธ | ์ค๋ช |
|---|---|
| UserInfoEntity | ์ฌ์ฉ์ ํ๋กํ (์ฑ๋ณ, ๋์ด, ํค, ๋ชธ๋ฌด๊ฒ, ์ง๋ณ) |
| DailyStepEntity | ๋ ์ง๋ณ ๊ฑธ์ ์ ๊ธฐ๋ก |
| GoalStepCountEntity | ๋ชฉํ ๊ฑธ์ ์ ๊ธฐ๋ก (๋ ์ง๋ณ ๋ค๋ฅธ ๋ชฉํ ์ง์) |
| HealthDashboardSnapshot | ์์ ฏ/๋์๋ณด๋์ฉ ํตํฉ ๋ฐ์ดํฐ |
| WalkingCourse | ๊ณต๊ณต๋ฐ์ดํฐ ๊ธฐ๋ฐ ๊ฑท๊ธฐ ์ฝ์ค + ๊ฑฐ๋ฆฌ ๊ณ์ฐ |
- HealthKit โก๏ธ
DefaultHealthServiceโก๏ธ CoreData - CoreDataStack โก๏ธ
CalendarStepService/DashboardSnapshotStore - Alan AI SSE โก๏ธ
AlanStreamingResponseํ์ฑ โก๏ธ UI ๋ฐ์ - LocationPermissionService โก๏ธ
WalkingCourseServiceโก๏ธ ์ง๋ ์ธ๋ค์ผ ์์ฑ - SharedStore(AppGroup) โก๏ธ WidgetKit โก๏ธ ํํ๋ฉด ์์ ฏ ๊ฐฑ์
| ํ ์คํธ ๋์ | ๋ฐฉ์ |
|---|---|
| CoreDataUserService | ๋๋ฏธ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋จ์ ํ ์คํธ |
| DIContainer | ์์กด์ฑ ์ฃผ์ ๊ฒ์ฆ |
| HealthService | MockHealthService ํ์ฉ |
| ViewModels | CalendarViewModelTests (์บ๋ฆฐ๋ ๋ฐ์ดํฐ ๊ฒ์ฆ),LLMRecommendationViewModelTests (AI ์ถ์ฒ ๋ก์ง ๊ฒ์ฆ) ๋ฑ |
| ํ์ฅ | ๋ถํ์ฅ | ํ์ | ํ์ | ํ์ | ํ์ |
๊น๊ฑด์ฐ rlarjsdn3 |
๊น์ํ cestbonciel |
๊ถ๋ํ kwondohyun12 |
๊น์ข ์ฑ jseongee |
๋ ธ๊ธฐ์น giseungNoh |
ํ์ฌ์ค haejaejoon |
| ๋์๋ณด๋ ํญ | Alan AI ์ฑ๋ด | ์จ๋ณด๋ฉ | ์บ๋ฆฐ๋ ํญ | ๋ง์ถค์ผ์ด ํญ | ํ๋กํ ํญ |
