Sunt diagrame conceptuale - funnel, bara de scor, matrice, cele patru cadrane, Trinity, sectoare - nu grafice de pret, deci nu trec prin svg_candles / pchart, care raman obligatorii doar pentru candele si entry/SL/TP. Agent nou, diagramist, cate unul per diagrama, fiecare cu generatorul lui in gen/selectia/; substitutia in .md o face gen/az_selectia.py, ca sa nu scrie sapte agenti in acelasi fisier. Regula de continut a agentului: fiecare cifra si eticheta trebuie sa existe in document sau in citate. Ce nu reiese din sursa e scris pe desen ca atare - ordinea celor 7 sectoare, ce se intampla sub 100% relative volume. Fara semafor rosu/verde, care nu e in sursa. Verificat cu ochii pe doua diagrame randate in browser. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
68 lines
3.5 KiB
Python
68 lines
3.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Pregateste cele 7 diagrame din 11_selectia_simbolului:
|
|
- inlocuieste <!--DIAGRAMA: spec--> cu perechea de markeri <!--SVG:cheie--><!--/SVG-->,
|
|
pastrand spec-ul intr-un fisier separat (specs/<cheie>.txt), ca sa nu-l pierdem;
|
|
- scrie .opencode/lot_diagrame.txt, cate o sarcina per diagrama.
|
|
|
|
Fiecare agent scrie DOAR gen/selectia/<cheie>.py, care produce
|
|
gen/selectia/<cheie>.svg. Substitutia in .md o face orchestratorul cu
|
|
gen/az_selectia.py, ca sa nu scrie sapte agenti in acelasi fisier.
|
|
"""
|
|
import pathlib
|
|
import re
|
|
|
|
MD = pathlib.Path("summaries/08_ANALIZA_ZILNICA/11_selectia_simbolului.md")
|
|
OUT = pathlib.Path("gen/selectia")
|
|
OUT.mkdir(parents=True, exist_ok=True)
|
|
|
|
CHEI = ["funnel", "scor", "pe_venit", "cash_flow", "cadrane", "trinity", "sectoare"]
|
|
|
|
md = MD.read_text(encoding="utf-8")
|
|
specs = re.findall(r"<!--DIAGRAMA: (.*?)-->", md, re.S)
|
|
assert len(specs) == len(CHEI), f"{len(specs)} marcaje, {len(CHEI)} chei"
|
|
|
|
for cheie, spec in zip(CHEI, specs):
|
|
(OUT / f"{cheie}.spec.txt").write_text(spec.strip() + "\n", encoding="utf-8")
|
|
md = md.replace(
|
|
f"<!--DIAGRAMA: {spec}-->", f"<!--SVG:{cheie}-->\n<!--/SVG-->", 1
|
|
)
|
|
MD.write_text(md, encoding="utf-8")
|
|
|
|
P = (
|
|
"Lucrezi in /workspace/atm-curs-dl. Scrii UN SINGUR fisier: "
|
|
"gen/selectia/{cheie}.py . Nu atinge niciun alt fisier - nici documentul .md, "
|
|
"nici generatoarele altora. "
|
|
"Ce desenezi: citeste specificatia cu cat gen/selectia/{cheie}.spec.txt . "
|
|
"Contextul in care intra diagrama: deschide "
|
|
"summaries/08_ANALIZA_ZILNICA/11_selectia_simbolului.md la marcajul "
|
|
"<!--SVG:{cheie}--> (grep -n il gaseste) si citeste 60 de linii in jur - "
|
|
"diagrama trebuie sa spuna ce spune textul de acolo, cu aceleasi cifre. "
|
|
"Fiecare cifra si fiecare eticheta din diagrama trebuie sa existe in text sau "
|
|
"in citatele lui; daca spec-ul cere ceva ce textul nu sustine, lasa afara si "
|
|
"spune in raport. Nu inventa praguri, procente sau culori cu inteles "
|
|
"(rosu/verde ca semafor) care nu sunt in sursa. "
|
|
"Cum scrii: Python fara dependinte, care construieste SVG-ul ca string si il "
|
|
"scrie in gen/selectia/{cheie}.svg . NU folosi svg_candles / pchart - alea "
|
|
"sunt pentru grafice de pret, iar asta nu e un grafic de pret. Latime 700, "
|
|
"font-family system-ui / sans-serif, font-size minim 13, text negru pe fundal "
|
|
"alb, fara umbre si fara gradienti. Culorile din celelalte generatoare, daca "
|
|
"ai nevoie de accente: #777 gri, #c00 rosu, #188a3e verde, #1a5fb4 albastru, "
|
|
"#b06000 portocaliu. Pagina se citeste si pe telefon, deci nu inghesui text "
|
|
"sub 13px si nu lasa etichete care se suprapun. "
|
|
"VERIFICARE, in sarcina ta, nu optionala: ruleaza "
|
|
".venv/bin/python gen/selectia/{cheie}.py , apoi deschide SVG-ul rezultat si "
|
|
"CITESTE-L (cat / grep) ca sa confirmi ca fiecare eticheta are coordonate in "
|
|
"interiorul panzei (viewBox), ca nu se suprapun doua texte pe aceeasi pozitie "
|
|
"si ca toate cifrele sunt cele din document. Daca doua etichete se bat, "
|
|
"rearanjeaza si ruleaza din nou. "
|
|
"Daca ajungi la ~250k tokeni, opreste-te si raporteaza. "
|
|
"INTERZIS: alt fisier, git commit, sub-agenti. "
|
|
"RAPORT scurt: ce arata diagrama, ce cifre ai folosit si de unde vin, ce ai "
|
|
"lasat afara din spec si de ce, si ce ai verificat citind SVG-ul."
|
|
)
|
|
|
|
pathlib.Path(".opencode/lot_diagrame.txt").write_text(
|
|
"\n".join(f"{c}\t{P.format(cheie=c)}" for c in CHEI) + "\n"
|
|
)
|
|
print(len(CHEI), "sarcini; markerii sunt in .md, spec-urile in gen/selectia/")
|