# デーティングアプリ

占星学的な相性は、Bumble、Hinge、Tinder、Tantanのようなデーティングアプリや、NUiT、Struckのようなastro-firstアプリでリテンションを高める重要な要素です。AstroWay APIを使えば、独自の天体暦エンジンやSolar Fire（$495）のライセンスを必要とせず、一度のリクエストでシンストラスコア（0～100）を取得できます。

## 仕組み

1. ユーザーが登録時に生年月日、時間、出生地を入力
2. マッチング時、バックエンドが `/v1/synastry` を両者のデータで呼び出し
3. APIが `compatibility.score`（0～100）と `label`（harmonious/balanced/mixed/challenging）を返す
4. このスコアはランキング要因の一つとして使用

```
マッチングアルゴリズム
  ├── 場所の近接性         (40%)
  ├── 共通の興味           (30%)
  ├── 占星学的相性         (20%)  ← AstroWay API
  └── その他のシグナル      (10%)
```

## 主要エンドポイント

| エンドポイント | クレジット | 返す内容 |
|---|---|---|
| `/v1/synastry` | 50 | クロスアスペクト + スコア 0～100 |
| `/v1/human-design/compatibility` | 100 | HD相性（タイプ + 戦略） |
| `/v1/horoscope/compatibility` | 50 | テキスト形式の相性分析 |

## 統合パターン

```ts
// マッチング時にシンストラシーを呼び出す
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // 不明時は正午をデフォルト
      timezoneOffset: userA.tzOffset,
      latitude: userA.birthLat,
      longitude: userA.birthLng,
    },
    chart2: {
      date: userB.birthDate,
      time: userB.birthTime || '12:00:00',
      timezoneOffset: userB.tzOffset,
      latitude: userB.birthLat,
      longitude: userB.birthLng,
    },
  });

  return {
    score: result.compatibility.score,      // 0-100
    label: result.compatibility.label,      // "harmonious"
    harmony: result.compatibility.harmony,  // 加重合計
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
シンストラシーの結果は不変（生年月日のみに依存）です。`(userA_id, userB_id) → スコア` のペアを自分のデータベースにキャッシュしましょう。一度APIを呼べば、再計算は不要です。
</Aside>

## 予算の見積もり

### シナリオ：1日1,000件の新規マッチ

| 指標 | 値 |
|---|---|
| マッチ数/日 | 1,000 |
| マッチあたりのクレジット | 50（シンストラシー） |
| 1日あたりのクレジット | 50,000 |
| 月間クレジット | 約1,500,000 |
| プラン | **Business ($199/月、3,500,000クレジット)** |

### シナリオ：1日50件のマッチ（スタートアップ）

| 指標 | 値 |
|---|---|
| マッチ数/日 | 50 |
| 1日あたりのクレジット | 2,500 |
| 月間クレジット | 約75,000 |
| プラン | **Starter ($19/月、200,000クレジット)** |

### 最適化テクニック

- **キャッシュ** — データベースにスコアを保存し、再計算しない
- **遅延処理** — 全ての潜在的なペアで計算するのではなく、ユーザーがマッチを開いた時にのみシンストラシーを計算
- **登録時のバッチ処理** — 登録時に上位20件の潜在的なマッチとの相性を即座に計算

## 出生時間が不明な場合

時間が不明な場合は `"time": "12:00:00"`（正午）を渡してください。ハウスは正確性に欠けますが、惑星の位置とクロスアスペクトは正確です。相性スコアは引き続き有用な情報を提供します。

HD相性の場合、時間はより重要です。不正確な時間の影響を評価するために `hd/sensitivity` を検討してください。

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="相性エンドポイントの詳細" />
  <LinkCard title="クイックスタート" href="/getting-started/" description="5分で最初のリクエスト" />
  <LinkCard title="料金プラン" href="/pricing/" description="無料からエンタープライズまで" />
</CardGrid>
