[Capstone-Start] Flutter MVP Day โ Initial Commit
๐ ์ผ์: 2026. 05. 23
๐ฌ ๋ด์ฉ: ์ผ์ฃผ์ผ์น ๋ก์ปฌ ๊ฐ๋ฐ์ ํ ๋ฒ์ push โ Stage 4 ~ Stage 9 + ์ด๋ ํญ ์์ฑ
ํ ์์ผ ์์นจ๊น์ง ์ผ์ฃผ์ผ์น ์์
์ด ์ ๋ถ ๋ก์ปฌ ๋ธ๋์น์๋ง ์์ฌ ์์๋ค. PLAN ๋ฌธ์, ๋ถํธ์คํธ๋ฉ, ์ฝ์ด ์ธํ๋ผ, ๋์์ธ ์์คํ
๊น์ง โ ๋งค์ผ ๋จ๊ณ๋ณ๋ก ์ง์ฒ์ด ์์์ง๋ง GitHub ๋ ํฌ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง๊ฐ ์์ง ์ ํด์ง์ง ์์ push๋ฅผ ๋ฏธ๋ค๋ค. ์ค๋ Initial commit์ ํธ์ํ๋ค. ์ด ์์ ๋ถํฐ PLAN์ StageรPhase ๋จ์๋ก ์ปค๋ฐ์ ๋์ผ๋ฉด์, ๋์์ ํ ์์ผ์ด ๋๋๊ธฐ ์ ์ ๊ฐ๋ฅํ ๋จ๊ณ๊น์ง ๋ฐ์ด๋ถ์ด๋ ๊ฒ ์ค๋ ๋ชฉํ์๋ค.
์๊ฒฉ์ ํธ์ํ ์ปค๋ฐ๋ง 70๊ฐ๊ฐ ๋๋๋ค. ๋จ๊ณ๋ณ๋ก ํ๊ณ ๋ฅผ ์ ๋ฆฌํ๋ค.
1. Stage 0 โ Discovery & Decisions (docs:)
PLAN.md (367์ค), STRUCTURE.md (246์ค), DESIGN_TOKENS.md, CONTRIBUTING_NOTES.md๋ฅผ ํ ๋ฒ์ ์ปค๋ฐํ๋ค. PLAN ยง9 ๊ฒฐ์ ์ด๋ ฅ์ Q1~Q12 ๋ชจ๋๋ฅผ ๋ฐ์๊ณ , Co-Authored-By: Claude โฆ trailer ๊ธ์ง ๊ท์น์ CONTRIBUTING_NOTES์ ๋ช
์ํ๋ค.
2. Stage 1 โ Bootstrap (feat(bootstrap):, ci(...), chore:)
chore: bootstrap flutter project (phase 1.1)chore: add lib/ skeleton & assets dirs (phase 1.2)chore(deps): add core dependencies (phase 1.3)โ Riverpod, go_router, dio, drift, fl_chart ๋ฑ ํ ๋ฒ์.chore: harden analyzer & lint rules (phase 1.4)โflutter_lints+riverpod_lint(custom_lint).feat(bootstrap): wire AppConfig, single main + dart-define (phase 1.5)ci: add format/analyze/test workflow (phase 1.6)ci(web): deploy to GitHub Pages on main push (phase 1.7)ci(web): auto-provision GitHub Pages site on first run (stage 1 hotfix)โactions/configure-pages@v5๋ก ์ฒซ ์คํ ์ Pages ์ฌ์ดํธ๊ฐ ์๋ ํ์ฑํ๋๋๋ก ๋ฐ์ ๋ .
3. Stage 2 โ Core Infrastructure (PR #3, 7 phases)
feature/fe-flutter-bootstrap ๋ธ๋์น๋ฅผ ๋จธ์งํ์๋ง์ feature/fe-flutter-core-infra ๋ธ๋์น๋ฅผ ์ด๊ณ 7๊ฐ phase๋ฅผ ์ฐจ๋ก๋๋ก ์์๋ค.
- 2.1
feat(router):StatefulShellRoute + BottomNav ์ ธ. - 2.2
feat(riverpod):ProviderObserver + Logger DI. - 2.3
feat(theme):tokenized colors/typo/spacing/radius + AppTheme. - 2.4
feat(network):dio + ์ธํฐ์ ํฐ 3์ข (logging / auth / mock). - 2.5
feat(storage):drift + secure_storage + prefs. - 2.6
feat(errors):AppError sealed + Result+ ErrorView/EmptyState. - 2.7
feat(l10n):ko + en ARB ๊ณจ๊ฒฉ.
4. Stage 3 โ Design System (PR #4, 5 phases)
- 3.1
feat(catalog):/dev/ui-catalog(dev-only). - 3.2
feat(design):atom 5์ข โ Button/Card/Input/Badge/Avatar. - 3.3
feat(design):molecule 3์ข โ MetricCard/ChartCard/SectionHeader. - 3.4
feat(responsive):breakpoints + ResponsiveBuilder. - 3.5
feat(charts):fl_chart ๋ํผ โ line/bar/donut.
์ฌ๊ธฐ๊น์ง๊ฐ ์ด์ ๊น์ง ๋ก์ปฌ์์ ์งํํ๋ ๋ถ๋์ด๋ค. PR #4๊ฐ ๋จธ์ง๋๋ฉด์ ์ง์ง ๋ณธ๊ฒฉ์ ์ธ ์ค๋์ ์์ ์ด ์์๋๋ค.
5. Stage 4 โ Feature MVPs (PR #5)
8๊ฐ ํผ์ฒ๋ฅผ mock ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฒ์ ์ฐ์ด๋๋ค. ๊ฐ ํผ์ฒ๋ ๋์ผ ํจํด โ mock ์๋ โ repository โ controller(Riverpod) โ page/widget.
- 4.1
feat(dashboard):real summary content with mock repository. - 4.2
feat(diet):diet record MVP with mock 3-meal day. - 4.3
feat(exercise):weekly exercise MVP. - 4.4
feat(my_health):vitals MVP with mock 7-day history. - 4.5
feat(ai_coach):mock suggestions MVP. - 4.6
feat(notification):in-app panel + simulated push. - 4.7
feat(place):nearby places MVP w/ Maps placeholder. - 4.8
feat(auth):mock social sign-in MVP.
์ฌ๊ธฐ์ ํ ๊ฐ์ง ๊ฒฐ์ ์ด ๋ ๊ฐ๋ ธ๋ค. AI Coach ์๋ต์ ์ง์ง ์ธ๋ถ API๋ก ๋ถ์ผ์ง mock์ผ๋ก ๊ฐ์ง. PLAN Q7 ๊ฒฐ์ ๋๋ก mock์ผ๋ก ๊ฐ๋ค โ features/ai_coach/data/์ 5~6๊ฐ ์๋๋ฆฌ์ค JSON์ ์๋ํด ๋๊ณ , ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๋ผ ํค์๋ ๋งค์นญ์ผ๋ก ์๋๋ฆฌ์ค ํ๋๋ฅผ ๊ณจ๋ผ ๋ฐํํ๋ ๋จ์ํ ๋ก์ง. ์บก์คํค ์ผ์ ์์์ prompt engineering๊น์ง ๋ค์ด๊ฐ๋ฉด ์๊ฐ์ด ์ ๋ง๋๋ค๊ณ ๋ดค๋ค.
์๋ฆผ(notification)์ ํธ์ ์๋ฎฌ๋ ์ด์
์ด ๊น๋ค๋ก์ ๋ค. FCM์ ์ฐ์ง ์๊ธฐ๋ก ํ๊ธฐ ๋๋ฌธ์(Q9), NotificationCenter ์ปจํธ๋กค๋ฌ๊ฐ 30์ด ํ์ด๋จธ๋ก mock ์๋ฆผ์ ํ์์ ํ๋์ฉ ๊บผ๋ด in-app panel์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
Place ํ๋ฉด์ ์ง๋(google_maps_flutter)๋ Stage 4์์๋ placeholder๋ง ๋๊ณ , ์ค์ ์ง๋ ์๋ฒ ๋๋ ์์ฐ ์ง์ ์ API ํค์ ํจ๊ป ํ์ฑํํ๋ ์ชฝ์ผ๋ก ๋ฏธ๋ค๋ค. ์นด๋ ๋ฆฌ์คํธ๋ mock 6๊ฐ๋ก ํ์.
6. Stage 5 โ Integration & Polish (PR #6)
- 5.1
feat(nav):LoggerNavigatorObserver+ flutterimport์ ๋ฆฌ. - 5.2
feat(dashboard):staggered fade + slide on summary cards (flutter_animate). - 5.3
feat(a11y):MetricCard exposes a single Semantics label โ TalkBack/VoiceOver๊ฐ ์นด๋๋ฅผ ํ๋์ ๋จ์๋ก ์ฝ๋๋ก. - 5.4
feat(responsive):two-column dashboard for tablet/desktop. - 5.5
feat(i18n):externalise dashboard copy โ ๋ชจ๋ ๋ฌธ์์ด์ ARB๋ก ์ด๋.
5.3 a11y์์ ํ ๋ฒ ๋งํ๋ค. MetricCard๋ child๊ฐ ์ฌ๋ฌ Text ์์ ฏ์ ๊ฐ๋๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์คํฌ๋ฆฐ๋ฆฌ๋๋ ๊ฐ๊ฐ์ ๋ฐ๋ก ์ฝ๋๋ค. โ์ค๋ ์นผ๋ก๋ฆฌ 350kcal 1800 ์คโ์ด ๋ณ๊ฐ๋ก 3๋ฒ ์ฝํ์ ์ ์ ์ฌ๋ฉ๋ค. Semantics(container: true, label: '...') ํ ๋ฒ์ ๋ฌถ๊ณ , child Text๋ค์ ExcludeSemantics๋ก ๊ฐ๋ฆฌ๋๊น ํ ์ค๋ก ๊น๋ํ ์ฝํ๋ค.
7. Stage 6 โ Quality (PR #7)
ํ ์คํธ ์นดํ ๊ณ ๋ฆฌ 4์ข ์ ํ ๋ฒ์ ์ฑ์ ๋ค.
- 6.1
test:model invariants / edge cases โDietDay,ExerciseWeek,VitalLog๊ฐ์ ๋ชจ๋ธ์ ์๋ชป๋ ์ธ์ ๊ฑฐ๋ถ ์ผ์ด์ค. - 6.2
test(dashboard):page-level widget tests for data & error paths โ happy path 1๊ฐ + ์๋ฌ/๋ก๋ฉ ์ํ 2๊ฐ. - 6.3
test(golden):infra + AppButton variants snapshot โgolden_toolkit์ผ๋ก atom์ ์๊ฐ ํ๊ท ๊ฐ๋. - 6.4
test(integration):app smoke โintegration_test/์ 4ํญ ์ ํ ์๋๋ฆฌ์ค 1๊ฐ.
flutter test๊ฐ ๊ทธ๋ฆฐ์ด๊ณ , golden์ ์ฒ์ ํ ๋ฒ ์์ฑ ํ ๋ณ๊ฒฝ ์์์ ํ์ธํ๋ค. ์ปค๋ฒ๋ฆฌ์ง๋ 70%+๋ฅผ ๋ชฉํ๋ก ํ์ง๋ง ์ค์ ๋ก๋ 63%์ . Stage 8 ์ดํ๋ก ํ ๋ฒ ๋ ์ฑ์ ๋ฃ์ ๊ฑฐ๋ค.
8. Stage 7 โ Release Scaffolding (PR #8)
chore(release):RELEASE.md+CHANGELOG.mdโ v0.1.0+1 ์ด์.- ๋ฒ์ ์ ์ฑ
:
--build-name/--build-number๋ก ๋น๋ ์ ์ฃผ์ .pubspec.yaml์version:์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก๋ง ๋ .
์ฌ๊ธฐ๊น์ง๊ฐ 14์ 30๋ถ์ฏค. ์๊ฐ์ด ๋จ์์ Stage 8(UX alignment)๊น์ง ๊ฐ์ ๋ ๋ฐ์ด๋ถ์ด๊ธฐ๋ก ํ๋ค.
9. Stage 8 โ UX Alignment with React Original (PR #9)
์๋ณธ React ํ๋กํ ํ์ ๊ณผ ํฝ์ ๋จ์๋ก ์ ๋ ฌํ๋ ๋จ๊ณ. ์ด๋๋ถํฐ ๋์์ธ ๊ฒฐ์ ์ ์ฌ์ํ ์ด๊ธ๋จ์ด ํ ๋ฒ์ ์์์ ธ ๋์๋ค.
- 8.1
refactor(theme):align tokens with originaldefault_shadcn_theme.cssโ primary, muted, border ์์ React ์๋ณธ ์ ํํ ์ฎ๊น. - 8.2
feat(shell):align BottomNav with React original +OncareHeader. - 8.3
feat(dashboard):five-card home layout matching the React original โ ์คํธ๋ฆญ / ์ค๋์ ๊ฑด๊ฐ / ์ผ์ / ์ฃผ๊ฐ ์ ์ / AI ์ฝ์น 5์ฅ. - 8.4
feat(diet):nutrition summary + AI coach card + meal list. - 8.5
feat(exercise):four stat cards + chart + AI coach + history. - 8.6
feat(my_health):profile + risk + indicators + points + settings. - 8.7
feat(modals):Calendar sheet + QuickInput + AddEvent dialogs. - 8.8
feat(panels):right-slide Notification + AI Coach overlays.
์ฌ๊ธฐ์ ์์ํ fixup ์ปค๋ฐ์ด ๋ค์ฏ ๊ฐ์ฏค ๋ค์ด๊ฐ๋ค โ DietDay ์์ฑ์ ์๊ทธ๋์ฒ๊ฐ ๋ฐ๋๋ฉด์ unit test๊ฐ ๊นจ์ก๊ณ , MealCard pill ์์์ด ์ด๊ธ๋ฌ๊ณ , nav-switching widget test๊ฐ ๋ ์ด์ AppBar์ ์์กดํ์ง ๋ชปํ๊ฒ ๋๊ณ . ๋ค ์ฆ์ ์ก์๋ค.
์คํ์ผ ์ฐจ์์ ์ ๋๋ ๊ฐ์ด โ style: drop deprecated activeColor + use Dart 3 wildcards, style(my_health): drop unnecessary braces in '$rank์ ๋ญํน'. Dart 3์ (_, _) wildcard ํจํด์ separatorBuilder ๊ฐ์ ์ฝ๋ฐฑ์์ ๋ฏธ์ฌ์ฉ ์ธ์๋ฅผ ๊ฐ์ ๋ก ๋ช
์ํ ๋ ๊น๋ํ๋ค.
CHANGELOG์ ๋ฒ์ ์ v0.2.0+2๋ก ์ฌ๋ฆผ.
10. Stage 9 โ Local Backend via drift + LocalApiInterceptor (PR #10)
์ด๊ฒ ์ค๋ ๊ฐ์ฅ ๋ง์กฑ์ค๋ฌ์ ๋ ๋ถ๋ถ์ด๋ค. ๋ฐฑ์๋ ํ์ด ์์ง API๋ฅผ ๋ง๋ค์ง ์์ ์ํ์์ ํ๋ก ํธ์๋๋ง์ผ๋ก ํ์คํ์ฒ๋ผ ๋์ํ๊ฒ ํ๋ ํธ๋ฆญ์ด๋ค.
๊ธฐ๋ณธ ์์ด๋์ด๋ ์ด๊ฑฐ๋ค โ dio ์ธํฐ์
ํฐ๋ก request๋ฅผ ๊ฐ๋ก์ฑ์ drift DB์์ ์ง์ ์๋ต์ ๋ง๋ค์ด ๋ฐํํ๋ค. ํ๋ก ํธ์๋ ์ฝ๋๋ ํ์์์ฒ๋ผ GET /diet/days/today๋ฅผ ๋ถ๋ฅด๊ณ , network ๋ ์ด์ด์์ ์ง์ง API์ธ ์ฒ drift๊ฐ ์๋ตํ๋ค. ๋ฐฑ์๋๊ฐ ๋ถ์ผ๋ฉด ์ธํฐ์
ํฐ๋ง ๋นํ์ฑํํ๋ฉด ์ฝ๋ ๋ณ๊ฒฝ ์์ด ๊ทธ๋๋ก ์ ํ๋๋ค.
- 9.1
feat(storage):drift schema v2 โdiet_days,meal_entries,exercise_sessions,vital_logs,schedule_events5๊ฐ ํ ์ด๋ธ ์ถ๊ฐ. - 9.2
feat(storage):seed React mock data into drift on first run โseeded_v1ํ๋๊ทธ๋ก ํ ๋ฒ๋ง. - 9.3
feat(network):LocalApiInterceptorskeleton + snake_case mapper โ ๋ฐฑ์๋ ์ปจ๋ฒค์ ์ ๋ง์ถฐ ์๋ต์ snake_case๋ก ํ๋ฆผ. - 9.4
feat(diet):GET /diet/days/todayvia LocalApiInterceptor +DioDietRepository. - 9.5
feat(vitals):POST /vitals/{kind}+GET .../latestwith QuickInput wiring โ ๋์๋ณด๋ QuickInput ๋ชจ๋ฌ์์ ์ฒด์ค์ ์ ๋ ฅํ๋ฉด drift์ ์ ์ฅ๋๊ณ , ๋ค์ fetch์์ ์กํ๋ค. - 9.6
feat(exercise):GET /exercise/weeks/currentwith weekly aggregation โ drift ์ฟผ๋ฆฌ์์ weekday๋ณ GROUP BY. - 9.7
feat(schedule+noti):/schedule/eventsand/notifications. - 9.8
feat(dashboard):GET /dashboard/summaryaggregating diet+exercise+vital+schedule โ ๊ฐ์ฅ ๋ณต์กํ ์๋ํฌ์ธํธ. 4๊ฐ ๋๋ฉ์ธ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ฌถ์ด ์๋ต. - 9.9
feat(misc):AI Coach / users.me / MyHealth / Places. - 9.10
docs(plan):Stage 9 decision log + e2e smoke test.
์ถ๊ฐ docs๋ ๊ฐ์ด โ docs(backend): API_CATALOG + DUMMY_BACKEND options, docs: link API_CATALOG + DUMMY_BACKEND from README. API_CATALOG.md์ prefix์ path ๊ท์ฝ, request/response ํ์ด๋ก๋ ์คํค๋ง๋ฅผ ๋ฐฑ์๋์ ๊ณต์ ํ ์ ์๊ฒ ์ ์๋ค. ๋ฐฑ์๋ ํ์ด ์ค์ API๋ฅผ ์งค ๋ ์ด ์นดํ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ํ๋ก ํธ๋ ๊ทธ๋๋ก ๋์ํ๋ค.
์ฌ๊ธฐ์ ํ ๋ฒ ํฌ๊ฒ ๋งํ๋ค. Web ๋น๋๊ฐ drift WASM ์์ด ๋ถํ ์ด ์ ๋จ.
1
2
fix(web): bundle drift WASM (sqlite3.wasm + drift_worker.js)
fix(web): pair sqlite3.wasm with the resolved sqlite3 dart package + 4xx/5xx as DioException
drift๋ web์์ SQLite๋ฅผ WASM์ผ๋ก ๋๋ฆฌ๋๋ฐ, sqlite3.wasm๊ณผ drift_worker.js๋ฅผ ๋น๋ ์ฐ์ถ๋ฌผ์ ๊ฐ์ด ๋ฃ์ด์ค์ผ ํ๋ค. ์ฒ์์๋ web/ ๋๋ ํ ๋ฆฌ์ ์์ ๋ฒ์ ์ ๋ฐ์ ๋๋๊น sqlite3 Dart ํจํค์ง์ SHA๊ฐ ์ ๋ง์ ๋ถํ
์ด ๊นจ์ก๋ค. ์ ๋ต์ pubspec lock์ผ๋ก ๋ฌถ์ธ sqlite3 ํจํค์ง์ ์ ํํ ๋ฒ์ ๊ณผ ํ์ด๋ฅผ ๋ง์ถฐ์ ๋ค์ด๋ก๋ํ๋ ๊ฒ. tool/fetch_drift_wasm.sh ์คํฌ๋ฆฝํธ๋ก ์๋ํํด ๋์๋ค โ CI ๋ฐฐํฌ ์ํฌํ๋ก์ฐ์์ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฅด๋๋ก ์ถํ ๋ฐ์ ๊ฑฐ๋ค(๋ด์ผ ์์
).
๋ ํ ๊ฐ์ง ์ง์๋ ๊ฒ โ dio๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก 4xx/5xx๋ฅผ ์ ์ ์๋ต์ผ๋ก ํต๊ณผ์ํค๋ ์ต์
์ด ์๋๋ฐ, LocalApiInterceptor๊ฐ ์๋ฌ ์ DioException์ ๋์ง์ง ์์ผ๋ฉด controller์์ try/catch๊ฐ ์ ์กํ๋ค. validateStatus: (_) => true๋ฅผ ๋๊ณ , ์ธํฐ์
ํฐ์์ status code๋ณ๋ก DioException ์ ํํ throwํ๋๋ก ๋ณด๊ฐํ๋ค.
CHANGELOG์ ๋ฒ์ ์ v0.3.0+3์ผ๋ก ์ฌ๋ฆผ. chore: end of stage 9 โ local backend via drift+LocalApiInterceptor.
11. ์ด๋ ํญ โ Stage 9 ์ดํ์ ๋ณด๋์ค (PR #11)
PR #10 ๋จธ์ง ํ์๋ ์๊ฐ์ด ์ข ๋จ์๋ค. ์ด๋ ํ์ด์ง์ ํฌ์ค์ฅ(Place) ํญ ์ง์ ์ ๊ณผ ์ด๋ ๊ธฐ๋ก ์ถ๊ฐ FAB์ ๋ถ์๋ค.
feat(exercise):tab-based ์ด๋ page with ํฌ์ค์ฅ view + ์ด๋ ๊ธฐ๋ก ์ถ๊ฐ FAB.feat(exercise):seed multi-type sessions per day for stacked WeeklyActivity chart โ ์ ์ฐ์ / ๊ทผ๋ ฅ / ์คํธ๋ ์นญ 3์ข ์ด ํ ๋ง๋ ์์ ๋์ ๋๋๋ก stacked bar๋ก ์ ํ.seeded_v1โseeded_v2๋ก ์๋ ๋ฒ์ ์ ์ฌ๋ ธ๊ณ , ์ ๊ทธ๋ ์ด๋ ์ ๋จ์ผ ํ์ ๋ฐ์ดํฐ๊ฐ ์๋ ์ ๋ฆฌ๋๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ก์ง ์ถ๊ฐ.feat(chart):wider bars, always-on weekday labels, stacked tooltip โ fl_chart ๊ธฐ๋ณธ ํดํ์ ํ ๋ฒ์ 1๊ฐ ์๋ฆฌ์ฆ๋ง ๋ณด์ฌ์ค์, ๋์ ๋ง๋ ์์์ ์ธ ์๋ฆฌ์ฆ๋ฅผ ํ ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์ปค์คํ ํดํ์ผ๋ก ๊ต์ฒด.
ExerciseWeek.workoutCount๊ฐ ํ ๊ฐ์ง ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด์๋ค โ ๊ฐ์ ๋ ์ ์ ์ฐ์ 30๋ถ + ๊ทผ๋ ฅ 30๋ถ์ด ์์ผ๋ฉด โ์ด๋ 2ํโ์ธ์ง โ์ด๋ 1ํ(2์ข
)โ์ธ์ง. ์๋ณธ React์์๋ โ์ด๋ํ ๋ ์โ์๊ธฐ ๋๋ฌธ์ collapse ๋ก์ง์ ์ถ๊ฐํด์ ๊ฐ์ ๋ ์ฌ๋ฌ ํ์ 1๋ก ๋ฌถ์๋ค.
12. ์ค๋์ ํ๊ณ ์ ๋ด์ผ ํ ์ผ
- ๊ณ ๋ฏผํ๋ ๊ฒ:
- Stage 9 โ ๋ฐฑ์๋๊ฐ ์๋๋ฐ ๋ฐฑ์๋์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ ๊ณผํ ์์ง๋์ด๋ง ์๋๊ฐ? ๊ฒฐ๊ตญ ๋ฐฑ์๋์ ์ธํฐํ์ด์ค๋ฅผ ๋ฏธ๋ฆฌ ํฉ์ํด ๋ ๊ฐ์น๊ฐ ์๋ค๊ณ ๊ฒฐ๋ก .
API_CATALOG.md๊ฐ ๊ทธ ํฉ์์ ์ฐ๋ฌผ์ด๋ผ ํ๋ ๊ฒ ์๋๋ค. - drift WASM ํ์ด๋ง โ
sqlite3ํจํค์ง lock ๋ฒ์ ๊ณผ wasm ํ์ผ์ด ์๋ก SHA๊ฐ ๋ง์์ผ ํ๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๋ ๋ฐ ํ์ฐธ ๊ฑธ๋ ธ๋ค.
- Stage 9 โ ๋ฐฑ์๋๊ฐ ์๋๋ฐ ๋ฐฑ์๋์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ ๊ณผํ ์์ง๋์ด๋ง ์๋๊ฐ? ๊ฒฐ๊ตญ ๋ฐฑ์๋์ ์ธํฐํ์ด์ค๋ฅผ ๋ฏธ๋ฆฌ ํฉ์ํด ๋ ๊ฐ์น๊ฐ ์๋ค๊ณ ๊ฒฐ๋ก .
- ๊ฒฐ์ ํ ๊ฒ: ์ผ์ฃผ์ผ์น ๋ก์ปฌ ์์ ์ ์๊ฒฉ์ ๋ชจ๋ ํธ์ ์๋ฃ. Stage 0~Stage 9 + ์ด๋ ํญ. v0.3.0+3 ํ๊น .
- ๋จ์ ๋ฌธ์ :
- CI ๋ฐฐํฌ ์ํฌํ๋ก์ฐ์์ drift WASM ์๋ ๋ค์ด๋ก๋ โ ์ง๊ธ์ ๋ก์ปฌ ๋น๋์์๋ง ๋์. ๋ด์ผ
tool/fetch_drift_wasm.sh๋ฅผ ์ํฌํ๋ก์ฐ์ ๋ผ์ธ ์์ . - README์ ๋ค์ด์ด๊ทธ๋จ โ ์ง๊ธ์ ASCII art๋ฟ. ์บก์คํค ๋ฐํ ์๋ฃ๋ก ์ฐ๋ ค๋ฉด SVG๋ก ์ฎ๊ฒจ์ผ ํ๋ค.
- UI ๋ํ ์ผ โ ์นด๋ ๋ณด๋, AI ์ฝ์น ์นด๋ ์์ด์ฝ, ์๋จ/์ด๋์ ๋ ์ง ํค๋ ๋ฑ ์์ํ๊ฒ React ์๋ณธ๊ณผ ๋ค๋ฅธ ๋ถ๋ถ์ด 5~6๊ฐ ๋จ์ ์๋ค.
- ์์ฐ ํ๊ฒฝ base-href โ ์ปค์คํ
๋๋ฉ์ธ์ ๋ถ์ผ ๊ฒฝ์ฐ
/oncare-flutter/โ/๋ก ๋ฐ๊ฟ์ผ ํจ.
- CI ๋ฐฐํฌ ์ํฌํ๋ก์ฐ์์ drift WASM ์๋ ๋ค์ด๋ก๋ โ ์ง๊ธ์ ๋ก์ปฌ ๋น๋์์๋ง ๋์. ๋ด์ผ
๋ด์ผ์ PR ๋จ์๋ก ์๊ฒ ๋์ผ๋ฉด์ (1) README/๋ค์ด์ด๊ทธ๋จ ์ ๋ฆฌ, (2) UI ๋ํ ์ผ ์ ๋ ฌ์ ์งํํ ์์ ์ด๋ค. ์์ฐ D-day๊ฐ ๋ค๊ฐ์ค๊ธฐ ๋๋ฌธ์ ํฐ ๊ธฐ๋ฅ ์ถ๊ฐ๋ณด๋ค๋ ๋ง๋ค์ด์ง ํ๋ฉด์ ๊น๋ํ๊ฒ ๋ค๋ฌ๋ ์ชฝ์ผ๋ก ๊ฐ๋ ๊ฒ ๋ง๋ค.
๐ ์์ฝ
์ค๋์ ์ผ์ฃผ์ผ์น ๋ก์ปฌ ์์ ์ ์๊ฒฉ์ ํ๊บผ๋ฒ์ ํธ์ํ ๋ ์ด๋ค. PR #2~#11๊น์ง 10๊ฐ PR์ ๋จธ์งํ๋ฉด์ Stage 0(Discovery) โ Stage 9(Local backend via drift+LocalApiInterceptor) + ์ด๋ ํญ stacked chart๊น์ง ์์ฑ.