# دقة الحسابات

## TL;DR

يستخدم **AstroWay API** محرك **Swiss Ephemeris** (الكود الرسمي من Astrodienst،
مؤسسي astro.com) — نفس المحرك الذي اعتمد عليه علماء التنجيم المحترفون لأكثر من 30 عاماً في **Solar Fire ($495) وKepler ($995) وAstro Gold ($29.99/شهر) وJanus**. قمنا بتجميعه في WebAssembly وعرضناه عبر طبقة REST API بدون أي رسوم وسيطة. كل نقطة نهاية حسابية أساسية مدعومة باختبارات **regression snapshot**؛ تم التحقق من دقة المحرك من خلال **التثليث** مع ثلاث مصادر مستقلة بالإضافة إلى مقارنة مع **كتالوج كسوف ناسا 5000 عام**:

- **مواقع الكواكب**: `< 0.1 ثانية قوسية` مقابل swetest CGI الرسمي من Astrodienst
- **cusps البيوت Placidus**: تطابق **دقيق** `0.000"` (0.000 ثانية قوسية)
- **الكسوف**: `< 1 دقيقة` مقابل كتالوج ناسا للكسوف
- **خطوط ACG**: `< 1.5 كم` على خط الاستواء مقابل swetest
- **شروق/غروب الشمس**: `< 10 ثوانٍ` مقابل timeanddate.com
- **VOC القمر، الدخول، اقترانات الكواكب**: دقة تصل إلى جزء من الثانية

## المحرك

| المكون | القيمة |
|---------|--------|
| المكتبة | كود C لـ Swiss Ephemeris (aloistr/swisseph) |
| الإصدار | كود C الرسمي من Astrodienst |
| الربط | swisseph-wasm (WebAssembly في Node.js) |
| Ephemeris | بيانات JPL DE431 (عبر ملفات .se1) |
| البديل | Moshier التحليلي (للأ dates خارج 1800-2399) |
| مشاركة الكود | مشاركة `@/core` مع app.astroway.info — نفس المحرك، ناقلين مختلفين |

## المنهجية

يتم التحقق من الدقة من خلال **التثليث** — مقارنة مع ثلاث مصادر مستقلة:

### 1. swetest CGI (المرجع)

التنفيذ المرجعي الرسمي لـ Swiss Ephemeris من Astrodienst أنفسهم — الأوامر التي أنشأت **Astro.com** وتخدم ملايين علماء التنجيم حول العالم. المصدر العام الأكثر موثوقية. محركنا **متطابق** (0.00–0.07 ثانية قوسية من الانحراف).

### 2. Kerykeion (بايثون)

مكتبة بايثون مستقلة تستخدم روابط `pyswisseph` بدلاً من WASM الخاص بنا. يؤكد أن طبقة WASM لدينا لا تشوه البيانات.

### 3. Prokerala API

واجهة برمجة تطبيقات Swiss Ephemeris البعيدة (Lahiri sideral). انحراف منهجي قدره 8–17 ثانية قوسية مرتبط بإصدارات مختلفة من صيغة Lahiri ayanamsa، وليس **دقة المحرك**.

## نتائج التثليث

| الخريطة | مقابل swetest (Astrodienst) | مقابل Kerykeion (بايثون) | مقابل Prokerala API |
|---------|-------------------------------|---------------------------|----------------------|
| Monroe 1926   | **0.00"** | 0.19" | 16.95" (منهجي) |
| Diana 1961    | **0.00"** | 0.69" | 8.18" (منهجي)  |
| Einstein 1879 | 0.07"     | عيب LMT في Kerykeion | 14.96" (منهجي) |

## مجموعة اختبار الانحدار على مستوى نقاط النهاية

يتم تغطية كل نقطة نهاية حسابية أساسية باختبارات **snapshot** المجمدة على 3 خرائط مرجعية (Monroe / Diana / Einstein) = **{siteMeta.snapshotCount} لقطات**.

تكتشف مجموعة الاختبارات:

- **أخطاء تعيين البيانات المدخلة** — معرف كوكب خاطئ، UT، نظام البيوت
- **المعالجة اللاحقة** — التقريب، تحويل الوحدات، فقدان الإشارة
- **اختلاف القيم الافتراضية** — العقدة المتوسطة مقابل العقدة الحقيقية، مركز الأرض مقابل الموقع الجغرافي
- **انحراف المخطط** — التحقق من الصحة سمح بشكل خاطئ
- **نشر قديم** — dist الإنتاج لا يتطابق مع الكود

التسامح: `5e-5°` (≈0.18 ثانية قوسية) افتراضياً لجميع الحقول الرقمية.

## اختباراتBenchmark مفصلة

### مواقع الكواكب (استوائي، مقابل swetest)

| الخريطة | التاريخ | أقصى انحراف |
|---------|---------|--------------|
| Marilyn Monroe  | 1926-06-01 | **0.00"** |
| Princess Diana  | 1961-07-01 | **0.00"** |
| Albert Einstein | 1879-03-14 | 0.07"     |

