Document open knowledge access scope

This commit is contained in:
2026-07-07 18:26:06 +08:00
parent 7be9847d65
commit 8d5d36c5eb
14 changed files with 105 additions and 49 deletions

View File

@@ -15,9 +15,9 @@
按照已上传的 AI 知识库系统需求包,重新规划和开发一版新系统: 按照已上传的 AI 知识库系统需求包,重新规划和开发一版新系统:
- 用户端手机号验证码登录、AI 聊天、多会话、历史聊天、流式回答、停止生成、Markdown 渲染、知识库权限过滤。 - 用户端手机号验证码登录、AI 聊天、多会话、历史聊天、流式回答、停止生成、Markdown 渲染、开放知识库过滤。
- 管理后台管理员登录、用户管理、管理员管理、知识库管理、Prompt 管理、模型管理、聊天记录、数据统计、系统配置、操作日志。 - 管理后台管理员登录、用户管理、管理员管理、知识库管理、Prompt 管理、模型管理、聊天记录、数据统计、系统配置、操作日志。
- AI/RAG一期以飞书知识库作为唯一知识来源每次提问实时检索用户权限过滤知识库;组装 Prompt调用大模型通过 SSE 流式输出;记录 AI 请求日志。 - AI/RAG一期以飞书知识库作为唯一知识来源每次提问实时检索按知识库开放状态过滤;已开放知识库默认所有用户可见;组装 Prompt调用大模型通过 SSE 流式输出;记录 AI 请求日志。
- 一期不做文件上传、图片理解、OCR、联网搜索、向量数据库同步、支付系统、课程系统、自动授权、多租户、多 Prompt、重新生成、编辑消息。 - 一期不做文件上传、图片理解、OCR、联网搜索、向量数据库同步、支付系统、课程系统、自动授权、多租户、多 Prompt、重新生成、编辑消息。
## 工作原则 ## 工作原则
@@ -26,7 +26,7 @@
- 上传的原始文档是 V2 的需求依据。 - 上传的原始文档是 V2 的需求依据。
- 给用户、团队、交接和评审看的文档统一使用中文。 - 给用户、团队、交接和评审看的文档统一使用中文。
- `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。 - `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。
- 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“知识库权限问答模型”上。 - 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“开放知识库问答模型”上。
## 本地开发启动 ## 本地开发启动

View File

@@ -26,11 +26,11 @@ P0 接口必须最先实现,即使先用 mock也要尽快跑通端到端流
## P1RAG 和配置接口 ## P1RAG 和配置接口
P1 是真实问答质量和权限的关键,建议在 P0 mock 主链路跑通后立即接入。 P1 是真实问答质量和知识库范围控制的关键,建议在 P0 mock 主链路跑通后立即接入。
| 接口/能力 | 用途 | 备注 | | 接口/能力 | 用途 | 备注 |
| --- | --- | --- | | --- | --- | --- |
| 用户知识库权限查询 | RAG 权限过滤 | 内部 service 可先不暴露接口。 | | 开放知识库查询 | RAG 检索范围过滤 | 内部 service 可先不暴露接口;按最新口径读取全部已开放知识库。 |
| 飞书知识库实时检索 | 获取知识片段 | 内部 service先做技术验证。 | | 飞书知识库实时检索 | 获取知识片段 | 内部 service先做技术验证。 |
| Prompt 加载 | 获取当前系统 Prompt | 从 `sys_prompt` 读取。 | | Prompt 加载 | 获取当前系统 Prompt | 从 `sys_prompt` 读取。 |
| 启用模型加载 | 获取当前模型配置 | 从 `sys_model` 读取。 | | 启用模型加载 | 获取当前模型配置 | 从 `sys_model` 读取。 |
@@ -50,7 +50,6 @@ P2 用于让管理员能配置和运营系统。
| `POST /admin/user` | 新增用户 | | `POST /admin/user` | 新增用户 |
| `PUT /admin/user` | 修改用户 | | `PUT /admin/user` | 修改用户 |
| `DELETE /admin/user/{id}` | 删除用户 | | `DELETE /admin/user/{id}` | 删除用户 |
| `POST /admin/user/kb` | 批量授权知识库 |
| `POST /admin/user/chat-limit` | 批量修改聊天次数 | | `POST /admin/user/chat-limit` | 批量修改聊天次数 |
| `POST /admin/user/enable` | 批量启用 | | `POST /admin/user/enable` | 批量启用 |
| `POST /admin/user/disable` | 批量禁用 | | `POST /admin/user/disable` | 批量禁用 |

