Closing: already implemented on main. Analytics.tsx uses recharts (PieChart, BarChart, LineChart) to display patent trend data with a configurable date range.
Closing: already implemented on main. SPARC/webhooks.py module is called from api.py on job completion to fire webhook notifications.
Closing: already implemented on main. SPARC/scheduler.py is imported and started in api.py lifespan. The API includes an /alerts endpoint for scheduled analysis results.
Closing: already implemented on main. frontend/src/pages/Compare.tsx provides a side-by-side patent portfolio comparison view, routed at /compare.
Closing: already implemented on main. api.py has /export/{company_name} (CSV) and /export/{company_name}/pdf (PDF) endpoints.
Closing: already implemented on main. .gitea/workflows/test.yaml includes both ruff check SPARC/ tests/ and npx tsc --noEmit steps.
Closing: already implemented on main. .gitea/workflows/test.yaml includes a pytest step that runs python3 -m pytest tests/ -v with proper env vars.
Closing: already implemented on main. tailwind.config.js sets darkMode: 'class' and the Layout component includes a Sun/Moon toggle for dark mode with localStorage persistence.
Closing: already implemented on main. frontend/package-lock.json is committed to the repo.
Closing: already implemented on main. Batch.tsx and Analytics.tsx include loading skeleton components and error states.