### cusps البيوت Placidus (مقابل swetest)

| الخريطة | انحراف ASC | انحراف MC | أقصى انحراف cusp |
|---------|------------|-----------|-------------------|
| Monroe | 0.000" | 0.000" | 0.000" |
| Diana  | 0.000" | 0.000" | 0.000" |

### الكسوف (مقابل كتالوج ناسا 5000 عام)

| الحدث | أقصى وقت ناسا | وقتنا الأقصى | الانحراف |
|-------|---------------|---------------|----------|
| 2025-03-14 خسوف قمري كلي  | 06:58 UT | 06:58 UT | 0.8 دقيقة |
| 2025-03-29 كسوف شمسي جزئي | 10:47 UT | 10:47 UT | 0.5 دقيقة |
| 2025-09-07 خسوف قمري كلي  | 18:11 UT | 18:11 UT | 0.8 دقيقة |
| 2025-09-21 كسوف شمسي جزئي | 19:41 UT | 19:42 UT | 1.0 دقيقة |

### علم التنجيم الجغرافي (مقابل صيغة RA من swetest)

يتم استخدام الصيغة الصحيحة `longitude = RA − GMST` لجميع خطوط MC/IC/ASC/DSC (المعيار من Kenneth Bowser). الانحراف عن المعيار: **< 1.5 كم** على خط الاستواء لجميع الكواكب.

### شروق/غروب الشمس (مقابل timeanddate.com)

| الموقع | التاريخ | المعامل | الانحراف |
|--------|---------|---------|----------|
| لندن | 2026-04-15 | شروق الشمس | 0.6 ث |
| لندن | 2026-04-15 | غروب الشمس  | 9 ث   |

**المواقع القطبية** (|خط العرض| > 66.5°) ترجع تلقائياً `polarState` + تحذير بأن أوقات الكواكب العادية غير محددة.

### مدارات الجوانب

يستخدم **AstroWay** **مدارات متغيرة** لكل كوكب (قاعدة MIN لكوكبين)، كما في ZET9 وastro.com. المدارات الافتراضية (للخريطة Natal):

| الجانب | الشمس | القمر | الداخلي | المشتري | الخارجي |
|--------|-------|-------|---------|---------|----------|
| الاقتران | 12°  | 10° | 5° | 8° | 5° |
| السدس | 6.5° | 6°  | 5° | 5° | 5° |
| المربع | 10°  | 8°  | 5° | 7° | 5° |
| المثلث | 12°  | 8°  | 5° | 5° | 5° |
| التضاد | 12°  | 10° | 5° | 8° | 5° |

الوجوه الثانوية (36°، 40°، 45°، 72°، 108°، 135°، 144°) **مغلقة افتراضياً**. يمكن تفعيلها عبر `ALL_ASPECTS`.

## خطوط العرض القطبية

بالنسبة لـ |خط العرض| > 66.5°، أنظمة البيوت Placidus / Koch / Regiomontanus غير محددة رياضياً. في هذه الحالات، يعيد Swiss Ephemeris Porphyry تلقائياً، ويقوم API الخاص بنا بإضافة تحذير:

```json
{
  "system": "P",
  "warning": "نظام البيوت Placidus غير محدد لخط العرض=68.96° (> 66.5°). استبدل Swiss Ephemeris Porphyry..."
}
```

## التحقق المستمر

يتم اختبار **الانحدار** **في كل طلب سحب (PR)** عبر CI:

- `api-calc/tests/endpoints/` — {siteMeta.snapshotCount} لقطات مقابل الخرائط المرجعية (Monroe / Diana / Einstein) + synastry / composite / davison
- `.github/workflows/api-accuracy.yml` — تشغيل تلقائي عند كل PR
- التثليث مقابل swetest CGI + Kerykeion — أسبوعياً
- مراقبة Swiss Ephemeris upstream عبر Dependabot

## القيود المعروفة

- **التواريخ خارج النطاق** (قبل 1800 وبعد 2399): يتم استخدام Moshier التحليلي، بدقة ~0.1" (مقارنة بـ < 0.01" لـ SWIEPH مع ملفات DE431)
- **Lilith الحقيقي (id=13) مقابل Lilith المتوسط (id=12)**: فرق يصل إلى 12° — افتراضياً Lilith المتوسط (سلوك مستقر)، Lilith الحقيقي متاح عبر `planetIds: [13]`
- **مركز الأرض مقابل الموقع الجغرافي**: افتراضياً مركز الأرض

## الروابط

- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- كتالوج كسوف ناسا: https://eclipse.gsfc.nasa.gov/
- Kerykeion: https://github.com/g-battaglia/kerykeion
- Astrodienst: https://www.astro.com/

## جهات الاتصال

للاستفسارات المتعلقة بالدقة: أرسل بريداً إلى support@astroway.info مع بيانات الخريطة والمرجع المتوقع (astro.com أو مصدر موثوق آخر).
