本日任務聚焦於 Moira 占星系統的核心計算引擎實作,特別是中國占星學中的關鍵虛星 —— 紫炁計算系統。
紫炁作為七政四餘中的「四餘」之一,其 28 年週期的計算邏輯在 Java 版本中經過超過 50 次的迭代優化。
在缺乏完整技術文檔的情況下,我透過逆向工程還原其參數設定與數學公式,完成了End to End的紫炁計算重構。
我們整合 Swiss Ephemeris 高精度天文引擎、Django ORM 與 FastAPI 微服務,實現從輸入出生資訊到完整星盤資料 JSON 回傳的全流程實作。
範例驗證:
張小明(1990-05-15 14:30 台北)
→ 紫炁位置:35.43°
(氐宿)
SEFLG_SWIEPH
(最高精度)Django (port 8000): API 協調 + 資料管理
FastAPI (port 8001): 天文計算引擎(高速)
PostgreSQL: 星盤與計算結果儲存
Redis: 快取與 Celery 任務佇列
AI 任務設定:
- 解析 Java 紫炁公式
- 還原週期計算與角度運算邏輯
- 實作 FastAPI 服務與測試
- 產出測試驗證與 RESTful API 草案
AI 輸出成果:
- 成功重建紫炁計算數學模型
- 建立 15 個 Django 模型(星體、宮位、相位)
- 實作 7 個 API 端點,支援單體/批量查詢
- 完成張小明個案的完整驗證(JSON 輸出)
class PurpleQiCalculator:
def calculate_purple_qi_position(self, target_datetime, config):
time_diff_days = (target_datetime - config.base_date).total_seconds() / 86400.0
position_in_cycle = (time_diff_days / config.period_days) % 1.0
degree_movement = position_in_cycle * 360.0
current_degree = (config.base_degree - degree_movement) % 360.0
return current_degree
class SyncCalculationServiceClient:
def calculate_complete_chart(self, julian_day, latitude, longitude, birth_year):
response = requests.post(
f"{self.base_url}/complete_chart",
json={
"julian_day": julian_day,
"latitude": latitude,
"longitude": longitude,
"birth_year": birth_year
}
)
return response.json()
項目 | 數值 |
---|---|
出生 | 1990-05-15 14:30 |
地點 | 台北市(25.033°N, 121.565°E) |
紫炁 | 35.43° (氐宿) ✅ |
太陽 | 54.18° ✅ |
月亮 | 294.34° ✅ |
上升點 | 181.63° ✅ |
回應時間 | 3 秒內 ✅ |
Decimal
類型避免誤差模組 | 狀態 |
---|---|
紫炁計算系統 | ✅ 100% 完成 |
七政四餘資料模型 | ✅ 100% |
API 設計與實作 | ✅ 90% |
完整測試流程 | ✅ 通過 |
今天是 Moira 占星系統重構中的重要部件 —— 紫炁計算邏輯完全實作,並成功搭建整體天文計算後端服務。