7b435d4263
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m32s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m28s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 11s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 9s
build / build (push) Successful in 25s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 11m18s
Testy / Kontrola składni wszystkich warstw (push) Successful in 31s
Testy / Build obrazu silnika B (swisseph) (push) Failing after 13m6s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Failing after 13m25s
Pierwsza technika relacyjna z pełnym UI (Returns były już w kalendarzu od LOG-12). Dwie osoby → aspekty MIĘDZY ich horoskopami (planeta osoby A do planety osoby B). Silnik: `find_cross_aspects(a, b, orb, luminary_bonus, minor)` — każdy obiekt A × każdy obiekt B. `obj1` = osoba A, `obj2` = osoba B. Statyczne (dwa natale, brak wspólnego czasu) → bez applying/separating. Par sztywnych (NN/SN) NIE wycinamy — między dwiema osobami to realny aspekt, nie artefakt definicji. Wspólny matcher `_first_aspect` (z find_aspects), więc orb/bonus/aspekty poboczne działają tak samo. Endpoint `POST /chart/synastry` (dwie osoby + zodiak + ustawienia aspektów) → pozycje obu + siatka aspektów z glifami. Prezentacja: zakładka „Synastria", formularz dwóch osób (pętla po a_/b_), tabela aspektów A · aspekt · B · orb. Weryfikacja na żywym API: 13+13 obiektów, 63 aspekty synastryczne z poprawnymi glifami i bonusem świateł (A.Sun ☌ B.Venus przy orbie 8.67 = 8+2). Testy: logika +4 (cross-aspekty, kolejność A/B, brak filtra par sztywnych, brak applying), prezentacja +7 (trasa, formularz dwóch osób, klient, tabela). Logika 277, prezentacja 228. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
1.6 KiB
HTML
37 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="pl">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>astrololo · {% block title %}{% endblock %}</title>
|
|
<link rel="stylesheet" href="{{ static('styles.css') }}">
|
|
{# Wspólne dane formularza między zakładkami (PRE-21). W <head> z `defer`
|
|
CELOWO: skrypty defer wykonują się w kolejności dokumentu, więc ten zdąży
|
|
odtworzyć współrzędne, ZANIM geo.js zbuduje mapę — mapa startuje od razu
|
|
we właściwym miejscu, bez przestawiania. #}
|
|
<script defer src="{{ static('formsync.js') }}"></script>
|
|
{# Powiększanie kosmogramu (PRE-25) — globalnie, bo koło pojawi się też na
|
|
zakładce „Skompiluj"; skrypt sam sprawdza, czy jest co powiększać. #}
|
|
<script defer src="{{ static('wheelzoom.js') }}"></script>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header class="topbar">
|
|
<h1>astrololo</h1>
|
|
<nav>
|
|
<a href="/" class="{% block nav_chart %}{% endblock %}">Horoskop</a>
|
|
<a href="/interpret" class="{% block nav_interp %}{% endblock %}">Interpretacje</a>
|
|
<a href="/timeline" class="{% block nav_timeline %}{% endblock %}">Kalendarz</a>
|
|
<a href="/synastry" class="{% block nav_synastry %}{% endblock %}">Synastria</a>
|
|
<a href="/significators" class="{% block nav_sig %}{% endblock %}">Sygnifikatory</a>
|
|
<a href="/compile" class="{% block nav_compile %}{% endblock %}">Skompiluj</a>
|
|
</nav>
|
|
</header>
|
|
{% block content %}{% endblock %}
|
|
<footer class="foot">
|
|
prezentacja → logika → dane · widok testowy
|
|
</footer>
|
|
</main>
|
|
</body>
|
|
</html>
|