refactor(validatie): simplificatie beheerpagina + ingest run-logging#63
Conversation
- 9_beheer.py mist render_nav() (conventie-violatie); toegevoegd na CSS-injectie. - _run_in_placeholder surface nu st.success/st.error op basis van de subprocess-exit-code; voorheen werd een non-zero exit alleen in de output-tail getoond en eindigde de UI groen. - Output-buffer is een deque(maxlen=300) i.p.v. onbegrensde list, en Streamlit-paint is throttled naar ~5 Hz om de WebSocket niet te overbelasten bij rclone-progress (tienduizenden regels per run). - Status-tab doet één rglob i.p.v. twee aparte tree-walks voor PDF/MD. - assert proc.stdout vervangen door RuntimeError (assertions verdwijnen onder python -O). - ingest.py: import time naar module-top (was mid-function zonder startup-cost-rationale). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
UI smoke-test ✅Lokaal gedraaid op feature-branch met Status-tab — laadt correct, alle 5 instellingen tonen de baseline-counts uit
Sync-tab — Console — geen errors gerelateerd aan de wijzigingen (alleen een Streamlit-static 404, niet nieuw).
|
Summary
Code-simplification pass over de bootstrap-feature (PR #59-#62), gericht op één convention-violation, één silent-failure-bug en twee efficiency-issues op de beheerpagina.
9_beheer.pymisterender_nav()— gebruikers op/beheerzagen geen vaste header/nav. Toegevoegd direct na CSS-injectie._run_in_placeholdertoonde alleen[exit=N]in de output-tail; nu wordt explicietst.successofst.errorgetoond op basis van de exit-code.list[str]; vervangen doordeque(maxlen=300). Voorkomt MB-aan-string-buffer bij een 30-min bootstrap met rclone-progress.rglob()calls; éénrglob("*")met suffix-switch is voldoende.assert proc.stdoutvervangen doorRuntimeError(assertions verdwijnen onderpython -O).import timemid-function iningest.py:main()verplaatst naar module-top (PEP-8; geen startup-cost-rationale zoals bij de dotenv/db deferred imports).Buiten scope (bewust niet aangepakt — zou abstracties of feature-werk introduceren i.p.v. simplificeren): DB-pad helper extraheren,
_INSTELLINGENpubliek maken, raw SQL uitapp/weghalen, ingest-runs ook bij failure loggen.Test plan
uv run python -m pytest→ 63 passeduv run ruff format+uv run ruff check→ cleanBEHEER_ENABLED=true uv run streamlit run app/main.py, navigeer naar/beheer, verifieer:st.success(of rodest.errorbij rclone-fout)🤖 Generated with Claude Code