# 第三方服務整合規格文件 (Third-Party Integration Specification)

## 文件概述

本文件詳細定義了Drama Ling應用程式需要整合的所有第三方服務，包括技術規格、整合優先級、成本分析和風險評估。為開發團隊提供完整的第三方服務整合指引。

**目標讀者**: 開發團隊、架構師、產品經理、專案經理  
**維護頻率**: 每月檢視更新  
**版本**: v1.0  
**最後更新**: 2024年9月6日

---

## 📊 服務總覽

### 整合服務統計 *(更新基於規格修正)*
- **總服務數量**: 12個主要服務 (移除Stripe、本土支付、SpeechAce)
- **核心服務**: 7個 (MVP必需)
- **擴展服務**: 5個 (後續優化)
- **預估月度成本**: $100-250 USD (大幅降低)

### 服務分類 *(更新版)*
```mermaid
graph TD
    A[第三方服務] --> B[身份認證]
    A --> C[支付系統]
    A --> D[AI語言服務]
    A --> E[基礎設施]
    A --> F[通訊服務]
    A --> G[監控分析]
    
    B --> B1[Apple ID]
    B --> B2[Google OAuth]
    
    C --> C1[iOS App Store內購]
    C --> C2[Google Play內購]
    
    D --> D1[OpenAI GPT-4o-mini]
    D --> D2[Microsoft語言評估]
    D --> D3[Google Speech STT/TTS]
    
    E --> E1[AWS]
    E --> E2[CloudFront CDN]
    
    F --> F1[Firebase FCM]
    F --> F2[AdMob廣告]
    
    G --> G1[New Relic]
```

---

## 🔐 身份認證服務

### Apple ID 登入
**服務提供商**: Apple  
**用途**: iOS用戶快速登入註冊

#### 技術規格
- **API**: Sign in with Apple
- **支援平台**: iOS, macOS, Web
- **整合SDK**: AuthenticationServices (iOS)
- **回調處理**: JWT Token驗證

#### 整合點
- **UI介面**: `UI_Login_Main`
- **API端點**: `/api/v1/auth/apple-login`
- **數據庫**: users.apple_id, users.provider = 'apple'

#### 開發需求
```typescript
// iOS SDK 整合
import AuthenticationServices

// 後端驗證
POST /api/v1/auth/apple-login
{
  "identity_token": "eyJ...",
  "authorization_code": "c1a2b3...",
  "user": {
    "email": "user@privaterelay.appleid.com",
    "name": { "firstName": "John", "lastName": "Doe" }
  }
}
```

