This issue is already resolved in main. Both Batch and Analytics pages implement skeleton loaders during data fetching (isLoading state with skeleton cards and charts) and user-friendly error…
This issue is already resolved in main. Analysis endpoints accept an optional model field/parameter (e.g., openai/gpt-4o) that overrides the server-configured default. A /models endpoint…
This issue is already resolved in main. The frontend uses openapi-typescript to auto-generate src/api/schema.d.ts from the FastAPI OpenAPI spec. Scripts generate and generate:local are in…
This issue is already resolved in main. The /jobs endpoint supports cursor-based pagination with limit and cursor query parameters. The response includes a next_cursor field for fetching…
This issue is already resolved in main. storage.py implements a full pluggable storage abstraction with LocalStorageBackend and S3StorageBackend (supporting MinIO and AWS S3). Configuration…
This issue is already resolved in main. Both CI workflows run ruff check SPARC/ tests/ for Python linting and npx tsc --noEmit for TypeScript type checking.
This issue is already resolved in main. frontend/package-lock.json is tracked in git and committed to the repository.
This issue is already resolved in main. Both build.yaml and test.yaml CI workflows include a pytest stage that runs python3 -m pytest tests/ -v --tb=short -x with appropriate environment…
This issue is already resolved in main. types.py already declares patent_id: str on the Patent dataclass.
This issue is already resolved in main. analyze_single_patent() in analyzer.py now checks if the PDF exists on disk, and if not, attempts to download it automatically from the cached PDF link…