# Εφαρμογές γνωριμιών

Η αστρολογική συμβατότητα είναι ένας σημαντικός παράγοντας συγκράτησης στις εφαρμογές dating όπως το Bumble, Hinge, Tinder, Tantan και στις astro-first εφαρμογές όπως το NUiT, Struck. Το API AstroWay παρέχει ένα έτοιμο score συμβατότητας 0–100 με μία μόνο κλήση — χωρίς δική σου μηχανή επιμεριδίων και χωρίς την άδεια Solar Fire ($495).

## Πώς λειτουργεί

1. Ο χρήστης εισάγει την ημερομηνία, ώρα και τόπο γέννησής του κατά την εγγραφή
2. Κατά το match — το backend σου καλεί το `/v1/synastry` με τα δεδομένα και των δύο χρηστών
3. Το API επιστρέφει το `compatibility.score` (0–100) και το `label` (harmonious/balanced/mixed/challenging)
4. Το score χρησιμοποιείται ως ένας από τους παράγοντες κατάταξης

```
Αλγόριθμος matching
  ├── Εγγύτητα τοποθεσίας         (40%)
  ├── Κοινά ενδιαφέροντα          (30%)
  ├── Αστρολογική συμβατότητα     (20%)  ← AstroWay API
  └── Άλλα σήματα                 (10%)
```

## Βασικά endpoints

| Endpoint | Πιστώσεις | Τι επιστρέφει |
|---|---|---|
| `/v1/synastry` | 50 | Cross-aspects + score 0–100 |
| `/v1/human-design/compatibility` | 100 | Συμβατότητα Human Design (τύπος + στρατηγική) |
| `/v1/horoscope/compatibility` | 50 | Κειμενική ανάλυση συμβατότητας |

## Πρότυπο ολοκλήρωσης

```ts
// Κατά το match — κλήση για συναστρία
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // noon default if unknown
      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,  // weighted sum
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
Το αποτέλεσμα της συναστρίας είναι αμετάβλητο (εξαρτάται μόνο από τις ημερομηνίες γέννησης). Κάνε cache στο ζεύγος `(userA_id, userB_id) → score` στη βάση δεδομένων σου. Μία κλήση API — και δεν χρειάζεται να επανυπολογίζεις ξανά.
</Aside>

## Υπολογισμός προϋπολογισμού

### Σενάριο: 1.000 νέα matches την ημέρα

| Μετρική | Τιμή |
|---|---|
| Matches/ημέρα | 1.000 |
| Πιστώσεις/match | 50 (synastry) |
| Πιστώσεις/ημέρα | 50.000 |
| Πιστώσεις/μήνα | ~1.500.000 |
| Τιμολόγηση | **Business ($199/μήνα, 3.500.000 πιστώσεις)** |

### Σενάριο: 50 matches την ημέρα (startup)

| Μετρική | Τιμή |
|---|---|
| Matches/ημέρα | 50 |
| Πιστώσεις/ημέρα | 2.500 |
| Πιστώσεις/μήνα | ~75.000 |
| Τιμολόγηση | **Starter ($19/μήνα, 200.000 πιστώσεις)** |

### Βελτιστοποίηση

- **Κaching** — αποθήκευσε το score στη βάση δεδομένων, μην το επανυπολογίζεις
- **Αργή επεξεργασία** — υπολόγισε τη συναστρία μόνο όταν ο χρήστης ανοίγει το match, όχι για όλα τα πιθανά ζεύγη
- **Μαζικός υπολογισμός κατά την εγγραφή** — υπολόγισε τη συμβατότητα με τα κορυφαία 20 πιθανά matches αμέσως

## Χωρίς ώρα γέννησης

Αν ο χρήστης δεν γνωρίζει την ώρα — μετάδωσε `"time": "12:00:00"` (μεσημέρι). Τα σπίτια θα είναι λιγότερο ακριβή, αλλά οι θέσεις των πλανητών και τα cross-aspects θα είναι σωστά. Το score συμβατότητας παραμένει ενημερωτικό.

Για τη συμβατότητα Human Design η ώρα είναι πιο σημαντική — εξέτασε το `hd/sensitivity` για την εκτίμηση της επίδρασης της λανθασμένης ώρας.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Λεπτομέρειες για τα endpoints συμβατότητας" />
  <LinkCard title="Γρήγορη εκκίνηση" href="/getting-started/" description="Πρώτη κλήση σε 5 λεπτά" />
  <LinkCard title="Τιμολόγηση" href="/pricing/" description="Από δωρεάν έως Enterprise" />
</CardGrid>
