proxy_db 11 张表的引用关系。虚线箭头 ┄► 表示「值引用」RAGFlow 原生 id(无外键约束);实线箭头 ──► 为 proxy_db 内部外键。
┌──────────────┐ ┌────────────────┐
│ p_role │ │ p_department │◄─┐ parent_id (自引用树)
│ (五级角色) │ │ (部门树) │──┘
└──────┬───────┘ └───────┬────────┘
│ role_code │ dept_id
▼ ▼
┌─────────────────────────────────────────┐
│ p_user_profile │ ┄┄► ragflow.user.id
│ (ragflow_user_id, role_code, dept_id) │
└───────────────┬─────────────────────────┘
│ user_id
┌──────────────────┼───────────────────┬──────────────────┐
▼ ▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ p_kb_meta │ │ p_kb_acl │ │ p_quota │ │ p_model_ │
│ (KB共享元数据)│ │ (指定用户共享) │ │ _policy │ │ whitelist │
│ ┄►ragflow.kb│ │ ┄►ragflow.kb │ │ (分级配额) │ │ (模型白名单) │
└──────┬──────┘ └──────────────┘ └──────────────┘ └──────────────┘
│ ragflow_kb_id
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────────────────┐
│ p_kb_version │──►│ p_approval │ │ p_service_app ┄► ragflow. │
│ (版本状态机) │ │ (审批单) │ │ (系统应用) api_token │
└──────────────┘ └──────────────┘ └──────────────────────────────┘
┌──────────────┐ ┌──────────────────────────────┐
│ p_audit_log │ │ p_token_broker ┄► ragflow. │
│ (全量审计) │ │ (Token缓存) user.access_ │
└──────────────┘ │ token │
└──────────────────────────────┘
ragflow_*_id 字段是逻辑引用,仅存值不建 DB 外键,保证 proxy_db 与 RAGFlow 库物理解耦、可独立升级迁移。主键统一用 CHAR(32) 与 RAGFlow 风格对齐。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | 角色 ID |
| code | VARCHAR(32) | UNIQUENN | SYSTEM_ADMIN / TEAM_ADMIN / EDITOR / RETRIEVER / SERVICE_APP |
| level | TINYINT | NN | 1~5,数字越小权限越高 |
| name | VARCHAR(64) | NN | 中文显示名 |
| permissions | JSON | 动作白名单,如 ["kb.create","doc.upload"] | |
| is_builtin | BOOL | default 1 | 内置角色不可删 |
| create_time | BIGINT | 毫秒时间戳(对齐 RAGFlow 风格) |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | 部门 ID |
| name | VARCHAR(128) | NN | 部门名 |
| parent_id | CHAR(32) | IDX | 上级部门(自引用,NULL=根) |
| path | VARCHAR(512) | IDX | 物化路径 /root/研发/算法,加速继承查询 |
| ragflow_tenant_id | CHAR(32) | REF | 绑定的「部门服务租户」(RAGFlow tenant.id) |
| admin_user_id | CHAR(32) | 团队管理员 | |
| status | CHAR(1) | default '1' | 1 有效 / 0 停用 |
path LIKE '/root/研发%' 一次命中整棵子树,避免递归 CTE。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| ragflow_user_id | CHAR(32) | UNIQUEREF | RAGFlow user.id |
| role_code | VARCHAR(32) | FK→p_role | 所属角色 |
| dept_id | CHAR(32) | FK→p_department | 所属部门 |
| display_name | VARCHAR(64) | 姓名/工号 | |
| status | CHAR(1) | default '1' | 账号启停 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | 逻辑 KB ID |
| name | VARCHAR(128) | NN | 逻辑知识库名 |
| owner_user_id | CHAR(32) | IDX | 创建者 |
| dept_id | CHAR(32) | FKIDX | 归属部门 |
| share_mode | VARCHAR(16) | NN | PRIVATE / DEPT / USER / TEAM(四模式) |
| draft_kb_id | CHAR(32) | REF | RAGFlow 草稿物理 KB id |
| published_kb_id | CHAR(32) | REF | RAGFlow 发布物理 KB id |
| service_tenant_id | CHAR(32) | REF | 承载该 KB 的服务租户 |
| current_version | INT | default 0 | 当前已发布版本号 |
| create_time | BIGINT |
draft_kb_id / published_kb_id 指向 RAGFlow 中两个真实 KB(均 permission=me)。代理对外只暴露 p_kb_meta.id 这一逻辑实体。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| kb_meta_id | CHAR(32) | FK→p_kb_metaIDX | 逻辑 KB |
| grantee_user_id | CHAR(32) | IDX | 被授权用户 |
| grant_type | VARCHAR(8) | default 'read' | read / write |
| granted_by | CHAR(32) | 授权人 | |
| expire_at | BIGINT | IDX | 到期时间(NULL=永久),金融场景常用临时授权 |
唯一索引建议 (kb_meta_id, grantee_user_id) 防重复授权。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| scope | VARCHAR(16) | NN | GLOBAL / ROLE / DEPT / USER(解析优先级 USER>DEPT>ROLE>GLOBAL) |
| scope_id | CHAR(32) | IDX | 对应角色/部门/用户 id(GLOBAL 为空) |
| max_kb | INT | default -1 | KB 数量上限(-1 不限) |
| max_doc | INT | default -1 | 文档总数上限 |
| max_file_size | BIGINT | default -1 | 单文件字节上限 |
| qps | INT | default -1 | API 每秒调用上限 |
| daily_call_limit | INT | default -1 | 每日调用总量上限 |
| priority | INT | default 0 | 同 scope 冲突时取大者 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| scope | VARCHAR(16) | NN | GLOBAL / ROLE / DEPT / USER / SERVICE_APP |
| scope_id | CHAR(32) | IDX | |
| llm_ids | JSON | NN | 允许模型列表,如 ["qwen-max","deepseek-chat"] |
| allow_embedding | JSON | 允许的向量模型 |
qps/daily_call_limit 仅作为策略阈值存库;实时计数走 Redis(滑动窗口 Key=rl:{scope_id}:{api_group}),避免高频写库。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| kb_meta_id | CHAR(32) | FK→p_kb_metaIDX | 逻辑 KB |
| version_no | INT | NN | 递增版本号 |
| status | VARCHAR(16) | NNIDX | DRAFT / PENDING / PUBLISHED / ARCHIVED |
| snapshot | JSON | 文档清单快照(doc_id + hash),冻结审定内容 | |
| submitter_id | CHAR(32) | 提交编辑者 | |
| submit_time | BIGINT | ||
| publish_time | BIGINT | 发布时间(NULL 未发布) |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| version_id | CHAR(32) | FK→p_kb_versionIDX | 关联版本 |
| approver_id | CHAR(32) | IDX | 审批人(团队/系统管理员) |
| decision | VARCHAR(16) | APPROVED / REJECTED / PENDING | |
| comment | TEXT | 审批意见(驳回原因) | |
| decided_at | BIGINT |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| actor_id | CHAR(32) | IDX | 操作主体 |
| action | VARCHAR(64) | IDX | 动作码,如 kb.publish |
| target_type | VARCHAR(32) | KB / DOC / ROLE / QUOTA … | |
| target_id | CHAR(32) | IDX | 目标对象 id |
| detail | JSON | before/after 变更快照 | |
| ip | VARCHAR(45) | 来源 IP(IPv6 兼容) | |
| ts | BIGINT | IDX | 毫秒时间戳 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| name | VARCHAR(128) | NN | 应用名 |
| api_key | VARCHAR(255) | UNIQUEIDX | 代理签发的 Key(对外) |
| ragflow_api_token | VARCHAR(255) | REF | 映射的 RAGFlow api_token(对内) |
| bound_kb_ids | JSON | 允许访问的逻辑 KB 列表 | |
| dept_id | CHAR(32) | FK | 归属部门 |
| qps | INT | default -1 | 专属频率上限 |
| status | CHAR(1) | default '1' | 启停(吊销 Key) |
| expire_at | BIGINT | Key 过期时间 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CHAR(32) | PK | |
| ragflow_tenant_id | CHAR(32) | UNIQUE | 租户 id |
| access_token | VARCHAR(255) | 缓存的 RAGFlow access_token | |
| expire_at | BIGINT | IDX | 过期时间,到期重新换取 |
p_ 落于独立库;所有 RAGFlow 引用字段命名 ragflow_* 仅存值。统一 CHAR(32) 主键 + BIGINT 毫秒时间戳,与 RAGFlow 风格一致,便于运维。
系统/团队管理员登录后的首页,聚合关键指标与待办(待审批、超配额预警)。
| 待办事项 | 类型 | 提交人 | 时间 | 操作 |
|---|---|---|---|---|
| 风控知识库 v3 发布申请 | 待审批 | 张工 | 10:21 | 审批 |
| 反洗钱条款库 v7 | 待审批 | 李工 | 09:48 | 审批 |
| 信贷部 KB 配额超 90% | 配额预警 | 系统 | 08:30 | 调整 |
分配五级角色、归属部门,对应 p_user_profile / p_role / p_department。
| 姓名/工号 | 角色 | 部门 | 状态 | 操作 |
|---|---|---|---|---|
| 王敏 · E1024 | 系统管理员 | 总部 | ✅ 启用 | 编辑 |
| 张涛 · E2087 | 团队管理员 | 研发中心 | ✅ 启用 | 编辑 |
| 李娜 · E3320 | 编辑者 | 算法组 | ✅ 启用 | 编辑 |
| 陈强 · E3355 | 检索用户 | 算法组 | ✅ 启用 | 编辑 |
| 风控查询服务 | 系统应用 | 风控部 | ✅ 启用 | 编辑 |
p_user_profile.role_code,代理立即按新动作白名单执行 RBAC,无需重登。四种共享模式可视化配置,对应 p_kb_meta.share_mode + p_kb_acl。
仅张涛可见可编辑
研发中心全员自动可见
仅授权名单可见
全租户成员可见
| 用户 | 权限 | 到期 | |
|---|---|---|---|
| 陈强 · E3355 | 只读 | 2026-12-31 | 移除 |
| 外部审计-王律师 | 只读 | 2026-07-01 | 移除 |
p_kb_acl.expire_at)。底层始终保持 RAGFlow KB permission=me,由代理 Token Broker 实现精准授权——前端无感。分级配额可视化,对应 p_quota_policy / p_model_whitelist。
| 作用域 | KB上限 | 文档上限 | 单文件 | QPS | 用量 |
|---|---|---|---|---|---|
| 角色:编辑者 | 10 | 5000 | 50MB | — | 6/10 |
| 部门:信贷部 | 30 | 20000 | 100MB | — | 27/30 |
| 应用:风控查询 | — | — | — | 50 | 20/50 |
model 字段比对,非白名单直接 403。草稿→待审批→已发布→历史 状态机可视化,对应 p_kb_version / p_approval。
| 文档 | 变更 | 状态 |
|---|---|---|
| 2026反洗钱新规.pdf | + 新增 | 已解析 |
| 客户尽调标准_v2.docx | ~ 修改 | 已解析 |
| 旧版风险评级.pdf | - 删除 | — |
p_approval 留痕。未发布内容仅存于 draft KB,检索用户永不可见——满足金融「四眼原则 + 内容冻结」。机器身份注册与 Key 管理,对应 p_service_app。
| 应用名 | API Key | 绑定 KB | QPS | 状态 | 操作 |
|---|---|---|---|---|---|
| 风控查询服务 | rfk_a1b2****c3d4 | 风控库 +2 | 50 | ✅ | 吊销 |
| 智能客服机器人 | rfk_e5f6****g7h8 | FAQ库 | 100 | ✅ | 吊销 |
| 报表分析定时任务 | rfk_i9j0****k1l2 | 财报库 | 20 | ⏸️ 停用 | 启用 |
p_service_app.status=0,代理立即拒绝该 Key。底层映射到 RAGFlow api_token,走 _load_user 的 APIToken 路径(g.auth_via_api_token=True),系统应用流量与人工流量隔离计量。