From 4ffc01f4848879933bbb646616a0d74a8dabe6ad Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Sun, 28 Jun 2026 07:49:37 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=91=98=EB=9F=AC=EB=B3=B4=EA=B8=B0(?= =?UTF-8?q?=EB=8D=B0=EB=AA=A8)=EB=A5=BC=20=EC=8B=A4=EC=A0=9C=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B7=B8=EB=8C=80=EB=A1=9C=20=E2=80=94=20=EB=8D=B0?= =?UTF-8?q?=EB=AA=A8=20=EB=AA=A8=EB=93=9C=20+=20API=20=EB=8D=94=EB=AF=B8?= =?UTF-8?q?=20=EC=9D=91=EB=8B=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - src/demo: demo.on 플래그 + DTO 형태 더미데이터 + mock API(읽기 더미/쓰기 차단) - accountApi: Proxy 로 데모 시 읽기→더미, 쓰기→안내. 실제 뷰 그대로 렌더 - App: authed=인증||데모 → 실제 사이드바/셸 표시 + 데모 배너(로그인/나가기) - 라우터: 데모 허용(가계부/고정/계좌/분류) 외 보호화면은 DemoLockedView(로그인 유도) - 사이드바: 데모 시 잠금(🔒) 배지, 메뉴는 showMenu(인증||데모) - 로그인/로그아웃 시 데모 자동 해제, 랜딩 '둘러보기'→enterDemo - 기존 독립 DemoView 제거 Co-Authored-By: Claude Opus 4.8 --- src/App.vue | 61 +++- src/api/accountApi.js | 38 ++- src/components/layout/AppHeader.vue | 2 +- src/components/layout/AppSidebar.vue | 15 +- src/demo/index.js | 129 ++++++++ src/router/index.js | 21 +- src/stores/auth.js | 4 + src/views/DemoLockedView.vue | 66 ++++ src/views/DemoView.vue | 470 --------------------------- src/views/HomeView.vue | 8 +- 10 files changed, 331 insertions(+), 483 deletions(-) create mode 100644 src/demo/index.js create mode 100644 src/views/DemoLockedView.vue delete mode 100644 src/views/DemoView.vue diff --git a/src/App.vue b/src/App.vue index c06bfe2..1d910db 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,6 @@ + + + + diff --git a/src/views/DemoView.vue b/src/views/DemoView.vue deleted file mode 100644 index a658850..0000000 --- a/src/views/DemoView.vue +++ /dev/null @@ -1,470 +0,0 @@ - - - - - diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 4128414..974501b 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -5,6 +5,12 @@ import { useAuthStore } from '@/stores/auth' import { useUiStore } from '@/stores/ui' import { accountApi } from '@/api/accountApi' import { ID_LOGIN_ENABLED } from '@/config/features' +import { enterDemo } from '@/demo' + +function startDemo() { + enterDemo() + router.push('/account/entries') +} const auth = useAuthStore() const ui = useUiStore() @@ -299,7 +305,7 @@ onMounted(load)
- +

{{ !ID_LOGIN_ENABLED || ui.signupEnabled ? '로그인하면 나의 가계부 요약을 볼 수 있어요.' : '현재 회원가입이 제한되어 있습니다.' }}