View File

@@ -90,9 +90,9 @@ ai_knowledge_base_v2/
| `auth` | 用户短信登录、管理员登录、Token 签发、退出失效。 | | `auth` | 用户短信登录、管理员登录、Token 签发、退出失效。 |
| `users` | 普通用户资料、状态、额度、有效期。 | | `users` | 普通用户资料、状态、额度、有效期。 |
| `admins` | 管理员账号、角色、后台权限。 | | `admins` | 管理员账号、角色、后台权限。 |
| `knowledge` | 飞书知识库配置、启用禁用删除和用户授权。 | | `knowledge` | 飞书知识库配置、开放状态、启用禁用删除。 |
| `chat` | 会话、消息、标题、历史、停止生成。 | | `chat` | 会话、消息、标题、历史、停止生成。 |
| `rag` | 权限过滤、飞书检索、Prompt 组装、冲突处理。 | | `rag` | 开放知识库过滤、飞书检索、Prompt 组装、冲突处理。 |
| `models` | 模型配置、启用模型、模型调用客户端。 | | `models` | 模型配置、启用模型、模型调用客户端。 |
| `prompts` | 系统 Prompt 查看、保存、恢复默认。 | | `prompts` | 系统 Prompt 查看、保存、恢复默认。 |
| `config` | 系统配置读写和运行时配置加载。 | | `config` | 系统配置读写和运行时配置加载。 |
@@ -106,8 +106,8 @@ ai_knowledge_base_v2/
-> Token 校验 -> Token 校验
-> 账号状态/有效期校验 -> 账号状态/有效期校验
-> 每日额度校验 -> 每日额度校验
-> 获取用户授权知识库 -> 获取全部已开放知识库
-> 过滤禁用知识库和过期授权 -> 过滤禁用或未开放知识库
-> 实时检索飞书知识库 -> 实时检索飞书知识库
-> 无命中则返回固定兜底 -> 无命中则返回固定兜底
-> 组装 Prompt -> 组装 Prompt
@@ -122,7 +122,7 @@ ai_knowledge_base_v2/
- 表名按需求文档使用 `sys_*` - 表名按需求文档使用 `sys_*`
- 主键统一 `BIGINT AUTO_INCREMENT` - 主键统一 `BIGINT AUTO_INCREMENT`
- 常规删除使用 `is_deleted` 逻辑删除。 - 常规删除使用 `is_deleted` 逻辑删除。
- 知识库删除按文档允许物理删除,但删除前必须二次确认、解除授权并写操作日志。 - 知识库删除按文档允许物理删除,但删除前必须二次确认并写操作日志。
- 生产环境密钥不建议明文保存;模型 API Key 需要在实现前做安全决策。 - 生产环境密钥不建议明文保存;模型 API Key 需要在实现前做安全决策。
## 外部服务接入策略 ## 外部服务接入策略
@@ -140,7 +140,7 @@ ai_knowledge_base_v2/
| --- | --- | | --- | --- |
| 飞书实时检索 API 能力不确定 | 阶段二开始前做技术验证脚本,确认 SpaceID/NodeID、权限和返回结构。 | | 飞书实时检索 API 能力不确定 | 阶段二开始前做技术验证脚本,确认 SpaceID/NodeID、权限和返回结构。 |
| H5 后续转小程序成本高 | 一期先按 Vue 3 H5 做稳定主链路;后续小程序单独评估迁移或新建工程。 | | H5 后续转小程序成本高 | 一期先按 Vue 3 H5 做稳定主链路;后续小程序单独评估迁移或新建工程。 |
| 权限后补导致越权 | RAG 链路第一步就是权限过滤,接口测试必须覆盖越权场景。 | | 知识库开放范围后补导致误检索 | RAG 链路第一步就是开放知识库过滤,接口测试必须覆盖禁用知识库不可检索场景。 |
| 模型回答编造 | 无命中固定兜底Prompt 明确限制,日志记录检索片段和 Prompt。 | | 模型回答编造 | 无命中固定兜底Prompt 明确限制,日志记录检索片段和 Prompt。 |
| API Key 明文风险 | 开发前明确密钥存储策略,生产不在日志中输出密钥。 | | API Key 明文风险 | 开发前明确密钥存储策略,生产不在日志中输出密钥。 |
| 单文件膨胀 | 按模块和 service 拆分,控制单文件职责。 | | 单文件膨胀 | 按模块和 service 拆分,控制单文件职责。 |

View File

@@ -42,8 +42,9 @@
| D-019 | 管理后台 Element Plus 改为按需注册,并拆分表格和基础 vendor chunk。 | 默认采用 | 解决后台构建单 chunk 过大的提示,降低首屏主入口体积,同时不引入额外构建插件。 | | D-019 | 管理后台 Element Plus 改为按需注册,并拆分表格和基础 vendor chunk。 | 默认采用 | 解决后台构建单 chunk 过大的提示,降低首屏主入口体积,同时不引入额外构建插件。 |
| D-020 | MiniMax 快速添加默认使用 Anthropic Messages 兼容协议。 | 默认采用 | MiniMax 文本生成指南推荐 Anthropic-compatible 路径;后端按 `auth_type` 兼容 Bearer 和 x-api-key 两种鉴权。 | | D-020 | MiniMax 快速添加默认使用 Anthropic Messages 兼容协议。 | 默认采用 | MiniMax 文本生成指南推荐 Anthropic-compatible 路径;后端按 `auth_type` 兼容 Bearer 和 x-api-key 两种鉴权。 |
| D-021 | 模型管理只负责 LLM 接入Agent 管理负责提示词、知识库、模型选择和推理参数调试。 | 默认采用 | 避免模型连接配置与 Agent 运行策略混在一起,方便后续做 Agent 版本、调试和发布流程。 | | D-021 | 模型管理只负责 LLM 接入Agent 管理负责提示词、知识库、模型选择和推理参数调试。 | 默认采用 | 避免模型连接配置与 Agent 运行策略混在一起,方便后续做 Agent 版本、调试和发布流程。 |
| D-022 | 用户-知识库授权先放在用户管理中维护。 | 默认采用 | 一期运营动作更直接:找到用户后分配知识库;后续用户规模变大时再增加角色、用户组或批量授权。 | | D-022 | 用户-知识库授权先放在用户管理中维护。 | 已废弃 | 2026-07-07 需求调整后,一期不再按人分配知识库,已开放知识库默认所有用户可见。 |
| D-023 | Agent 调试预览采用接近用户端聊天页的交互形态。 | 默认采用 | 测试问题从配置区移到预览窗口底部,减少调试和真实用户问答体验之间的差异。 | | D-023 | Agent 调试预览采用接近用户端聊天页的交互形态。 | 默认采用 | 测试问题从配置区移到预览窗口底部,减少调试和真实用户问答体验之间的差异。 |
| D-024 | 知识库访问范围改为“开放即全员可见”。 | 用户确认 | 知识库不再精确到用户授权;用户端问答只使用已开放、未禁用知识库,用户管理不再承担知识库授权职责。 |
## 待确认决策 ## 待确认决策

View File

@@ -13,7 +13,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
1. **先定边界,再写代码**:先把 V2 的模块、数据模型、接口边界和一期范围确定下来。 1. **先定边界,再写代码**:先把 V2 的模块、数据模型、接口边界和一期范围确定下来。
2. **先主链路,再补管理能力**:优先跑通用户提问到 AI 回答的闭环,再逐步补后台配置和运营能力。 2. **先主链路,再补管理能力**:优先跑通用户提问到 AI 回答的闭环,再逐步补后台配置和运营能力。
3. **先 mock再接真实外部服务**:短信、飞书检索、大模型都先做可替换 mock保证本地可测再逐个替换为真实服务。 3. **先 mock再接真实外部服务**:短信、飞书检索、大模型都先做可替换 mock保证本地可测再逐个替换为真实服务。
4. **权限先行**:知识库权限是系统底线,不能等后期再补。 4. **知识库范围先行**:知识库开放状态是问答范围的底线,不能等后期再补。
5. **文档同步更新**:重要决策、接口变化、范围变化都写入 `development_records/` 5. **文档同步更新**:重要决策、接口变化、范围变化都写入 `development_records/`
6. **每次代码和内容改动都提交并推送**:保持远端仓库可追踪。 6. **每次代码和内容改动都提交并推送**:保持远端仓库可追踪。
@@ -53,7 +53,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
- 管理员:`sys_admin` - 管理员:`sys_admin`
- 角色:`sys_role` - 角色:`sys_role`
- 知识库:`sys_knowledge` - 知识库:`sys_knowledge`
- 用户知识库权限`sys_user_kb` - 知识库:`sys_knowledge`,其中开放状态决定一期用户可访问范围
- 聊天会话:`sys_chat_session` - 聊天会话:`sys_chat_session`
- 聊天消息:`sys_chat_message` - 聊天消息:`sys_chat_message`
- Prompt`sys_prompt` - Prompt`sys_prompt`
@@ -103,11 +103,11 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
### 目标 ### 目标
把 mock 问答替换为真实的权限过滤、飞书实时检索、Prompt 组装和大模型流式输出。 把 mock 问答替换为真实的开放知识库过滤、飞书实时检索、Prompt 组装和大模型流式输出。
### 要做的事 ### 要做的事
1. 实现用户知识库权限过滤。 1. 实现开放知识库范围过滤。
2. 实现 FeishuKnowledgeService 2. 实现 FeishuKnowledgeService
- 根据 SpaceID/NodeID 检索知识库 - 根据 SpaceID/NodeID 检索知识库
- 处理飞书异常和重试 - 处理飞书异常和重试
@@ -115,7 +115,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
3. 实现 Prompt 组装: 3. 实现 Prompt 组装:
- 系统 Prompt - 系统 Prompt
- 用户问题 - 用户问题
- 授权知识片段 - 已开放知识片段
- 上下文 - 上下文
4. 实现 ModelClient 4. 实现 ModelClient
- 从启用模型配置读取参数 - 从启用模型配置读取参数
@@ -126,7 +126,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
### 验收标准 ### 验收标准
- 用户只能检索自己有权限的知识库。 - 用户只能检索已开放的知识库。
- 无命中时不编造答案。 - 无命中时不编造答案。
- 飞书异常和模型异常有清晰提示并写日志。 - 飞书异常和模型异常有清晰提示并写日志。
- SSE 流式输出稳定。 - SSE 流式输出稳定。
@@ -146,7 +146,6 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
- 查询 - 查询
- 详情 - 详情
- 启用/禁用 - 启用/禁用
- 批量授权知识库
- 聊天次数配置 - 聊天次数配置
4. 管理员管理。 4. 管理员管理。
5. 知识库管理: 5. 知识库管理:
@@ -170,7 +169,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
### 目标 ### 目标
按测试用例和 UAT 文档进行收口,保证主流程、权限和异常都可验收。 按测试用例和 UAT 文档进行收口,保证主流程、知识库开放范围和异常都可验收。
### 要做的事 ### 要做的事
@@ -179,8 +178,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
3. 重点测试: 3. 重点测试:
- 登录 - 登录
- 聊天 - 聊天
- 多知识库权限 - 多知识库开放范围
- 权限过期
- 知识库禁用 - 知识库禁用
- 无命中兜底 - 无命中兜底
- 飞书异常 - 飞书异常
@@ -193,7 +191,7 @@ V2 的核心目标不是在旧“答疑资产后台”上继续补功能,而
- 用户端主链路通过。 - 用户端主链路通过。
- 后台核心管理链路通过。 - 后台核心管理链路通过。
- 权限隔离通过。 - 知识库开放范围过滤通过。
- 异常处理通过。 - 异常处理通过。
- 部署流程可复现。 - 部署流程可复现。

View File

@@ -4,7 +4,7 @@
2026-07-06项目需求发生较大变化。旧实现主要围绕“大本营答疑资产后台系统”展开目标是把飞书资料、转写稿或答疑内容经过 AI 清洗、人工审核、标准问答沉淀后,再由人工标记为可调用内容。 2026-07-06项目需求发生较大变化。旧实现主要围绕“大本营答疑资产后台系统”展开目标是把飞书资料、转写稿或答疑内容经过 AI 清洗、人工审核、标准问答沉淀后,再由人工标记为可调用内容。
新需求包定义的是 **AI 企业知识库问答系统**,核心目标已经变成:基于企业飞书知识库,为内部用户提供带权限控制的 AI 问答能力,并配套完整后台。 新需求包定义的是 **AI 企业知识库问答系统**,核心目标已经变成:基于企业飞书知识库,为内部用户提供按知识库开放状态控制范围的 AI 问答能力,并配套完整后台。
## 资料归档 ## 资料归档
@@ -23,8 +23,8 @@
新系统一期以飞书知识库作为唯一知识来源。用户每次提问时,系统应该按下面流程处理: 新系统一期以飞书知识库作为唯一知识来源。用户每次提问时,系统应该按下面流程处理:
1. 校验用户账号状态和每日聊天额度。 1. 校验用户账号状态和每日聊天额度。
2. 获取用户已授权且有效的知识库。 2. 获取全部已开放且有效的知识库。
3. 基于授权知识库实时检索飞书内容。 3. 基于已开放知识库实时检索飞书内容。
4. 使用系统 Prompt、检索片段、用户问题和上下文组装最终 Prompt。 4. 使用系统 Prompt、检索片段、用户问题和上下文组装最终 Prompt。
5. 调用当前启用的大模型。 5. 调用当前启用的大模型。
6. 通过 SSE 流式返回回答。 6. 通过 SSE 流式返回回答。

