e2m2e.api.models#

公开数据模型(Pydantic,全手写)。

输入/输出/错误模型精雕参数单位、默认值、取值域(ADR 0014)。Pydantic 只在 api/ 边界,算法层用 numpy/dataclass。每个 Facade 方法一个 Request/Response, 外加统一错误模型 OrbitError。

Exceptions#

OrbitError

结构化错误(api/ 边界翻译,ADR 0014)。

Classes#

NumericRange

数值参数的上下界、开闭区间及离散排除值。

DesignOrbitRequest

任务轨道设计输入。

ResultResponse

Facade 成功处理后的任务最终状态三元组。

FamilyGenerationResponse

轨道族生成响应。

DesignOrbitResponse

任务轨道设计输出。

ControlOrbitRequest

轨道保持输入(对齐 algorithm/station_keeping 的 control_orbit 参数)。

ControlOrbitResponse

轨道保持输出。

TransferDesignRequest

转移轨道设计输入(对齐 algorithm/transfer 的 transfer_orbit 参数)。

TransferDesignResponse

转移轨道设计输出。

PropagationRequest

轨道预报输入(对齐 algorithm/propagation 的 propagate_orbit 参数)。

PropagationResponse

轨道预报输出。

SpacetimeTransformRequest

时空坐标转换输入。

SpacetimeTransformResponse

时空坐标转换输出。

FamilyGenerationRequest

轨道族生成输入(二档 Facade.orbit_family_generation)。

CatalogQueryRequest

轨道库多维查询过滤;各维度可独立组合(逻辑与)。

CatalogRecordSummary

记录摘要:浏览大量记录时轻量,不含数组段与请求快照。

CatalogQueryResponse

catalog_query 输出。

CatalogGetRequest

按 record_id 取完整记录。

CatalogRecordResponse

完整记录:元数据全文 + 数组段(numpy 值,键含 / 段前缀)。

CatalogDeleteRequest

按 record_id 删除记录。

CatalogDeleteResponse

catalog_delete 输出。

CatalogTagRequest

写教学标注(随 JSON 记录走);tags 整体替换,note=None 保留原注释。

CatalogTagResponse

catalog_tag 输出:更新后的记录摘要。

CatalogTerminologyResponse

catalog_terminology 输出:调用方渲染结果所需的全部闭值集(ADR 0044)。

CatalogExportRequest

子集打包导出:过滤条件同 catalog_query,外加目标路径。

CatalogExportResponse

catalog_export 输出。

CatalogSweepRequest

参数空间扫描批量生成并入库(编排复用 ADR 0029 的 Rust 族生成)。

CatalogSweepPointOutcome

扫描单参数点的结局:成功(含软失败)保留 family_id,硬失败保留原因。

CatalogSweepResponse

catalog_sweep 输出。

SpatiographyScalesRequest

分区解析尺度计算输入(spatiography,ADR 0041)。

SpatiographyScalesResponse

分区解析尺度输出(Rosengren et al. 2026 §5 闭式边界,物理单位 km)。

SpatiographyClassifyRequest

分区区域分类输入。

SpatiographyClassifyResponse

分区区域分类输出。

SpatiographyBoundariesRequest

分区边界几何输入(可视化数据层)。

SpatiographyBoundariesResponse

分区边界几何输出(前端只做归一与绘制,不做数值计算)。

SpatiographyMapRequest

六域两层天图输入(Primer §7.3 / Table 4,ADR 0041 Phase 3c)。

SpatiographyMapResponse

六域两层天图输出(Ȳ 场 + 命运场 + 诊断量;大数组可走 sidecar 帧)。

SpatiographyAtlasRequest

共振图集输入(Primer §4.2–§4.4 / §5.3,ADR 0041 Phase 3a)。

SpatiographyAtlasResponse

共振图集输出(元素空间曲线 + vZLK 标量,前端只做归一与绘制)。

Module Contents#

