1. 页面概览

系统设置页是 AIP 管理后台的键值型系统参数维护入口,路由 /admin/settings,仅管理员可访问。它读写 system_settings 表中的配置项(如 LLM 密钥、SECRET_KEY、CORS 白名单、并发上限等),支持设置项列表展示、新增/编辑(key 提供候选列表也可自由输入)、删除。页面上方还内嵌「PII 脱敏配置」卡片,专门维护 PII_PATTERNS(JSON:PII 类型 → 正则),控制日志与提示词中的敏感信息脱敏。

页面为"新增/编辑弹窗 + 列表表格"的经典 CRUD 形态。所有设置修改都是落库存储,重启 AIP 服务后生效;结构化 NLQ 任务(text2sql/图表解读)的输出始终不脱敏。

2. 访问入口

2.1 路由与菜单

path /admin/settings、name AdminSettings、title 系统设置;挂载在父路由 /admin(AdminLayout)下,侧边栏菜单项「系统设置」。源码 action/web/src/views/SettingsPage.vue

2.2 认证与权限

父路由 requiresAuth: true, requiresAdmin: true;后端 /settings 系列全挂 admin 组(authMiddleware + adminMiddleware),非管理员 403。请求经 aipClient.js 附带 aip_token

2.3 端口与 API 前缀

AIP 后端 18080,前缀 /aip-api(baseURL /aip-api/v1,Vite 代理重写为 /api/v1)。

3. 界面布局

系统设置                                    [新增设置]
[操作结果提示 alert(可关闭)]
[提示:系统设置将在服务重启后生效。]
PII 脱敏配置:PII 脱敏配置 [已配置/未配置]
  当前配置(JSON 预览)| 编辑 PII_PATTERNS(JSON)textarea
  [保存 PII_PATTERNS] [删除配置(关闭脱敏)]
设置列表:Key | Value | Type | 描述 | 操作[编辑][删除]
新增/编辑弹窗:Key*(datalist+自由输入) | Value | Type | 描述
              [取消] [创建/保存]

4. 交互元素

控件位置含义与作用
新增设置按钮页面头部打开空表单弹窗创建新设置项
保存 PII_PATTERNS 按钮PII 卡片校验 JSON 后 PUT /settings 写入;保存中显示"保存中..."
删除配置(关闭脱敏)按钮PII 卡片confirm 确认后 DELETE /settings/PII_PATTERNS
PII textareaPII 卡片JSON 编辑框,占位含 EMAIL/PHONE_NUMBER 两个正则;须合法 JSON
编辑 / 删除按钮表格每行编辑回填弹窗;删除有 confirm 二次确认,不可撤销
Key 输入框(datalist)弹窗候选:OPENAI_API_KEYDEEPSEEK_API_KEYDEEPSEEK_BASE_URLDASHSCOPE_API_KEYANTHROPIC_API_KEYSECRET_KEYCORS_ORIGINSMAX_CONCURRENTPII_PATTERNSAUTH_KEY,可自由输入
Type 下拉框弹窗string/integer/boolean/json,默认 string
创建 / 保存按钮弹窗新增文案「创建」,编辑「保存」;Key 空拦截"Key 必填"

5. 后端关联

5.1 端点表

方法路径用途
GET/settings列出全部设置项,返回 {"settings": [...]}
PUT/settings新增或更新(按 setting_key upsert),body {key, value, type, description}
GET/settings/:key获取单个设置,不存在返回 404
DELETE/settings/:key删除单个设置,返回 {"deleted": true}

5.2 请求与响应

设置项字段为 key/value/type/descriptionGET /settings/PII_PATTERNS 返回 {"setting": {...}},404 表示未配置(脱敏关闭)。PII 以 type: 'json' 存储正则文本。

5.3 关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:保存设置提示"保存失败:..."

问题 2:PII_PATTERNS 保存被拒

问题 3:改了设置但行为没变化

问题 4:无法读取 PII 状态且报错

8. 已知缺陷与边界

说明
重启生效设置修改不热加载,须重启 AIP 生效
明文展示密钥SECRET_KEY、各 API_KEY 的 Value 在列表明文展示
Value 单值每 key 单值存储,无版本/历史回滚
PII 不覆盖结构化任务text2sql/图表解读等结构化 NLQ 任务始终不脱敏,属设计边界
无搜索设置项多时无搜索/分页,需滚动查找