View File

@@ -51,5 +51,5 @@
1.`ai_knowledge_base_v2/apps/backend/` 新建 V2 后端工程。 1.`ai_knowledge_base_v2/apps/backend/` 新建 V2 后端工程。
2. 建立 FastAPI、配置、日志、统一响应、异常处理和健康检查。 2. 建立 FastAPI、配置、日志、统一响应、异常处理和健康检查。
3. 配置 MySQL 8.x 和 Alembic 迁移。 3. 配置 MySQL 8.x 和 Alembic 迁移。
4. 建立第一批核心表模型:用户、管理员、角色、知识库、用户知识库权限、会话、消息。 4. 建立第一批核心表模型:用户、管理员、角色、知识库、会话、消息`sys_user_kb` 已按早期文档预留,但 2026-07-07 新口径下不再作为一期主链路依赖
5. 实现 mock 短信登录、Token 签发和当前用户接口。 5. 实现 mock 短信登录、Token 签发和当前用户接口。

View File

@@ -11,9 +11,9 @@
一期要交付的是一个“企业飞书知识库 AI 问答系统”的可用版本,核心价值是: 一期要交付的是一个“企业飞书知识库 AI 问答系统”的可用版本,核心价值是:
1. 用户可以登录并向系统提问。 1. 用户可以登录并向系统提问。
2. 系统只基于用户有权限访问的飞书知识库回答。 2. 系统只基于当前已开放的飞书知识库回答,已开放知识库默认对所有用户可见
3. 管理员可以维护用户、知识库、Prompt、模型、系统配置和聊天记录。 3. 管理员可以维护用户、知识库、Prompt、模型、系统配置和聊天记录。
4. 每次 AI 调用都有日志可追溯,方便排查回答、权限和成本问题。 4. 每次 AI 调用都有日志可追溯,方便排查回答、知识库范围和成本问题。
## 一期必须包含 ## 一期必须包含
@@ -32,7 +32,7 @@
| 停止生成 | 必须 | 停止当前模型请求,保留已生成内容。 | | 停止生成 | 必须 | 停止当前模型请求,保留已生成内容。 |
| Markdown 渲染 | 必须 | 支持标题、列表、代码块、表格等基础 Markdown。 | | Markdown 渲染 | 必须 | 支持标题、列表、代码块、表格等基础 Markdown。 |
| 每日聊天次数限制 | 必须 | 默认次数来自系统配置,也支持用户维度覆盖。 | | 每日聊天次数限制 | 必须 | 默认次数来自系统配置,也支持用户维度覆盖。 |
| 知识库权限控制 | 必须 | 只能检索用户有权限、未禁用、未过期的知识库。 | | 知识库开放控制 | 必须 | 只能检索已开放、未禁用的知识库;已开放知识库默认所有用户可见。 |
### 管理后台 ### 管理后台
@@ -40,7 +40,7 @@
| --- | --- | --- | | --- | --- | --- |
| 管理员登录 | 必须 | 用户名 + 密码。 | | 管理员登录 | 必须 | 用户名 + 密码。 |
| Dashboard | 必须 | 展示用户、聊天、Token 等核心统计AI 成功率/失败率一期不展示。 | | Dashboard | 必须 | 展示用户、聊天、Token 等核心统计AI 成功率/失败率一期不展示。 |
| 用户管理 | 必须 | 查询、详情、启用/禁用、删除、授权知识库、设置额度和有效期。 | | 用户管理 | 必须 | 查询、详情、启用/禁用、删除、设置额度和有效期。 |
| 管理员管理 | 必须 | 仅超级管理员可维护管理员账号。 | | 管理员管理 | 必须 | 仅超级管理员可维护管理员账号。 |
| 知识库管理 | 必须 | 新增、编辑、删除、启用/禁用飞书知识库。 | | 知识库管理 | 必须 | 新增、编辑、删除、启用/禁用飞书知识库。 |
| Prompt 管理 | 必须 | 查看、编辑、保存、恢复默认;保存后立即生效。 | | Prompt 管理 | 必须 | 查看、编辑、保存、恢复默认;保存后立即生效。 |
@@ -54,7 +54,7 @@
| 能力 | 一期要求 | 说明 | | 能力 | 一期要求 | 说明 |
| --- | --- | --- | | --- | --- | --- |
| 飞书知识库实时检索 | 必须 | 一期不做本地同步和向量库同步。 | | 飞书知识库实时检索 | 必须 | 一期不做本地同步和向量库同步。 |
| 多知识库权限过滤 | 必须 | 检索前先过滤用户授权知识库。 | | 多知识库开放过滤 | 必须 | 检索前先过滤出全部已开放、未禁用知识库。 |
| Prompt 组装 | 必须 | 系统 Prompt + 检索片段 + 历史上下文 + 当前问题。 | | Prompt 组装 | 必须 | 系统 Prompt + 检索片段 + 历史上下文 + 当前问题。 |
| 大模型调用 | 必须 | 从启用模型配置读取 API URL、Key、模型名和参数。 | | 大模型调用 | 必须 | 从启用模型配置读取 API URL、Key、模型名和参数。 |
| SSE 输出 | 必须 | 支持流式输出和结束标记。 | | SSE 输出 | 必须 | 支持流式输出和结束标记。 |
@@ -74,7 +74,7 @@
| 向量数据库同步 | 一期要求实时访问飞书,不做本地同步。 | | 向量数据库同步 | 一期要求实时访问飞书,不做本地同步。 |
| 支付系统 | 与当前企业内部知识问答无关。 | | 支付系统 | 与当前企业内部知识问答无关。 |
| 课程系统 | 与当前一期主链路无关。 | | 课程系统 | 与当前一期主链路无关。 |
| 自动授权 | 用户知识库权限由后台管理。 | | 自动授权 | 知识库不再按用户授权,已开放知识库默认全员可见。 |
| 多租户 | 一期按单企业内部系统处理。 | | 多租户 | 一期按单企业内部系统处理。 |
| 多 Prompt | 一期只维护一个当前生效 Prompt。 | | 多 Prompt | 一期只维护一个当前生效 Prompt。 |
| 重新生成回答 | 文档明确不做。 | | 重新生成回答 | 文档明确不做。 |
@@ -97,7 +97,7 @@
## 一期验收重点 ## 一期验收重点
1. 用户可以完成登录、提问、流式回答、停止生成、查看历史。 1. 用户可以完成登录、提问、流式回答、停止生成、查看历史。
2. AI 只使用用户有权限的知识库,权限过期、知识库禁用、未授权都不能参与检索。 2. AI 只使用已开放的知识库,知识库禁用或未开放时不能参与检索。
3. 无知识命中时不编造答案。 3. 无知识命中时不编造答案。
4. 飞书异常、模型异常、AI 超时都有明确提示和日志。 4. 飞书异常、模型异常、AI 超时都有明确提示和日志。
5. 后台可以维护用户、知识库、Prompt、模型、系统配置和聊天记录。 5. 后台可以维护用户、知识库、Prompt、模型、系统配置和聊天记录。