exception e2m2e.api.models.OrbitError(code: str = 'ERROR', message: str = '', details: dict[str, Any] | None = None, status: e2m2e.data.templates.ConvergenceState = ConvergenceState.FAILED, cause: e2m2e.data.templates.FailureCause = FailureCause.UNKNOWN)#

Bases: Exception

结构化错误(api/ 边界翻译,ADR 0014)。

Attributes:

code: 错误码(如 "NOT_IMPLEMENTED"/"NOT_CONVERGED"/"INVALID_PARAMS")。 message: 可读错误信息。 details: 附加细节。

code = 'ERROR'#
message = ''#
details#
status#
cause#
__str__() → str#

Return str(self).

class e2m2e.api.models.NumericRange#

数值参数的上下界、开闭区间及离散排除值。

minimum: float | None = None#
maximum: float | None = None#
minimum_inclusive: bool = True#
maximum_inclusive: bool = True#
excluded_values: tuple[float, ...] = ()#
contains(value: float) → bool#

判断值是否落在此区间内且不属于排除值。

format_interval() → str#

返回用于校验错误的紧凑区间表示。

class e2m2e.api.models.DesignOrbitRequest#

Bases: _ApiModel

任务轨道设计输入。

统一覆盖 CR3BP 周期轨道(DRO/NRHO/Halo/Lissajous/…)和 ELFO 冻结轨道。 按 orbit_type 分派校验与默认值填充(model_validator)。 duration 统一用秒。

orbit_type: str#
amplitude: float | None#
resonance_p: int | None#
resonance_q: int | None#
phase: float | None#
collinear_point: int | None#
north_south: int | None#
amplitude_in: float | None#
amplitude_out: float | None#
phase_in: float | None#
phase_out: float | None#
perilune_height: float | None#
inclination: float | None#
arg_of_pericenter: float | None#
semi_major_axis: float | None#
epoch: Any#
duration: float | None#
output_step: float#
perturbation: dict[str, int] | None#
dyb: list[float] | None#
earth_degree: int#
moon_degree: int#
correction_method: str#
correction_revolutions: int#
classmethod valid_ranges(orbit_type: str, *, collinear_point: int | None = None) → dict[str, NumericRange]#

返回指定轨道类型和上下文下适用的条件数值范围。

classmethod valid_range_contexts() → tuple[tuple[str, int | None], ...]#

全量导出条件值域用的 (orbit_type, collinear_point) 键集。

无平动点条件的族 point 为 None;HALO 与 LISSAJOUS 逐点展开 (HALO 为 L1/L2 两档独立域,LISSAJOUS 1/2 同表、3 独立)。

classmethod field_units() → collections.abc.Mapping[str, str]#

design_orbit 条件字段的单位表;未列出者为无量纲或计数值。

_validate_conditional_ranges(selection: str) → None#

用公开范围接口校验已填充默认值的条件参数。

_validate_orbit_type() → DesignOrbitRequest#
_dispatch_correction_method(selection: str) → None#

按族规范化星历修正方法:不稳定族强制 segmented。

未显式指定时静默分派默认值;显式传入与族冲突的值时告警后改写 (不拒绝,兼容既有调用方)。请求对象经此即为事实,算法层只做 防御检查。

class e2m2e.api.models.ResultResponse#

Bases: _ApiModel

Facade 成功处理后的任务最终状态三元组。

status: e2m2e.data.templates.ConvergenceState#
cause: e2m2e.data.templates.FailureCause#
message: str#
_validate_result_status() → ResultResponse#
class e2m2e.api.models.FamilyGenerationResponse(orbits: list[Orbit] | None = None, family_type: str | None = None, system: Any = None)#

Bases: _ApiModel, e2m2e.data.types.orbit.OrbitFamily

轨道族生成响应。

继承 OrbitFamily 保持既有成功返回的读取接口,同时由 Pydantic 在 Facade 接缝直接承载状态三元组。算法层软失败的部分成员使用同一响应。

