- BT a mutat login-ul (09.2026): go.bancatransilvania.ro face 302 spre
marketing; formularul e pe goapp.bancatransilvania.ro, acelasi tab, fara popup.
- Daca formularul nu apare: eroare explicita cu URL/titlu + screenshot/HTML.
- scripts/check_login_page.py: verifica pagina de login fara credentiale.
- Download: asteapta documentul nou din "Recente"; export gol -> [SKIP], nu timeout.
- Screenshot la eroare facut inainte de oprirea Playwright.
- opencode.json: agentii opencode nu pot citi .env.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DxPhZABSUf1RJXRWtwecqC
Scraper-ul e pornit ca subproces de telegram_trigger_bot.py cu
env=os.environ.copy(). Bot-ul isi incarca .env la pornire, deci copia
contine parola veche; load_dotenv() din config.py nu suprascrie o
variabila deja existenta, asa ca dupa schimbarea parolei scraper-ul
trimitea in continuare parola veche - BT respingea login-ul, push-ul 2FA
nu mai pleca si ramaneam blocati 300s in "Timeout 2FA".
- config.py: BTGO_USERNAME/BTGO_PASSWORD se citesc direct din .env
(dotenv_values), restul variabilelor raman din environment ca sa nu
strice TELEGRAM_MESSAGE_ID / SEND_AS_ZIP transmise de bot la fiecare run.
- btgo_scraper.py: detectie a mesajului de eroare de pe pagina de login in
bucla de asteptare 2FA -> esec rapid cu motivul real, plus screenshot
de diagnostic (si la respingere, si la timeout, cat browser-ul e viu).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbuWZ699EFeYfPA3nNraa9
Pe prod scraper-ul ruleaza ca serviciu in Session 0 (fara GPU): Chromium
randeaza software. Reducerea viewport-ului de la 1920x1080 la 1366x768
inseamna ~50% mai putini pixeli de rasterizat. 1366 e sigur peste pragul
de ~1100px sub care BT scoate splash-ul "redirect to store".
Adaugate flag-uri care taie overhead inutil fara GPU: --disable-gpu,
--disable-dev-shm-usage, --disable-extensions, --disable-background-networking,
--disable-renderer-backgrounding, --disable-features=Translate.
Verificat e2e pe site-ul BT live la 1366px (formular login real, fara
splash) si printr-o rulare completa prin bot: 5 conturi, 5 CSV-uri.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pe masina prod (Session 0, randare software) aplicatia Angular de la
goapp.bancatransilvania.ro ramane lenta pe splash-ul "Aplicatia ta de
banking business" si uneori depaseste 20s -> input#user nu apare.
Diagnostic confirmat: URL/titlu corecte, body gol, zero input-uri.
Asteptam load state, apoi input#user cu timeout 60s; daca tot nu apare,
reincarcam popup-ul o data si mai incercam. Worst case ~3 min, sub
timeout-ul de 2FA.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
context.route activeaza interceptarea cererilor: fiecare request al paginii
era pus pe pauza pentru un round-trip catre script. Pe masina prod (sync API,
Session 0) asta adauga latenta la fiecare request si incetinea vizibil
incarcarea dashboard-ului post-2FA. Blocarea nici nu rezolva CPU-ul - acela
vine din randarea software in Session 0, nu din trackere. Net: cost fara
beneficiu, deci o eliminam.
read_accounts: time.sleep(3) fix inlocuit cu wait_for_selector pe
fba-account-details-card (45s). Pe masina lenta lista nu apuca sa randeze
in 3s -> gasea 0 conturi. Daca tot 0, capteaza diagnostic (URL, text,
tag-uri fba-*, screenshot).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Cand wait_for_selector('input#user') da timeout, logam URL, titlu, text
vizibil, lista de input-uri si salvam screenshot full_page - cat browser-ul
e inca viu. Necesar ca sa distingem intre WAF block, randare lenta si
selector schimbat, fara sa mai ghicim.
Handler-ul de blocare trackere inghite acum TargetClosedError la shutdown,
ca sa nu mai spameze log-ul cu "Future exception was never retrieved" si
sa ascunda eroarea reala.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pagina go.bancatransilvania.ro are tracking activ (Google Analytics,
LinkedIn, Facebook, omniconvert) care face request-uri continue 30+ sec
dupa load. wait_until='networkidle' nu se atinge niciodata si page.goto
face timeout dupa 30s.
Foloseste 'domcontentloaded' si asteapta explicit link-ul Login. Elimin
si fallback-ul mort cu networkidle din login() popup (15s wait inutil
dupa input#user — daca selectorul lipseste, networkidle nici el nu vine).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
In Windows Service (session 0, fara display) viewport-ul setat pe context
Playwright nu se propaga la fereastra fizica. BT afiseaza splash de redirect
sub ~1100px, ascunzand input#user si provocand timeout la wait_for_selector.
Adauga --window-size in args ca sa forteze dimensiunea la nivel de SO.
Ignora si .claude/ si .playwright-mcp/ (artefacte tooling local).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
BT a adaugat un guard de viewport: sub ~1200px, pagina de login afiseaza
un splash 'redirect to store' si ascunde formul real (#user / #password)
intr-un container .d-none.d-md-flex cu display:none.
Inainte, viewport-ul era setat doar pe pagina parinte; popup-ul deschis
prin expect_popup() folosea viewport-ul default (~1280x720) si declansa
splash-ul, ceea ce ducea la timeout pe wait_for_selector('input#user').
Fix: cream un context cu viewport 1920x1080, iar popup-urile mostenesc
automat viewport-ul context-ului.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Pagina de login s-a mutat la goapp.bancatransilvania.ro (Angular SPA)
care face un API call inainte sa randeze formularul. Inlocuieste
time.sleep(2) cu wait_for_selector('input#user', timeout=15000).
Actualizeaza si numele link-ului din LOGIN in Login.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Banner-ul GDPR aparea cu intarziere dupa page load si bloca click-ul.
Adaugat wait explicit, mai multe strategii de text, force click si
fallback JavaScript pentru eliminarea banner-ului din DOM.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Modificari principale:
- Noul flux download: expand -> tranzactii -> CSV -> Genereaza -> download
- Detectie inteligenta buton Tranzactii (evita butonul Delete)
- Verificare daca primul cont e deja expandat inainte de click
- Selectie conturi cu 6 strategii fallback + debug logging
- Handler pentru cookie consent "Accept toate" si "Am inteles"
- Screenshot automat la erori de selectie cont
Documentatie:
- README: sectiuni noi pentru inregistrare Playwright si testare manuala
- CLAUDE.md: selectori actualizati pentru noul UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rezolva problema cand selectoarele BT se schimba - acum incearca
multiple strategii pentru a gasi username, password si submit button.
Imbunatateste si gestionarea GDPR cookie banner.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>