AstroWay/api v2.190.0 · vi
tất cả hệ thống hoạt động bình thường

Cách chúng tôi giữ độ chính xác dưới kiểm soát: CI vs swetest và NASA

Độ chính xác trong astro-API dễ bị suy giảm chỉ sau một lần refactor ephemeris. Chúng tôi phân tích bảo vệ: một lõi Swiss Ephemeris cho trình duyệt và máy chủ, hàng trăm snapshot đóng băng trên bản đồ chuẩn và việc tam giác mỗi PR so với swetest CGI, Kerykeion, Prokerala và catalogue of NASA eclipses.

Độ chính xác là điều mà người dùng sẽ kiểm tra bạn một cách lặng lẽ trên Astrodienst. Nếu bản đồ hiện tại bị rối loạn về góc độ, khiếu nại sẽ đến nhanh chóng. Và điều tồi tệ nhất là độ chính xác dễ bị phá vỡ một cách không đáng chú ý: một lần refactor trong mã ephemeris, và một nửa các điểm cuối cùng sẽ đi về các độ vĩ của giây.

Vậy chúng tôi không cho phép điều này xảy ra.

Các vị trí của các hành tinh được tính toán Swiss Ephemeris, được xây dựng trong WASM. Điểm quan trọng: đó là cùng một hạt nhân và trong ứng dụng của chúng tôi, và trên máy chủ API. Một bộ mã core/, được kéo vào phía sau qua alias cross-repo và được tích hợp vào gói xây dựng. Không có “phần mềm của trình duyệt” và “phần mềm của máy chủ” để có thể khác nhau - khác nhau về điều gì.

Để tính toán các ngày ngoài phạm vi chính của ephemeris là fallback phân tích (Moshier), hơi thô, nhưng không có vết nứt ở ranh giới. Sự trung thực rõ ràng: phiên bản cụ thể của ruxi tôi không công khai tuyên bố, vì phiên bản thực tế của hạt nhân thấp hơn so với phiên bản mới nhất upstream, và viết ra một con số lớn sẽ là một sự lừa dối.

Mỗi điểm tính toán có một bộ bản sao đóng băng - 873 JSON-fixture vào thời điểm xây dựng này. Ruxi chạy điểm tính toán trên các bản đồ chuẩn và so sánh với bản sao đóng băng. Bất kỳ sự khác biệt nào về độ dài của các hành tinh lớn hơn 5e-5 độ (0,18 ”) sẽ khiến thử nghiệm bị lỗi.

Các bản đồ chuẩn được chọn để có thể đánh vào các ranh giới, không chỉ đánh vào “vùng trung tâm dễ dàng”:

  • Monroe, Diana, Einstein, Bowie - các bản đồ lịch sử với dữ liệu dân số nổi tiếng
  • Độ rộng cực - nơi các hệ thống nhà ở bị biến dạng
  • Độ rộng cực - nơi chúng hoạt động khác biệt
  • Độ rộng cực - kiểm tra sự phản xạ

Các trường hợp giới hạn sẽ bắt được các sự khác biệt, mà không thể thấy được trên bản đồ của người dân.

Các bản sao đóng băng sẽ bắt được sự khác biệt so với chính mình. Để kiểm tra sự thật tuyệt đối, mỗi lần phát hành sẽ được so sánh với các nguồn độc lập:

So vớiĐiểm kiểm traSự khác biệt
swetest CGI (Astrodienst)độ dài của các hành tinh, các điểm cuối cùng của nhà ở0.000 "
Kerykeion (Python, pyswisseph)thực hiện độc lập của SwEph< 0.2 "
Prokerala (sidereal Lahiri)các vị trí sidereal8-17 " , sự khác biệt về hệ thống Lahiri, không ruxi
NASA 5-Millennium Eclipse Catalogthời gian và loại bóng tối< 1 phút

Sự khác biệt với Prokerala - không phải là một sự sai sót: đó là các thực hiện khác nhau của công thức Lahiri, và chúng tôi sẽ ghi rõ điều này một cách rõ ràng, không che giấu. Với swetest, là một tiêu chuẩn của ngành, sự khác biệt bằng không.

Các đường biểu diễn của các nhà thiên văn học được kiểm tra riêng biệt về mặt hình học - độ chính xác trên đường xích đạo tốt hơn 1,5 km.

Độ chính xác là CI-gate, không phải là một lần kiểm tra:

  • api-accuracy.yml - trên mỗi lần PR vào phía sau mã chạy toàn bộ các bản sao đóng băng + tam giác. Kiểm tra đỏ sẽ ngăn chặn việc hợp nhất.
  • check-eclipse-accuracy.yml - một lần mỗi năm so sánh bóng tối với catalog NASA; sự khác biệt lớn hơn ngưỡng sẽ tự động tạo ra một vấn đề.
  • check-sweph-updates.yml - hàng tháng theo dõi upstream Swiss Ephemeris và gói WASM; phiên bản mới - một vấn đề về kiểm tra, không tự động cập nhật (cập nhật ruxi ephemeris - quá nhạy cảm để tự động cập nhật).

Đảm bảo đơn giản: các vị trí của các hành tinh trong phạm vi < 0.1 độ vĩ so với ephemeris chuẩn của Swiss, và phạm vi này được bảo vệ tự động, không phải là một lời hứa trong README. Nếu một lần nào đó có sự khác biệt, nó sẽ rơi vào CI, không phải là một khiếu nại của người dùng của bạn.

Phiên bản công khai của các con số này, với bảng sự khác biệt trên các bản đồ cụ thể, sống trên trang Độ chính xác.

MakSeong · AstroWay

Tôi làm AstroWay API: gói Swiss Ephemeris vào REST thuần và viết về những chi tiết nhàm chán nhưng thực sự quan trọng.

// xây dựng trên nền tảng này

Chính Swiss Ephemeris giống như trong Solar Fire - chỉ trong 4 dòng code.

Khóa API miễn phí không cần thẻ. 5.000 lượt gọi/tháng trước lần thanh toán đầu tiên.

Thêm từ blog tất cả bài viết →

Engineering 2026-07-15

Ba SDK chính thức: TypeScript, Python, PHP thay vì curl thô

HTTP thô hoạt động, nhưng client có kiểu dữ liệu tiết kiệm giờ: tự động hoàn thiện đường dẫn, kiểu yêu cầu và phản hồi, retry tích hợp cho 408/409/429/5xx và Stainless-style hệ thống lỗi. Xem xét ba SDK chính thức - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - và cách chúng được tạo từ một OpenAPI contract.

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.