48 lines
1.2 KiB
Markdown
48 lines
1.2 KiB
Markdown
# Backend FCM — 전략 시그널 → Android 푸시
|
|
|
|
## 흐름
|
|
|
|
```
|
|
BarBuilder / LiveStrategyScheduler
|
|
→ TradeSignalService.save(userId, deviceId, …)
|
|
→ FcmPushService.sendTradeSignalIfEnabled(…)
|
|
→ Firebase Cloud Messaging → Android 앱
|
|
```
|
|
|
|
## 발송 조건 (모두 필요)
|
|
|
|
1. `firebase.enabled=true` + `firebase-service-account.json` 유효
|
|
2. 해당 사용자/기기 `gc_app_settings.fcm_push_enabled = true`
|
|
3. `gc_fcm_token` 에 활성 토큰 등록 (앱 로그인 후 자동 등록)
|
|
4. 로그인 사용자: `userId` 기준 토큰 조회 (모바일·웹 deviceId 달라도 OK)
|
|
|
|
## exdev 서버 설정
|
|
|
|
```bash
|
|
# .env 또는 docker-compose 환경
|
|
FIREBASE_ENABLED=true
|
|
FIREBASE_SERVICE_ACCOUNT=/app/firebase-service-account.json
|
|
```
|
|
|
|
`docker-compose.yml` 볼륨 (주석 해제):
|
|
|
|
```yaml
|
|
- ${FIREBASE_SERVICE_ACCOUNT_PATH}:/app/firebase-service-account.json:ro
|
|
```
|
|
|
|
goldenApp과 동일 프로젝트 **goldenanalysisapp** 서비스 계정 JSON 사용.
|
|
|
|
## 확인
|
|
|
|
```bash
|
|
curl https://stock.exdev.co.kr/api/fcm/status
|
|
# {"available":true}
|
|
|
|
# 앱에서 FCM 푸시 ON 후
|
|
curl -X POST https://stock.exdev.co.kr/api/fcm/test \
|
|
-H "x-user-id: 1" \
|
|
-H "x-device-id: <앱 device id>"
|
|
```
|
|
|
|
로그: `[FCM] trade_signal sent N/M tokens market=KRW-BTC BUY`
|