cfd550bed8
Deploy via SSH / remote-deploy (push) Failing after 6s
Backend (server/src): - services/anthropic.ts — Claude API 래퍼 (키 없으면 룰베이스 fallback) - services/ocr.ts — Naver Clova + Google Vision 듀얼 연동 + 영수증 필드 파서 - services/solapi.ts — 카카오 알림톡 HMAC 서명 + 드라이런 - services/expoPush.ts — Expo Push API 전송 - services/codef.ts — 보험 통합조회 mock + 실연동 포인트 - routes/ai.ts, ocr.ts, devices.ts, social.ts (naver/apple), alimtalk.ts, codef.ts - Prisma: PushDevice 모델 + binaryTargets linux-musl-openssl-3.0.x - Dockerfile: apk add openssl (Prisma schema engine 정상화) - api-secrets에 9개 외부 API 키 슬롯 추가 (optional) Frontend: - api/endpoints.ts: aiApi, ocrApi, deviceApi, socialApi, codefApi - services/kakao.ts — Kakao JS SDK 동적 로드 + Auth.login - services/push.ts — expo-notifications 권한/토큰 등록 + 서버 전송 - LoginScreen — 카카오/네이버/애플 버튼 (웹은 토큰 입력 fallback) - AIJudgeScreen — 실제 /ai/claim-judge 호출, source(llm/rules) 표시 - ClaimScreen — 영수증 촬영 시 자동 OCR → 병원/날짜/제목 자동 기입 - useAuthStore hydrate 시 푸시 토큰 등록 Infra: - eas.json (development/preview/production 빌드 프로필) - API_KEYS.md — 9개 외부 서비스 발급/등록 가이드 - scripts/deploy-remote.sh 개선 (sudo 정확히, traefik cp 버그 수정, API fail 시 로그 출력) - deploy/k8s/api.yaml — 외부 API 키 환경변수 매핑 (optional=true) CI/CD: - .gitea/workflows/deploy.yml → SSH 기반으로 전환 (appleboy/ssh-action으로 서버 접속 → deploy-remote.sh 실행) - 필요 Secrets: SSH_HOST, SSH_USER, SSH_PASSWORD Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
90 lines
3.6 KiB
Markdown
90 lines
3.6 KiB
Markdown
# 🔑 API Keys & 외부 연동 설정
|
|
|
|
모든 키는 **없어도 앱은 동작**합니다 (fallback 또는 dry-run). 키 등록 시 해당 기능이 자동으로 실 연동.
|
|
|
|
## 1. Anthropic Claude (AI 보험금 판정)
|
|
- **발급**: [https://console.anthropic.com](https://console.anthropic.com) → API Keys
|
|
- **k8s secret key**: `api-secrets.anthropicApiKey`
|
|
- **환경변수**: `ANTHROPIC_API_KEY`
|
|
- **없을 때**: 룰베이스 판정 (키워드 매칭)
|
|
|
|
## 2. Naver Clova OCR (영수증/증권 OCR)
|
|
- **발급**: [https://www.ncloud.com/product/aiService/ocr](https://www.ncloud.com/product/aiService/ocr) → 도메인 생성 → APIGW 호출 URL + Secret Key
|
|
- **k8s secret key**: `api-secrets.clovaOcrUrl`, `api-secrets.clovaOcrSecret`
|
|
- **환경변수**: `CLOVA_OCR_URL`, `CLOVA_OCR_SECRET`
|
|
- **없을 때**: Google Vision 시도 → 그것도 없으면 OCR 스킵 (수동 입력)
|
|
|
|
## 3. Google Cloud Vision (OCR fallback)
|
|
- **발급**: [https://console.cloud.google.com](https://console.cloud.google.com) → Vision API 활성화 → API key
|
|
- **환경변수**: `GCP_VISION_API_KEY`
|
|
|
|
## 4. Solapi 카카오 알림톡
|
|
- **발급**: [https://solapi.com](https://solapi.com) 가입 + API key
|
|
- **카카오 비즈채널**: [https://center-pf.kakao.com](https://center-pf.kakao.com) 개설 → 검색ID (pfId)
|
|
- **발신번호 등록** + **알림톡 템플릿 심사** (1~2주)
|
|
- **환경변수**: `SOLAPI_API_KEY`, `SOLAPI_API_SECRET`, `SOLAPI_PFID`, `SOLAPI_SENDER_KEY`
|
|
- **없을 때**: `console.log`로 드라이런
|
|
|
|
## 5. 카카오 로그인 (웹)
|
|
- **발급**: [https://developers.kakao.com](https://developers.kakao.com) → 앱 생성 → 플랫폼: Web (`https://insurance.junggomoa.com`) → JavaScript 키
|
|
- **클라이언트 빌드 환경변수**: `EXPO_PUBLIC_KAKAO_JS_KEY`
|
|
- **백엔드에서 access_token 검증**은 이미 구현 (`/auth/kakao`)
|
|
|
|
## 6. 네이버 로그인
|
|
- **발급**: [https://developers.naver.com](https://developers.naver.com) → 애플리케이션 등록 → Client ID/Secret
|
|
- 웹: 네이버 SDK 연동 필요 (LoginScreen onNaver() 커스터마이즈)
|
|
- 백엔드는 이미 완성 (`/auth/naver`)
|
|
|
|
## 7. Apple 로그인
|
|
- **Apple Developer 계정 필요** (연 $99)
|
|
- 서비스 활성화: Sign in with Apple
|
|
- iOS: `expo-apple-authentication` 자동 동작 (네이티브 빌드 후)
|
|
- 백엔드는 이미 완성 (`/auth/apple`)
|
|
|
|
## 8. CODEF 보험 통합조회
|
|
- **발급**: [https://developer.codef.io](https://developer.codef.io) → 상품 계약
|
|
- 비즈니스 계약 필요 (월 수십만원~)
|
|
- **환경변수**: `CODEF_CLIENT_ID`, `CODEF_CLIENT_SECRET`
|
|
- **없을 때**: mock 데이터 반환 (ENABLE_CODEF_MOCK=true가 기본)
|
|
|
|
## 9. Expo Push (iOS/Android 푸시)
|
|
- iOS: Apple Developer 계정 + APNs 인증서 (EAS Build 시 자동)
|
|
- Android: FCM server key 등록 (`eas credentials`)
|
|
- 무료
|
|
|
|
---
|
|
|
|
## 📦 서버에 키 등록하는 법
|
|
|
|
SSH 접속 후:
|
|
```bash
|
|
# /home/chpark/.insurance-secrets 에 export 형식으로 추가
|
|
cat >> /home/chpark/.insurance-secrets <<EOF
|
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
CLOVA_OCR_URL=https://...apigw-ntruss.com/custom/v1/.../general
|
|
CLOVA_OCR_SECRET=...
|
|
SOLAPI_API_KEY=...
|
|
SOLAPI_API_SECRET=...
|
|
SOLAPI_PFID=@채널검색ID
|
|
SOLAPI_SENDER_KEY=...
|
|
CODEF_CLIENT_ID=...
|
|
CODEF_CLIENT_SECRET=...
|
|
EOF
|
|
|
|
# 재배포
|
|
cd /home/chpark/insurance && bash scripts/deploy-remote.sh
|
|
```
|
|
|
|
k8s secrets에 자동 반영됩니다.
|
|
|
|
---
|
|
|
|
## 📱 클라이언트 빌드 환경변수
|
|
|
|
`.env` 또는 EAS Build 환경변수:
|
|
```
|
|
EXPO_PUBLIC_API_BASE=https://api.insurance.junggomoa.com
|
|
EXPO_PUBLIC_KAKAO_JS_KEY=<카카오 JS 키>
|
|
EXPO_PUBLIC_NAVER_CLIENT_ID=<네이버 Client ID>
|
|
```
|