etichete: cele trei care mint, si doua bug-uri de infrastructura
Cele trei, toate verificate pe ecran dupa reparatie: "minimul din care a pornit miscarea 99.80" intra sub o candela si se citea "99.8" (m2d_directie); "2 saptamani" era acoperita de caseta de citat si se citea "2 saptaman" (atmi_orizont); cele doua stopuri de la buy_doji_stop stateau la 12 px cu liniile incrucisate peste etichete, iar diagrama e tocmai despre diferenta dintre ele - acum fiecare sta la capatul propriei linii. Doua bug-uri gasite pe drum, mai grave decat ce reparam: 1. render_html trecea SVG-urile prin markdown. In mp2_pivoti_excel cele doua asteriscuri din formulele Excel (=2*E2-C2) deveneau un <em> pus peste </text>, iar parserul browserului arunca restul SVG-ului: jumatate de tabel lipsea din pagina, fara niciun semn in .md sau in audit. Acum SVG-urile sunt scoase din calea lui markdown si puse inapoi dupa, cu assert ca nu ramane niciun marcaj. 2. eticheta_libera nu citea <g transform>, deci la diagramele cu panouri compara coordonate din sisteme diferite si rata suprapuneri reale. Acum aplatizeaza translate/scale pe <g>-uri imbricate. Prima diagrama pe care a prins-o dupa reparatie e chiar una deja comisa, din capitolul 10. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -20,9 +20,13 @@ Barele sunt pe o axă comună 0 → 1 an, ca diferența să fie vizibilă; bara
|
||||
Rulare: python3 gen/strategii/atmi_orizont.py -> gen/strategii/atmi_orizont.svg
|
||||
"""
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from xml.sax.saxutils import escape
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
from eticheta_libera import eticheta_libera # noqa: E402
|
||||
|
||||
OUT = Path(__file__).with_suffix(".svg")
|
||||
|
||||
W, H = 700, 670
|
||||
@@ -114,7 +118,9 @@ def build():
|
||||
p.append(line(AX_X0 + LEN_PROP, 290, AX_X0 + LEN_PROP, 360, ORANGE, 1.2, "4 3"))
|
||||
p.append(line(AX_X0 + LEN_PROP, BAR_PROP_Y + BAR_H / 2, CARD_X,
|
||||
BAR_PROP_Y + BAR_H / 2, ORANGE, 1.0, "3 3"))
|
||||
p.append(txt(AX_X0 + 30, 312, "2 săptămâni", 11, "700", ORANGE, "start"))
|
||||
# sub bară, nu lângă ea: la y=312 ultimele litere intrau sub marginea din
|
||||
# stânga a cardului (CARD_X=160) și se citea „2 săptămân"
|
||||
p.append(txt(AX_X0 + 12, 368, "2 săptămâni", 11, "700", ORANGE, "start"))
|
||||
|
||||
p.append(f'<rect x="{CARD_X}" y="{CARD_Y}" width="{CARD_W}" height="{CARD_H}" '
|
||||
f'rx="8" fill="{WHITE}" stroke="{ORANGE}" stroke-width="1.5"/>')
|
||||
@@ -221,6 +227,13 @@ def verify(svg):
|
||||
assert not re.search(r"\.(md|txt):\d", svg), \
|
||||
"eticheta SVG nu are voie să conțină trimitere fișier:linie"
|
||||
|
||||
# 6c. etichetele cu cifre nu stau sub niciun dreptunghi desenat (cardul de
|
||||
# citat a mâncat odată „i"-ul din „2 săptămâni"). Fundalul paginii se scoate:
|
||||
# e un dreptunghi cât toată pânza, altfel iese sub orice etichetă.
|
||||
eticheta_libera(re.sub(r'<rect x="0" y="0"[^/]*/>', "", svg), "atmi_orizont",
|
||||
{"2 săptămâni", "TP1 atins — aproximativ un an mai târziu"},
|
||||
rects=True, segmente=False)
|
||||
|
||||
# 7. fără cifre de preț inventate
|
||||
for interzis in ("$", "USD", "SL ", "intrare "):
|
||||
assert interzis not in svg, f"nu ar trebui să apară preț: {interzis!r}"
|
||||
|
||||
Reference in New Issue
Block a user