View File

@@ -27,7 +27,7 @@
- `sys_admin` - `sys_admin`
- `sys_role` - `sys_role`
- `sys_knowledge` - `sys_knowledge`
- `sys_user_kb` - `sys_user_kb`早期文档预留表2026-07-07 新口径下不再作为一期主链路依赖)
- `sys_chat_session` - `sys_chat_session`
- `sys_chat_message` - `sys_chat_message`
- `sys_prompt` - `sys_prompt`

View File

@@ -4,13 +4,14 @@
## 本次目标 ## 本次目标
把用户端 `/chat/completions` 从单一 mock 回复,升级为可替换的问答服务链路。当前仍不接真实飞书和真实大模型,但先把权限过滤、检索、Prompt、模型调用和 AI 请求日志的职责拆出来。 把用户端 `/chat/completions` 从单一 mock 回复,升级为可替换的问答服务链路。当前仍不接真实飞书和真实大模型,但先把知识库开放范围过滤、检索、Prompt、模型调用和 AI 请求日志的职责拆出来。
## 已完成 ## 已完成
- 新增知识库权限服务 `KnowledgeAccessService` - 新增知识库访问范围服务 `KnowledgeAccessService`
- 优先读取用户已授权、未禁用、未过期的知识库。 - 按最新需求读取全部已开放、未禁用的知识库。
- 开发阶段如果没有配置知识库授权,允许通过 `MOCK_RAG_ENABLED=true` 使用默认 mock 知识库,方便本地演示 - 已开放知识库默认所有用户可见,不再按单个用户授权过滤
- 开发阶段如果没有配置开放知识库,允许通过 `MOCK_RAG_ENABLED=true` 使用默认 mock 知识库,方便本地演示。
- 新增 RAG 服务 `RagService` - 新增 RAG 服务 `RagService`
- 负责构建用户可访问知识库范围。 - 负责构建用户可访问知识库范围。
- 负责调用 mock 飞书知识库检索。 - 负责调用 mock 飞书知识库检索。

