generated from john/python-template
1.9 KiB
1.9 KiB
Step 5 is implemented and passing ✅
What I implemented
App/bootstrap
- Added
src/transcription/app.py:create_app()factory- FastAPI lifespan startup/shutdown:
setup_logging()create_all()- ensure
upload_dirandprompt_dir - start/stop worker thread (
run_worker_loop)
- includes health router
- registers NiceGUI pages
API
- Added
src/transcription/api/__init__.py - Added
src/transcription/api/health.py:GET /healthzreturns{"status": "ok"}
UI
- Added
src/transcription/ui/upload_page.py:- upload page route
- accepted extensions helper
- upload submit helper to Step 4 service (
create_upload_job) - success/error state messaging
- Added
src/transcription/ui/jobs_page.py:- jobs list page
- job detail page
fetch_jobs()andfetch_job_detail()helpers
- Updated
src/transcription/ui/__init__.py:- explicit page registration
- NiceGUI mounted via
ui.run_with(app, mount_path="/ui", ...)
Dependencies
- Added runtime dependencies:
fastapinicegui
Tests created and filled (scaffold → fill)
tests/test_app.pytests/api/test_health.pytests/ui/test_pages_registration.pytests/ui/test_upload_page.pytests/ui/test_jobs_page.py
All scaffolded method names/docstrings were preserved and filled with executable assertions.
Validation results (strict sequence)
uv run pytest --collect-only -q✅uv run pytest -m unit -q✅uv run pytest tests/api/test_health.py -q✅uv run pytest tests/ui/test_pages_registration.py -q✅uv run pytest tests/test_app.py -q✅uv run pytest tests/ui/test_upload_page.py -q✅uv run pytest tests/ui/test_jobs_page.py -q✅uv run pytest -q✅
Full suite is green.
Note
You’ll see one warning from FastAPI/Starlette test client about httpx deprecation; it does not affect correctness and all tests pass.