الدقة هي ما يتحقق منه المستخدم بصمت عبر Astrodienst. إذا انحرفت خريطة الميلاد بدقيقة قوسية واحدة، ستصل الشكوى بسرعة. والأسوأ أن الدقة يسهل كسرها دون أن يلاحظ أحد: إعادة هيكلة واحدة في كود الإفيمريس، وتنحرف نصف نقاط النهاية بهدوء بثوانٍ قوسية.
إليك كيف نمنع حدوث ذلك.
نواة واحدة لبيئتين
Section titled “نواة واحدة لبيئتين”تحسب Swiss Ephemeris مواقع الكواكب. والنقطة الأساسية: لتطبيقنا وللـ API نواة حسابية واحدة وقاعدة كود واحدة. لا يوجد تنفيذان قد يختلفان، فلا شيء يمكن أن يختلف.
للتواريخ خارج النطاق الأساسي للإفيمريس يوجد بديل تحليلي (Moshier)، أقل دقة بقليل لكن دون انقطاعات عند الحدود. وصراحةً عن قصد: لا نعلن علنًا إصدارًا محددًا للمحرّك، لأن الإصدار الفعلي للنواة أقدم من أحدث إصدار upstream، وكتابة رقم رنّان ستكون كذبًا.
لقطات مجمَّدة
Section titled “لقطات مجمَّدة”لكل نقطة نهاية حسابية مجموعة من اللقطات المجمَّدة (snapshots): 888 ملف JSON ثابت وقت هذا البناء. يشغّل المُنفِّذ نقطة النهاية على خرائط مرجعية ويقارن النتيجة بالملف بايتًا ببايت (ضمن هامش تسامح). أي انحراف في طول الكوكب يتجاوز 5e-5° (0.18″) يُسقط الاختبار.
اختيرت الخرائط المرجعية لتضرب الأطراف، لا المركز “المريح” فقط:
- Monroe وDiana وEinstein وBowie: خرائط تاريخية ببيانات ميلاد معروفة
- خط عرض قطبي: حيث تنهار أنظمة البيوت
- خط استوائي: حيث تتصرف بشكل مختلف
- نصف الكرة الجنوبي: للتحقق من الانعكاس
الحالات الحدّية تلتقط بالضبط تلك الانحرافات التي لا تظهر على خريطة شخص عادي من كييف.
مقارنة ثلاثية مع مصادر خارجية
Section titled “مقارنة ثلاثية مع مصادر خارجية”تلتقط اللقطات الانحرافات مقارنةً بنفسها. وللتحقق من الحقيقة المطلقة، يُقارَن كل إصدار بمصادر مستقلة:
| مقابل ماذا | ما الذي يُتحقق منه | الفرق |
|---|---|---|
| swetest CGI (Astrodienst) | أطوال الكواكب، ورؤوس البيوت | 0.000″ |
| Kerykeion (Python، pyswisseph) | تنفيذ مستقل لـ SwEph | < 0.2″ |
| Prokerala (sidereal Lahiri) | المواقع النجمية | 8-17″، فرق منهجي في صيغة الأيانامشا، لا في المحرّك |
| NASA 5-Millennium Eclipse Catalog | وقت الكسوفات ونوعها | < 1 دقيقة |
الفرق مع Prokerala ليس خطأً: إنهما تنفيذان مختلفان لصيغة Lahiri، ونحن نوثّق ذلك صراحةً ولا نخفيه. ومع swetest، وهو المعيار المرجعي في الصناعة، الانحراف صفر.
تُفحص خطوط الخرائط الفلكية الجغرافية هندسيًا بشكل منفصل: الدقة عند خط الاستواء أفضل من 1.5 كم.
ما الذي يُشغَّل مع كل PR
Section titled “ما الذي يُشغَّل مع كل PR”الدقة بوابة CI، لا فحص لمرة واحدة:
api-accuracy.yml: مع كل PR على كود الخلفية يشغّل مجموعة اللقطات كاملة مع المقارنة الثلاثية. الاختبار الأحمر يمنع الـ merge.check-eclipse-accuracy.yml: مرة في السنة يقارن الكسوفات بكتالوج NASA؛ وأي فرق يتجاوز العتبة يفتح issue تلقائيًا.check-sweph-updates.yml: كل أسبوع يراقب upstream لـ Swiss Ephemeris؛ الإصدار الجديد يعني issue للمراجعة، دون دمج تلقائي (تحديث محرّك الإفيمريس أمر حساس جدًا للتحديث التلقائي).
ما الذي يعنيه ذلك للمطوّر المدمِج
Section titled “ما الذي يعنيه ذلك للمطوّر المدمِج”الضمان بسيط: مواقع الكواكب ضمن < 0.1 ثانية قوسية من Swiss Ephemeris المرجعي، وهذا الحد محمي بالأتمتة لا بوعد في README. وإذا ظهر انحراف يومًا ما، فسيسقط في CI لدينا، لا في شكوى من مستخدمك.
النسخة العامة من هذه الأرقام، مع جدول الفروق لخرائط محددة، موجودة في صفحة الدقة.
مواقع بدقة الثانية القوسية في 4 أسطر من الكود.
مفتاح مجاني بدون بطاقة. 5000 استدعاء شهرياً حتى الدفعة الأولى.