Skip to content

feat(knowledge): 支持按知识库配置文档数量上限 - #427

Merged
jubaoliang merged 1 commit into
TencentCloud:developfrom
chujieHong:feat/kb-max-documents-per-base
Aug 27, 2026
Merged

feat(knowledge): 支持按知识库配置文档数量上限#427
jubaoliang merged 1 commit into
TencentCloud:developfrom
chujieHong:feat/kb-max-documents-per-base

Conversation

@chujieHong

Copy link
Copy Markdown
Contributor

变更内容

为每个知识库新增可独立配置的文档数量上限(max_documents),替代原来写死的 100。

后端

  • Schema v10:knowledge_bases 新增 max_documents 列(默认 100,0 表示不限制,上限 10000)
    • SQLite:列由 migrate.py::_ensure_knowledge_bases_schema 启动兜底添加,010 迁移文件仅提升 _schema_version
    • PostgreSQL:ADD COLUMN IF NOT EXISTS 幂等迁移
  • 上传拦截:repo.create_document 用 UPDATE ... WHERE doc_count < ? 在事务内原子拦截,超过上限抛错 → HTTP 409
  • Service:create_base / update_base 校验 0 <= max_documents <= 10000,越界返回 422
  • API:CreateBaseBody / UpdateBaseBody 新增 max_documents 字段(ge=0, le=10000)

前端

  • 编辑/创建知识库模态框在「描述」与「图标」之间新增「文档数量上限」输入项(antd InputNumber,min=0 / max=10000,0=不限制)
  • 详情面板「X/Y 文档」文案、达到上限的 Alert、上传按钮 disabled 逻辑均改用该 KB 自身 max_documents
  • i18n:en/zh 各新增 2 个 key

测试

  • tests/unit/db/test_repo_knowledge.py:+3(update 持久化 / 按 KB 上限拦截 / 0=无限)
  • tests/unit/knowledge/test_service_acl.py:+1(范围校验)
  • tests/unit/api/test_knowledge_bases.py:+2(update 接受合法值 / 拒绝越界值)
  • 36 个相关单测全绿,tsc -b --noEmit 通过

潜在风险

  • 语义变更:0 被定义为「不限制」,而非「最多 0 个文档」;前端 hint 已说明
  • 迁移:SQLite 库首次启动时由启动兜底自动补列(幂等),无需手动执行
  • 既有数据:升级前已存在的知识库默认获得 max_documents=100,行为不变

@chujieHong
chujieHong force-pushed the feat/kb-max-documents-per-base branch from 40ade66 to 8521793 Compare August 26, 2026 03:16
@chujieHong chujieHong closed this Aug 26, 2026
@chujieHong chujieHong reopened this Aug 26, 2026
@chujieHong
chujieHong force-pushed the feat/kb-max-documents-per-base branch 2 times, most recently from 7e18437 to 1c749f6 Compare August 26, 2026 04:10
- schema v10: knowledge_bases 新增 max_documents 列(默认 100,0=不限制,上限 10000)
- 上传时按 KB 自身上限在 SQL 事务内原子拦截,第 N+1 个文档被拒绝
- 前端编辑模态框在"描述"与"图标"之间新增"文档数量上限"输入项,保存即同步
- 详情面板"X/Y 文档"文本、上限 Alert、上传按钮均改用该 KB 自身上限
- SQLite 通过启动兜底加列,PostgreSQL 使用 ADD COLUMN IF NOT EXISTS 幂等迁移
@chujieHong
chujieHong force-pushed the feat/kb-max-documents-per-base branch from 1c749f6 to fa4eae6 Compare August 27, 2026 03:33
@jubaoliang
jubaoliang merged commit 90b8ca2 into TencentCloud:develop Aug 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants