Appearance
스토어 (Pinia) 개요
앱의 전역 상태는 Pinia 스토어로 관리됩니다. apps/web-ui/src/stores/ 아래에 정의되어 있습니다.
주요 스토어
| 스토어 | 파일 | 역할 |
|---|---|---|
| auth | auth.ts | 로그인·로그아웃, 사용자 정보, 관리자 여부, 비밀번호 재설정, Supabase 세션 관리 |
| featureBuilder | featureBuilder.ts | 기능 빌더 데이터 (카테고리, 그리드 레이아웃, slotProps, undo/redo, 저장) |
| settings | settings.ts | 전역 설정 (점검 모드 maintenanceMode 등) |
| roles | roles.ts | 역할별 관리자 메뉴 접근 제어 (canAccess(routeName, role)) |
| notices | notices.ts | 공지사항 (목록, 팝업용) — Supabase notices 테이블 |
| banners | banners.ts | 배너 (점검, 이벤트) — Supabase banners 테이블 |
| support | support.ts | 제보·문의 관련 — Supabase support 테이블 |
| changelog | changelog.ts | 변경 내역 — Supabase changelog 테이블 |
| auditLog | auditLog.ts | 감사 로그 |
| i18nOverrides | i18nOverrides.ts | 다국어 오버라이드 (관리자 i18n에서 설정, ko/en) |
| adminUI | adminUI.ts | 관리자 UI 상태 |
| toast | toast.ts | 토스트 알림 (useToast 컴포저블과 연동) |
| loading | loading.ts | 전역 로딩 상태 |
| globalError | globalError.ts | 전역 에러 처리 |
| featureFlags | featureFlags.ts | 기능 플래그 |
auth 스토어 주요 기능
Supabase와 직접 연동하는 핵심 스토어입니다.
| 함수/상태 | 설명 |
|---|---|
user | 현재 로그인 사용자 (AuthUser 타입) |
isLoggedIn | 로그인 여부 |
isSupabaseReady | Supabase 환경변수 설정 여부 |
profileAvatarUrl | 아바타 URL (없으면 ui-avatars.com 기반 placeholder) |
sessionExpired | 세션 만료 여부 (만료 시 모달 표시) |
pendingPasswordRecovery | 비밀번호 재설정 링크로 진입한 경우 |
initAuth() | 앱 시작 시 세션 복원 + onAuthStateChange 구독 |
login(email, password) | Supabase signInWithPassword |
logout() | Presence 정리 후 Supabase signOut |
fetchRoleFromApp() | get_my_role RPC로 역할 조회 후 user에 반영 |
getAccessToken() | 현재 Supabase access_token 반환 |
setNewPasswordAfterRecovery() | 비밀번호 재설정 완료 처리 |
featureBuilder 스토어 주요 기능
- 그리드 위젯 배열, 카테고리 메타,
getSlotProps/setSlotProps,getGridLayout/setGridLayout등 - 캔버스·설정 패널·실제 기능 페이지(
FeaturePageContent)가 이 스토어를 구독 - 현재 로컬 스토리지(
loafacto-feature-builder)에 저장 — 추후 Supabase 백엔드 연동 예정