三盘API文档 - 本命盘+组合盘+行运盘
接口说明
本命盘+组合盘+行运盘接口用于生成三层星盘的对比分析。内圈显示本命盘,中圈显示组合盘,外圈显示行运盘,用于综合分析个人本命、关系组合盘和当前行运的影响。
- 请求URL:
/trichart
- 请求方式: POST
- Content-Type: application/json
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| type1 |
String |
是 |
第一层星盘类型,固定值:"natal" |
| type2 |
String |
是 |
第二层星盘类型,固定值:"composite" |
| type3 |
String |
是 |
第三层星盘类型,固定值:"transit" |
| data1 |
Object |
是 |
本命盘数据(内圈) |
| data2 |
Object |
是 |
组合盘数据(中圈)- 包含两人的出生信息 |
| data3 |
Object |
是 |
行运盘数据(外圈) |
| house_system |
String |
是 |
宫位系统,例如:"P"(普拉西德) |
| include_svg |
Boolean |
否 |
是否包含SVG图像,默认true |
data1和data3的参数结构
| 参数名 |
类型 |
必填 |
说明 |
| datetime |
String |
是 |
日期时间,格式:"YYYY-MM-DD HH:MM:SS" |
| lat |
Number |
是 |
纬度,范围:-90到90 |
| lon |
Number |
是 |
经度,范围:-180到180 |
| tz |
Number |
是 |
时区偏移,例如:8.0(东八区) |
data2(组合盘)的参数结构
| 参数名 |
类型 |
必填 |
说明 |
| person1 |
Object |
是 |
第一人的出生信息 |
| person2 |
Object |
是 |
第二人的出生信息 |
person1和person2的参数结构
| 参数名 |
类型 |
必填 |
说明 |
| datetime |
String |
是 |
日期时间,格式:"YYYY-MM-DD HH:MM:SS" |
| lat |
Number |
是 |
纬度,范围:-90到90 |
| lon |
Number |
是 |
经度,范围:-180到180 |
| tz |
Number |
是 |
时区偏移,例如:8.0(东八区) |
请求示例
{
"type1": "natal",
"type2": "composite",
"type3": "transit",
"data1": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"data2": {
"datetime": "1992-06-15 14:30:00",
"lat": 31.2304,
"lon": 121.4737,
"tz": 8.0
},
"data3": {
"datetime": "2024-12-25 15:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"house_system": "P",
"include_svg": true
}
返回参数
| 参数名 |
类型 |
说明 |
| success |
Boolean |
请求是否成功 |
| data |
Object |
星盘数据 |
| data.type1 |
String |
第一层星盘类型:"natal" |
| data.type2 |
String |
第二层星盘类型:"composite" |
| data.type3 |
String |
第三层星盘类型:"transit" |
| data.house_cusps |
Array |
宫头位置数组(12个元素) |
| data.chart1_planets |
Object |
本命盘行星位置数据 |
| data.chart2_planets |
Object |
组合盘行星位置数据 |
| data.chart3_planets |
Object |
行运盘行星位置数据 |
| svg |
String |
SVG格式的星盘图像(当include_svg为true时) |
| message |
String |
响应消息 |
返回示例
{
"success": true,
"data": {
"type1": "natal",
"type2": "composite",
"type3": "transit",
"house_cusps": [0.0, 30.0, 60.0, 90.0, 120.0, 150.0, 180.0, 210.0, 240.0, 270.0, 300.0, 330.0],
"chart1_planets": {
"Sun": {"longitude": 280.123, "speed": 1.0},
"Moon": {"longitude": 45.678, "speed": 13.2}
},
"chart2_planets": {
"Sun": {"longitude": 125.456, "speed": 1.0},
"Moon": {"longitude": 200.789, "speed": 13.1}
},
"chart3_planets": {
"Sun": {"longitude": 275.123, "speed": 1.0},
"Moon": {"longitude": 180.456, "speed": 13.3}
}
},
"svg": "",
"message": "三盘计算成功"
}
Python测试代码示例
import requests
import json
import os
from datetime import datetime, timezone
class TrichartNatalCompositeTransitAPITest:
def __init__(self, base_url="http://chart.12sign.top"):
self.base_url = base_url
self.endpoint = f"{base_url}/trichart"
# 创建输出目录
self.output_dir = "test_chart_outputs"
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
def test_natal_composite_transit_chart(self):
"""测试本命+组合盘+行运三盘API"""
# 使用当前时间作为行运时间
now_utc = datetime.now(timezone.utc)
current_time = now_utc.strftime('%Y-%m-%d %H:%M:%S')
payload = {
"type1": "natal",
"type2": "composite",
"type3": "transit",
"data1": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"data2": {
# 注意:在三盘API中,组合盘的data2使用扁平结构,而不是嵌套的person1/person2结构
"datetime": "1992-06-15 14:30:00",
"lat": 31.2304,
"lon": 121.4737,
"tz": 8.0
},
"data3": {
"datetime": current_time,
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"house_system": "P",
"include_svg": True
}
try:
print(f"正在测试本命+组合盘+行运三盘API: {self.endpoint}")
print(f"请求数据: {json.dumps(payload, indent=2, ensure_ascii=False)}")
response = requests.post(
self.endpoint,
json=payload,
headers={'Content-Type': 'application/json'}
)
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
result = response.json()
print("本命+组合盘+行运三盘API测试成功!")
print(f"返回数据包含: {list(result.keys())}")
print("完整的返回数据:")
print(result)
# 保存SVG文件
if 'svg' in result and result['svg']:
svg_filename = os.path.join(self.output_dir, 'trichart_natal_composite_transit_test.svg')
with open(svg_filename, 'w', encoding='utf-8') as f:
f.write(result['svg'])
print(f"SVG文件已保存: {svg_filename}")
return result
else:
print(f"API请求失败: {response.status_code}")
print(f"错误信息: {response.text}")
return None
except Exception as e:
print(f"请求出错: {e}")
return None
if __name__ == "__main__":
tester = TrichartNatalCompositeTransitAPITest()
tester.test_natal_composite_transit_chart()
注意事项
- 时间格式必须为
YYYY-MM-DD HH:MM:SS 或 YYYY-MM-DD HH:MM
- 时区格式为数字,东时区为正数,西时区为负数
- type1必须设置为"natal",type2必须设置为"composite",type3必须设置为"transit"
- data1为本命盘数据(内圈),data2为组合盘数据(中圈),data3为行运盘数据(外圈)
- 组合盘是通过计算两人星盘的中点而形成的关系盘
- 组合盘需要提供两人的完整出生信息
- 行运盘显示指定时间的实际天体位置
- 三个时间点通常为:个人出生时间、关系形成时间、当前时间
- 适用于分析个人与关系在特定时期的综合影响
- 返回的行星位置包含经度和速度信息