MODUL 5: 10 reparatii pe cele doua workshop-uri, dupa verificare
Gasite de un verificator care nu scrisese documentele, aplicate de un corector separat de amandoi. Tiparul dominant, patru din zece: inferenta autorului pusa in coloana „rostit de curs" a diagramei rani_masti. Cuvantul „stop" nu apare deloc in transcrierea workshop-ului 5 (singura ocurenta e „Recording stopped"), dar „muti stopul" statea in negru, ca si cum l-ar fi spus cursul. Mutate in albastru, ca derivatii. Cea mai utila: emendarea „o sa va [im]bolnaviti" era gresita. Transcrierea spune „o sa va vindecati in timp de chestia asta", iar asta e sensul corect - „a se vindeca DE ceva" = o sa va treaca. Workshop 1 o confirma: „o sa va plictisiti si nu o sa mai vreti sa faceti day trading". Citatul e pus la loc neatins. Restul: titlu de carte inventat, „un minut" care nu e in sursa, ordinea grupelor data ca a cursului, o enumerare de trei acolo unde sursa numara doua, si o sageata de diagrama care cadea pe „comportament" desi eticheta spunea „gand" (acum legata prin assert de caseta tinta). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -33,6 +33,11 @@ LANT2 = [("gând", '„iar m-a trădat piața"'),
|
||||
("emoție", "furie"),
|
||||
("comportament", "intri în revanșă"),
|
||||
("rezultat", "a doua pierdere")]
|
||||
BOX2_X = [14 + 172 * k for k in range(len(LANT2))]
|
||||
BOX2_W = 152
|
||||
# caseta în care intră săgeata care coboară din „reprezentare mentală"
|
||||
ARROW_TARGET = 0
|
||||
X_ARR = BOX2_X[ARROW_TARGET] + BOX2_W / 2
|
||||
|
||||
|
||||
def lant_rana() -> str:
|
||||
@@ -70,18 +75,19 @@ def lant_rana() -> str:
|
||||
f'{fits("schimbă lentila", 140, 11)}</text>',
|
||||
f'<line x1="534" y1="88" x2="542" y2="88" stroke="{RED}" stroke-width="1.5"/>']
|
||||
# coborârea pe rândul doi
|
||||
p += [f'<line x1="365" y1="138" x2="365" y2="162" stroke="{LINE}" stroke-width="1.5"/>',
|
||||
f'<path d="M 361 156 L 365 164 L 369 156 Z" fill="{LINE}"/>']
|
||||
p += [f'<path d="M 210 138 L 210 152 L {X_ARR} 152 L {X_ARR} 162"'
|
||||
f' fill="none" stroke="{LINE}" stroke-width="1.5"/>',
|
||||
f'<path d="M {X_ARR - 4} 156 L {X_ARR} 164 L {X_ARR + 4} 156 Z" fill="{LINE}"/>']
|
||||
for k, (nume, ex) in enumerate(LANT2):
|
||||
x = 14 + 172 * k
|
||||
p += [f'<rect x="{x}" y="170" width="152" height="54" fill="{FILL}"'
|
||||
x = BOX2_X[k]
|
||||
p += [f'<rect x="{x}" y="170" width="{BOX2_W}" height="54" fill="{FILL}"'
|
||||
f' stroke="{LINE}" stroke-width="1"/>',
|
||||
f'<text x="{x + 10}" y="190" fill="{INK}" style="font-weight:bold">'
|
||||
f'{fits(nume, 132)}</text>',
|
||||
f'{fits(nume, BOX2_W - 20)}</text>',
|
||||
f'<text x="{x + 10}" y="212" fill={chr(34)}{ORANGE}{chr(34)}'
|
||||
f' font-size="11">{fits(ex, 132, 11)}</text>']
|
||||
if k < len(LANT2) - 1:
|
||||
p += [f'<line x1="{x + 154}" y1="197" x2="{x + 170}" y2="197"'
|
||||
p += [f'<line x1="{x + BOX2_W + 2}" y1="197" x2="{x + 170}" y2="197"'
|
||||
f' stroke="{LINE}" stroke-width="1.5"/>',
|
||||
f'<path d="M {x + 164} 193 L {x + 172} 197 L {x + 164} 201 Z"'
|
||||
f' fill="{LINE}"/>']
|
||||
@@ -98,21 +104,25 @@ def lant_rana() -> str:
|
||||
|
||||
|
||||
# ------------------------------------------------- 2. rană -> mască -> greșeală
|
||||
# col. 4: True = legătura cu piața e rostită în transcriere; False = completarea mea
|
||||
# col. 4 = ce e rostit în transcriere (negru); col. 5 = derivația mea pe execuție
|
||||
# (albastru). Oricare poate fi "" — la abandon cursul nu spune nimic pe cont.
|
||||
RANI = [("respingere", "fugarul", "de obicei tatăl",
|
||||
"închizi tranzacția mai devreme; fugi de reguli", True),
|
||||
"închizi tranzacția mai devreme; fugi de reguli", ""),
|
||||
("abandon", "dependentul", "de obicei mama",
|
||||
"nu intri până nu confirmă altcineva setup-ul", False),
|
||||
"", "nu intri până nu confirmă altcineva setup-ul"),
|
||||
("umilire", "masochistul", "de obicei mama",
|
||||
"te autosabotezi; suporți pierderea mai mult decât trebuie", True),
|
||||
"te autosabotezi", "suporți pierderea mai mult decât trebuie"),
|
||||
("trădare", "dominatorul", "părintele de sex opus",
|
||||
"schimbi strategia la prima serie proastă: „m-a trădat piața”", True),
|
||||
"nu ai încredere în nicio strategie; o serie proastă = trădare",
|
||||
"de aici schimbatul strategiei după o serie proastă"),
|
||||
("nedreptate", "rigidul", "părintele mai autoritar",
|
||||
"vrei să ai dreptate — muți stopul; overtrading „ca să meriți”", True)]
|
||||
"vrei să ai dreptate; overtrading „ca să meriți”",
|
||||
"de aici mutatul stopului ca să nu greșești")]
|
||||
ROW_H = 40
|
||||
|
||||
|
||||
def rani_masti() -> str:
|
||||
h = 76 + 34 * len(RANI) + 58
|
||||
h = 76 + ROW_H * len(RANI) + 58
|
||||
p = [f'<svg viewBox="0 0 700 {h}" xmlns="http://www.w3.org/2000/svg"'
|
||||
' style="width:100%;height:auto;font:12px sans-serif">',
|
||||
f'<text x="14" y="22" fill="{INK}" style="font-weight:bold">Cele cinci'
|
||||
@@ -122,25 +132,26 @@ def rani_masti() -> str:
|
||||
f'<text x="212" y="46" fill="#44576e" font-size="10">PĂRINTE ASOCIAT</text>',
|
||||
f'<text x="344" y="46" fill="#44576e" font-size="10">CE FACE PE CONT</text>',
|
||||
f'<line x1="14" y1="52" x2="686" y2="52" stroke="{LINE}" stroke-width="1"/>']
|
||||
for k, (rana, masca, par, ef, din_curs) in enumerate(RANI):
|
||||
y = 74 + 34 * k
|
||||
col = INK if din_curs else BLUE
|
||||
for k, (rana, masca, par, negru, albastru) in enumerate(RANI):
|
||||
y = 74 + ROW_H * k
|
||||
p += [f'<text x="20" y="{y}" fill="{INK}" font-size="11"'
|
||||
f' style="font-weight:bold">{fits(rana, 92, 11)}</text>',
|
||||
f'<text x="118" y="{y}" fill="{ORANGE}" font-size="11">'
|
||||
f'{fits(masca, 88, 11)}</text>',
|
||||
f'<text x="212" y="{y}" fill="{MUTED}" font-size="10">'
|
||||
f'{fits(par, 126, 10)}</text>',
|
||||
f'<text x="344" y="{y}" fill="{col}" font-size="11">'
|
||||
f'{fits(ef, 340, 11)}</text>']
|
||||
f'{fits(par, 126, 10)}</text>']
|
||||
randuri = [(t, c) for t, c in ((negru, INK), (albastru, BLUE)) if t]
|
||||
for j, (txt, col) in enumerate(randuri):
|
||||
p.append(f'<text x="344" y="{y + 14 * j}" fill="{col}"'
|
||||
f' font-size="11">{fits(txt, 340, 11)}</text>')
|
||||
if k < len(RANI) - 1:
|
||||
p.append(f'<line x1="14" y1="{y + 11}" x2="686" y2="{y + 11}"'
|
||||
p.append(f'<line x1="14" y1="{y + 21}" x2="686" y2="{y + 21}"'
|
||||
f' stroke="{LINE}" stroke-width="0.5" stroke-opacity="0.6"/>')
|
||||
yb = 76 + 34 * len(RANI) + 18
|
||||
yb = 76 + ROW_H * len(RANI) + 18
|
||||
p += [f'<text x="14" y="{yb}" fill="{INK}" font-size="11">'
|
||||
f'{fits("Coloana a patra, în negru, e rostită în transcriere; rândul albastru (abandon) e completarea mea —", 672, 11)}</text>',
|
||||
f'{fits("În coloana a patra, rândul negru e rostit în transcriere; rândul albastru de sub el e derivația mea pe execuție.", 672, 11)}</text>',
|
||||
f'<text x="14" y="{yb + 16}" fill="{MUTED}" font-size="11">'
|
||||
f'{fits("cursul descrie rana de abandon pe relații și dependențe, nu pe execuție. Poți fi în mai multe, cu una dominantă.", 672, 11)}</text>',
|
||||
f'{fits("La abandon cursul vorbește doar de relații și dependențe, nu de cont. Poți fi în mai multe răni, cu una dominantă.", 672, 11)}</text>',
|
||||
'</svg>']
|
||||
return "\n ".join(p)
|
||||
|
||||
@@ -232,8 +243,14 @@ assert len(sub3) == 2, f"linia de 3 ani nu mai taie 2 etape, ci {len(sub3)}"
|
||||
assert len(ETAPE) == 6, "titlul spune șase etape"
|
||||
# 4. textul spune „cinci răni", fiecare cu exact o mască
|
||||
assert len(RANI) == 5 and len({r[1] for r in RANI}) == 5, "5 răni, 5 măști distincte"
|
||||
# 5. legenda spune că exact un rând e completarea mea
|
||||
assert sum(1 for r in RANI if not r[4]) == 1, "legenda vorbește de un singur rând albastru"
|
||||
# 5. fiecare rană spune ceva pe cont, din curs sau de la mine; „muți stopul" nu
|
||||
# poate sta în negru (cuvântul „stop" nu apare în transcrierea workshopului)
|
||||
assert all(r[3] or r[4] for r in RANI), "o rană fără nimic pe coloana de cont"
|
||||
assert not any("stop" in r[3] for r in RANI), "«stop» nu e rostit în transcriere"
|
||||
# 5b. săgeata care coboară din reprezentarea mentală cade pe caseta „gând"
|
||||
_i = [n for n, _ in LANT2].index("gând")
|
||||
assert _i == ARROW_TARGET and BOX2_X[_i] < X_ARR < BOX2_X[_i] + BOX2_W, \
|
||||
f"săgeata la x={X_ARR} nu cade pe caseta „gând” ({BOX2_X[_i]}…{BOX2_X[_i] + BOX2_W})"
|
||||
# 6. niciun SVG nu are linie goală (python-markdown ar rupe blocul)
|
||||
for name, svg in svgs.items():
|
||||
assert "\n\n" not in svg, f"linie goală în {name}"
|
||||
|
||||
Reference in New Issue
Block a user