feat: P6 모바일 셀프 조회 PWA 스캐폴드 (ga-mobile-pwa)
설계사 본인 정산명세서/출금/공지를 모바일에서 조회하는 PWA 신규 모듈. 데스크탑 admin UI(ga-frontend)와 별도. 백엔드 무변경 — 기존 ga-api(8082) 재사용. 토큰 키도 mobile.accessToken 으로 분리. 스택: - Vite + React 18 + TS + antd-mobile@5 - vite-plugin-pwa (manifest + service worker autoUpdate) - React Query + Zustand (persist) + react-router-dom - 포트 3001, /api → 8082 dev 프록시 화면 5종 (NavBar + List + PullToRefresh + TabBar): - /login — POST /api/auth/login + GET /api/auth/me - / — 홈 (요약 카드 + 메뉴, 로그아웃) - /statement — GET /api/statements?agentId=… (본인 명세서) - /withdraw — GET /api/withdraw-requests?agentId=… (본인 출금이력) - /notice — GET /api/notices/active PWA: - manifest: name/icon/theme/standalone, ko, / - /api/** NetworkFirst 5s 타임아웃 / 5분 캐시 (오프라인 시 직전 응답) - 아이콘은 SVG placeholder (192/512) — 본 배포 시 PNG 권장 검증: - npm install 407 packages - tsc --noEmit PASS - npm run build PASS — manifest.webmanifest + sw.js + workbox-*.js 자동 생성, precache 8 entries 528KB, 번들 gzip 173KB - vite dev :3001 LISTENING + ga-api :8082 정상 - /api/statements total=112, /api/withdraw-requests total=3, /api/notices/active 0건, /api/auth/me 정상 잔여 (스캐폴드 이후): - 백엔드 /api/mobile/me/* 전용 endpoint (서버측 본인 필터 강제) - 출금 신청 작성 폼, 명세서 상세, 본인 알림(user_notification) - 토큰 만료 자동 refresh, 푸시 알림 (FCM) - 실 아이콘 PNG, manualChunks 분리 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# ga-mobile-pwa
|
||||
|
||||
설계사 전용 모바일 셀프 조회 PWA 스캐폴드.
|
||||
|
||||
## 스택
|
||||
- Vite + React 18 + TypeScript
|
||||
- antd-mobile@5 (모바일 UI)
|
||||
- vite-plugin-pwa (manifest + service worker autoUpdate)
|
||||
- React Query (서버 상태) + Zustand (인증)
|
||||
- 백엔드: 기존 `ga-api`(8082) 그대로 재사용. 로그인 후 `/api/auth/me` 의 `agentId` 로 본인 데이터 필터링.
|
||||
|
||||
## 화면
|
||||
| 경로 | 화면 | 백엔드 API |
|
||||
|---|---|---|
|
||||
| `/login` | 로그인 | `POST /api/auth/login`, `GET /api/auth/me` |
|
||||
| `/` | 홈 (요약 카드 + 메뉴) | 위 3개 카운트 |
|
||||
| `/statement` | 정산 명세서 | `GET /api/statements?agentId=…` |
|
||||
| `/withdraw` | 출금 신청 이력 | `GET /api/withdraw-requests?agentId=…` |
|
||||
| `/notice` | 공지사항 | `GET /api/notices/active` |
|
||||
|
||||
## 실행
|
||||
```bash
|
||||
cd ga-mobile-pwa
|
||||
npm install
|
||||
npm run dev # http://localhost:3001
|
||||
```
|
||||
|
||||
`vite.config.ts` 의 `/api` 프록시가 `localhost:8082` 로 전달하므로 ga-api 가 가동 중이어야 한다.
|
||||
|
||||
## 빌드 / 프리뷰
|
||||
```bash
|
||||
npm run build # tsc --noEmit + vite build (dist/)
|
||||
npm run preview # 3001 에서 production 번들 서빙
|
||||
```
|
||||
|
||||
## PWA
|
||||
- `manifest.webmanifest` 자동 생성 (`vite-plugin-pwa`)
|
||||
- 서비스워커: `registerType=autoUpdate`. 신규 빌드 시 사용자 새로고침 시점에 갱신.
|
||||
- 런타임 캐시: `/api/**` NetworkFirst, 5초 타임아웃, 5분 유효 (오프라인 시 직전 응답 반환)
|
||||
- 아이콘: `public/pwa-{192,512}.svg` (스캐폴드 — 본 배포 시 PNG 권장)
|
||||
|
||||
## 잔여 작업 (스캐폴드 이후)
|
||||
- [ ] 로그인 응답에서 직접 profile 추출 (현재 `/me` 추가 호출)
|
||||
- [ ] 백엔드 `/api/mobile/me/*` 전용 endpoint — 본인 agentId 자동 필터 (현 클라이언트 필터는 변조 가능)
|
||||
- [ ] 출금 신청 작성 화면 (현재 이력 조회만)
|
||||
- [ ] 정산 명세서 상세 + PDF 다운로드
|
||||
- [ ] 공지 상세 + 본인 알림(`user_notification`) 표시
|
||||
- [ ] 토큰 만료 자동 refresh (`/api/auth/refresh`)
|
||||
- [ ] 푸시 알림 (FCM 등) — 외부 채널 결정 후
|
||||
- [ ] 실 아이콘 PNG (192/512/512 maskable)
|
||||
Reference in New Issue
Block a user