model_config#
status: e2m2e.data.templates.ConvergenceState#
cause: e2m2e.data.templates.FailureCause#
message: str#
orbits: list[e2m2e.data.types.orbit.Orbit]#
family_type: str | None = None#
system: Any = None#
metadata: dict[str, Any]#
taxonomy_labels: list[str]#
requested_members: int#
generated_members: int#
family_id: str | None#
__iter__()#

按 OrbitFamily 兼容语义迭代轨道成员。

validate_result_contract() → FamilyGenerationResponse#

校验状态组合和成员计数。

class e2m2e.api.models.DesignOrbitResponse#

Bases: ResultResponse

任务轨道设计输出。

几何字段(mu / states / times / ephemeris)让下游 (画图 / 落盘 / design→control 链式)可仅依赖 Facade,不必穿透 algorithm 层。states / times 为 CR3BP 参考周期轨道(无量纲会合系), ephemeris 为标称星历(GCRS km / 速度 m/s + 会合系,EphemerisTable 全字段)。ELFO 场景下 CR3BP/修正字段为 None/默认值,漂移字段填充。

orbit_type: str#
epoch_utc: str#
duration_day: float#
initial_state: list[float]#
cr3bp_jacobi: float#
correction_iterations: int#
correction_method: str | None#
force_config: dict[str, Any]#
mu: float | None#
states: list[list[float]]#
taxonomy_labels: list[str]#
times: list[float]#
ephemeris: dict[str, Any] | None#
drift_e: float | None#
drift_aop_deg: float | None#
drift_rp_km: float | None#
secular_aop_rate_deg_per_year: float | None#
record_id: str | None#
class e2m2e.api.models.ControlOrbitRequest#

Bases: _ApiModel

轨道保持输入(对齐 algorithm/station_keeping 的 control_orbit 参数)。

字段与算法层业务参数一一对应;运行时参数(spice/kernel_dir/n_workers/ seed)由 Facade 注入,不进模型。默认值、单位与算法层签名一致。

输入源二选一(ADR 0031):input_ephemeris 直接给星历,或 input_record_id 引用库中记录(取其星历段,站保产物记录自动以 source_record_id 指向该记录,谱系跨进程不断)。

input_ephemeris: Any#
input_record_id: str | None#
control_mode: int#
is_nrho: int#
special_mode: int#
control_interval: float#
feedback_arc: float#
special_crossings: int#
num_controls: int#
num_monte_carlo: int#
output_step: float#
position_accuracy: float#
velocity_accuracy: float#
thrust_angle_err: float#
thrust_mean: float#
thrust_rel_err: float#
thrust_abs_err: float#
thrust_min: float#
thrust_max: float#
thrust_total: float#
srp_error_level: float#
perturbation: dict[str, int] | None#
dyb: list[float] | None#
earth_degree: int#
moon_degree: int#
real_perturbation: dict[str, int] | None#
real_dyb: list[float] | None#
real_earth_degree: int#
real_moon_degree: int#
engine_layout: Any#
momentum_interval: float#
srp_offset_m: list[float] | None#
spacecraft_mass: float#
srp_torque: list[float] | None#
tight_tolerance_km: float#
tight_max_iter: int#
special_damping_factor: float#
classmethod _validate_perturbation(value: dict[str, int] | None) → dict[str, int] | None#

在 API 边界校验摄动开关的键和值。

mu: float | None#
_validate_input_source() → ControlOrbitRequest#

输入源二选一:裸星历或库记录引用。

class e2m2e.api.models.ControlOrbitResponse#

Bases: ResultResponse

轨道保持输出。

几何字段(controlled_ephemeris / mu):controlled_ephemeris 为最后一次蒙特卡洛样本的受控真实轨道星历(EphemerisTable 全字段; 全失败时 None);mu 由请求透传(算法层不产 mu)。

num_failed: int#
sk_statistic: dict[str, Any]#
maneuvers: dict[str, Any]#
controlled_ephemeris: dict[str, Any] | None#
mu: float | None#
record_id: str | None#
class e2m2e.api.models.TransferDesignRequest#

Bases: _ApiModel

转移轨道设计输入(对齐 algorithm/transfer 的 transfer_orbit 参数)。

