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 {