- Migrate settings.py to Pydantic V2 (SettingsConfigDict, validation_alias) - Update config models to use @field_validator with @classmethod - Replace deprecated datetime.utcnow() with datetime.now(timezone.utc) - Migrate FastAPI app from @app.on_event to lifespan context manager - Implement comprehensive rate limiting middleware with: * Endpoint-specific rate limits (login: 5/min, register: 3/min) * IP-based and user-based tracking * Authenticated user multiplier (2x limits) * Bypass paths for health, docs, static, websocket endpoints * Rate limit headers in responses - Add 13 comprehensive tests for rate limiting (all passing) - Update instructions.md to mark completed tasks - Fix asyncio.create_task usage in anime_service.py All 714 tests passing. No deprecation warnings.
425 lines
10 KiB
JSON
425 lines
10 KiB
JSON
{
|
|
"pending": [
|
|
{
|
|
"id": "31c7cb94-fa71-40ed-aa7b-356ecb6e4332",
|
|
"serie_id": "workflow-series",
|
|
"serie_name": "Workflow Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-23T19:56:51.755530Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "6a3d347b-0af4-4ed9-8a07-13fc7e8ac163",
|
|
"serie_id": "series-2",
|
|
"serie_name": "Series 2",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.465503Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "fe1b2f0e-e1e1-400e-8228-debdde9b4de0",
|
|
"serie_id": "series-1",
|
|
"serie_name": "Series 1",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.462159Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "7fac71fe-9902-4109-a127-31f4f7e10e8c",
|
|
"serie_id": "series-0",
|
|
"serie_name": "Series 0",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.457543Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "d17b1756-a563-4af0-a916-2049b4ccf5a9",
|
|
"serie_id": "series-high",
|
|
"serie_name": "Series High",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-23T19:56:51.216398Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "f3b1fde7-a405-427d-ac41-8c43568aa2f3",
|
|
"serie_id": "test-series-2",
|
|
"serie_name": "Another Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-23T19:56:51.189202Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "2cf0ef50-f4db-4c56-a3fb-9081a2e18eec",
|
|
"serie_id": "test-series-1",
|
|
"serie_name": "Test Anime Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": "Episode 1"
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.161055Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "aa579aab-5c97-486a-91e6-54c46231b90a",
|
|
"serie_id": "test-series-1",
|
|
"serie_name": "Test Anime Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 2,
|
|
"title": "Episode 2"
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.161286Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "55e34b18-9825-4f70-86c4-8d590356316a",
|
|
"serie_id": "series-normal",
|
|
"serie_name": "Series Normal",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.218456Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "12253698-64ea-4fc8-99c2-5ae0d4ed6895",
|
|
"serie_id": "series-low",
|
|
"serie_name": "Series Low",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "low",
|
|
"added_at": "2025-10-23T19:56:51.220209Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "ae30a3d7-3481-4b3f-a6f9-e49a5a0c8fe5",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.405934Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "fae088ee-b2f1-44ea-bbb9-f5806e0994a6",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.490971Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "9c85e739-6fa0-4a92-896d-8aedd57618e0",
|
|
"serie_id": "invalid-series",
|
|
"serie_name": "Invalid Series",
|
|
"episode": {
|
|
"season": 99,
|
|
"episode": 99,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.546058Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "45829428-d7d5-4242-a929-4c4b71a4bec6",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.571105Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "672bf347-2ad7-45ae-9799-d9999c1d9368",
|
|
"serie_id": "series-1",
|
|
"serie_name": "Series 1",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.614228Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "e95a02fd-5cbf-4f0f-8a08-9ac4bcdf6c15",
|
|
"serie_id": "series-2",
|
|
"serie_name": "Series 2",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.615864Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "c7127db3-c62e-4af3-ae81-04f521320519",
|
|
"serie_id": "series-0",
|
|
"serie_name": "Series 0",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.616544Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "d01e8e1f-6522-49cd-bc45-f7f28ca76228",
|
|
"serie_id": "series-4",
|
|
"serie_name": "Series 4",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.617214Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "ee067702-e382-4758-ae83-173a2bc2a8a3",
|
|
"serie_id": "series-3",
|
|
"serie_name": "Series 3",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.617883Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "3159eadc-8298-4418-ac78-a61d2646f84c",
|
|
"serie_id": "persistent-series",
|
|
"serie_name": "Persistent Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.680519Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "4e7a25db-819f-4782-bd59-01d443497131",
|
|
"serie_id": "ws-series",
|
|
"serie_name": "WebSocket Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.731180Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "2f6b4857-6cc9-43ca-bb21-b55e8e4931f8",
|
|
"serie_id": "pause-test",
|
|
"serie_name": "Pause Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-23T19:56:51.890630Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
}
|
|
],
|
|
"active": [],
|
|
"failed": [],
|
|
"timestamp": "2025-10-23T19:56:51.891251+00:00"
|
|
} |