strategii: capitolul 0 (harta) si uneltele pentru diagrame
Harta e capitolul pe care il scriu eu: criteriul de ordonare a capitolelor si tabelul 'ce alegi cand' sunt decizii de continut, nu munca de volum. Agent nou .opencode/agents/grafician.md, unul per diagrama, ramificat pe TIP din specificatie: PRET trece obligatoriu prin svg_candles cu assert-urile din spec, CONCEPT nu. Substitutia marcajelor <!-- DIAGRAMA: cheie --> o face gen/strategii/substituie.py, nu agentii: la 37 de diagrame, altfel sapte agenti ar edita acelasi capitol. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
51
gen/strategii/substituie.py
Normal file
51
gen/strategii/substituie.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""Înlocuiește marcajele <!-- DIAGRAMA: cheie --> din strategii/*.md cu SVG-ul lui.
|
||||
|
||||
Substituția o face scriptul ăsta, nu agenții: la 37 de diagrame, dacă fiecare
|
||||
agent ar scrie în .md-ul capitolului, șapte agenți ar edita același fișier.
|
||||
|
||||
Cheia din marcaj se caută ca gen/strategii/<slug>_<cheie>.svg, unde slug-ul
|
||||
vine din numele capitolului (01_buy_doji.md -> buy_doji).
|
||||
|
||||
python3 gen/strategii/substituie.py # scrie
|
||||
python3 gen/strategii/substituie.py --check # doar raportează, nu scrie
|
||||
"""
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
CAPITOLE = sorted((ROOT / "strategii").glob("0[1-8]_*.md"))
|
||||
MARCAJ = re.compile(r"^<!-- DIAGRAMA: ([a-z0-9_]+) -->$", re.M)
|
||||
|
||||
|
||||
def slug(cale: Path) -> str:
|
||||
"""01_buy_doji.md -> buy_doji"""
|
||||
return cale.stem.split("_", 1)[1]
|
||||
|
||||
|
||||
def main() -> int:
|
||||
check = "--check" in sys.argv
|
||||
puse = lipsa = 0
|
||||
for cap in CAPITOLE:
|
||||
text = cap.read_text()
|
||||
s = slug(cap)
|
||||
|
||||
def inlocuieste(m: re.Match) -> str:
|
||||
nonlocal puse, lipsa
|
||||
svg = ROOT / "gen" / "strategii" / f"{s}_{m.group(1)}.svg"
|
||||
if not svg.exists():
|
||||
lipsa += 1
|
||||
print(f"LIPSĂ {cap.name}: {svg.name}")
|
||||
return m.group(0)
|
||||
puse += 1
|
||||
return svg.read_text().strip()
|
||||
|
||||
nou = MARCAJ.sub(inlocuieste, text)
|
||||
if nou != text and not check:
|
||||
cap.write_text(nou)
|
||||
print(f"{puse} diagrame puse, {lipsa} lipsă")
|
||||
return 1 if lipsa else 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user