82fa370877
Bridge a eternal-astrology prendido por default. `engine::compute(chart)` abre una EphemerisSession VSOP2013 (cacheada vía OnceLock global), traduce los Stored* del modelo a BirthData/ChartConfig de eternal, corre NatalChart::compute + find_aspects(modern_western) y devuelve un RenderModel con cuatro capas: SignDial, Houses, Bodies, Aspects. - tahuantinsuyu-engine: bridge.rs nuevo con map_house_system, map_zodiac (incl. 8 ayanamshas), map_body_set, body_symbol, aspect_kind_id. compute_mock se mantiene como fallback sin feature. Errores tipados (EngineError::Eternal). Test real verde con datos natales de demo. - tahuantinsuyu-canvas: rewrite con gpui::canvas() + PathBuilder. Pinta: sectores zodiacales coloreados por elemento (Fire/Earth/Air/ Water), anillos de sign-dial/houses/aspects, cusps zodiacales, cusps de casas (con énfasis para Asc/MC/Desc/IC), líneas radiales hasta el centro para los ejes, líneas de aspectos coloreadas por kind con opacidad por orb, dots de cuerpos. Glifos unicode (♈-♓ signos, ☉-♇ planetas, ☊☋⚷⚸ puntos) como divs absolutos sobre el canvas. Marcador ᴿ cuando retrógrado. Rotación canónica: Asc a las 9, casas crecen contrarreloj. - shell: ahora llama engine::compute() real y reporta errores por stderr sin caer la app. Datos sintetizados: ascendente, MC, descendente, IC; 12 cusps de casa según el sistema configurado; placements de los cuerpos del BodySet con sus longitudes zodiacales, casa y flag retrógrado; aspectos mayores con opacidad proporcional al orb. `cargo check` y `cargo test --features eternal-bridge` verdes. La fase 4 traerá el panel interactivo (jog-dial, toggles, sliders, atajos teclado). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1.2 KiB
TOML
32 lines
1.2 KiB
TOML
[package]
|
|
name = "tahuantinsuyu-engine"
|
|
version = { workspace = true }
|
|
edition = { workspace = true }
|
|
license = { workspace = true }
|
|
description = "Tahuantinsuyu — bridge entre el modelo agnóstico y eternal-astrology. Produce RenderModel agnóstico para el canvas."
|
|
|
|
[dependencies]
|
|
tahuantinsuyu-model = { path = "../tahuantinsuyu-model" }
|
|
serde = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
|
|
# eternal-astrology vive en otro workspace (~/eternal). Lo enlazamos por
|
|
# path para que el bridge use la misma lógica validada que el harness de
|
|
# Sergio. Si el path no existe (CI sin eternal checked out), el feature
|
|
# `eternal-bridge` se apaga.
|
|
[dependencies.eternal-astrology]
|
|
path = "../../../../../eternal/eternal-astrology"
|
|
optional = true
|
|
|
|
[dependencies.eternal-sky]
|
|
path = "../../../../../eternal/eternal-sky"
|
|
optional = true
|
|
|
|
[features]
|
|
# El bridge real contra eternal-astrology está prendido por default
|
|
# porque la app sin eternal no muestra cartas reales. Si necesitás
|
|
# compilar sin eternal checked out (CI, builds aisladas), `--no-default-features`
|
|
# lo apaga y `compute()` cae a `compute_mock()`.
|
|
default = ["eternal-bridge"]
|
|
eternal-bridge = ["dep:eternal-astrology", "dep:eternal-sky"]
|