6af863199f
- fito-nextjs 기반으로 재구성 - 로그인: MOMO 로고 + 모모유통 + 유통관리 ERP, 하단에 본사/지사 주소 표시 - 사이드바 상단: MOMO 아이콘 + 모모유통 + 유통관리 ERP - 파비콘: /src/app/icon.svg (MOMO 그린 배지) - layout.tsx title: 모모유통 | 유통관리 ERP - DB: 183.99.177.40:5432/distribution (fito 스키마 import 완료) - Traefik: Host(momo.junggomoa.com), 컨테이너 momo-erp
1.4 KiB
1.4 KiB
역할
Zustand 기반 전역 상태 관리. 인증(auth), 메뉴 네비게이션(menu), 테마(theme) 3가지 도메인을 독립적으로 관리하며, 각각 API 호출 및 로컬스토리지 동기화를 수행한다.
주요 파일
- auth-store.ts — 로그인 사용자 정보 및 인증 상태.
GET /api/auth/me로 사용자 조회,POST /api/auth/logout으로 로그아웃 후/login리다이렉트. - menu-store.ts — 상단/사이드 메뉴 계층 구조 관리.
GET /api/menu/top(상단 메뉴),POST /api/menu(사이드 메뉴, body:{ MENUOBJID }). 트리 빌드:level === "1"→ 부모, 나머지 → 자식(parentObjId로 매칭). - theme-store.ts — 테마 전환. 로컬스토리지 키
"plm_theme", 허용 값"sage"|"blue", DOMdata-theme속성에 적용.
연결 고리
- auth-store.ts →
User타입 (@/types) - menu-store.ts →
MenuItem타입 (@/types), level이 문자열이므로 Number 변환 필수 - Header 컴포넌트가 3개 store 모두 사용
- Sidebar 컴포넌트가 menu-store 사용
숨겨진 스펙
- 로그아웃 리다이렉트 경로
/login하드코딩 - 메뉴 API는 POST (GET 아님), body로
MENUOBJID전달 - 메뉴 트리 빌드 시
level === "1"(문자열 비교)과Number(level) < 2(숫자 비교) 혼용 - 테마 기본값
"sage", SSR 안전을 위해typeof window체크
@MISTAKES.md