Files
diary-news/docs/acceptance.md
Mavis 60b062daf2 feat: initial MVP - FastAPI backend + Vue3 frontend + docker-compose
- backend: FastAPI + SQLAlchemy 2.0(async) + asyncpg + Alembic
- 7 API routes: auth/me/articles/sources/bookmarks/subscriptions/admin
- models: User/Source/Article/Bookmark/Subscription/ApiToken
- services: RSS fetcher (feedparser) + Tencent TMT translator with quota + cache + local NLLB fallback
- workers: APScheduler + asyncio pipeline (fetch -> dedupe -> insert -> translate)
- seed scripts: create_user, seed_sources (5 RSS: Reuters/BBC/Al Jazeera/NHK/DW)
- frontend: Vue 3 + Vite + Naive UI + Pinia + vue-router
- pages: Login, Feed (24h), ArticleDetail, Sources, Bookmarks, AdminSources
- deploy: docker-compose (postgres/redis/api/worker/frontend/caddy)
- docs: README, DEPLOY, architecture, acceptance
2026-06-07 21:51:01 +08:00

2.4 KiB

MVP 验收清单(Phase 1)

部署完成后,逐项验证;任何一项失败先看 DEPLOY.md 的 FAQ + docker compose logs

0. 服务健康

  • docker compose ps 所有服务 running
  • curl http://YOUR_IP/api/v1/healthz{"status":"ok"}
  • curl http://YOUR_IP/ → 返回 HTML(SPA 入口)

1. 账号与登录

  • docker compose exec api python -m app.scripts.create_user --username owner --password XXXX
  • 浏览器打开首页 → 登录页 → 用 owner 登录成功
  • 侧边栏显示 "owner (owner)"
  • 顶栏翻译配额显示 "翻译: 0 / 5,000,000 (0.0%)"

2. 源管理

  • docker compose exec api python -m app.scripts.seed_sources
  • 进入 "源管理(Admin)" 页,看到 5 条源(Reuters/BBC/Al Jazeera/NHK/DW)
  • "源健康" 页 5 个源都在
  • 某个源点 "立即抓取" → message 提示 "已加入抓取队列"
  • 等 1~2 分钟,看 worker 日志:docker compose logs -f worker | grep -E "fetch|articles"

3. 文章采集与展示

  • "24h 列表" 页有文章(数量与抓取量相关,首次可能 10~50 条)
  • 卡片显示:源标签 / 语种 / 发布时间 / 英文标题 / 中文标题
  • 顶栏配额数字 > 0(说明翻译已消耗字符)
  • 点开文章详情:
    • 原文 + 译文双卡片
    • 翻译状态为 "ok"
    • 翻译引擎为 "tencent"
    • 点 "原文链接 ↗" 跳到源站
  • 部分文章可能还是 "pending" / "partial",等下个 worker 周期

4. 收藏

  • 文章详情点 "☆ 收藏" → 变 "★ 已收藏"
  • 侧边栏 "收藏" 看到刚才那篇
  • 列表页对应卡片有 star 标记(后续可加视觉)

5. 失败降级验证(可选)

  • 把腾讯云 secret 配错 → 重启 worker → 下次抓取会触发翻译失败
  • 文章状态变为 "failed",详情页有黄色提示
  • 改为正确 secret → 点 "重译" → 成功

6. 调度器验证

  • docker compose logs -f worker → 应看到 "scheduler started with N jobs"
  • 看到 "scheduled every "
  • 等过 fetch_interval_min 分钟后,日志有新的 "source X: N new articles"

7. 配额监控(可选)

  • curl -H "Authorization: Bearer $TOKEN" http://YOUR_IP/api/v1/me/usage
  • 看到 used_chars > 0

8. 验收完成

  • 全 7 项通过 → Phase 1 验收
  • 任意失败 → 看 docker compose logs <service> + DEPLOY.md FAQ
  • 性能 / 体验改进 → 进 Phase 2