diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 84ae199..a0f293a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -29,7 +29,10 @@ - + + diff --git a/src/components/WebOnlyNotice.vue b/src/components/WebOnlyNotice.vue index aa9edd8..4ee2e20 100644 --- a/src/components/WebOnlyNotice.vue +++ b/src/components/WebOnlyNotice.vue @@ -44,6 +44,8 @@ const mobileReady = false 개인정보처리방침 이용약관 + + 계정 삭제 diff --git a/src/config/features.js b/src/config/features.js index 9f1b049..ab55e9c 100644 --- a/src/config/features.js +++ b/src/config/features.js @@ -3,3 +3,8 @@ // 백엔드(/api/auth/login, /api/auth/signup)는 비상용으로 그대로 유지 — // 되돌리려면 이 값을 true 로 바꾸면 아이디 로그인/회원가입이 다시 노출된다. export const ID_LOGIN_ENABLED = false + +// 카드 결제 알림 자동인식(NotificationListenerService) 기능. +// 스토어 첫 출시에서는 Google Play 알림 접근 정책 심사 회피를 위해 비활성화. +// (AndroidManifest 의 CardNotifListenerService 선언도 함께 주석 처리되어 있음) +export const CARD_NOTIF_ENABLED = false diff --git a/src/router/index.js b/src/router/index.js index bd63d41..95e30e3 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -45,6 +45,13 @@ const router = createRouter({ component: () => import('../views/LegalView.vue'), meta: { public: true, doc: 'terms' }, }, + { + // 계정·데이터 삭제 안내 (공개 — 앱 마켓 데이터 삭제 정책 URL) + path: '/account-deletion', + name: 'account-deletion', + component: () => import('../views/AccountDeletionView.vue'), + meta: { public: true }, + }, { path: '/users', name: 'users', diff --git a/src/views/AccountDeletionView.vue b/src/views/AccountDeletionView.vue new file mode 100644 index 0000000..c41b0b6 --- /dev/null +++ b/src/views/AccountDeletionView.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/views/account/AccountView.vue b/src/views/account/AccountView.vue index 9881f88..3cf3851 100644 --- a/src/views/account/AccountView.vue +++ b/src/views/account/AccountView.vue @@ -7,6 +7,7 @@ import { useDialog } from '@/composables/dialog' import IconBtn from '@/components/ui/IconBtn.vue' import { imageToBlob, parseReceiptText } from '@/utils/receiptOcr' import { cardNotif } from '@/native/cardNotif' +import { CARD_NOTIF_ENABLED } from '@/config/features' import { Capacitor } from '@capacitor/core' // @capacitor/camera 는 네이티브에서만 동적 로드 (웹은 file input 사용 — 정적 import 시 모바일 웹 청크 로드 실패 유발) @@ -25,7 +26,7 @@ const pendingCount = ref(0) // 확인 필요(카드 알림 자동인식) 건수 const editingPending = ref(false) // 수정 중인 항목이 미확인 건인지 // 카드 결제 알림 자동인식 권한 (네이티브 전용) -const notifNative = cardNotif.isNative() +const notifNative = CARD_NOTIF_ENABLED && cardNotif.isNative() const notifEnabled = ref(true) // 미허용일 때만 배너 노출 async function checkNotifPermission() { if (notifNative) notifEnabled.value = await cardNotif.isEnabled()