|
|
|
|
@@ -0,0 +1,619 @@
|
|
|
|
|
import { CardInfoEntity } from '../entity/info';
|
|
|
|
|
import { CardBentoEntity } from '../entity/bento';
|
|
|
|
|
import { CardCasesEntity } from '../entity/cases';
|
|
|
|
|
import { CardArticleEntity } from '../entity/article';
|
|
|
|
|
import type { BentoBlockType, BentoColSpan, BentoRowSpan } from '../../../comm/types/omni';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单张名片的数据包定义
|
|
|
|
|
*/
|
|
|
|
|
export interface MockCardBundle {
|
|
|
|
|
card: Partial<CardInfoEntity>;
|
|
|
|
|
bentoBlocks: Partial<CardBentoEntity>[];
|
|
|
|
|
cases: Partial<CardCasesEntity>[];
|
|
|
|
|
articles: Partial<CardArticleEntity>[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 5 组不同全球主流行业的高保真多媒体名片数据(含配图与视频)
|
|
|
|
|
*/
|
|
|
|
|
export const MOCK_CARDS_DATA: MockCardBundle[] = [
|
|
|
|
|
// ==========================================
|
|
|
|
|
// 名片 1: 消费电子与全球智能硬件 (Alex Zheng)
|
|
|
|
|
// ==========================================
|
|
|
|
|
{
|
|
|
|
|
card: {
|
|
|
|
|
id: 1001,
|
|
|
|
|
tenantId: 1,
|
|
|
|
|
slug: 'alex-zheng',
|
|
|
|
|
name: 'Alex Zheng',
|
|
|
|
|
title: 'VP of Global Expansion',
|
|
|
|
|
company: 'OmniCard Global Inc.',
|
|
|
|
|
slogan: 'Empowering Global Hardware Brands with Next-Gen Intelligence',
|
|
|
|
|
avatarUrl: 'https://images.unsplash.com/photo-1534528741775-53994a69daeb.jpg',
|
|
|
|
|
phone: '+8613800138001',
|
|
|
|
|
email: 'alex.zheng@omnicard.ai',
|
|
|
|
|
whatsapp: '+8613800138001',
|
|
|
|
|
linkedin: 'https://linkedin.com/in/alex-zheng-omni',
|
|
|
|
|
twitter: 'https://x.com/alexzheng_hw',
|
|
|
|
|
timezone: 'Asia/Singapore',
|
|
|
|
|
audioPronunciationUrl: 'https://cdn.omnicard.ai/audio/alex-zheng.mp3',
|
|
|
|
|
status: 'published',
|
|
|
|
|
themeCode: 'corporate_navy',
|
|
|
|
|
userId: 101,
|
|
|
|
|
remark: '全球智能硬件领军高管,CES 2026 演讲嘉宾',
|
|
|
|
|
},
|
|
|
|
|
bentoBlocks: [
|
|
|
|
|
{
|
|
|
|
|
id: 2001,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
type: 'hero' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 1,
|
|
|
|
|
title: '关于我与 OmniCard',
|
|
|
|
|
content: '专注全球物联网与智能消费电子 12 年,连接全球 60+ 国家和地区的创新生态。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1497366216548-37526070297c.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2002,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
type: 'video' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 2 as BentoRowSpan,
|
|
|
|
|
sortOrder: 2,
|
|
|
|
|
title: 'OmniCard Next 旗舰实体卡实机开箱演示',
|
|
|
|
|
content: '超精密阳极氧化铝雕刻,内置双频高灵敏 NFC 芯片与动态感应天线,轻触即达微官网。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1519389950473-47ba0277781c.jpg',
|
|
|
|
|
linkUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4',
|
|
|
|
|
metaJson: {
|
|
|
|
|
videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4',
|
|
|
|
|
poster: 'https://images.unsplash.com/photo-1519389950473-47ba0277781c.jpg',
|
|
|
|
|
duration: '01:28',
|
|
|
|
|
aspectRatio: '16:9',
|
|
|
|
|
title: 'OmniCard Next 硬件工艺与触卡交互',
|
|
|
|
|
},
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2003,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
type: 'case' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 3,
|
|
|
|
|
title: 'GITEX 迪拜展数字化留资',
|
|
|
|
|
content: '实现 10,000+ 国际买家 0.5 秒即时触卡交互,获客转化提升 320%。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1511578314322-379afb476865.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2004,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
type: 'article' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 4,
|
|
|
|
|
title: '2026 全球智能硬件合规与准入白皮书',
|
|
|
|
|
content: '深度解读 CE/FCC/KC 认证新规与国际电池环保法规应对策略。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1451187580459-43490279c0fa.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
cases: [
|
|
|
|
|
{
|
|
|
|
|
id: 3001,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
title: 'GITEX 迪拜展会智能名片规模化交付',
|
|
|
|
|
client: '阿联酋国际商业联合会',
|
|
|
|
|
duration: '2025.10 - 2025.11',
|
|
|
|
|
metrics: '触卡 12,500+ 次,沉淀高意向商业线索 890 条',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1511578314322-379afb476865.jpg',
|
|
|
|
|
pdfUrl: 'https://cdn.omnicard.ai/cases/gitex-2025-report.pdf',
|
|
|
|
|
description: '为 48 家国际参展代表团统一配置智能名片与雷达跟进中枢,完成全程数字化展会获客。',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
articles: [
|
|
|
|
|
{
|
|
|
|
|
id: 4001,
|
|
|
|
|
cardId: 1001,
|
|
|
|
|
title: '智能硬件全球化新范式:从单品突围到全域生态触达',
|
|
|
|
|
summary: '探讨如何结合 NFC 与端侧 AI 技术在国际展会和商务洽谈中建立第一分钟信任。',
|
|
|
|
|
content: '在全球消费电子产业加速演进的今天,传统的纸质物料正在迅速被具备实时交互能力的数字名片和微官网替代...',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1451187580459-43490279c0fa.jpg',
|
|
|
|
|
isPublished: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ==========================================
|
|
|
|
|
// 名片 2: 全球云原生 & AI 基础设施 (Elena Rostova)
|
|
|
|
|
// ==========================================
|
|
|
|
|
{
|
|
|
|
|
card: {
|
|
|
|
|
id: 1002,
|
|
|
|
|
tenantId: 1,
|
|
|
|
|
slug: 'elena-rostova',
|
|
|
|
|
name: 'Elena Rostova',
|
|
|
|
|
title: 'Chief Cloud Architect',
|
|
|
|
|
company: 'NebulaScale Cloud AI',
|
|
|
|
|
slogan: 'Building Resilient Multi-Cloud AI Infrastructures Globally',
|
|
|
|
|
avatarUrl: 'https://images.unsplash.com/photo-1580489944761-15a19d654956.jpg',
|
|
|
|
|
phone: '+14155552671',
|
|
|
|
|
email: 'elena.rostova@nebulascale.io',
|
|
|
|
|
whatsapp: '+14155552671',
|
|
|
|
|
linkedin: 'https://linkedin.com/in/elena-rostova-cloud',
|
|
|
|
|
twitter: 'https://x.com/elena_infra',
|
|
|
|
|
timezone: 'America/Los_Angeles',
|
|
|
|
|
audioPronunciationUrl: 'https://cdn.omnicard.ai/audio/elena-rostova.mp3',
|
|
|
|
|
status: 'published',
|
|
|
|
|
themeCode: 'tech_dark',
|
|
|
|
|
userId: 102,
|
|
|
|
|
remark: '硅谷云原生基础设施领军专家',
|
|
|
|
|
},
|
|
|
|
|
bentoBlocks: [
|
|
|
|
|
{
|
|
|
|
|
id: 2005,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
type: 'hero' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 1,
|
|
|
|
|
title: '全球云架构与大模型算力调度',
|
|
|
|
|
content: '主导超过 5,000+ 节点高可用 Kubernetes 集群与跨大洲大模型推理加速网络设计。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2006,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
type: 'video' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 2 as BentoRowSpan,
|
|
|
|
|
sortOrder: 2,
|
|
|
|
|
title: 'NebulaScale 分布式大模型推理架构演示',
|
|
|
|
|
content: '实时观测跨欧美亚太算力流转与动态故障转移,端到端延迟压至 35ms 以内。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5.jpg',
|
|
|
|
|
linkUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
|
|
|
|
|
metaJson: {
|
|
|
|
|
videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
|
|
|
|
|
poster: 'https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5.jpg',
|
|
|
|
|
duration: '02:45',
|
|
|
|
|
aspectRatio: '16:9',
|
|
|
|
|
title: '跨国高可用集群实时压测演练',
|
|
|
|
|
},
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2007,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
type: 'case' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 3,
|
|
|
|
|
title: 'FinTech 全球秒级支付架构重构',
|
|
|
|
|
content: '99.999% 可用性保障,支撑每日 3 亿美元全球交易量。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1563986768609-322da13575f3.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2008,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
type: 'article' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 4,
|
|
|
|
|
title: '现代微服务下的多云零信任安全实践',
|
|
|
|
|
content: '解构全球分布式企业如何通过 eBPF 与 SPIFFE 构建坚固的应用安全边界。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1504384308090-c894fdcc538d.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
cases: [
|
|
|
|
|
{
|
|
|
|
|
id: 3002,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
title: '跨国全球支付金融级容灾架构改造',
|
|
|
|
|
client: 'PayNova International',
|
|
|
|
|
duration: '2025.03 - 2025.08',
|
|
|
|
|
metrics: '交易超时率降低 98.4%,算力成本节省 35%',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1563986768609-322da13575f3.jpg',
|
|
|
|
|
description: '基于异地多活方案实现 RPO=0, RTO<1s 的高可用架构,顺利通过全球多国金融安全审计。',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
articles: [
|
|
|
|
|
{
|
|
|
|
|
id: 4002,
|
|
|
|
|
cardId: 1002,
|
|
|
|
|
title: '在大模型时代重新思考全球分布式架构演进',
|
|
|
|
|
summary: '探索算力调度从传统容器编排向 GPU 异构资源池化迁移的核心挑战。',
|
|
|
|
|
content: '伴随企业全球化战略加速,算力孤岛与网络延迟成为制约 AI 商业落地的最大瓶颈...',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1504384308090-c894fdcc538d.jpg',
|
|
|
|
|
isPublished: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ==========================================
|
|
|
|
|
// 名片 3: 跨国智慧能源与技术合作 (Tariq Al-Mansoor)
|
|
|
|
|
// ==========================================
|
|
|
|
|
{
|
|
|
|
|
card: {
|
|
|
|
|
id: 1003,
|
|
|
|
|
tenantId: 1,
|
|
|
|
|
slug: 'tariq-al-mansoor',
|
|
|
|
|
name: 'Tariq Al-Mansoor',
|
|
|
|
|
title: 'MENA Business Director',
|
|
|
|
|
company: 'SilkRoad Oasis Ventures',
|
|
|
|
|
slogan: 'Bridging APAC Technologies with Middle East Energy Infrastructure',
|
|
|
|
|
avatarUrl: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d.jpg',
|
|
|
|
|
phone: '+971501234567',
|
|
|
|
|
email: 'tariq@silkroadoasis.ae',
|
|
|
|
|
whatsapp: '+971501234567',
|
|
|
|
|
linkedin: 'https://linkedin.com/in/tariq-almansoor-mena',
|
|
|
|
|
timezone: 'Asia/Dubai',
|
|
|
|
|
audioPronunciationUrl: 'https://cdn.omnicard.ai/audio/tariq.mp3',
|
|
|
|
|
status: 'published',
|
|
|
|
|
themeCode: 'gold_luxe',
|
|
|
|
|
userId: 103,
|
|
|
|
|
remark: '海湾地区重大清洁能源国际合作项目投资总监',
|
|
|
|
|
},
|
|
|
|
|
bentoBlocks: [
|
|
|
|
|
{
|
|
|
|
|
id: 2009,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
type: 'hero' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 1,
|
|
|
|
|
title: '海湾合作委员会 (GCC) 绿色能源生态',
|
|
|
|
|
content: '常驻阿布扎比与利雅得,深耕沙特“2030愿景”与国际绿色能源技术对接。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1509391365360-2e959784a276.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2010,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
type: 'video' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 2 as BentoRowSpan,
|
|
|
|
|
sortOrder: 2,
|
|
|
|
|
title: '阿布扎比 2GW 光伏产业示范园落成实景',
|
|
|
|
|
content: '沙漠极端高温环境下的自动化清扫与高效储能实景纪录片,见证绿色能源奇迹。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1497435334941-8c899ee9e8e9.jpg',
|
|
|
|
|
linkUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
|
|
|
|
|
metaJson: {
|
|
|
|
|
videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
|
|
|
|
|
poster: 'https://images.unsplash.com/photo-1497435334941-8c899ee9e8e9.jpg',
|
|
|
|
|
duration: '02:10',
|
|
|
|
|
aspectRatio: '16:9',
|
|
|
|
|
title: '中东大型绿电产业园实况航拍',
|
|
|
|
|
},
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2011,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
type: 'case' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 3,
|
|
|
|
|
title: '沙特 NEOM 新城微电网建设',
|
|
|
|
|
content: '联合国际领先储能集团完成全离网微电网调试,供电可靠率达 99.98%。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1466611653911-95081537e5b7.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2012,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
type: 'article' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 4,
|
|
|
|
|
title: '海湾国家商业投资环境与法律合规指引',
|
|
|
|
|
content: '从外资持股比例到本地化雇佣比率,全方位规避国际投资法律风险。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1512453979798-5ea266f8880c.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
cases: [
|
|
|
|
|
{
|
|
|
|
|
id: 3003,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
title: '阿布扎比综合智慧能源示范中心一期',
|
|
|
|
|
client: 'Abu Dhabi Future Energy PJSC',
|
|
|
|
|
duration: '2024.08 - 2025.04',
|
|
|
|
|
metrics: '年发电量 32 亿千瓦时,减排二氧化碳 240 万吨',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1466611653911-95081537e5b7.jpg',
|
|
|
|
|
description: '整合国际先锋光伏组件与智能追踪支架,打造跨国绿色能源合作的典范工程。',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
articles: [
|
|
|
|
|
{
|
|
|
|
|
id: 4003,
|
|
|
|
|
cardId: 1003,
|
|
|
|
|
title: '走进中东:沙特与阿联酋新一轮科技能源投资机遇',
|
|
|
|
|
summary: '解析全球高科技与能源装备企业在海湾市场的本土化突围之道。',
|
|
|
|
|
content: '随着海湾国家加速摆脱石油依赖,以绿色能源与智能化技术为核心的产业变革正在全面展开...',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1512453979798-5ea266f8880c.jpg',
|
|
|
|
|
isPublished: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ==========================================
|
|
|
|
|
// 名片 4: 全球 DTC 时尚与可持续设计 (Chloe Dubois)
|
|
|
|
|
// ==========================================
|
|
|
|
|
{
|
|
|
|
|
card: {
|
|
|
|
|
id: 1004,
|
|
|
|
|
tenantId: 1,
|
|
|
|
|
slug: 'chloe-dubois',
|
|
|
|
|
name: 'Chloe Dubois',
|
|
|
|
|
title: 'Global Brand Officer',
|
|
|
|
|
company: 'Atelier Lumina Paris',
|
|
|
|
|
slogan: 'Sustainable Luxury & Digital Craftsmanship for Conscious Consumers',
|
|
|
|
|
avatarUrl: 'https://images.unsplash.com/photo-1573496359142-b8d87734a5a2.jpg',
|
|
|
|
|
phone: '+33612345678',
|
|
|
|
|
email: 'chloe.dubois@atelierlumina.fr',
|
|
|
|
|
whatsapp: '+33612345678',
|
|
|
|
|
linkedin: 'https://linkedin.com/in/chloe-dubois-luxury',
|
|
|
|
|
timezone: 'Europe/Paris',
|
|
|
|
|
audioPronunciationUrl: 'https://cdn.omnicard.ai/audio/chloe.mp3',
|
|
|
|
|
status: 'published',
|
|
|
|
|
themeCode: 'aurora_glow',
|
|
|
|
|
userId: 104,
|
|
|
|
|
remark: '巴黎可持续时尚与国际设计师品牌主理人',
|
|
|
|
|
},
|
|
|
|
|
bentoBlocks: [
|
|
|
|
|
{
|
|
|
|
|
id: 2013,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
type: 'hero' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 1,
|
|
|
|
|
title: '可持续奢品与数字美学设计',
|
|
|
|
|
content: '联合欧洲独立设计师与亚洲循环新材料实验室,打造触动全球年轻一代的现代胶囊衣橱。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1490481651871-ab68de25d43d.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2014,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
type: 'video' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 2 as BentoRowSpan,
|
|
|
|
|
sortOrder: 2,
|
|
|
|
|
title: '巴黎绿色时尚周品牌秀场精选',
|
|
|
|
|
content: '从可降解生物丝绸到 0 碳足迹工坊生产实拍,展现先锋环保奢品背后的匠心。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1469334031218-e382a71b716b.jpg',
|
|
|
|
|
linkUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4',
|
|
|
|
|
metaJson: {
|
|
|
|
|
videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4',
|
|
|
|
|
poster: 'https://images.unsplash.com/photo-1469334031218-e382a71b716b.jpg',
|
|
|
|
|
duration: '01:50',
|
|
|
|
|
aspectRatio: '16:9',
|
|
|
|
|
title: 'Atelier Lumina Paris 2026 秀场全纪录',
|
|
|
|
|
},
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2015,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
type: 'case' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 3,
|
|
|
|
|
title: '欧美 DTC 独立站零碳系列发售',
|
|
|
|
|
content: '上线 48 小时首发即罄,Instagram 话题曝光突破 3,500 万次。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1441986300917-64674bd600d8.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2016,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
type: 'article' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 4,
|
|
|
|
|
title: '时尚产业的数字护照 (DPP) 全球实践',
|
|
|
|
|
content: '如何利用区块链与 NFC 芯片追踪服装从棉花田到衣橱的全生命周期。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1558769132-cb1aea458c5e.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
cases: [
|
|
|
|
|
{
|
|
|
|
|
id: 3004,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
title: 'Atelier Lumina 欧美全渠道首发战役',
|
|
|
|
|
client: 'Lumina Paris',
|
|
|
|
|
duration: '2025.05 - 2025.09',
|
|
|
|
|
metrics: '欧美 GMV 增长 210%,复购率达到 38.6%',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1441986300917-64674bd600d8.jpg',
|
|
|
|
|
description: '通过数字体验名片与 VIP 专属私人定制预约通道,构建高端时尚圈层闭环。',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
articles: [
|
|
|
|
|
{
|
|
|
|
|
id: 4004,
|
|
|
|
|
cardId: 1004,
|
|
|
|
|
title: '为什么新一代全球 DTC 品牌需要重塑品牌心智',
|
|
|
|
|
summary: '摆脱流量依赖与单一价格战,以故事叙事和品牌价值赢得国际高净值客群。',
|
|
|
|
|
content: '全球品牌的竞争已经从单纯的供应链红利转向了文化叙事与品牌价值主张的博弈...',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1558769132-cb1aea458c5e.jpg',
|
|
|
|
|
isPublished: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ==========================================
|
|
|
|
|
// 名片 5: 跨国供应链与自动化物流 (Kenji Tanaka)
|
|
|
|
|
// ==========================================
|
|
|
|
|
{
|
|
|
|
|
card: {
|
|
|
|
|
id: 1005,
|
|
|
|
|
tenantId: 1,
|
|
|
|
|
slug: 'kenji-tanaka',
|
|
|
|
|
name: 'Kenji Tanaka',
|
|
|
|
|
title: 'APAC Logistics VP',
|
|
|
|
|
company: 'TransPacific AutoLink',
|
|
|
|
|
slogan: 'Optimizing Next-Gen Cross-Border Automotive Supply Chains',
|
|
|
|
|
avatarUrl: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e.jpg',
|
|
|
|
|
phone: '+81312345678',
|
|
|
|
|
email: 'tanaka.kenji@transpacific.jp',
|
|
|
|
|
whatsapp: '+81312345678',
|
|
|
|
|
linkedin: 'https://linkedin.com/in/kenji-tanaka-logistics',
|
|
|
|
|
wechat: 'kenji_autolink',
|
|
|
|
|
timezone: 'Asia/Tokyo',
|
|
|
|
|
audioPronunciationUrl: 'https://cdn.omnicard.ai/audio/tanaka.mp3',
|
|
|
|
|
status: 'published',
|
|
|
|
|
themeCode: 'emerald_fresh',
|
|
|
|
|
userId: 105,
|
|
|
|
|
remark: '日韩与东南亚跨国汽车主机厂一级供应链负责人',
|
|
|
|
|
},
|
|
|
|
|
bentoBlocks: [
|
|
|
|
|
{
|
|
|
|
|
id: 2017,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
type: 'hero' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 1,
|
|
|
|
|
title: '跨国汽车产业链智能物流中枢',
|
|
|
|
|
content: '管理东京、上海、曼谷三大核心转运港口与 12 座保税自动化立体中心仓。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2018,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
type: 'video' as BentoBlockType,
|
|
|
|
|
colSpan: 2 as BentoColSpan,
|
|
|
|
|
rowSpan: 2 as BentoRowSpan,
|
|
|
|
|
sortOrder: 2,
|
|
|
|
|
title: '跨国自动化立体仓储 AGV 机器人穿梭实况',
|
|
|
|
|
content: '全天候智能算法调度,实现零差错零部件入库与跨国干线精准集拼装船。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1616401784845-180882ba9ba8.jpg',
|
|
|
|
|
linkUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4',
|
|
|
|
|
metaJson: {
|
|
|
|
|
videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4',
|
|
|
|
|
poster: 'https://images.unsplash.com/photo-1616401784845-180882ba9ba8.jpg',
|
|
|
|
|
duration: '01:35',
|
|
|
|
|
aspectRatio: '16:9',
|
|
|
|
|
title: '跨国现代化智能立体仓全景实拍',
|
|
|
|
|
},
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2019,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
type: 'case' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 3,
|
|
|
|
|
title: '中日新能源车配件 48 小时达',
|
|
|
|
|
content: '通过全链条条码及 RFID 联动,清关及通关提速 60%。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1578575437130-527eed3abbec.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2020,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
type: 'article' as BentoBlockType,
|
|
|
|
|
colSpan: 1 as BentoColSpan,
|
|
|
|
|
rowSpan: 1 as BentoRowSpan,
|
|
|
|
|
sortOrder: 4,
|
|
|
|
|
title: '区域全面经济伙伴关系协定 (RCEP) 关务实战指南',
|
|
|
|
|
content: '深度解读原产地累积规则与跨国物流链条中的税费优化策略。',
|
|
|
|
|
mediaUrl: 'https://images.unsplash.com/photo-1542744173-8e7e53415bb0.jpg',
|
|
|
|
|
status: 1,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
cases: [
|
|
|
|
|
{
|
|
|
|
|
id: 3005,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
title: '亚太区域核心零部件保税中转枢纽项目',
|
|
|
|
|
client: 'Global AutoTech Consortium',
|
|
|
|
|
duration: '2024.11 - 2025.07',
|
|
|
|
|
metrics: '仓储周转效率提高 42%,破损率控制在 0.001% 以下',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1578575437130-527eed3abbec.jpg',
|
|
|
|
|
description: '成功构建日韩到东盟的跨国零备件绿色走廊,达成准时化(JIT)精益交付。',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
articles: [
|
|
|
|
|
{
|
|
|
|
|
id: 4005,
|
|
|
|
|
cardId: 1005,
|
|
|
|
|
title: '全球地缘与贸易新常态下的弹性供应链构建',
|
|
|
|
|
summary: '面对跨国运价波动与港口堵塞风险,如何通过数字孪生提升全球业务韧性。',
|
|
|
|
|
content: '跨国供应链的制胜关键已经从单一的价格竞争转向全链路的可视化与动态避险能力...',
|
|
|
|
|
coverImage: 'https://images.unsplash.com/photo-1542744173-8e7e53415bb0.jpg',
|
|
|
|
|
isPublished: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 批量将 Mock 卡片数据写入/同步至底层数据库中 (幂等设计)
|
|
|
|
|
*/
|
|
|
|
|
export async function seedCardsToDatabase(dataSource: any): Promise<number> {
|
|
|
|
|
if (!dataSource) return 0;
|
|
|
|
|
|
|
|
|
|
const cardRepo = dataSource.getRepository(CardInfoEntity);
|
|
|
|
|
const bentoRepo = dataSource.getRepository(CardBentoEntity);
|
|
|
|
|
const casesRepo = dataSource.getRepository(CardCasesEntity);
|
|
|
|
|
const articleRepo = dataSource.getRepository(CardArticleEntity);
|
|
|
|
|
|
|
|
|
|
let insertedCount = 0;
|
|
|
|
|
|
|
|
|
|
for (const bundle of MOCK_CARDS_DATA) {
|
|
|
|
|
// 1. 保存或更新名片主表
|
|
|
|
|
let card = await cardRepo.findOne({ where: { slug: bundle.card.slug } });
|
|
|
|
|
if (!card) {
|
|
|
|
|
card = cardRepo.create(bundle.card);
|
|
|
|
|
} else {
|
|
|
|
|
Object.assign(card, bundle.card);
|
|
|
|
|
}
|
|
|
|
|
const savedCard = await cardRepo.save(card);
|
|
|
|
|
insertedCount++;
|
|
|
|
|
|
|
|
|
|
const cardId = Number(savedCard.id);
|
|
|
|
|
|
|
|
|
|
// 2. 清理旧 Bento 块并批量写入新 Bento 块
|
|
|
|
|
await bentoRepo.delete({ cardId });
|
|
|
|
|
for (const b of bundle.bentoBlocks) {
|
|
|
|
|
const bento = bentoRepo.create({
|
|
|
|
|
...b,
|
|
|
|
|
cardId,
|
|
|
|
|
});
|
|
|
|
|
await bentoRepo.save(bento);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 3. 写入关联案例
|
|
|
|
|
await casesRepo.delete({ cardId });
|
|
|
|
|
for (const c of bundle.cases) {
|
|
|
|
|
const cEntity = casesRepo.create({
|
|
|
|
|
...c,
|
|
|
|
|
cardId,
|
|
|
|
|
});
|
|
|
|
|
await casesRepo.save(cEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 4. 写入关联文章
|
|
|
|
|
await articleRepo.delete({ cardId });
|
|
|
|
|
for (const a of bundle.articles) {
|
|
|
|
|
const aEntity = articleRepo.create({
|
|
|
|
|
...a,
|
|
|
|
|
cardId,
|
|
|
|
|
});
|
|
|
|
|
await articleRepo.save(aEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return insertedCount;
|
|
|
|
|
}
|