transfer_type: str#
tli_epoch: Any#
parking_alt_km: float#
incl_deg: float#
flight_path_deg: float#
target_ephemeris: Any#
target_orbit_radius_km: float | None#
tof_range: list[float] | None#
lga_search_params: Any#
wsb_search_params: Any#
engine_config: dict[str, Any] | None#
initial_mass: float | None#
n_segments: int#
target_oe: list[float] | None#
solver_method: str#
duration_days: float#
departure_state: list[float] | None#
target_state: list[float] | None#
top_n: int | None#
class e2m2e.api.models.TransferDesignResponse#

Bases: ResultResponse

转移轨道设计输出。

transfer_type: str#
delta_v: float#
trajectory: list[list[float]] | None#
trajectory_times: list[float] | None#
trajectory_gcrs_km: list[list[float]] | None#
state_frame: Literal['synodic_barycentric_km', 'force_model_state']#
maneuver_events: list[ManeuverEvent]#
candidates: list[TransferCandidate] | None#
details: dict[str, Any]#
record_id: str | None#
class e2m2e.api.models.PropagationRequest#

Bases: _ApiModel

轨道预报输入(对齐 algorithm/propagation 的 propagate_orbit 参数)。

initial_state: list[float]#
epoch: Any#
duration: float#
force_config: dict[str, Any] | None#
output_step: float#
class e2m2e.api.models.PropagationResponse#

Bases: ResultResponse

轨道预报输出。

epoch_utc: str#
duration_sec: float#
output_step: float#
n_points: int#
time_sec: list[float]#
times_jd_tdb: list[float]#
position_km: list[list[float]]#
velocity_km_s: list[list[float]]#
final_state: list[float]#
class e2m2e.api.models.SpacetimeTransformRequest#

Bases: _ApiModel

时空坐标转换输入。

states: list[list[float]]#
times: list[float]#
transform_type: str#
et0_jd: float#
ephemeris_path: str | None#
class e2m2e.api.models.SpacetimeTransformResponse#

Bases: ResultResponse

时空坐标转换输出。

states: list[list[float]]#
times: list[float]#
transform_type: str#
details: dict[str, Any]#
class e2m2e.api.models.FamilyGenerationRequest#

Bases: _ApiModel

轨道族生成输入(二档 Facade.orbit_family_generation)。

公开参数用平动点统一术语(libration_point,1=L1 … 5=L5),由 Facade 映射到各族算法参数。按 orbit_type 分派校验取值域 (与 DesignOrbitRequest 同构):共线族(Halo/NRHO/Axial)仅 L1/L2,Lissajous 支持 L1/L2/L3,三角族(SPO/LPO/Horseshoe)仅 L4/L5,DRO 是月心族、RO 是地心族,均不绑定平动点(请求不得携带 libration_point)。九族均已实现:周期族返回严格周期成员, Lissajous 返回拟周期有界轨迹的参数采样(族上显式标注 quasi-periodic)。

按族适用的字段:

  • HALO/AXIAL:max_amplitude_km (带符号,区分北/南或上/下族)

  • NRHO:north_south、perilune_height_max_km、continuation_direction

  • LISSAJOUS:amplitude_in_km、amplitude_out_km、phase_in、phase_out

  • SPO/LPO/HORSESHOE:振幅上下限、延拓方向与 match_tolerance_km

  • DRO:振幅上下限(距月心距离 min/max 均值,km)

  • RO:resonance_p/resonance_q + 振幅上下限(距地心距离 min/max 均值,km)

sampling_mode 显式登记各族固定的首版采样规则;传入其他规则会 结构化拒绝,而不是静默改用默认算法。

orbit_type: str#
libration_point: int | None#
max_amplitude_km: float | None#
min_amplitude_km: float | None#
resonance_p: int | None#
resonance_q: int | None#
north_south: int | None#
perilune_height_max_km: float | None#
amplitude_in_km: float | None#
amplitude_out_km: float | None#
phase_in: float | None#
phase_out: float | None#
continuation_direction: str | None#
sampling_mode: str | None#
match_tolerance_km: float | None#
n_orbits: int#
classmethod valid_ranges(orbit_type: str, *, libration_point: int | None = None) → dict[str, NumericRange]#

