From 5318de670f04f09e0a661b99703e37668fb68f58 Mon Sep 17 00:00:00 2001 From: Yuyan Date: Sun, 19 Apr 2026 09:03:40 +0800 Subject: [PATCH] feat: improve generation analytics and maintenance --- README.md | 5 +- admin-frontend/src/views/MyStories.vue | 153 ++++++++- backend/.env.example | 2 + backend/app/api/stories.py | 36 +- backend/app/core/celery_app.py | 8 + backend/app/core/config.py | 20 +- backend/app/schemas/story_schemas.py | 39 +++ backend/app/services/generation_jobs.py | 316 ++++++++++++++++-- backend/app/services/story_service.py | 50 +++ backend/app/tasks/audio_cache.py | 29 ++ backend/app/tasks/generation_maintenance.py | 30 ++ backend/tests/test_audio_cache.py | 65 ++++ backend/tests/test_generation_jobs.py | 254 +++++++++++++- docs/planning/demo-validation-log.md | 2 + .../planning/week-2-to-4-execution-backlog.md | 5 + docs/planning/week-4-sprint-review.md | 8 +- .../unified-generation-workflow-prd.md | 6 +- docs/technical/generation-job-state.md | 13 +- frontend/src/types/generation.ts | 34 ++ frontend/src/views/MyStories.vue | 127 ++++++- scripts/demo_smoke.sh | 10 + 21 files changed, 1155 insertions(+), 57 deletions(-) create mode 100644 backend/app/tasks/audio_cache.py create mode 100644 backend/app/tasks/generation_maintenance.py create mode 100644 backend/tests/test_audio_cache.py diff --git a/README.md b/README.md index a09b77c..44dbdbf 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,8 @@ npm run build | GET | `/api/generations/jobs/{job_id}` | 查询生成任务事件流 | | GET | `/api/generations/{story_id}/jobs` | 查询故事生成与重试历史 | | GET | `/api/generations/{story_id}/provider-stats` | 查询 Provider 调用聚合指标 | -| GET | `/api/generations/provider-analytics` | 查询当前用户跨故事 Provider 运营摘要 | +| GET | `/api/generations/ops-summary` | 查询最近任务运行概览、失败摘要和超时阈值 | +| GET | `/api/generations/provider-analytics` | 查询当前用户跨故事 Provider 运营摘要,支持 `days` / `capability` 筛选 | | GET | `/api/audio/{story_id}/status` | 查询音频缓存状态,不触发生成 | | DELETE | `/api/audio/{story_id}/cache` | 清理故事音频缓存 | | GET | `/api/stories` | 故事列表 | @@ -164,4 +165,4 @@ npm run build ## 当前取舍 -仓库只保留一个 Docker Compose 入口:`docker-compose.yml`。生产部署、HA 演练、旧 Claude 原型和历史归档已从主仓库移除,避免干扰当前求职演示主线。 +仓库只保留一个 Docker Compose 入口:`docker-compose.yml`。生产部署、HA 演练、旧 Claude 原型和历史归档已从主仓库移除,避免干扰当前求职演示主线。音频缓存默认按 `STORY_AUDIO_CACHE_TTL_DAYS=30` 做后台清理,Celery beat 会每日执行一次 prune;生成任务默认按 `GENERATION_JOB_STALE_MINUTES=60` 判定卡住,后台会定时自动收敛为失败态,避免故事长期显示“永远在跑”。 diff --git a/admin-frontend/src/views/MyStories.vue b/admin-frontend/src/views/MyStories.vue index 4efaf6c..15743ec 100644 --- a/admin-frontend/src/views/MyStories.vue +++ b/admin-frontend/src/views/MyStories.vue @@ -1,5 +1,5 @@