三盘API文档 - 本命盘+组合盘+行运盘

接口说明

本命盘+组合盘+行运盘接口用于生成三层星盘的对比分析。内圈显示本命盘,中圈显示组合盘,外圈显示行运盘,用于综合分析个人本命、关系组合盘和当前行运的影响。

请求参数

参数名 类型 必填 说明
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:SSYYYY-MM-DD HH:MM
  • 时区格式为数字,东时区为正数,西时区为负数
  • type1必须设置为"natal",type2必须设置为"composite",type3必须设置为"transit"
  • data1为本命盘数据(内圈),data2为组合盘数据(中圈),data3为行运盘数据(外圈)
  • 组合盘是通过计算两人星盘的中点而形成的关系盘
  • 组合盘需要提供两人的完整出生信息
  • 行运盘显示指定时间的实际天体位置
  • 三个时间点通常为:个人出生时间、关系形成时间、当前时间
  • 适用于分析个人与关系在特定时期的综合影响
  • 返回的行星位置包含经度和速度信息