This commit is contained in:
2026-05-11 16:15:48 +08:00
parent 0c9254502c
commit e30b733b17
87 changed files with 3527 additions and 1261 deletions

View File

@@ -11,7 +11,6 @@ pub struct AdminLoginRequest {
// 登录成功后返回管理员访问令牌与基础会话信息。
/// 后台创作入口开关列表响应。
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]

View File

@@ -1,8 +1,5 @@
use std::collections::BTreeMap;
use platform_oss::{
OssObjectAccess, OssPostObjectFormFields, OssPostObjectResponse, OssSignedGetObjectUrlResponse,
};
use serde::{Deserialize, Serialize};
use serde_json::Value;
@@ -16,7 +13,7 @@ pub struct CreateDirectUploadTicketRequest {
#[serde(default)]
pub content_type: Option<String>,
#[serde(default)]
pub access: Option<OssObjectAccess>,
pub access: Option<DirectUploadObjectAccess>,
#[serde(default)]
pub metadata: BTreeMap<String, String>,
#[serde(default)]
@@ -45,6 +42,13 @@ pub enum ConfirmAssetObjectAccessPolicy {
PublicRead,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum DirectUploadObjectAccess {
Public,
Private,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ConfirmAssetObjectRequest {
@@ -513,7 +517,7 @@ pub struct DirectUploadTicketPayload {
pub legacy_public_path: String,
#[serde(default)]
pub content_type: Option<String>,
pub access: OssObjectAccess,
pub access: DirectUploadObjectAccess,
pub key_prefix: String,
pub expires_at: String,
pub max_size_bytes: u64,
@@ -614,57 +618,6 @@ pub struct AssetBindingPayload {
pub updated_at: String,
}
impl From<OssPostObjectFormFields> for DirectUploadTicketFormFields {
fn from(value: OssPostObjectFormFields) -> Self {
Self {
key: value.key,
policy: value.policy,
signature_version: value.signature_version,
credential: value.credential,
date: value.date,
signature: value.signature,
success_action_status: value.success_action_status,
content_type: value.content_type,
metadata: value.metadata,
}
}
}
impl From<OssPostObjectResponse> for DirectUploadTicketPayload {
fn from(value: OssPostObjectResponse) -> Self {
Self {
signature_version: value.signature_version.to_string(),
provider: value.provider.to_string(),
bucket: value.bucket,
endpoint: value.endpoint,
host: value.host,
object_key: value.object_key,
legacy_public_path: value.legacy_public_path,
content_type: value.content_type,
access: value.access,
key_prefix: value.key_prefix,
expires_at: value.expires_at,
max_size_bytes: value.max_size_bytes,
success_action_status: value.success_action_status,
form_fields: value.form_fields.into(),
}
}
}
impl From<OssSignedGetObjectUrlResponse> for AssetReadUrlPayload {
fn from(value: OssSignedGetObjectUrlResponse) -> Self {
Self {
provider: value.provider.to_string(),
bucket: value.bucket,
endpoint: value.endpoint,
host: value.host,
object_key: value.object_key,
expires_at: value.expires_at,
signed_url: value.signed_url,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
@@ -708,8 +661,8 @@ mod tests {
#[test]
fn direct_upload_ticket_response_keeps_form_fields_shape() {
let payload = serde_json::to_value(CreateDirectUploadTicketResponse {
upload: DirectUploadTicketPayload::from(OssPostObjectResponse {
signature_version: "v4",
upload: DirectUploadTicketPayload {
signature_version: "v4".to_string(),
provider: "aliyun-oss",
bucket: "genarrative-assets".to_string(),
endpoint: "oss-cn-shanghai.aliyuncs.com".to_string(),
@@ -717,12 +670,12 @@ mod tests {
object_key: "generated-characters/hero/master.png".to_string(),
legacy_public_path: "/generated-characters/hero/master.png".to_string(),
content_type: Some("image/png".to_string()),
access: OssObjectAccess::Private,
access: DirectUploadObjectAccess::Private,
key_prefix: "generated-characters/hero".to_string(),
expires_at: "2026-04-21T00:00:00Z".to_string(),
max_size_bytes: 1024,
success_action_status: 200,
form_fields: OssPostObjectFormFields {
form_fields: DirectUploadTicketFormFields {
key: "generated-characters/hero/master.png".to_string(),
policy: "policy".to_string(),
signature_version: "OSS4-HMAC-SHA256".to_string(),
@@ -736,7 +689,7 @@ mod tests {
"character_visual".to_string(),
)]),
},
}),
},
})
.expect("payload should serialize");

View File

@@ -6,8 +6,8 @@ pub mod auth;
pub mod big_fish;
pub mod big_fish_works;
pub mod creation_agent_document_input;
pub mod creative_agent;
pub mod creation_entry_config;
pub mod creative_agent;
pub mod hyper3d;
pub mod llm;
pub mod match3d_agent;

View File

@@ -486,8 +486,6 @@ pub struct AdminUpsertProfileInviteCodeRequest {
#[serde(default)]
pub metadata: Option<serde_json::Value>,
#[serde(default)]
pub granted_user_tags: Vec<String>,
#[serde(default)]
pub starts_at: Option<String>,
#[serde(default)]
pub expires_at: Option<String>,
@@ -526,7 +524,6 @@ pub struct ProfileInviteCodeAdminResponse {
pub user_id: String,
pub invite_code: String,
pub metadata: serde_json::Value,
pub granted_user_tags: Vec<String>,
pub starts_at: Option<String>,
pub expires_at: Option<String>,
pub status: String,