返回指定族和上下文下适用的条件数值范围。

classmethod valid_options(orbit_type: str) → dict[str, tuple[str, ...]]#

返回指定族的公开离散选项(延拓方向与采样规则)。

classmethod valid_range_contexts() → tuple[tuple[str, int | None], ...]#

全量导出条件值域用的 (orbit_type, libration_point) 键集。

绑定平动点的族逐点展开;不绑平动点的族(DRO)point 为 None。

classmethod field_units() → collections.abc.Mapping[str, str]#

族生成条件字段的单位表;未列出者为无量纲或计数值。

_validate_orbit_type() → FamilyGenerationRequest#
class e2m2e.api.models.CatalogQueryRequest#

Bases: _ApiModel

轨道库多维查询过滤;各维度可独立组合(逻辑与)。

orbit_family: str | None#
family_id: str | None#
libration_point: int | None#
jacobi_min: float | None#
jacobi_max: float | None#
amplitude_min_km: float | None#
amplitude_max_km: float | None#
has_cr3bp: bool | None#
has_ephemeris: bool | None#
status: e2m2e.data.templates.ConvergenceState | None#
tags: list[str] | None#
transfer_type: str | None#
delta_v_min_km_s: float | None#
delta_v_max_km_s: float | None#
tli_epoch_min: float | None#
tli_epoch_max: float | None#
_validate_ranges() → CatalogQueryRequest#
class e2m2e.api.models.CatalogRecordSummary#

Bases: _ApiModel

记录摘要:浏览大量记录时轻量,不含数组段与请求快照。

record_id: str#
created_at: str#
source_tool: str#
source_record_id: str | None#
orbit_family: str | None#
libration_point: int | None#
jacobi: list[float] | None#
amplitude: list[float] | None#
has_cr3bp: bool#
has_ephemeris: bool#
taxonomy_labels: list[str] | None#
transfer_type: str | None#
delta_v_km_s: float | None#
tli_epoch: float | None#
status: e2m2e.data.templates.ConvergenceState#
cause: e2m2e.data.templates.FailureCause#
message: str#
family_id: str | None#
member_index: int | None#
tags: list[str]#
note: str#
class e2m2e.api.models.CatalogQueryResponse#

Bases: ResultResponse

catalog_query 输出。

records: list[CatalogRecordSummary]#
class e2m2e.api.models.CatalogGetRequest#

Bases: _ApiModel

按 record_id 取完整记录。

record_id: str#
class e2m2e.api.models.CatalogRecordResponse#

Bases: CatalogRecordSummary

完整记录:元数据全文 + 数组段(numpy 值,键含 / 段前缀)。

model_config#
scalars: dict[str, Any]#
request: dict[str, Any]#
details: dict[str, Any] | None#
arrays: dict[str, Any]#
to_ephemeris_table() → Any | None#

把星历段重建为 EphemerisTable 实例(供接续计算);无星历段返回 None。

to_orbit() → Any | None#

把单轨道 CR3BP 段重建为 Orbit;纯星历/转移记录返回 None。

class e2m2e.api.models.CatalogDeleteRequest#

Bases: _ApiModel

按 record_id 删除记录。

record_id: str#
class e2m2e.api.models.CatalogDeleteResponse#

Bases: ResultResponse

catalog_delete 输出。

record_id: str#
deleted: bool#
class e2m2e.api.models.CatalogTagRequest#

Bases: _ApiModel

写教学标注(随 JSON 记录走);tags 整体替换,note=None 保留原注释。

record_id: str#
tags: list[str]#
note: str | None#
class e2m2e.api.models.CatalogTagResponse#

Bases: ResultResponse

catalog_tag 输出:更新后的记录摘要。

record: CatalogRecordSummary#
class e2m2e.api.models.CatalogTerminologyResponse#

