GET /api/v1/books
server/app/lexgo/library.go
ListBooks
GET /api/v1/books/:id
Find(&chapters)
original_text
期望结果:列表要么可分页访问全部书籍,要么明确告知已截断;目录查询不再加载正文。
待方案确认后填写。候选方向(择一,需用户确认):
page
limit
total
truncated
目录列选择为独立的小改动,可与上项一起实施;不变更响应字段集合,只减少读取列。
预计修改文件:
BookDetail
server/app/lexgo/library_test.go
learner/src/stores/library.ts
learner/src/views/LibraryView.vue
python scripts/server.py test-integration npx --yes pnpm@9.15.1 --dir learner test:unit --run npx --yes pnpm@9.15.1 --dir learner build
风险:分页会改变 GET /api/v1/books 的响应形状,需要同步学习端;截断提示方案则只新增字段,风险更低。列选择改动需确认目录仍能正确显示字符数与失败原因。回退:恢复列表查询的原有行为并回滚学习端改动,数据库结构不变。
No dependencies set.
The note is not visible to the blocked user.
基本信息
依赖与并行
子项目影响
GET /api/v1/books的响应;唯一事实来源为架构与业务规则 Wiki原始需求
要解决什么
server/app/lexgo/library.go的ListBooks)。超过上限后,旧书在学习端不可见,也没有任何提示,用户会以为数据丢失。GET /api/v1/books/:id通过Find(&chapters)载入整行,包含 MEDIUMTEXT 的original_text。章节多或正文长时会带来明显的内存与 IO 开销,而目录只需要序号、标题、状态与字符数。期望结果:列表要么可分页访问全部书籍,要么明确告知已截断;目录查询不再加载正文。
做什么 / 不做什么
已确认方案
待方案确认后填写。候选方向(择一,需用户确认):
GET /api/v1/books增加page/limit(或游标)与total,学习端分页加载。truncated(布尔)与total,学习端明确提示“仅显示最近 200 本”。目录列选择为独立的小改动,可与上项一起实施;不变更响应字段集合,只减少读取列。
预计修改文件:
server/app/lexgo/library.go(ListBooks、BookDetail)server/app/lexgo/library_test.go(新增列表边界与列选择相关用例)learner/src/stores/library.ts、learner/src/views/LibraryView.vue(分页或截断提示)需求变化记录
设计与原型门禁
文档影响
交付文档影响
任务记录与可选快照
验收标准
验证方式
风险和回退
风险:分页会改变
GET /api/v1/books的响应形状,需要同步学习端;截断提示方案则只新增字段,风险更低。列选择改动需确认目录仍能正确显示字符数与失败原因。回退:恢复列表查询的原有行为并回滚学习端改动,数据库结构不变。