From 771ff88440666c4c5caba83f0f11d76d4f992f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 19 Sep 2026 13:05:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=84=B1=E6=95=8F=20TripoUrl=20=E7=9A=84=20Deb?= =?UTF-8?q?ug=20=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为 TripoUrl 手写 Debug 实现,改用隐藏 query 与 fragment 的脱敏形式 新增 TripoUrl::redacted 提供日志用脱敏 URL,完整 URL 仍由 as_str 显式读取 TripoTaskSnapshot、TripoTaskOutput、TripoDownloadedModel 的调试输出随之不再暴露带签名的下载地址 --- .../crates/platform-tripo/src/common/types.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server-rs/crates/platform-tripo/src/common/types.rs b/server-rs/crates/platform-tripo/src/common/types.rs index 527d7b02d..be9e72198 100644 --- a/server-rs/crates/platform-tripo/src/common/types.rs +++ b/server-rs/crates/platform-tripo/src/common/types.rs @@ -22,7 +22,7 @@ pub enum TripoTaskType { MultiviewToModel, } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone, Eq, PartialEq)] pub struct TripoUrl(Url); impl TripoUrl { @@ -40,9 +40,25 @@ impl TripoUrl { Ok(Self(url)) } + /// 完整 URL 只通过该显式访问器读取。 pub fn as_str(&self) -> &str { self.0.as_str() } + + /// 日志与调试用脱敏形式:隐藏可能携带签名参数的 query 与 fragment。 + pub fn redacted(&self) -> String { + let full = self.0.as_str(); + match full.find(['?', '#']) { + Some(index) => format!("{}?", &full[..index]), + None => full.to_owned(), + } + } +} + +impl fmt::Debug for TripoUrl { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("TripoUrl").field(&self.redacted()).finish() + } } impl fmt::Display for TripoUrl {