背景
V0.8(PR #47)把 /practice 重命名为 /articles「文章学习」,但只动了路由前缀与前端文案。后端 source_type='bbc_eaw'、bbc_eaw_episodes 表名仍是 BBC 专属命名。
未来接入 VOA 等其他文章系列时,这套命名会语义错位。需要重构为通用的 article-* 模型。
参考:
范围
⚠️ 顺手清理:/practice/* alias 移除
这一项和本 issue 在同一个 PR 里完成(势必都要碰 articles router 与 main.py):
清理前 sanity check(手动确认,无需自动化监控):
触发时机
接入 VOA(或第二个文章系列)之前必须完成。
不在本 issue 范围
vocabulary 表其他字段
- ExplanationCache 机制
- Ask 抽象
背景
V0.8(PR #47)把
/practice重命名为/articles「文章学习」,但只动了路由前缀与前端文案。后端source_type='bbc_eaw'、bbc_eaw_episodes表名仍是 BBC 专属命名。未来接入 VOA 等其他文章系列时,这套命名会语义错位。需要重构为通用的
article-*模型。参考:
docs/superpowers/specs/2026-05-19-articles-vocab-tag-design.md范围
vocabulary.source_type枚举值bbc_eaw→article,新增series字段记录具体来源(bbc_eaw/voa/ ...)bbc_eaw_episodes→article_episodes,新增series字段/bbc-eaw/*→/articles/episodes/*(或类似),保持 RESTful 命名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.pyAPI_PREFIXES里的"practice/"API.PRACTICE常量与所有引用(grep -rn "API.PRACTICE" frontend/src/)frontend/src/composables/usePractice.js中API.PRACTICE调用,或整体改名为useArticles.js/practiceredirect 到/articles是否保留:保留 1 个版本继续兜底 PWA 旧 SW,下次再删/practice/*条目(V0.8 起已include_in_schema=False)/practice/*那一行清理前 sanity check(手动确认,无需自动化监控):
/practice/*(产品自查)触发时机
接入 VOA(或第二个文章系列)之前必须完成。
不在本 issue 范围
vocabulary表其他字段