View File

@@ -47,7 +47,7 @@ FEISHU_RETRY_COUNT=2
阶段四的工程边界已经建立,可以支持后续真实接入: 阶段四的工程边界已经建立,可以支持后续真实接入:
1. 权限过滤在检索前执行。 1. 开放知识库过滤在检索前执行。
2. 飞书检索 provider 可替换。 2. 飞书检索 provider 可替换。
3. Prompt 组装已独立。 3. Prompt 组装已独立。
4. 模型 provider 可替换。 4. 模型 provider 可替换。

View File

@@ -2,12 +2,18 @@
日期2026-07-07 日期2026-07-07
## 2026-07-07 需求变更说明
本记录中的“用户知识库权限分配”是当时按旧需求完成的能力。后续底层需求已调整为:知识库不再精确授权到个人,已开放知识库默认所有用户可见。
因此,本记录中涉及“知识库权限分配”“用户-知识库授权”“`/knowledge-permissions` 接口”的内容只作为历史实现记录,不再代表当前一期目标。当前目标以 `2026-07-07-knowledge-open-access-change.md` 为准。
## 背景 ## 背景
用户反馈当前后台仍有三块没有做到产品可用状态: 用户反馈当前后台仍有三块没有做到产品可用状态:
1. 知识库管理只做到新增和列表,缺少编辑、删除、启停、备注维护。 1. 知识库管理只做到新增和列表,缺少编辑、删除、启停、备注维护。
2. 用户管理只做到查询、启停和额度调整,缺少删除用户和知识库权限分配。 2. 用户管理只做到查询、启停和额度调整,按当时旧口径缺少删除用户和知识库权限分配。
3. Agent 调试预览不符合用户端聊天体验,测试问题在左侧配置区,预览窗口在右侧,使用时割裂。 3. Agent 调试预览不符合用户端聊天体验,测试问题在左侧配置区,预览窗口在右侧,使用时割裂。
本次调整目标是把后台从“可演示”推进到“一期运营人员可使用”的状态。 本次调整目标是把后台从“可演示”推进到“一期运营人员可使用”的状态。
@@ -20,9 +26,9 @@
- 新增知识库删除能力。 - 新增知识库删除能力。
- 支持在列表中直接启用或禁用知识库。 - 支持在列表中直接启用或禁用知识库。
- 表单补充备注字段。 - 表单补充备注字段。
- 删除知识库时同步清理用户-知识库授权关系,避免外键约束导致删除失败。 - 删除知识库时按当时旧口径同步清理用户-知识库授权关系,避免外键约束导致删除失败。
### 用户管理 ### 用户管理(旧口径,后续已调整)
- 用户列表补充 ID、昵称、最近登录时间。 - 用户列表补充 ID、昵称、最近登录时间。
- 支持删除用户。 - 支持删除用户。
@@ -30,6 +36,7 @@
- 可为用户按知识库开启或关闭权限。 - 可为用户按知识库开启或关闭权限。
- 可为每个授权设置生效时间和失效时间。 - 可为每个授权设置生效时间和失效时间。
- 后端新增用户知识库权限读取和保存接口。 - 后端新增用户知识库权限读取和保存接口。
- 以上权限分配能力已被“开放知识库全员可见”的新口径替代。
### Agent 管理预览 ### Agent 管理预览
@@ -42,7 +49,7 @@
## 后端接口变化 ## 后端接口变化
新增接口: 新增接口(旧口径,后续会移除或废弃)
- `GET /api/admin/user/{user_id}/knowledge-permissions` - `GET /api/admin/user/{user_id}/knowledge-permissions`
- 读取指定用户已分配的知识库权限。 - 读取指定用户已分配的知识库权限。
@@ -62,14 +69,14 @@
## 当前边界 ## 当前边界
- 用户知识库权限已经可以维护,但用户端问答链路后续还需要根据登录态和用户权限过滤可用知识库 - 用户知识库权限已经可以维护,但后续新口径改为用户端问答链路只按知识库开放状态过滤
- 当前用户删除仍是软删除,聊天记录和审计记录不会被物理删除。 - 当前用户删除仍是软删除,聊天记录和审计记录不会被物理删除。
- Agent 管理目前仍是调试态,尚未做正式的 Agent 版本发布、回滚和灰度。 - Agent 管理目前仍是调试态,尚未做正式的 Agent 版本发布、回滚和灰度。
- 权限分配按用户维护;后续如果用户规模变大,应增加角色、用户组或批量授权能力 - 权限分配按用户维护是旧口径;新口径不再按人维护
## 后续建议 ## 后续建议
1. 在用户端接入真实登录后,把当前用户 ID 传入后端问答链路,`sys_user_kb` 过滤知识库检索范围 1. 在用户端接入真实登录后,问答链路按已开放知识库过滤检索范围,不再`sys_user_kb` 过滤。
2. Agent 管理增加“保存草稿 / 发布版本 / 回滚版本”,把提示词、模型、知识库和参数落成版本。 2. Agent 管理增加“保存草稿 / 发布版本 / 回滚版本”,把提示词、模型、知识库和参数落成版本。
3. 用户管理增加批量启停、批量授权和导入导出。 3. 用户管理增加批量启停和导入导出;不再做批量知识库授权
4. 知识库管理增加同步状态、最后同步时间、文档数量和检索测试入口。 4. 知识库管理增加同步状态、最后同步时间、文档数量和检索测试入口。

