Η ακρίβεια είναι αυτό που ο χρήστης ελέγχει σιωπηλά σε Astrodienst. Αν ο γενέθλιος χάρτης διαφέρει κατά μια γωνιακή λεπτό, η καταγγελία θα έρθει γρήγορα. Και το χειρότερο είναι ότι η ακρίβεια είναι εύκολο να σπάσει αθόρυβα: μια αναδιάρθρωση στον κώδικα των εφεμείρων, και τα μισά endpoint έφυγαν σιωπηλά σε δευτερόλεπτα τόξου.
Αυτή είναι η προσέγγισή μας για να μην το αφήσουμε να συμβεί.
Ένας πυρήνας για δύο περιβάλλοντα
Ενότητα με τίτλο «Ένας πυρήνας για δύο περιβάλλοντα»Οι πλανητικές θέσεις υπολογίζονται από το Swiss Ephemeris, μεταγλωττισμένο σε WASM. Το κλειδί: είναι ο ίδιος πυρήνας τόσο στο πρόγραμμα περιήγησης της εφαρμογής μας όσο και στον διακομιστή API. Μία βάση κώδικα core/, ενσωματωμένη στο backend μέσω cross-repo alias και ενσωματωμένη στο bundle στο build. Δεν υπάρχει «προγραμματιστική» και «διακομιστική» υλοποίηση που μπορεί να διαφέρει - δεν υπάρχει διαφορά.
Για ημερομηνίες εκτός του κύριου εύρους, τα εφεμερίδια έχουν αναλυτικό fallback (Moshier), λίγο πιο αδρό, αλλά χωρίς κενά στα όρια. Ειλικρινής ειλικρίνεια: δεν δηλώνουμε δημόσια την ακριβή έκδοση του κινητήρα, επειδή η πραγματική έκδοση του πυρήνα είναι χαμηλότερη από το πιο πρόσφατο upstream, και η αναφορά ενός μεγάλου αριθμού θα ήταν ψέμα.
Παγωμένα snapshots
Ενότητα με τίτλο «Παγωμένα snapshots»Κάθε υπολογιστικό endpoint έχει ένα σύνολο παγωμένων snapshots - 873 JSON fixtures τη στιγμή αυτού του build. Ο runner εκτελεί το endpoint σε αναφορά χάρτες και byte‑wise (μέσα στο tolerance) συγκρίνει με τη fixture. Οποιαδήποτε απόκλιση της πλανητικής μακρογώνου μεγαλύτερη από 5e-5° (0.18″) αποτυγχάνει το τεστ.
Οι αναφορά χάρτες έχουν επιλεγεί ώστε να δοκιμάζουν τα άκρα, όχι μόνο το «βολικό» κέντρο:
- Monroe, Diana, Einstein, Bowie - ιστορικοί χάρτες με γνωστά δεδομένα γέννησης
- πολική latitude - όπου τα συστήματα οίκων παραμορφώνονται
- ισημερινή - όπου συμπεριφέρονται διαφορετικά
- νότια ημισφαίριο - έλεγχος συμμετρίας
Οι άκρες περιπτώσεις εντοπίζουν ακριβώς εκείνες τις παλινδρομήσεις που δεν φαίνονται στον χάρτη ενός υποθετικού κίγανου.
Τριγωνοποίηση έναντι εξωτερικών πηγών
Ενότητα με τίτλο «Τριγωνοποίηση έναντι εξωτερικών πηγών»Τα snapshots εντοπίζουν παλινδρομήσεις σε σχέση με τον εαυτό τους. Για να ελέγξουμε την απόλυτη αλήθεια, κάθε έκδοση συγκρίνεται με ανεξάρτητες πηγές:
| Αντί για | Τι ελέγχει | Διαφορές |
|---|---|---|
| swetest CGI (Astrodienst) | πλανητικές μακρογώνους, cuspids οίκων | 0.000″ |
| Kerykeion (Python, pyswisseph) | ανεξάρτητη υλοποίηση SwEph | < 0.2″ |
| Prokerala (sidereal Lahiri) | sidereal θέσεις | 8-17″, συστημική διαφορά τύπου ayanamsa, όχι του κινητήρα |
| NASA 5-Millennium Eclipse Catalog | χρόνος και τύπος εκλείψεων | < 1 хв |
Οι διαφορές με το Prokerala δεν είναι σφάλμα: είναι διαφορετικές υλοποιήσεις του τύπου Lahiri, και το τεκμηριώνουμε ρητά, όχι κρύβουμε. Με το swetest, που είναι το βιομηχανικό πρότυπο, η απόκλιση είναι μηδενική.
Οι αστρο‑καρτογραφικές γραμμές ελέγχονται ξεχωριστά γεωμετρικά - η ακρίβεια στον ισημερινό είναι καλύτερη από 1.5 km.
Τι ελέγχεται σε κάθε PR
Ενότητα με τίτλο «Τι ελέγχεται σε κάθε PR»Η ακρίβεια είναι CI-gate, όχι μια εφάπαξ έλεγχος:
api-accuracy.yml- σε κάθε PR ο κώδικας backend εκτελεί όλο το σύνολο των snapshots + τριγωνοποίηση. Ένα κόκκινο τεστ μπλοκάρει το merge.check-eclipse-accuracy.yml- μία φορά το χρόνο συγκρίνει τις εκλείψεις με τον κατάλογο NASA· η διαφορά πάνω από το όριο δημιουργεί αυτόματα issue.check-sweph-updates.yml- κάθε εβδομάδα παρακολουθεί το upstream Swiss Ephemeris και το WASM πακέτο· νέα έκδοση - issue για review, χωρίς auto‑merge (η ενημέρωση του κινητήρα εφεμερίδων είναι πολύ ευαίσθητη για auto‑update).
Τι κερδίζει ο ενσωματωτής
Ενότητα με τίτλο «Τι κερδίζει ο ενσωματωτής»Η εγγύηση είναι απλή: πλανητικές θέσεις εντός < 0.1 γωνιακό δευτερόλεπτο από το πρότυπο Swiss Ephemeris, και αυτό το όριο προστατεύεται από αυτοματισμούς, όχι από υπόσχεση στο README. Αν κάποια στιγμή εμφανιστεί παλινδρόμηση, θα πέσει στο CI μας, όχι στην καταγγελία του χρήστη σου.
Η δημόσια έκδοση αυτών των αριθμών, με τον πίνακα διαφορών για συγκεκριμένους χάρτες, βρίσκεται στη σελίδα Ακρίβεια.
Αυτή η ίδια Swiss Ephemeris που υπάρχει στο Solar Fire - σε 4 γραμμές κώδικα.
Δωρεάν κλειδί χωρίς κάρτα. 5.000 αιτήματα ανά μήνα μέχρι την πρώτη πληρωμή.