Files
atm-curs-dl/.opencode/mk_lot_diagrame.py
Claude Agent 3a6da7a916 cele 7 diagrame din 11_selectia
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
2026-09-18 16:52:01 +00:00

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/")