Bases: ResultResponse

catalog_terminology 输出:调用方渲染结果所需的全部闭值集(ADR 0044)。

无参数;包版本即术语版本(清单随发布冻结,调用方每会话取一次、 升级后刷新,未知标签按可读规范串原样渲染)。

taxonomy_labels: dict[str, dict[str, Any]]#
orbit_families: list[str]#
transfer_types: list[str]#
class e2m2e.api.models.CatalogExportRequest#

Bases: CatalogQueryRequest

子集打包导出:过滤条件同 catalog_query,外加目标路径。

dest: str#
class e2m2e.api.models.CatalogExportResponse#

Bases: ResultResponse

catalog_export 输出。

dest: str#
record_ids: list[str]#
exported_count: int#
class e2m2e.api.models.CatalogSweepRequest#

Bases: _ApiModel

参数空间扫描批量生成并入库(编排复用 ADR 0029 的 Rust 族生成)。

扫描网格 = 族 × 平动点 × 主参数维度。主参数维度三选一(同传报错):

  • 一维主参数:HALO/AXIAL/SPO/LPO/HORSESHOE 扫 max_amplitudes_km, NRHO 扫 perilune_heights_max_km;

  • 能量(Jacobi)窗口:jacobi_windows——同一(族、平动点)只走 一次延拓 trace(族延拓范围取各族默认),各窗口成员分别成记录, 记录 jacobi 包络落在窗口内;窗口零成员时该点无记录、结局可查;

  • LISSAJOUS 二维振幅网格:amplitude_ins_km × amplitude_outs_km 笛卡尔积逐点采样(相位取请求默认值);能量窗口不适用于 LISSAJOUS (其族生成是参数采样而非延拓 trace)。

部分参数点失败时已产出的记录保留(ADR 0020 软失败语义)。

orbit_types: list[str]#
libration_points: list[int] | None#
max_amplitudes_km: list[float] | None#
perilune_heights_max_km: list[float] | None#
jacobi_windows: list[list[float]] | None#
amplitude_ins_km: list[float] | None#
amplitude_outs_km: list[float] | None#
n_orbits: int#
classmethod supported_grid_dimensions(orbit_type: str) → tuple[str, ...]#

返回该族可作为扫描主参数维度的请求字段(条件取值域公开)。

GUI/CLI/MCP 不得解析错误文本或维护本地副本(ADR 0014 决策 8); Facade 的网格展开与校验共用本接口。LISSAJOUS 的两个振幅字段是 同一维度(须同给);其余族的 jacobi_windows 与一维振幅字段 互斥,由请求级校验器拒绝同传。

_validate_grid_dimensions() → CatalogSweepRequest#

主参数维度互斥与能量窗口取值域(ADR 0014 决策 8 同源规则)。

class e2m2e.api.models.CatalogSweepPointOutcome#

Bases: _ApiModel

扫描单参数点的结局:成功(含软失败)保留 family_id,硬失败保留原因。

orbit_type: str#
libration_point: int#
parameter_km: float | None#
jacobi_window: list[float] | None#
amplitudes_km: list[float] | None#
status: e2m2e.data.templates.ConvergenceState#
cause: e2m2e.data.templates.FailureCause#
message: str#
family_id: str | None#
generated_members: int#
class e2m2e.api.models.CatalogSweepResponse#

Bases: ResultResponse

catalog_sweep 输出。

succeeded 为产出记录的参数点数(含软失败但有成员产出的点); failed 为硬失败(无产出)参数点数;软失败且零成员的点两者都 不计,其结局见 points 逐点状态。

points: list[CatalogSweepPointOutcome]#
family_ids: list[str]#
succeeded: int#
failed: int#
class e2m2e.api.models.SpatiographyScalesRequest#

Bases: _ApiModel

分区解析尺度计算输入(spatiography,ADR 0041)。

system: Literal['earth_moon']#
elements: list[str]#
class e2m2e.api.models.SpatiographyScalesResponse#

Bases: ResultResponse

