Lectii text: extract_text_lessons.py + Modul 3 #9 sumarizata

extract_audio.py sarea peste lectiile fara video. Gasita una in curriculum-ul
accesibil (Modul 3 #9 - expirari de optiuni, witching, 0DTE), cu 4847 de
caractere de continut real. Era numarata gresit ca acoperita.

Plus:
- render_html.py: index grupat pe module cu titlul H1 al fiecarei pagini
- render_html.py: garda pe liniile goale din <svg> (rup blocul HTML tacut)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1
This commit is contained in:
Claude Agent
2026-09-12 17:57:02 +00:00
parent 69710bead5
commit ff25f3d9c3
8 changed files with 831 additions and 67 deletions

View File

@@ -5,14 +5,14 @@ Pipeline personal de transcriere + sumarizare pentru cursul de trading ATM
pe Gitea. Pagină publicată (Tailscale, doar în tailnet):
**https://claude-agent.tailf7372d.ts.net/atm/index.html**
## Status: curriculum de bază 100% acoperit (52/52 lecții posibile)
## Status: curriculum de bază 100% acoperit (53/53 lecții accesibile)
| Modul | Lecții | Status |
|---|---|---|
| Modulul 1 | 10 | ✅ |
| Catalizatori economici | 8 | ✅ |
| Modulul 2 | 16 | ✅ |
| Modulul 3 | 6 | ✅ |
| Modulul 3 | 6 (5 video + 1 text) | ✅ |
| Modulul 4 | 4 | ✅ |
| Analiză Fundamentală | 9 | ✅ |
@@ -107,6 +107,29 @@ acolo un duplicat costă ore, nu minute.
- `render_html.py`: adăugat extensia `toc`, ca headingurile să primească
`id` — fără ea link-urile din `INDEX_TEMATIC.md` n-au unde ateriza.
## Lecții FĂRĂ video — `extract_text_lessons.py`
`extract_audio.py` caută doar un MP4, deci sare peste lecțiile scrise.
Găsită una singură în curriculum-ul accesibil: **Modul 3 / #9 — Alte tipuri
de catalizatori** (expirări de opțiuni, witching, 0DTE). Avea 4.847 de
caractere de conținut real, nu era un quiz gol. Era numărată greșit ca
"acoperită" în versiunea anterioară a acestui fișier.
Conținutul vine din câmpul `html` al `/api/membership/lecture/<id>`,
împreună cu tot CSS-ul paginii — scriptul curăță `<style>`/`<script>`, apoi
tagurile. Rulează-l după `extract_audio.py`, pe aceleași module:
`\.venv/bin/python extract_text_lessons.py [--only "<modul>"]`
**Rulează-l și pe Q&A / Analiză Zilnică** înainte să declari un modul
complet — nu presupune că tot ce e acolo are video.
## Gardă nouă în `render_html.py`
O linie goală în interiorul unui `<svg>` face python-markdown să rupă blocul
HTML, iar browserul aruncă restul elementelor — diagrama se randează pe
jumătate, **fără nicio eroare**. S-a întâmplat de două ori (a doua oară în
2026-09-12, ștergând un `<text>` și lăsând linia cu spații). `render_html.py`
crapă acum cu numărul liniei în loc să publice o diagramă stricată.
Verificat că garda chiar prinde cazul.
## Ce a rămas — blocat de acces (`purchase_required`)
Modul 5 (7), Modul 6 (6), Master ATM 1-4 (4+3+5+3=15) = **28 lecții**.
Dacă userul primește acces: rulează din nou