improve(log):优化日志显示,隐藏关键信息

This commit is contained in:
qian committed 2026-06-06 12:44:28 +08:00
1 parent 9c32da15f0
commit ac5566b141
5 files changed
+23 -16

No files matched your search

+1 -1
View File
@@ -240,7 +240,7 @@ func (s *sTenant) TenantRequestAuditLogs(ctx context.Context, req *v1.TenantRequ
}
dataM := auditDB.Ctx(ctx).Model("aud_request_logs").Safe().
Fields("id, request_id, user_id, project_id, method, path, query_params, status_code, client_ip, user_agent, latency_ms, first_token_ms, tenant_audit_level as audit_level, task_id, task_status, task_completed_at, created_at").
Fields("id, request_id, tenant_id, user_id, project_id, api_key_id, method, path, query_params, status_code, client_ip, user_agent, latency_ms, first_token_ms, tenant_audit_level as audit_level, task_id, task_status, task_completed_at, created_at").
OrderDesc("created_at").
Page(page, pageSize)
if where != "" {
+16 -5
View File
@@ -198,7 +198,7 @@ func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v
}
where := strings.Join(conditions, " AND ")
fromClause := "bil_usage_logs u LEFT JOIN tnt_users t ON u.user_id = t.id AND u.tenant_id = t.tenant_id LEFT JOIN tnt_projects p ON u.project_id = p.id LEFT JOIN api_keys ak ON u.api_key_id = ak.id"
fromClause := "bil_usage_logs u LEFT JOIN tnt_users t ON u.user_id = t.id AND u.tenant_id = t.tenant_id LEFT JOIN tnt_projects p ON u.project_id = p.id LEFT JOIN api_keys ak ON u.api_key_id = ak.id LEFT JOIN mdl_models mdl ON u.model_name = mdl.model_id"
countSQL := "SELECT COUNT(*) AS total FROM " + fromClause + " WHERE " + where
countResult, err := g.DB().Ctx(ctx).Query(ctx, countSQL, args...)
@@ -211,7 +211,7 @@ func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v
}
dataSQL := fmt.Sprintf(
`SELECT u.*, COALESCE(t.username, '') AS username, COALESCE(p.name, '') AS project_name, COALESCE(ak.name, '') AS api_key_name
`SELECT u.*, COALESCE(t.username, '') AS username, COALESCE(p.name, '') AS project_name, COALESCE(ak.name, '') AS api_key_name, COALESCE(mdl.model_name, '') AS model_display_name
FROM %s WHERE %s ORDER BY u.created_at DESC LIMIT ? OFFSET ?`,
fromClause, where,
)
@@ -221,10 +221,20 @@ func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v
return nil, err
}
// 需要从响应中移除的渠道相关字段
channelFields := map[string]bool{
"channel_name": true,
"channel_type": true,
"channel_id": true,
}
list := make([]map[string]any, 0, len(result))
for _, row := range result {
m := make(map[string]any, len(row))
for k, v := range row {
if channelFields[k] {
continue
}
switch raw := v.Val().(type) {
case []byte:
s := string(raw)
@@ -264,7 +274,8 @@ func (s *sTenant) ExportUsageLogs(ctx context.Context, req *v1.TenantUsageLogsEx
columns := []export.Column{
{Field: "id", Header: "ID"},
{Field: "username", Header: "用户名"},
{Field: "model_name", Header: "模型"},
{Field: "model_display_name", Header: "模型显示名称"},
{Field: "model_name", Header: "模型标识"},
{Field: "request_type", Header: "请求类型"},
{Field: "input_tokens", Header: "输入Token"},
{Field: "output_tokens", Header: "输出Token"},
@@ -315,13 +326,13 @@ func (s *sTenant) ExportUsageLogs(ctx context.Context, req *v1.TenantUsageLogsEx
}
where := strings.Join(conditions, " AND ")
fromClause := "bil_usage_logs u LEFT JOIN tnt_users t ON u.user_id = t.id AND u.tenant_id = t.tenant_id LEFT JOIN tnt_projects p ON u.project_id = p.id LEFT JOIN api_keys ak ON u.api_key_id = ak.id"
fromClause := "bil_usage_logs u LEFT JOIN tnt_users t ON u.user_id = t.id AND u.tenant_id = t.tenant_id LEFT JOIN tnt_projects p ON u.project_id = p.id LEFT JOIN api_keys ak ON u.api_key_id = ak.id LEFT JOIN mdl_models mdl ON u.model_name = mdl.model_id"
return nil, export.GenericExport(ctx, config, func(yield func(map[string]any) bool) {
offset := 0
for {
dataSQL := fmt.Sprintf(
`SELECT u.id, COALESCE(t.username, '') AS username, u.model_name, u.request_type,
`SELECT u.id, COALESCE(t.username, '') AS username, COALESCE(mdl.model_name, '') AS model_display_name, u.model_name, u.request_type,
u.input_tokens, u.output_tokens, u.total_cost, u.status, u.created_at
FROM %s WHERE %s ORDER BY u.created_at DESC LIMIT 1000 OFFSET ?`,
fromClause, where,
@@ -1,4 +1,4 @@
<script setup lang="ts">
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import Icon from '@/components/common/Icon.vue'
@@ -301,7 +301,7 @@ onMounted(() => {
<th class="min-w-50">用户/项目</th>
<th class="min-w-40">API Key</th>
<th class="min-w-45">模型</th>
<th class="min-w-40">渠道</th>
<th class="min-w-40">模型显示名称</th>
<th class="min-w-30">类型</th>
<th class="min-w-30">Token</th>
<th class="min-w-20">费用</th>
@@ -332,9 +332,9 @@ onMounted(() => {
</div>
<span v-else class="font-medium text-gray-900">{{ log.model_name }}</span>
</td>
<!-- 渠道 -->
<!-- 模型显示名称 -->
<td>
<span class="text-sm text-gray-700">{{ log.channel_name || '-' }}</span>
<span class="text-sm text-gray-700">{{ log.model_display_name || '-' }}</span>
</td>
<!-- 请求类型 -->
@@ -601,10 +601,6 @@ onMounted(() => {
<button class="text-xs text-primary-500 hover:text-primary-700 ml-1" @click.stop="$router.push({ path: '/tenant/task-logs', query: { public_task_id: detailLog.task_id } })">查看任务</button>
</span>
</div>
<div class="flex justify-between">
<span class="text-gray-500">渠道</span>
<span>{{ detailLog.channel_name || '-' }} <span v-if="detailLog.channel_type" class="text-xs text-gray-400">(类型: {{ detailLog.channel_type }})</span></span>
</div>
<div class="flex justify-between">
<span class="text-gray-500">代理模式</span>
<span class="font-mono text-xs">{{ detailLog.relay_mode || '-' }}</span>
@@ -49,7 +49,7 @@ async function synthesize() {
input: inputText.value,
voice: voice.value,
response_format: responseFormat.value,
}, { responseType: 'arraybuffer' })
}, { responseType: 'arraybuffer', timeout: 180_000 })
// /v1/audio/speech 返回原始二进制音频数据
const buffer = res.data as ArrayBuffer
@@ -53,7 +53,7 @@ async function generate() {
prompt: prompt.value,
size: size.value,
quality: quality.value,
}, { timeout: 180_000 })
}, { timeout: 300_000 })
const data = res.data
images.value = data.data || []