View File

@@ -0,0 +1,49 @@
# 知识库开放范围变更记录
日期2026-07-07
## 背景
此前 V2 需求沿用了原始资料包中的“用户-知识库授权”模型:后台需要把知识库精确分配到具体用户,问答检索时只允许使用当前用户已授权且未过期的知识库。
现在底层需求发生调整:知识库权限不再精确到人。只要某个知识库处于开放状态,默认所有用户都能访问;未开放或禁用的知识库不参与用户端问答检索。
## 新口径
1. 知识库是否可见由知识库自身状态控制。
2. 已开放知识库默认对所有用户可见。
3. 用户端问答检索范围为“全部已开放知识库”。
4. 用户管理不再维护单个用户的知识库授权。
5. `sys_user_kb` 暂时不再作为一期主链路依赖;如果未来需要重新做精细权限,可再启用或迁移。
## 对产品功能的影响
### 用户端
- 用户登录后默认可以使用所有已开放知识库。
- 不再展示或依赖“我的已授权知识库”。
- 问答时只过滤禁用或未开放知识库。
### 管理后台
- 知识库管理仍保留新增、编辑、删除、启用/禁用能力。
- 知识库的启用状态就是当前一期的开放控制开关。
- 用户管理移除“知识库权限分配”入口。
### 后端 RAG 链路
- 检索范围从“当前用户授权知识库”改为“全部启用知识库”。
- AI 请求日志仍记录本次实际检索使用的知识库 ID方便审计。
- 用户状态、有效期、每日额度等用户级限制仍然保留。
## 对既有文档的覆盖说明
原始需求抽取文档 `extracted/` 中仍会出现“用户知识库授权”“批量授权”“仅访问授权知识库”等旧口径。这些文件是原始资料包抽取件,不直接修改。
从 2026-07-07 起,开发和验收以本记录以及更新后的 `development_records/` 文档为准。
## 后续建议
1. 如果后续出现部门、角色或付费套餐差异,再重新设计“用户组/角色/租户级知识库权限”,不要直接回到逐个用户授权。
2. 后台知识库管理可增加“开放/关闭”的更明确文案,避免运营人员把状态理解成单纯数据启停。
3. 测试用例需要同步调整:重点验证启用知识库全员可见、禁用知识库不可检索。

View File

@@ -37,4 +37,5 @@
| `2026-07-07-admin-web-build-optimization.md` | 管理后台构建体积优化记录。 | | `2026-07-07-admin-web-build-optimization.md` | 管理后台构建体积优化记录。 |
| `2026-07-07-agent-management-adjustment.md` | Agent 管理与模型接入边界调整记录。 | | `2026-07-07-agent-management-adjustment.md` | Agent 管理与模型接入边界调整记录。 |
| `2026-07-07-admin-operations-completion.md` | 管理后台知识库、用户权限和 Agent 预览补齐记录。 | | `2026-07-07-admin-operations-completion.md` | 管理后台知识库、用户权限和 Agent 预览补齐记录。 |
| `2026-07-07-knowledge-open-access-change.md` | 知识库访问范围改为“开放即全员可见”的需求变更记录。 |
| `../test_records/2026-07-06-phase6-verification.md` | 阶段六验证记录。 | | `../test_records/2026-07-06-phase6-verification.md` | 阶段六验证记录。 |