feat: 系统设置新增原始请求/响应记录开关(仅管理员)
- 系统配置键 log_raw_requests:开启后,仅管理员账号的每次请求 在用量明细中保存客户端原始请求体与上游原始响应体 (流式含全部 SSE 事件),用于排障 - UsageLog 新增 raw_request / raw_response 字段(type:text) - AuthLLM 附带 user_role 供网关判断管理员 - gateway:10s TTL 缓存开关;streamResponse/bufferResponse 支持累积上游原始响应;recordUsage 填充原始字段 - 前端 SystemConfig 新增开关(会显著增加存储的提示) - 新增 doc/flow.md 网关调用流程示意图
This commit is contained in:
@@ -13,6 +13,7 @@ const saving = ref(false)
|
||||
|
||||
const registrationEnabled = ref(true)
|
||||
const passwordLoginEnabled = ref(true)
|
||||
const logRawRequests = ref(false)
|
||||
|
||||
async function load() {
|
||||
loading.value = true
|
||||
@@ -23,6 +24,9 @@ async function load() {
|
||||
])
|
||||
registrationEnabled.value = regRes.data.data.enabled
|
||||
passwordLoginEnabled.value = pwdRes.data.data.enabled
|
||||
// 原始请求/响应记录开关(通用配置键 log_raw_requests)
|
||||
const cfgRes = await request.get('/admin/config')
|
||||
logRawRequests.value = cfgRes.data?.data?.log_raw_requests === 'true'
|
||||
} catch (e) {
|
||||
setToast(errMsg(e), 'error')
|
||||
} finally {
|
||||
@@ -56,6 +60,19 @@ async function savePasswordLogin(enabled: boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
async function saveLogRawRequests(enabled: boolean) {
|
||||
saving.value = true
|
||||
try {
|
||||
await request.put('/admin/config', { log_raw_requests: enabled ? 'true' : 'false' })
|
||||
logRawRequests.value = enabled
|
||||
setToast(enabled ? '已开启原始请求/响应记录' : '已关闭原始请求/响应记录', 'success')
|
||||
} catch (e) {
|
||||
setToast(errMsg(e), 'error')
|
||||
} finally {
|
||||
saving.value = false
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(load)
|
||||
</script>
|
||||
|
||||
@@ -116,6 +133,30 @@ onMounted(load)
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 原始请求/响应记录(仅管理员) -->
|
||||
<div class="card border border-base-300/60 bg-base-100 p-4 shadow-sm">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<h3 class="text-sm font-medium">记录原始请求/响应</h3>
|
||||
<p class="mt-1 text-xs text-base-content/50">仅对管理员账号生效:在用量明细中保存每次请求的客户端原始请求体与上游原始响应体(流式含全部 SSE 事件),用于排障。会显著增加存储。</p>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
role="switch"
|
||||
:aria-checked="logRawRequests"
|
||||
class="relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary"
|
||||
:class="logRawRequests ? 'bg-primary' : 'bg-base-200'"
|
||||
:disabled="saving"
|
||||
@click="saveLogRawRequests(!logRawRequests)"
|
||||
>
|
||||
<span
|
||||
class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm ring-0 transition-transform"
|
||||
:class="logRawRequests ? 'translate-x-6' : 'translate-x-1'"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user