diff --git a/constant/context_key.go b/constant/context_key.go
index c28ad202..22986248 100644
--- a/constant/context_key.go
+++ b/constant/context_key.go
@@ -42,6 +42,10 @@ const (
ContextKeyAutoGroupIndex ContextKey = "auto_group_index"
ContextKeyAutoGroupRetryIndex ContextKey = "auto_group_retry_index"
+ // ContextKeyDomainHost 记录命中域名路由时的来源域名(规范化后),
+ // 写入消费日志的 other.admin_info,仅管理员可见。
+ ContextKeyDomainHost ContextKey = "domain_host"
+
/* user related keys */
ContextKeyUserId ContextKey = "id"
ContextKeyUserSetting ContextKey = "user_setting"
diff --git a/middleware/domain_group_router.go b/middleware/domain_group_router.go
index 99eacfdf..cfae19d7 100644
--- a/middleware/domain_group_router.go
+++ b/middleware/domain_group_router.go
@@ -35,6 +35,7 @@ func DomainAutoGroupRouter() gin.HandlerFunc {
if _, valid := setting.GetSecondaryAutoGroup(target); valid {
common.SetContextKey(c, constant.ContextKeyUsingGroup, target)
common.SetContextKey(c, constant.ContextKeyTokenGroup, target)
+ common.SetContextKey(c, constant.ContextKeyDomainHost, domain)
logger.LogDebug(c, "domain routing: %s -> secondary auto group %s", domain, target)
}
}
diff --git a/service/log_info_generate.go b/service/log_info_generate.go
index 54448d59..940bf497 100644
--- a/service/log_info_generate.go
+++ b/service/log_info_generate.go
@@ -72,6 +72,10 @@ func GenerateTextOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, m
AppendChannelAffinityAdminInfo(ctx, adminInfo)
+ if domainHost := common.GetContextKeyString(ctx, constant.ContextKeyDomainHost); domainHost != "" {
+ adminInfo["domain_host"] = domainHost
+ }
+
other["admin_info"] = adminInfo
appendRequestPath(ctx, relayInfo, other)
appendRequestConversionChain(relayInfo, other)
diff --git a/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx b/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
index 6f4adfb3..e4c08c6f 100644
--- a/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
+++ b/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
@@ -549,6 +549,14 @@ export function DetailsDialog(props: DetailsDialogProps) {
)}
+ {other?.admin_info?.domain_host && props.isAdmin && (
+
+ )}
+
{props.log.token_name && (