Skip to content

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

Open
chujieHong wants to merge 1 commit into
TencentCloud:developfrom
chujieHong:feat/kb-max-documents-per-base
Open

feat(knowledge): 支持按知识库配置文档数量上限#427
chujieHong wants to merge 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,行为不变

- schema v10: knowledge_bases 新增 max_documents 列(默认 100,0=不限制,上限 10000)
- 上传时按 KB 自身上限在 SQL 事务内原子拦截,第 N+1 个文档被拒绝
- 前端编辑模态框在"描述"与"图标"之间新增"文档数量上限"输入项,保存即同步
- 详情面板"X/Y 文档"文本、上限 Alert、上传按钮均改用该 KB 自身上限
- SQLite 通过启动兜底加列,PostgreSQL 使用 ADD COLUMN IF NOT EXISTS 幂等迁移
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.

1 participant