# 데이팅 앱

## 점성학적 호환성

점성학적 호환성은 Bumble, Hinge, Tinder, Tantan과 같은 데이팅 앱 및 NUiT, Struck과 같은 astro-first 앱에서 사용자 유지율(리텐션)을 높이는 핵심 요소입니다. AstroWay API는 단일 호출로 гот성 synastry 점수(0–100)를 제공합니다. 자체 에페머리스 엔진이나 $495 Solar Fire 라이선스 없이도 이용 가능합니다.

## 작동 방식

1. 사용자가 가입 시 출생 날짜, 시간, 장소를 입력합니다.
2. 매칭 시 백엔드에서 `/v1/synastry`를 두 사용자의 데이터와 함께 호출합니다.
3. API는 `compatibility.score`(0–100)과 `label`(harmonious/balanced/mixed/challenging)을 반환합니다.
4. 이 점수는 랭킹의 한 요소로 사용됩니다.

```
매칭 알고리즘
  ├── 위치 proximity         (40%)
  ├── 공통 관심사            (30%)
  ├── 점성학적 호환성       (20%)  ← AstroWay API
  └── 기타 신호              (10%)
```

## 주요 엔드포인트

| 엔드포인트 | 크레딧 | 반환 값 |
|---|---|---|
| `/v1/synastry` | 50 | 크로스 아スペクト + 0–100 점수 |
| `/v1/human-design/compatibility` | 100 | HD 호환성(유형 + 전략) |
| `/v1/horoscope/compatibility` | 50 | 텍스트 호환성 분석 |

## 통합 패턴

```ts
// 매칭 시 synastry 호출
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // 미기입 시 기본 noon
      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">
Synastry 결과는 출생 데이터에만 의존하므로 불변(immutable)입니다. `(userA_id, userB_id) → 점수` 쌍을 데이터베이스에 캐시하세요. API 호출 한 번으로 더 이상 재계산할 필요가 없습니다.
</Aside>

## 예산 산정

### 시나리오: 하루 1,000개의 새로운 매칭

| 지표 | 값 |
|---|---|
| 하루 매칭 수 | 1,000 |
| 매칭당 크레딧 | 50 (synastry) |
| 하루 크레딧 | 50,000 |
| 월 크레딧 | ~1,500,000 |
| 요금제 | **Business ($199/월, 3,500,000 크레딧)** |

### 시나리오: 하루 50개의 매칭(스타트업)

| 지표 | 값 |
|---|---|
| 하루 매칭 수 | 50 |
| 하루 크레딧 | 2,500 |
| 월 크레딧 | ~75,000 |
| 요금제 | **Starter ($19/월, 200,000 크레딧)** |

### 최적화 팁

- **캐싱** — 점수를 데이터베이스에 저장하고 재계산하지 마세요.
- **지연 처리** — 모든 잠재적 매칭이 아닌, 사용자가 매칭을 열 때만 synastry를 계산하세요.
- **가입 시 배치 계산** — 상위 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="무료부터 Enterprise까지" />
</CardGrid>
