// OSS 公网 base URL 由 API 下发(AGENTS.md 规则 1/5), // 见 src/api/publicConfigClient.ts。ossAssets 在模块加载时同步取缓存值, // App 启动时 preloadPublicConfig() 已预加载;未加载时 getOssPublicBaseUrl() 返回 fallback。 import { getOssPublicBaseUrl } from "../api/publicConfigClient"; function oss(path: string): string { return `${getOssPublicBaseUrl()}/${path.replace(/^\/+/, "")}`; } function muban(path: string): string { return oss(`muban/${path.replace(/^\/+/, "")}`); } export const ossAssets = { workflows: { caseImages: [ muban("community/workflow-rain-night.jpg"), muban("community/workflow-character-look.jpg"), muban("community/workflow-skyline.jpg"), muban("community/workflow-lab.jpg"), ], }, ecommerce: { generated: muban("ecommerce-carousel-generated.png"), slides: { slide4: muban("slide-4.png"), slide5: muban("slide-5.png"), }, heroSlides: [ muban("ecommerce-hero-carousel/slide-1.webp"), muban("ecommerce-hero-carousel/slide-2.webp"), muban("ecommerce-hero-carousel/slide-3.webp"), muban("ecommerce-hero-carousel/slide-4.webp"), muban("ecommerce-hero-carousel/slide-5.webp"), ], templateSlides: [ muban("more-template-carousel/slide-1.jpg"), muban("more-template-carousel/slide-2.jpg"), muban("more-template-carousel/slide-3.jpg"), muban("more-template-carousel/slide-4.png"), muban("more-template-carousel/slide-5.gif"), ], templateCases: [ muban("ecommerce/templates/case-1.png"), muban("ecommerce/templates/case-2.png"), muban("ecommerce/templates/case-3.png"), muban("ecommerce/templates/case-4.png"), muban("ecommerce/templates/case-5.png"), muban("ecommerce/templates/case-6.png"), ], inspiration: { asinListing: muban("ecommerce/inspiration/2026-06/asin-listing-optimization.png"), tiktokPreference: muban("ecommerce/inspiration/2026-06/tiktok-us-consumer-preference.png"), competitorListing: muban("ecommerce/inspiration/2026-06/competitor-listing-analysis.png"), fathersDaySet: muban("ecommerce/inspiration/2026-06/fathers-day-product-set.png"), perfumeSet: muban("ecommerce/inspiration/2026-06/perfume-product-set.png"), sprayScene: muban("ecommerce/inspiration/2026-06/spray-product-scene.png"), campingCart: muban("ecommerce/inspiration/2026-06/taobao-camping-cart.webp"), cosmeticApplication: muban("ecommerce/inspiration/2026-06/cosmetic-application-set.png"), officeStyleSet: muban("ecommerce/inspiration/2026-06/office-style-product-set.png"), spokenReview: muban("ecommerce/inspiration/2026-06/spoken-product-review.mp4"), perfumeTexture: muban("ecommerce/inspiration/2026-06/perfume-texture-video.mp4"), toyInteraction: muban("ecommerce/inspiration/2026-06/toy-interaction-video.mp4"), vesselDisplay: muban("ecommerce/inspiration/2026-06/vessel-product-display.mp4"), jewelryModel: muban("ecommerce/inspiration/2026-06/jewelry-model-tryon.mp4"), sofaLifestyle: muban("ecommerce/inspiration/2026-06/sofa-lifestyle-video.mp4"), stationeryTaobaoSet: muban("ecommerce/inspiration/2026-06/stationery-taobao-set-2.png"), stripedSingleSofaSet: muban("ecommerce/inspiration/2026-06/striped-single-sofa-set.png"), brownLeatherJacketPhotoSet: muban("ecommerce/inspiration/2026-06/brown-leather-jacket-photo-set-2.png"), modelSunHatTryon: muban("ecommerce/inspiration/2026-06/model-sun-hat-tryon.png"), taobaoEarphoneProduct: muban("ecommerce/inspiration/2026-06/taobao-earphone-product.png"), etsyScentedCandleSet: muban("ecommerce/inspiration/2026-06/etsy-scented-candle-set-2.png"), worldCupFlashVideo: muban("ecommerce/inspiration/2026-06/world-cup-flash-video.mp4"), lipstickUgcTiktokVideo: muban("ecommerce/inspiration/2026-06/lipstick-ugc-tiktok-video.mp4"), nightLightUnboxingDouyin: muban("ecommerce/inspiration/2026-06/night-light-unboxing-douyin-2.mp4"), cleanerPainpointDouyin: muban("ecommerce/inspiration/2026-06/cleaner-painpoint-douyin-video.mp4"), dressOutfitVideo: muban("ecommerce/inspiration/2026-06/dress-outfit-video.mp4"), sunscreenUgcTiktokVideo: muban("ecommerce/inspiration/2026-06/sunscreen-ugc-tiktok-2.mp4"), }, productSet: { main: muban("ecommerce/product-set/main.webp"), scene: muban("ecommerce/product-set/scene.webp"), model: muban("ecommerce/product-set/model.webp"), detail: muban("ecommerce/product-set/detail.webp"), selling: muban("ecommerce/product-set/selling.webp"), hosting: muban("ecommerce/product-set/hosting.webp"), }, tryOn: { dressA: muban("ecommerce/try-on/dress-a.webp"), dressB: muban("ecommerce/try-on/dress-b.webp"), modelWoman: muban("ecommerce/try-on/model-woman.webp"), modelMan: muban("ecommerce/try-on/model-man.webp"), modelAsian: muban("ecommerce/try-on/model-asian.webp"), tryA: muban("ecommerce/try-on/result-a.webp"), tryB: muban("ecommerce/try-on/result-b.webp"), jacket: muban("ecommerce/try-on/jacket.webp"), jacketResultA: muban("ecommerce/try-on/jacket-result-a.webp"), jacketResultB: muban("ecommerce/try-on/jacket-result-b.webp"), hat: muban("ecommerce/try-on/hat.webp"), hatResultA: muban("ecommerce/try-on/hat-result-a.webp"), hatResultB: muban("ecommerce/try-on/hat-result-b.webp"), }, detail: { productA: muban("ecommerce/detail/product-a.webp"), productB: muban("ecommerce/detail/product-b.webp"), productC: muban("ecommerce/detail/product-c.webp"), longPage: muban("ecommerce/detail/long-page.webp"), gridA: muban("ecommerce/detail/grid-a.webp"), gridB: muban("ecommerce/detail/grid-b.webp"), gridC: muban("ecommerce/detail/grid-c.webp"), gridD: muban("ecommerce/detail/grid-d.webp"), gridE: muban("ecommerce/detail/grid-e.webp"), gridF: muban("ecommerce/detail/grid-f.webp"), }, }, } as const; export type ProductSetOssAssets = typeof ossAssets.ecommerce.productSet; export type TryOnOssAssets = typeof ossAssets.ecommerce.tryOn; export type DetailOssAssets = typeof ossAssets.ecommerce.detail;