#### 技術文檔
- [Apple Developer - Sign in with Apple](https://developer.apple.com/sign-in-with-apple/)
- [REST API Reference](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api)

#### 成本
- **免費**: Apple不收取費用
- **開發時間**: 1-2週

---

### Google 登入
**服務提供商**: Google  
**用途**: Android/Web用戶快速登入

#### 技術規格
- **API**: Google OAuth 2.0
- **支援平台**: Android, iOS, Web
- **整合SDK**: Google Sign-In SDK
- **權限範圍**: email, profile

#### 整合點
- **UI介面**: `UI_Login_Main`
- **API端點**: `/api/v1/auth/google-login`
- **數據庫**: users.google_id, users.provider = 'google'

#### 開發需求
```typescript
// Android SDK 整合
implementation 'com.google.android.gms:play-services-auth:20.7.0'

// 後端驗證
POST /api/v1/auth/google-login
{
  "id_token": "eyJ...",
  "access_token": "ya29...",
  "user_info": {
    "id": "123456789",
    "email": "user@gmail.com",
    "name": "John Doe"
  }
}
```

#### 技術文檔
- [Google Identity Platform](https://developers.google.com/identity)
- [OAuth 2.0 Guide](https://developers.google.com/identity/protocols/oauth2)

#### 成本
- **免費**: Google不收取費用
- **開發時間**: 1-2週

---

## 💳 支付與訂閱服務

### iOS App Store 內購 (主要支付平台)
**服務提供商**: Apple App Store  
**用途**: iOS用戶訂閱和購買服務

#### 技術規格
- **API**: StoreKit 2 (iOS 15+)
- **支援幣種**: TWD (台幣)
- **支付方式**: Apple ID綁定的付款方式
- **功能模組**:
  - 自動續訂訂閱
  - 消耗型/非消耗型內購
  - 家庭共享支援

#### 整合點
- **訂閱系統**: 月費NT$600 自動續訂訂閱
- **道具購買**: 鑽石、命條、回覆提示等消耗型商品
- **內容包購買**: 場景包、詞彙包等非消耗型商品

#### API整合 (iOS)
```swift
// StoreKit 2 整合
import StoreKit

// 產品ID設定
enum ProductID: String, CaseIterable {
    case monthlySubscription = "dramaling.subscription.monthly"
    case diamonds100 = "dramaling.diamonds.100"
    case lifePoints5 = "dramaling.lifepoints.5"
    case replyHints10 = "dramaling.replyhints.10"
}

// 購買處理
@MainActor
class StoreManager: ObservableObject {
    private(set) var products: [Product] = []
    
    func purchase(_ product: Product) async throws -> Transaction? {
        let result = try await product.purchase()
        
        switch result {
        case .success(let verificationResult):
            // 驗證交易並同步到後端
            if case .verified(let transaction) = verificationResult {
                await syncTransactionToBackend(transaction)
                await transaction.finish()
                return transaction
            }
        case .userCancelled, .pending:
            return nil
        @unknown default:
            return nil
        }
        
        return nil
    }
}

// 後端驗證
POST /api/v1/purchases/ios/verify
{
  "transaction_id": "2000000123456789",
  "product_id": "dramaling.subscription.monthly",
  "receipt_data": "base64_encoded_receipt",
  "user_id": "user_123"
}
```

#### Server-to-Server 通知
```javascript
// Apple Server Notifications V2
POST /webhooks/app-store
{
  "signedPayload": "eyJ..." // JWT from Apple
}

// 通知類型處理
- SUBSCRIBED: 新訂閱
- DID_RENEW: 續訂成功  
- EXPIRED: 訂閱過期
- DID_FAIL_TO_RENEW: 續訂失敗
- REFUND: 退款處理
```

#### 數據庫結構
```sql
-- 訂閱記錄 (更新為雙平台內購)
CREATE TABLE user_subscriptions (
    subscription_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID REFERENCES users(user_id) ON DELETE CASCADE,
    platform VARCHAR(20) NOT NULL, -- 'ios', 'android'
    product_id VARCHAR(100) NOT NULL, -- App Store/Play Store產品ID
    original_transaction_id VARCHAR(255), -- iOS原始交易ID
    latest_receipt TEXT, -- 最新收據
    purchase_token VARCHAR(255), -- Android購買Token
    subscription_state VARCHAR(50) DEFAULT 'active',
    expires_at TIMESTAMPTZ,
    auto_renewal BOOLEAN DEFAULT true,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- 交易記錄
CREATE TABLE purchase_transactions (
    transaction_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID REFERENCES users(user_id) ON DELETE CASCADE,
    platform VARCHAR(20) NOT NULL,
    store_transaction_id VARCHAR(255) NOT NULL,
    product_id VARCHAR(100) NOT NULL,
    purchase_type VARCHAR(50) NOT NULL, -- 'subscription', 'consumable', 'non_consumable'
    amount_twd INTEGER, -- 台幣金額
    purchase_date TIMESTAMPTZ NOT NULL,
    verification_status VARCHAR(20) DEFAULT 'pending', -- 'verified', 'failed', 'pending'
    created_at TIMESTAMPTZ DEFAULT NOW()
);
```

#### 技術文檔
- [StoreKit 2 Documentation](https://developer.apple.com/documentation/storekit)
- [App Store Server API](https://developer.apple.com/documentation/appstoreserverapi)
- [Google Play Billing](https://developer.android.com/google/play/billing)

#### 成本分析
- **Apple手續費**: 30% (首年), 15% (訂閱第二年後)
- **Google手續費**: 30% (首年), 15% (訂閱第二年後)
- **月訂閱(NT$600)**: Apple/Google分潤 NT$180(首年) / NT$90(次年)
- **無額外第三方費用**

#### 開發時間
- **iOS StoreKit 2整合**: 2-3週
- **Android Play Billing整合**: 2-3週
- **後端收據驗證**: 1週
- **測試與上線**: 1週

---

### Google Play 內購 (Android支付平台)
**服務提供商**: Google Play Store  
**用途**: Android用戶訂閱和購買服務

#### 技術規格
- **API**: Google Play Billing Library 5.0+
- **支援幣種**: TWD (台幣)
- **支付方式**: Google Play綁定的付款方式
- **功能模組**:
  - 自動續訂訂閱
  - 單次購買商品
  - 獎勵商品

#### API整合 (Android)
```kotlin
// Google Play Billing 整合
import com.android.billingclient.api.*

class BillingManager(private val context: Context) : PurchasesUpdatedListener {
    private lateinit var billingClient: BillingClient
    
    init {
        billingClient = BillingClient.newBuilder(context)
            .setListener(this)
            .enablePendingPurchases()
            .build()
    }
    
    // 產品ID設定
    companion object {
        const val MONTHLY_SUBSCRIPTION = "dramaling_subscription_monthly"
        const val DIAMONDS_100 = "dramaling_diamonds_100"
        const val LIFE_POINTS_5 = "dramaling_lifepoints_5"
        const val REPLY_HINTS_10 = "dramaling_replyhints_10"
    }
    
    // 購買處理
    override fun onPurchasesUpdated(result: BillingResult, purchases: MutableList<Purchase>?) {
        if (result.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (purchase in purchases) {
                // 驗證並確認購買
                verifyAndAcknowledgePurchase(purchase)
            }
        }
    }
}

// 後端驗證
POST /api/v1/purchases/android/verify
{
  "purchase_token": "abcdef123456",
  "product_id": "dramaling_subscription_monthly", 
  "order_id": "GPA.1234-5678-9012-34567",
  "user_id": "user_123"
}
```

#### Real-time Developer Notifications
```javascript
// Google Play Server Notifications
POST /webhooks/google-play
{
  "message": {
    "data": "base64_encoded_notification",
    "messageId": "123456789"
  }
}

// 通知類型處理
- SUBSCRIPTION_PURCHASED: 新訂閱
- SUBSCRIPTION_RENEWED: 續訂成功
- SUBSCRIPTION_CANCELED: 取消訂閱  
- SUBSCRIPTION_EXPIRED: 訂閱過期
- SUBSCRIPTION_REFUNDED: 退款處理
```

---

## 🤖 AI 與語言處理服務

### OpenAI GPT-4o-mini (核心AI服務)
**服務提供商**: OpenAI  
**用途**: 對話練習、翻譯輔助

#### 技術規格
- **主要模型**: gpt-4o-mini (128K context)
- **嵌入模型**: text-embedding-ada-002
- **API版本**: v1
- **支援語言**: 繁體中文、英文
- **成本優化**: 相比GPT-4便宜約60-80%

#### 功能應用

##### 1. AI對話角色扮演
```javascript
// 對話練習 API 調用 (更新為GPT-4o-mini)
POST https://api.openai.com/v1/chat/completions
{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system", 
      "content": "你是餐廳服務員，與客人進行英語對話練習。保持角色一致性，提供自然的回應。回應簡潔但有用。"
    },
    {
      "role": "user",
      "content": "Good evening! I'd like to make a reservation for two."
    }
  ],
  "max_tokens": 100, // 降低token使用
  "temperature": 0.7
}
```

##### 2. 回覆卡關輔助
```javascript
// 回覆引導分析 (優化prompt降低成本)
const guidancePrompt = `
情境：${scenarioContext}
對方：${partnerMessage}
程度：${userLevel}

簡潔回覆：
1. 意圖：${intent}
2. 建議：${suggestion}
3. 範例：${examples}
`;
```

##### 3. 中翻英翻譯輔助
```javascript
// 翻譯服務 (GPT-4o-mini)
POST https://api.openai.com/v1/chat/completions
{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "你是英語翻譯助手，將中文翻譯成自然英文，考慮對話情境。"
    },
    {
      "role": "user", 
      "content": "翻譯：${chineseText}\n情境：${context}"
    }
  ],
  "max_tokens": 80,
  "temperature": 0.3
}
```

#### API整合端點
- `/api/v1/dialogues/{dialogue_id}/message` - 對話回應 (GPT-4o-mini)
- `/api/v1/dialogues/{dialogue_id}/assistance` - 回覆輔助 (GPT-4o-mini)
- `/api/v1/translation/assistance` - 翻譯輔助 (GPT-4o-mini)

#### 成本分析 (更新為GPT-4o-mini)
- **GPT-4o-mini**: $0.15 / 1M input tokens, $0.60 / 1M output tokens
- **Embeddings**: $0.02 / 1M tokens
- **預估使用量** (優化後): 
  - 對話練習: ~30,000 tokens/用戶/月
  - 翻譯輔助: ~8,000 tokens/用戶/月
- **月度預估成本**: $15-50 USD (1000活躍用戶) - **節省80%成本**

#### 技術文檔
- [OpenAI API Documentation](https://platform.openai.com/docs)
- [GPT-4 Turbo Guide](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4)

#### 開發時間
- **基礎整合**: 2-3週
- **提示工程優化**: 2-4週
- **測試和調優**: 2週

---

### Microsoft 語言評估服務 *(新增)*

#### Azure Cognitive Services - Language Understanding
**服務提供商**: Microsoft Azure  
**用途**: 英語學習語言評估和分析

##### 技術規格
- **API**: Text Analytics API v3.1
- **評估功能**: 
  - 語法分析 (Grammar Analysis)
  - 語意理解 (Semantic Understanding)
  - 流暢度評估 (Fluency Assessment)
  - 詞彙豐富度 (Vocabulary Richness)
- **支援語言**: 英文、繁體中文

##### 功能應用
```javascript
// 語言分析 API 調用
POST https://[region].api.cognitive.microsoft.com/text/analytics/v3.1/analyze
{
  "displayName": "English Learning Assessment",
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "language": "en",
        "text": "Yes, I would like to make a reservation for two people tonight."
      }
    ]
  },
  "tasks": {
    "sentimentAnalysisTasks": [{}],
    "keyPhraseExtractionTasks": [{}],
    "entityRecognitionTasks": [{}]
  }
}

// 語法檢查 (使用Microsoft Editor API)
POST https://api.cognitive.microsoft.com/bing/v7.0/spellcheck
{
  "text": "Yes, I would like to make a reservation for two people tonight.",
  "mode": "proof"
}

// 語言評估結果
{
  "overall_score": 85,
  "grammar_score": 90,
  "semantic_score": 88,
  "fluency_score": 82,
  "vocabulary_score": 83,
  "detailed_feedback": {
    "grammar_issues": [],
    "vocabulary_suggestions": ["Consider using 'this evening' instead of 'tonight'"],
    "fluency_notes": "Natural and appropriate for the context"
  }
}
```

##### API整合端點
- `/api/v1/dialogues/{dialogue_id}/analysis` - 語言分析 (Microsoft)
- `/api/v1/language-assessment/evaluate` - 語言評估 (Microsoft)

##### 成本分析
- **Text Analytics**: $2 / 1000 requests
- **Spell Check**: $3 / 1000 requests  
- **預估月成本**: $20-60 USD (1000活躍用戶)

##### 技術文檔
- [Azure Text Analytics](https://docs.microsoft.com/en-us/azure/cognitive-services/text-analytics/)
- [Bing Spell Check API](https://docs.microsoft.com/en-us/azure/cognitive-services/bing-spell-check/)

---

### 語音處理服務

#### Google Cloud Speech-to-Text (主選)
**服務提供商**: Google Cloud  
**用途**: 用戶語音輸入識別

##### 技術規格
- **API版本**: v1
- **支援語言**: en-US, zh-TW
- **音頻格式**: FLAC, WAV, MP3
- **實時識別**: 支援串流識別

##### 整合應用
```javascript
// 語音識別 API
POST https://speech.googleapis.com/v1/speech:recognize
{
  "config": {
    "encoding": "WEBM_OPUS",
    "sampleRateHertz": 48000,
    "languageCode": "en-US",
    "enableAutomaticPunctuation": true,
    "model": "latest_long"
  },
  "audio": {
    "content": "//base64編碼音頻數據"
  }
}
```

##### 成本
- **標準識別**: $0.006 / 15秒
- **預估月成本**: $20-50 USD

#### Google Cloud Text-to-Speech
**服務提供商**: Google Cloud  
**用途**: AI角色語音生成

##### 技術規格
- **API版本**: v1
- **語音類型**: Standard, WaveNet, Neural2
- **語言**: en-US, zh-TW
- **輸出格式**: MP3, WAV

##### 整合應用
```javascript
// 語音合成 API
POST https://texttospeech.googleapis.com/v1/text:synthesize
{
  "input": {"text": "Welcome to Milano Restaurant!"},
  "voice": {
    "languageCode": "en-US",
    "name": "en-US-Neural2-A",
    "ssmlGender": "FEMALE"
  },
  "audioConfig": {
    "audioEncoding": "MP3",
    "speakingRate": 1.0,
    "pitch": 0.0
  }
}
```

##### 成本
- **Neural2 語音**: $16 / 1M字符
- **預估月成本**: $20-40 USD


#### 技術文檔
- [Google Cloud Speech](https://cloud.google.com/speech-to-text/docs)
- [Google Cloud TTS](https://cloud.google.com/text-to-speech/docs)

---

## 📱 通訊與推播服務

### Firebase Cloud Messaging
**服務提供商**: Google Firebase  
**用途**: 跨平台推播通知服務

#### 技術規格
- **平台支援**: iOS, Android, Web
- **訊息類型**: 通知訊息, 數據訊息
- **SDK**: firebase-admin (後端), firebase-messaging (前端)

#### 應用場景
1. **學習提醒**: 每日學習時間到達
2. **命條回復**: 命條自動回復通知  
3. **任務完成**: 每日任務完成提醒
4. **社交互動**: 好友挑戰邀請
5. **訂閱提醒**: 訂閱到期提醒

#### 技術整合
```javascript
// 後端發送通知
const admin = require('firebase-admin');

// 單個用戶推播
await admin.messaging().send({
  token: userFCMToken,
  notification: {
    title: '命條已回復！',
    body: '您的命條已自動回復，快來繼續學習吧！'
  },
  data: {
    type: 'life_point_recovery',
    current_points: '3'
  }
});

// 主題推播
await admin.messaging().sendToTopic('daily_learners', {
  notification: {
    title: '每日挑戰',
    body: '新的每日任務已經準備好了！'
  }
});
```

#### 用戶通知設定
```javascript
// API 端點：更新通知偏好
PUT /api/v1/users/notification-settings
{
  "push_notifications": true,
  "learning_reminders": true,
  "life_point_alerts": true,
  "social_notifications": false,
  "marketing_messages": false,
  "quiet_hours": {
    "enabled": true,
    "start": "22:00",
    "end": "08:00"
  }
}
```

#### 數據庫結構
```sql
-- 用戶通知設定
CREATE TABLE user_notification_settings (
    user_id UUID PRIMARY KEY REFERENCES users(user_id),
    fcm_token VARCHAR(255),
    platform VARCHAR(20), -- ios, android, web
    push_enabled BOOLEAN DEFAULT true,
    learning_reminders BOOLEAN DEFAULT true,
    life_point_alerts BOOLEAN DEFAULT true,
    social_notifications BOOLEAN DEFAULT true,
    quiet_hours JSONB DEFAULT '{}',
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
```

#### 成本
- **免費額度**: 無限制推播
- **開發時間**: 1-2週

#### 技術文檔
- [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging)
- [Admin SDK Guide](https://firebase.google.com/docs/admin/setup)

---

### 廣告服務平台

#### AdMob (Google)
**服務提供商**: Google AdMob  
**用途**: 行動應用廣告變現

#### 技術規格
- **廣告格式**: 橫幅廣告, 插頁廣告, 獎勵型影片
- **平台**: iOS, Android
- **SDK**: Google Mobile Ads SDK

#### 應用場景
- **命條回復**: 觀看30秒廣告獲得1命條
- **每日獎勵**: 觀看廣告獲得額外經驗值
- **鑽石獎勵**: 觀看廣告獲得少量鑽石

#### 技術整合
```javascript
// 前端 - 獎勵型廣告
import { RewardedAd } from '@react-native-google-ads/admob';

const rewardedAd = RewardedAd.createForAdRequest('ca-app-pub-xxx/xxx');

// 廣告載入完成後顯示
rewardedAd.addAdEventListener(RewardedAdEventType.EARNED_REWARD, reward => {
  // 調用後端 API 給予獎勵
  apiClient.post('/api/v1/life-points/ad-reward', {
    ad_id: adUnitId,
    watch_completion: true,
    watch_duration: 30
  });
});

// 後端 - 廣告獎勵驗證
POST /api/v1/ads/watch
{
  "ad_id": "AD_REWARD_001", 
  "watch_duration": 30,
  "completion_status": "completed"
}

Response 200 OK
{
  "success": true,
  "data": {
    "reward_granted": {
      "type": "life_points",
      "quantity": 1
    },
    "cooldown_remaining": 3600,
    "daily_limit_remaining": 2
  }
}
```

#### 廣告管理規則
- **每日限制**: 最多5次廣告獎勵
- **冷卻時間**: 連續觀看間隔1小時
- **獎勵類型**: 
  - 命條+1 (主要)
  - 經驗值+25 (次要)
  - 鑽石+5 (稀有)

#### 收益分析
- **eCPM**: $1-3 USD (依地區)
- **填充率**: 80-95%
- **預估收益**: $50-200 USD/月 (依DAU)

#### 技術文檔
- [AdMob Documentation](https://developers.google.com/admob)
- [Rewarded Ads Guide](https://developers.google.com/admob/android/rewarded)

---

## ☁️ 雲端基礎設施服務

### Amazon Web Services (AWS)

#### EC2 (彈性運算雲)
**用途**: 應用服務器託管

##### 實例配置
```yaml
# 生產環境配置
Instance Type: t3.large
- vCPU: 2
- Memory: 8 GB  
- Network: Up to 5 Gbps
- Storage: EBS gp3

# 自動擴展配置
Auto Scaling Group:
  Min Size: 2
  Max Size: 10
  Target Capacity: 70% CPU
```

##### 安全組配置
```yaml
Security Groups:
  Web-Server-SG:
    - HTTP (80) from ALB
    - HTTPS (443) from ALB
    - SSH (22) from Bastion
  
  Database-SG:
    - PostgreSQL (5432) from Web-Server-SG
```

#### Application Load Balancer (ALB)
**用途**: 流量分發與SSL終止

##### 配置
```yaml
Load Balancer:
  Type: Application Load Balancer
  Scheme: internet-facing
  Target Groups:
    - API-Servers (Port 8000)
    - Health Check: /health
  SSL Certificate: AWS Certificate Manager
  
Listeners:
  - Port 443 (HTTPS) -> API-Servers
  - Port 80 (HTTP) -> Redirect to 443
```

#### S3 + CloudFront CDN
**用途**: 靜態資源存儲與分發

##### S3 Bucket 結構
```
dramaling-media/
├── avatars/          # 用戶頭像
├── vocabulary/       # 詞彙相關圖片
│   ├── images/      # 詞彙示意圖
│   └── audio/       # 發音音檔
├── scenarios/       # 場景相關媒體
│   ├── backgrounds/ # 背景圖片
│   └── audio/       # 場景音效
└── system/          # 系統資源
    ├── icons/       # UI圖標
    └── animations/  # 動畫資源
```

##### CloudFront 配置
```yaml
Distribution:
  Origin: dramaling-media.s3.amazonaws.com
  Price Class: PriceClass_100 (US, Canada, Europe)
  Caching Behaviors:
    - /avatars/*: TTL 24h
    - /vocabulary/*: TTL 7d
    - /scenarios/*: TTL 7d
  Compression: Enabled
  HTTP Version: HTTP/2
```

#### RDS (關聯式資料庫)
**用途**: PostgreSQL數據庫託管

##### 配置
```yaml
Database Engine: PostgreSQL 15
Instance Class: db.t3.medium
  - vCPU: 2
  - Memory: 4 GB
Storage: 
  - Type: gp3
  - Size: 100 GB
  - IOPS: 3000
Multi-AZ: Yes (生產環境)
Backup Retention: 7 days
```

#### 成本預估 (月度)
```yaml
服務成本預估:
  EC2 (t3.large × 2): $67 × 2 = $134
  ALB: $22
  S3 Storage (50GB): $1.15
  CloudFront (500GB transfer): $42.5
  RDS (db.t3.medium): $58
  Data Transfer: $20
  總計: ~$280 USD/月
```

#### 技術文檔
- [AWS EC2 Documentation](https://docs.aws.amazon.com/ec2/)
- [AWS S3 Developer Guide](https://docs.aws.amazon.com/s3/)
- [CloudFront Documentation](https://docs.aws.amazon.com/cloudfront/)

---

### 備選雲端平台

#### Google Cloud Platform
- **Compute Engine**: VM 實例
- **Cloud Storage**: 檔案存儲
- **Cloud CDN**: 內容分發
- **Cloud SQL**: PostgreSQL託管

#### Microsoft Azure  
- **Virtual Machines**: 運算實例
- **Blob Storage**: 物件存儲
- **Azure CDN**: 內容分發
- **Azure Database**: PostgreSQL服務

---

## 📊 監控與分析服務

### New Relic (推薦)
**服務提供商**: New Relic  
**用途**: 全棧應用效能監控

#### 功能範圍
- **APM**: API回應時間、錯誤率監控
- **Browser**: 前端效能監控
- **Mobile**: 行動應用監控
- **Synthetics**: 外部服務監控
- **Logs**: 集中化日誌管理

#### 監控指標
```yaml
應用效能指標:
  API Response Time:
    - 95% < 200ms
    - 99% < 500ms
  Error Rate:
    - < 1% 4xx errors
    - < 0.1% 5xx errors
  Database Performance:
    - Query time < 50ms
    - Connection pool utilization < 80%
  
第三方服務監控:
  OpenAI API:
    - Response time < 3s
    - Success rate > 99%
  Stripe API:
    - Payment processing < 5s
    - Webhook delivery success > 95%
```

#### 告警設定
```yaml
Critical Alerts:
  - API error rate > 5% (5min)
  - Database connection failed
  - Payment processing failed > 10/min
  
Warning Alerts:
  - API response time > 500ms (10min)
  - Memory usage > 85%
  - Disk usage > 80%
```

#### 成本
- **Lite計劃**: $99/月 (100GB資料保留)
- **Pro計劃**: $349/月 (無限資料保留)

#### 技術文檔
- [New Relic APM](https://docs.newrelic.com/docs/apm/)
- [New Relic Mobile](https://docs.newrelic.com/docs/mobile-monitoring/)

---

### Datadog (備選)
**服務提供商**: Datadog  
**用途**: 雲端監控與分析平台

#### 成本對比
- **Pro計劃**: $15/host/月
- **Enterprise**: $23/host/月

---

## 📋 整合優先級與開發時程

### 🔴 第一階段 - MVP核心功能 (8-10週)

#### Week 1-2: 基礎認證系統
- [ ] **Apple ID 整合** (iOS)
  - 開發時間: 1週
  - 測試時間: 3天
  - 依賴: iOS開發環境設置

- [ ] **Google OAuth 整合** (Android/Web)  
  - 開發時間: 1週
  - 測試時間: 3天
  - 依賴: Android/Web開發環境

#### Week 3-5: 支付系統核心
- [ ] **Stripe 基礎整合**
  - 開發時間: 2週
  - 測試時間: 1週
  - 功能範圍: 訂閱創建、狀態管理、Webhook處理

- [ ] **訂閱權限控制**
  - 開發時間: 3天
  - API端點: `/api/v1/subscriptions/access-check`

#### Week 6-8: AI語言服務
- [ ] **OpenAI GPT-4 整合**
  - 開發時間: 2週
  - 功能範圍:
    - 對話角色扮演
    - 基礎語言評估
    - 回覆輔助系統
  
- [ ] **提示工程優化**  
  - 開發時間: 1週
  - 測試不同提示模板和參數

#### Week 9-10: 語音服務基礎
- [ ] **Google TTS 整合**
  - 開發時間: 3天
  - 功能: AI角色語音生成

- [ ] **Google STT 整合**
  - 開發時間: 4天  
  - 功能: 用戶語音輸入識別

#### 第一階段交付成果
✅ 用戶可以登入註冊  
✅ 訂閱系統正常運作  
✅ 基礎AI對話功能  
✅ 語音輸入輸出功能  
✅ 核心付費流程完整

---

### 🟡 第二階段 - 功能增強 (4-6週)

#### Week 11-12: 通訊服務
- [ ] **Firebase FCM 推播**
  - 開發時間: 1週
  - 功能範圍:
    - 學習提醒
    - 命條回復通知
    - 任務完成提醒

- [ ] **通知偏好設定**
  - 開發時間: 3天

#### Week 13-14: 廣告系統
- [ ] **AdMob 獎勵廣告**  
  - 開發時間: 1週
  - 功能: 觀看廣告獲得命條

- [ ] **廣告獎勵管理**
  - 開發時間: 3天
  - 每日限制、冷卻時間控制

#### Week 15-16: 本土支付
- [ ] **LINE Pay 整合**
  - 開發時間: 1週
  - 針對台灣市場

- [ ] **街口支付整合**
  - 開發時間: 1週

#### 第二階段交付成果
✅ 完整推播通知系統  
✅ 廣告獎勵機制  
✅ 台灣本土支付支援

---

### 🟢 第三階段 - 優化與監控 (2-4週)

#### Week 17-18: 發音評估
- [ ] **SpeechAce API 整合**
  - 開發時間: 1週
  - 功能: 用戶發音評分

#### Week 19-20: 監控系統
- [ ] **New Relic APM 設置**
  - 設置時間: 3天
  - 功能: 全面效能監控

- [ ] **告警系統配置**
  - 設置時間: 2天

#### 第三階段交付成果
✅ 完整發音評估功能  
✅ 全面監控告警系統  
✅ 效能優化完成

---

## 💰 成本分析與預算規劃

### 預算導向成本分析

#### 低預算方案 (符合NT$ 5,000/月生產預算)
```yaml
極低成本AI服務:
  OpenAI GPT-4o-mini: NT$ 480-1,600 (優化使用量)
  # 策略: 90%快取命中率 + 批次處理
  Microsoft語言評估: NT$ 160-480 (最小套餐)
  Google TTS/STT: NT$ 320-640 (基本用量)

支付服務:
  iOS/Android內購: NT$ 0 (平台分潤機制)

基礎設施 (VPS方案):
  DigitalOcean VPS: NT$ 320-480 (4GB)
  Cloudflare CDN: NT$ 0 (免費版)
  域名+SSL: NT$ 400-600

通訊服務:
  Firebase FCM: NT$ 0 (免費額度)
  AdMob廣告: -NT$ 1,600 to -NT$ 6,400 (收益)

監控服務:  
  免費監控套件: NT$ 0
  # UptimeRobot + Sentry免費版

淨成本: NT$ 1,680-3,200/月 (符合預算)
廣告收益抵消後: NT$ 80-1,600/月
```

#### 高預算雲端方案比較
```yaml
完整AWS方案 (預算充足時):
  AI服務: $75-190 USD (NT$ 2,400-6,000)
  基礎設施: $320-500 USD (NT$ 10,000-16,000)
  監控服務: $99-349 USD (NT$ 3,200-11,200)
  
  總成本: $494-1,039 USD/月 (NT$ 15,800-33,200)
```

#### 低預算用戶規模預測
```yaml
100 活躍用戶 (啟動階段):
  月成本: NT$ 800-1,200
  單用戶成本: NT$ 8-12
  可行性: ✅ 預算內

500 活躍用戶 (成長階段):
  月成本: NT$ 1,600-2,400
  單用戶成本: NT$ 3.2-4.8
  可行性: ✅ 預算內

1,000 活躍用戶 (穩定階段):
  月成本: NT$ 2,400-3,600
  單用戶成本: NT$ 2.4-3.6
  可行性: ✅ 預算內
  
2,000+ 活躍用戶:
  月成本: NT$ 3,600-4,800
  單用戶成本: NT$ 1.8-2.4
  升級建議: 考慮雲端方案
```

#### 低預算收益平衡點分析
```yaml
訂閱收益 (月費NT$600):
  實際收入(扣除30%分潤): NT$420/用戶
  
  平衡點計算:
  - 月成本NT$1,600: 需4付費用戶 (80活躍用戶@5%轉換)
  - 月成本NT$2,400: 需6付費用戶 (120活躍用戶@5%轉換)
  - 月成本NT$3,600: 需9付費用戶 (180活躍用戶@5%轉換)

廣告收益 (重要補充):
  - 台灣eCPM: NT$32-64 ($1-2 USD)
  - 500 DAU × 2廣告/天 = +NT$960-1,920/月
  - 1000 DAU × 2廣告/天 = +NT$1,920-3,840/月

綜合收益模式:
  訂閱 + 廣告雙收入，大幅降低平衡點
  實際需求: 50-80活躍用戶即可達損益平衡
```

---

### 低預算成本優化策略

#### 開發階段優化 (NT$ 2,000/月預算)
1. **完全本地開發** - 使用Docker Compose免費環境
2. **AI服務節省** - GPT-4o-mini + 積極快取策略
3. **最小化外部服務** - 僅使用必要API呼叫
4. **免費監控工具** - Docker logs + 基本指標

#### 生產階段優化 (NT$ 5,000/月預算)
1. **VPS代替雲端** - DigitalOcean單機部署節省70%
2. **Cloudflare免費CDN** - 替代付費CDN服務
3. **智慧AI快取** - 90%命中率目標，降低API成本
4. **廣告收益最大化** - 優化廣告位置和頻次

#### 成長階段優化 (預算增加後)
1. **漸進式雲端遷移** - VPS → 混合雲 → 全雲端
2. **AI服務升級** - 引入更強大模型
3. **多區域部署** - 亞太地區擴展
4. **企業級監控** - 升級至付費監控方案

---

## ⚠️ 風險評估與備案

### 服務中斷風險

#### 高風險服務
```yaml
OpenAI API:
  風險等級: 高
  影響範圍: 核心對話功能無法使用
  備案方案:
    - Anthropic Claude API (備用)
    - Azure OpenAI Service (企業級)
    - 本地大模型部署 (長期)
  
Stripe 支付:
  風險等級: 高  
  影響範圍: 無法處理國際付款
  備案方案:
    - PayPal Business (備用)
    - Square (北美市場)
    - 多支付方案並行
```

#### 中風險服務
```yaml
Google Speech Services:
  風險等級: 中
  影響範圍: 語音功能受限
  備案方案:
    - Azure Cognitive Services
    - Amazon Transcribe/Polly
    
AWS 基礎設施:
  風險等級: 中
  影響範圍: 整體服務中斷
  備案方案:
    - 多可用區部署
    - GCP/Azure 災難恢復
```

#### 低風險服務
```yaml
Firebase FCM:
  風險等級: 低
  備案方案: OneSignal, Pusher

AdMob:
  風險等級: 低  
  備案方案: Unity Ads, AppLovin
```

### 服務限制與配額管理

#### API限制監控
```yaml
OpenAI API:
  - Rate Limit: 10,000 RPM
  - Token Limit: 2,000,000 TPM
  - 監控指標: 使用率、錯誤率
  
Google Speech API:
  - 配額: 1,000,000 requests/day
  - 監控: 日使用量追蹤
  
Stripe API:
  - Rate Limit: 25 requests/second
  - 監控: 交易成功率
```

#### 超額處理機制
1. **降級服務**: 部分功能暫停
2. **排隊系統**: 非關鍵請求延後處理  
3. **快取機制**: 減少API調用
4. **用戶通知**: 透明化服務狀態

### 數據隱私與合規

#### GDPR 合規 (歐盟用戶)
- [ ] 數據處理同意書
- [ ] 用戶數據導出功能
- [ ] 數據刪除right to be forgotten
- [ ] 第三方數據處理協議

#### 兒童隱私保護 (COPPA)
- [ ] 13歲以下用戶特殊處理
- [ ] 家長同意機制
- [ ] 限制數據收集範圍

---

## 📋 開發檢查清單

### 開發前準備

#### 帳號申請與設定
- [ ] **Apple Developer Account** ($99/年)
- [ ] **Google Cloud Console** 專案設置
- [ ] **OpenAI API** 帳號與API密鑰  
- [ ] **Stripe Account** 商戶帳號
- [ ] **AWS Account** 根帳號與IAM設置
- [ ] **Firebase Project** 建立與配置

#### 開發環境配置
- [ ] API密鑰環境變數設定
- [ ] SSL憑證申請與配置
- [ ] Webhook端點URL設定
- [ ] 測試環境與生產環境分離

### 整合開發檢查

#### 認證服務測試
- [ ] Apple ID 登入流程測試
- [ ] Google OAuth 登入測試  
- [ ] JWT Token 驗證機制
- [ ] 用戶資料同步驗證

#### 支付系統測試  
- [ ] Stripe 測試卡交易
- [ ] 訂閱創建與續費流程
- [ ] Webhook事件處理
- [ ] 退款與取消流程
- [ ] 本土支付方案測試

#### AI服務測試
- [ ] GPT-4 對話回應品質
- [ ] 語言評估準確性
- [ ] 翻譯服務準確性  
- [ ] API回應時間監控
- [ ] Token使用量優化

#### 語音服務測試
- [ ] TTS語音品質測試
- [ ] STT識別準確率測試
- [ ] 多語言支援驗證
- [ ] 音頻格式相容性

### 上線前檢查

#### 安全性檢查
- [ ] API密鑰安全存儲
- [ ] HTTPS強制啟用
- [ ] 用戶資料加密
- [ ] SQL注入防護
- [ ] XSS攻擊防護

#### 效能測試
- [ ] API回應時間 < 2秒
- [ ] 數據庫查詢優化
- [ ] CDN緩存配置
- [ ] 負載測試 (1000並發)

#### 監控配置
- [ ] New Relic APM設置
- [ ] 錯誤告警配置  
- [ ] 關鍵指標監控
- [ ] 日誌收集配置

#### 災難恢復
- [ ] 數據備份機制
- [ ] 服務降級方案
- [ ] 故障轉移測試
- [ ] 恢復時間目標 (RTO < 1小時)

---

## 📖 技術文檔與資源

### 官方文檔連結

#### 認證服務
- [Apple Sign In Guide](https://developer.apple.com/sign-in-with-apple/get-started/)
- [Google Identity Platform](https://cloud.google.com/identity-platform)

#### 支付服務  
- [Stripe Integration Guide](https://stripe.com/docs/payments/quickstart)
- [LINE Pay API Documentation](https://pay.line.me/tw/developers/apis/onlineApis)

#### AI與語音服務
- [OpenAI API Reference](https://platform.openai.com/docs/api-reference)
- [Google Cloud Speech-to-Text](https://cloud.google.com/speech-to-text/docs/quickstart)
- [Google Cloud Text-to-Speech](https://cloud.google.com/text-to-speech/docs)

#### 基礎設施
- [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/)
- [Firebase Documentation](https://firebase.google.com/docs)

### 開發工具與SDK

#### 前端SDK
```bash
# React Native
npm install @react-native-async-storage/async-storage
npm install @react-native-firebase/app
npm install @react-native-google-signin/google-signin
npm install react-native-iap  # iOS/Android in-app purchases

# iOS Native
# StoreKit 2 (built-in)
pod 'Firebase/Messaging'

# Android
implementation 'com.android.billingclient:billing:5.0.0'  # Google Play Billing
implementation 'com.google.firebase:firebase-messaging'
```

#### 後端SDK
```bash
# Node.js
npm install openai
npm install @azure/cognitiveservices-textanalytics  # Microsoft language evaluation
npm install firebase-admin
npm install @google-cloud/speech
npm install @google-cloud/text-to-speech

# Python
pip install openai
pip install azure-cognitiveservices-language-textanalytics  # Microsoft language evaluation
pip install firebase-admin
pip install google-cloud-speech
pip install google-cloud-texttospeech
```

### 測試工具與環境

#### API測試工具
- **Postman Collection**: 第三方API測試集合
- **iOS Simulator**: in-app purchase測試
- **Android Debug Bridge**: Google Play Console測試
- **ngrok**: 本地開發環境公開URL

#### 監控與除錯
- **New Relic Browser**: 前端效能監控
- **App Store Connect**: iOS購買狀態監控
- **Google Play Console**: Android購買監控  
- **Firebase Console**: 推播發送監控
- **OpenAI Playground**: GPT-4o-mini模型測試
- **Azure Portal**: Microsoft API監控

---

## 📋 服務整合優先序與總覽

### 第一階段 - 核心功能 (MVP階段，1-2個月)
1. **Firebase Authentication** - 用戶登入與註冊
2. **iOS App Store + Google Play in-app purchases** - 訂閱收費
3. **OpenAI GPT-4o-mini** - 對話生成與輔助
4. **Google Cloud Speech-to-Text + Text-to-Speech** - 語音互動
5. **Firebase Cloud Messaging** - 推播通知

### 第二階段 - 進階功能 (產品優化，2-4個月)
6. **Microsoft Azure Cognitive Services** - 語言評估
7. **AWS RDS (PostgreSQL)** - 數據庫託管
8. **AWS S3 + CloudFront** - 媒體檔案存儲
9. **Google/Apple Sign-In** - 第三方登入
10. **New Relic** - 效能監控

### 第三階段 - 系統完善 (擴展階段，4-6個月)  
11. **AWS Load Balancer + Auto Scaling** - 負載平衡
12. **MongoDB Atlas** - NoSQL數據存儲
13. **Twilio SendGrid** - 電子郵件服務
14. **AWS CloudWatch** - 系統監控
15. **OneSignal** - 進階推播功能

### 低預算整體效益分析
- **開發階段成本**: NT$300-600/月 (本地環境)
- **生產階段成本**: NT$1,600-4,800/月 (VPS部署)
- **相較雲端節省**: 約85%成本 (VPS vs AWS)
- **收益平衡點**: 50-80活躍用戶
- **技術債務風險**: 中等 (未來需考慮遷移成本)

### 技術架構優勢
- **原生支付整合**: 更好的用戶體驗，更低手續費
- **成本優化AI**: GPT-4o-mini提供80%成本節省
- **專業語言評估**: Microsoft API提供更精確的學習評估
- **台灣本地化**: 專注單一市場，降低複雜性

---

## 📅 維護與更新計劃

### 定期維護任務

#### 每週檢查
- [ ] API配額使用狀況
- [ ] 錯誤率監控檢視
- [ ] 支付成功率檢查
- [ ] 推播發送狀態

#### 每月檢查  
- [ ] 成本分析與優化
- [ ] 安全更新檢查
- [ ] 效能基準測試
- [ ] 第三方服務更新確認

#### 每季檢查
- [ ] 服務合約續約評估
- [ ] 新服務評估與測試
- [ ] 災難恢復演練
- [ ] 合規要求更新

### 服務升級計劃

#### 短期升級 (3-6個月)
1. **OpenAI GPT-4o-mini** → **GPT-5** (發布後)
2. **基礎監控** → **進階AI監控**
3. **台灣單區域部署** → **亞太多區域部署**

#### 中期升級 (6-12個月)
1. **評估自建語音服務** 成本效益
2. **實施邊緣運算** 降低延遲
3. **評估其他亞洲市場** 擴展機會

#### 長期升級 (12個月+)  
1. **自訓練AI模型** 降低成本
2. **多語言版本** 國際化擴展
3. **企業級安全** 認證取得

---

**文件版本**: v1.0  
**建立日期**: 2024年9月6日  
**負責人**: 技術團隊  
**審查週期**: 每月檢討更新  
**下次審查**: 2024年10月6日

---

## 變更記錄

| 版本 | 日期 | 變更內容 | 負責人 |
|------|------|----------|---------|
| v1.0 | 2024-09-06 | 初始文件建立，涵蓋15個主要第三方服務 | Claude |
| v1.1 | 2024-09-06 | 規格修正：改用iOS/Android內購、GPT-4o-mini、Microsoft語言評估 | Claude |
| | | | |
| | | | |