分区解析尺度输出(Rosengren et al. 2026 §5 闭式边界,物理单位 km)。

scales: dict[str, float]#
libration_points_km: dict[str, list[float]]#
jacobi_criticals: dict[str, float]#
resonance_ladder: list[dict[str, Any]]#
constants_used: dict[str, float]#
citation: str#
details: dict[str, Any]#
class e2m2e.api.models.SpatiographyClassifyRequest#

Bases: _ApiModel

分区区域分类输入。

states: list[list[float]]#
frame: Literal['synodic_barycentric_km', 'synodic_barycentric_nd']#
reference: Literal['table1', 'table4']#
include_overlaps: bool#
class e2m2e.api.models.SpatiographyClassifyResponse#

Bases: ResultResponse

分区区域分类输出。

zone_ids: list[list[int]]#
legend: dict[str, str]#
diagnostics: list[dict[str, Any]]#
details: dict[str, Any]#
class e2m2e.api.models.SpatiographyBoundariesRequest#

Bases: _ApiModel

分区边界几何输入(可视化数据层)。

kind: Literal['synodic_planar', 'ae_curves']#
boundary_set: list[str] | None#
resolution: int#
class e2m2e.api.models.SpatiographyBoundariesResponse#

Bases: ResultResponse

分区边界几何输出(前端只做归一与绘制,不做数值计算)。

elements: list[dict[str, Any]]#
state_frame: Literal['synodic_barycentric_km', 'element_space_ae']#
details: dict[str, Any]#
class e2m2e.api.models.SpatiographyMapRequest#

Bases: _ApiModel

六域两层天图输入(Primer §7.3 / Table 4,ADR 0041 Phase 3c)。

网格初值按命名场景(2027-08-02 日全食历元、(Ω,ω,M) 固定角、 i = 月轨面、反 aligned 拱线)生成;逐格传播 EM/EMS 点质量模型 (MEGNO + 命运两层)。网格分辨率与积分窗按需收缩——CI 走抽查 小网格,全量制图走 scripts/ 手动(ADR 0037 预算口径)。

zone: Literal['SC', 'CR', 'CG', 'IT', 'OT', 'TF']#
model: Literal['em', 'ems']#
n_a: int#
n_e: int#
e_min: float#
e_max: float#
span_years: float | None#
rtol: float#
max_step_hours: float#
stop_on_terminal: bool#
ybar_ordered_band: float#
ybar_chaotic_excess: float#
class e2m2e.api.models.SpatiographyMapResponse#

Bases: ResultResponse

六域两层天图输出(Ȳ 场 + 命运场 + 诊断量;大数组可走 sidecar 帧)。

zone: str#
model: str#
span_years: float#
a_over_a_moon: list[float]#
e_grid: list[float]#
ybar_field: list[list[float | None]] | None#
fate_ids: list[list[int]] | None#
t_escape_years_field: list[list[float | None]] | None#
min_r_sel_km_field: list[list[float | None]] | None#
min_r_geo_km_field: list[list[float | None]] | None#
fate_legend: dict[str, str]#
thresholds: dict[str, float]#
scenario: dict[str, Any]#
diagnostic_focus: str#
details: dict[str, Any]#
class e2m2e.api.models.SpatiographyAtlasRequest#

Bases: _ApiModel

共振图集输入(Primer §4.2–§4.4 / §5.3,ADR 0041 Phase 3a)。

products: list[str]#
resonance_pairs: list[list[int]] | None#
e_min: float#
e_max: float#
n_e: int#
varpi_offset_deg: float#
n_sigma: int#
n_lambda: int#
locus_e_slices: list[float]#
a_over_a_moon_min: float#
a_over_a_moon_max: float#
n_locus: int#
vzlk_c1: float#
class e2m2e.api.models.SpatiographyAtlasResponse#

Bases: ResultResponse

共振图集输出(元素空间曲线 + vZLK 标量,前端只做归一与绘制)。

elements: list[dict[str, Any]]#
state_frames: dict[str, str]#
vzlk: dict[str, float]#
details: dict[str, Any]#