Skip to content

chore(vocab): source_type 与表名重构为 article-* 通用语义 #42

Description

@bob798

背景

V0.8(PR #47)把 /practice 重命名为 /articles「文章学习」,但只动了路由前缀与前端文案。后端 source_type='bbc_eaw'bbc_eaw_episodes 表名仍是 BBC 专属命名。

未来接入 VOA 等其他文章系列时,这套命名会语义错位。需要重构为通用的 article-* 模型。

参考:

范围

  • 数据层vocabulary.source_type 枚举值 bbc_eawarticle,新增 series 字段记录具体来源(bbc_eaw / voa / ...)
  • 表名bbc_eaw_episodesarticle_episodes,新增 series 字段
  • 路由/bbc-eaw/*/articles/episodes/*(或类似),保持 RESTful 命名
  • 数据迁移脚本:保证存量 vocabulary 与 episode 数据无损迁移
  • 生词本前端:tag chip 由 series 字段派生,去除 source_type 硬编码 mapping

⚠️ 顺手清理:/practice/* alias 移除

这一项和本 issue 在同一个 PR 里完成(势必都要碰 articles router 与 main.py):

  • 移除 main.py 中的 alias 注册:app.include_router(articles_router, prefix="/practice", include_in_schema=False)
  • 移除 main.py API_PREFIXES 里的 "practice/"
  • 移除 V0.8 残留的前端 API.PRACTICE 常量与所有引用(grep -rn "API.PRACTICE" frontend/src/
  • 移除 frontend/src/composables/usePractice.jsAPI.PRACTICE 调用,或整体改名为 useArticles.js
  • Vue Router 中 /practice redirect 到 /articles 是否保留:保留 1 个版本继续兜底 PWA 旧 SW,下次再删
  • 验证 OpenAPI 已不含 /practice/* 条目(V0.8 起已 include_in_schema=False
  • CLAUDE.md API 清单删除 /practice/* 那一行
  • CLAUDE.md 版本状态:明确写 V0.X 起 alias 移除

清理前 sanity check(手动确认,无需自动化监控):

  • 当前版本距 V0.8 上线(2026-05-19)至少 14 天,给 PWA SW 充分更新
  • 没有现存外部链接/书签依赖 /practice/*(产品自查)

触发时机

接入 VOA(或第二个文章系列)之前必须完成。

不在本 issue 范围

  • vocabulary 表其他字段
  • ExplanationCache 机制
  • Ask 抽象

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions