From 6ecdc8011d9a3c8f3c65165b81a0a7dd8f7ca016 Mon Sep 17 00:00:00 2001
From: Nelson <1475262689@qq.com>
Date: Wed, 8 Jul 2026 11:35:52 +0800
Subject: [PATCH] Show all system settings explicitly
---
.../apps/admin-web/src/App.vue | 143 +++++++++++++-----
.../apps/admin-web/src/styles.css | 20 +--
2 files changed, 108 insertions(+), 55 deletions(-)
diff --git a/ai_knowledge_base_v2/apps/admin-web/src/App.vue b/ai_knowledge_base_v2/apps/admin-web/src/App.vue
index 4d1f4b8..c16250b 100644
--- a/ai_knowledge_base_v2/apps/admin-web/src/App.vue
+++ b/ai_knowledge_base_v2/apps/admin-web/src/App.vue
@@ -162,14 +162,8 @@ const nullableModelFields = [
"remark",
] as const;
-const configForm = reactive({
- configKey: "daily_chat_limit",
- configValue: "100",
- description: "默认每日聊天次数",
-});
-
type SystemSettingValue = string | number | boolean;
-type SystemSettingType = "number" | "switch";
+type SystemSettingType = "number" | "switch" | "text";
interface SystemSettingDefinition {
key: string;
@@ -178,6 +172,7 @@ interface SystemSettingDefinition {
defaultValue: SystemSettingValue;
min?: number;
max?: number;
+ placeholder?: string;
description: string;
}
@@ -190,7 +185,7 @@ interface SystemSettingSection {
const systemSettingSections: SystemSettingSection[] = [
{
title: "用户与登录",
- description: "控制学员准入后的默认额度和登录态有效时间。",
+ description: "控制学员准入、默认资料、验证码和登录态有效时间。",
settings: [
{
key: "daily_chat_limit",
@@ -202,13 +197,45 @@ const systemSettingSections: SystemSettingSection[] = [
description: "新建或导入学员未单独填写额度时使用。",
},
{
- key: "login_token_expire_minutes",
- label: "登录有效期(分钟)",
+ key: "access_token_expire_minutes",
+ label: "登录 Token 有效期(分钟)",
type: "number",
- defaultValue: 10080,
+ defaultValue: 43200,
min: 5,
max: 43200,
- description: "用户端和管理端 Token 的建议有效期配置。",
+ description: "用户端和管理端登录后的 Token 有效期。",
+ },
+ {
+ key: "sms_code_expire_minutes",
+ label: "验证码有效期(分钟)",
+ type: "number",
+ defaultValue: 5,
+ min: 1,
+ max: 60,
+ description: "短信验证码生成后的可使用时间。",
+ },
+ {
+ key: "mock_sms_enabled",
+ label: "使用 mock 短信",
+ type: "switch",
+ defaultValue: true,
+ description: "开发和演示环境可开启,生产环境应关闭并接入真实短信。",
+ },
+ {
+ key: "mock_sms_code",
+ label: "mock 短信验证码",
+ type: "text",
+ defaultValue: "123456",
+ placeholder: "例如 123456",
+ description: "mock 短信开启时使用的固定验证码。",
+ },
+ {
+ key: "default_user_name_prefix",
+ label: "默认用户名前缀",
+ type: "text",
+ defaultValue: "用户",
+ placeholder: "例如 用户",
+ description: "系统需要生成默认名称时使用的前缀。",
},
],
},
@@ -225,6 +252,20 @@ const systemSettingSections: SystemSettingSection[] = [
max: 300,
description: "真实模型请求超过该时间应判定为超时。",
},
+ {
+ key: "mock_rag_enabled",
+ label: "使用 mock RAG",
+ type: "switch",
+ defaultValue: true,
+ description: "开发和演示环境可开启,真实飞书检索验收前应关闭。",
+ },
+ {
+ key: "mock_model_enabled",
+ label: "使用 mock 大模型",
+ type: "switch",
+ defaultValue: true,
+ description: "开发和演示环境可开启,真实模型验收前应关闭。",
+ },
{
key: "chat_context_message_count",
label: "上下文消息数",
@@ -245,8 +286,25 @@ const systemSettingSections: SystemSettingSection[] = [
},
{
title: "外部服务",
- description: "控制飞书检索和模型 mock 开关,方便开发、测试和灰度。",
+ description: "控制飞书检索服务的地址、超时、重试和 mock 开关。",
settings: [
+ {
+ key: "feishu_search_url",
+ label: "飞书检索服务地址",
+ type: "text",
+ defaultValue: "",
+ placeholder: "例如 https://example.com/search",
+ description: "如使用独立飞书检索适配服务,在这里填写调用地址。",
+ },
+ {
+ key: "feishu_timeout_seconds",
+ label: "飞书请求超时(秒)",
+ type: "number",
+ defaultValue: 20,
+ min: 1,
+ max: 120,
+ description: "飞书相关接口调用超过该时间应判定为超时。",
+ },
{
key: "feishu_retry_count",
label: "飞书检索重试次数",
@@ -257,18 +315,38 @@ const systemSettingSections: SystemSettingSection[] = [
description: "飞书检索失败时的最大重试次数。",
},
{
- key: "use_mock_feishu",
+ key: "feishu_mock_enabled",
label: "使用 mock 飞书检索",
type: "switch",
defaultValue: true,
description: "开发和演示环境可开启,生产环境应关闭。",
},
+ ],
+ },
+ {
+ title: "系统开关",
+ description: "控制系统级展示和运行策略,不包含密钥类配置。",
+ settings: [
{
- key: "use_mock_model",
- label: "使用 mock 大模型",
+ key: "show_operation_log_detail",
+ label: "展示操作日志详情",
type: "switch",
defaultValue: true,
- description: "开发和演示环境可开启,真实验收前应关闭。",
+ description: "开启后后台审计页可展示更完整的操作上下文。",
+ },
+ {
+ key: "chat_export_enabled",
+ label: "允许导出聊天记录",
+ type: "switch",
+ defaultValue: true,
+ description: "关闭后后台不应提供聊天记录导出能力。",
+ },
+ {
+ key: "maintenance_mode",
+ label: "维护模式",
+ type: "switch",
+ defaultValue: false,
+ description: "预留给后续停机维护提示和访问控制使用。",
},
],
},
@@ -694,12 +772,6 @@ function validateModelForm() {
return true;
}
-async function saveConfig() {
- await api.saveConfig({ ...configForm });
- ElMessage.success("配置已保存");
- await loadCurrentMenu();
-}
-
async function saveSystemSettings() {
await Promise.all(
systemSettingDefinitions.map((setting) =>
@@ -729,6 +801,9 @@ function normalizeSystemSettingValue(setting: (typeof systemSettingDefinitions)[
if (setting.type === "switch") {
return ["1", "true", "yes", "on", "启用"].includes(rawValue.toLowerCase());
}
+ if (setting.type === "text") {
+ return rawValue;
+ }
const parsed = Number(rawValue);
if (Number.isFinite(parsed)) {
return parsed;
@@ -1236,29 +1311,17 @@ function buildChatQuery() {
:min="setting.min"
:max="setting.max"
/>
+
用于排查或临时增加未展示在分组表单里的配置项。
-