AstroWay/api v2.325.2 · ar
جميع الأنظمة تعمل بشكل طبيعي

كيف نُبقي الدقة تحت السيطرة: CI مقابل swetest وNASA

الدقة في API فلكي تتدهور بسهولة بسبب إعادة هيكلة واحدة لكود الإفيمريس. نستعرض آليات الحماية: نواة Swiss Ephemeris واحدة للتطبيق والـ API، ومئات اللقطات المجمَّدة على خرائط مرجعية، ومقارنة ثلاثية لكل PR مع swetest CGI وKerykeion وProkerala وكتالوج الكسوفات لدى NASA.

الدقة هي ما يتحقق منه المستخدم بصمت عبر Astrodienst. إذا انحرفت خريطة الميلاد بدقيقة قوسية واحدة، ستصل الشكوى بسرعة. والأسوأ أن الدقة يسهل كسرها دون أن يلاحظ أحد: إعادة هيكلة واحدة في كود الإفيمريس، وتنحرف نصف نقاط النهاية بهدوء بثوانٍ قوسية.

إليك كيف نمنع حدوث ذلك.

تحسب Swiss Ephemeris مواقع الكواكب. والنقطة الأساسية: لتطبيقنا وللـ API نواة حسابية واحدة وقاعدة كود واحدة. لا يوجد تنفيذان قد يختلفان، فلا شيء يمكن أن يختلف.

للتواريخ خارج النطاق الأساسي للإفيمريس يوجد بديل تحليلي (Moshier)، أقل دقة بقليل لكن دون انقطاعات عند الحدود. وصراحةً عن قصد: لا نعلن علنًا إصدارًا محددًا للمحرّك، لأن الإصدار الفعلي للنواة أقدم من أحدث إصدار upstream، وكتابة رقم رنّان ستكون كذبًا.

لكل نقطة نهاية حسابية مجموعة من اللقطات المجمَّدة (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 كم.

الدقة بوابة 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 لدينا، لا في شكوى من مستخدمك.

النسخة العامة من هذه الأرقام، مع جدول الفروق لخرائط محددة، موجودة في صفحة الدقة.

MakSeong · AstroWay

أبني AstroWay API: أُغلف حسابات فلكية بدقة الثانية القوسية في REST نقي وأكتب عن التفاصيل المملة التي هي فعلاً مهمة.

// ابنِ عليه

مواقع بدقة الثانية القوسية في 4 أسطر من الكود.

مفتاح مجاني بدون بطاقة. 5000 استدعاء شهرياً حتى الدفعة الأولى.

المزيد من المدونة جميع المقالات →

Engineering 2026-07-15

ثلاث حزم SDK رسمية: TypeScript وPython وPHP بدل curl الخام

HTTP الخام يعمل، لكن العميل ذا الأنواع يوفّر ساعات: إكمال تلقائي للمسارات، وأنواع للطلب والاستجابة، وإعادة محاولة مدمجة عند 408/409/429/5xx، وتسلسل أخطاء بأسلوب Stainless. نستعرض ثلاث حزم SDK رسمية، @astroway/sdk (npm) وastroway (PyPI) وastroway/sdk (Packagist)، وكيف وُلِّدت من عقد OpenAPI واحد.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.

Engineering 2026-06-05

Horoscope API Tutorial: Build a Daily Horoscope Feature

Add daily, weekly and monthly horoscopes to your app via API - sign-based text vs transit-based personalization - with TypeScript and Python code.