refactor(mpuniapp): 全局规范所有用词并去除AI口吻与浮夸文案
- 规范7国语言全局词典中AI咨询为在线咨询,去除内部黑话与营销说教 - 在线咨询去除机械人套话与写死的大号AI文本标签 - 交换名片剔除留资行话与写死AI,规范为名片交换与纸质名片识别 - 工作台去除战报、闪电出示、高光足迹、破冰等中二词汇,回归严谨商务数据 - 产品案例与专栏文章去除夸大修饰词与冗余操作说明 - 潜客跟进去除写死销售套话,规范为得体自然的跟进建议 - 硬件安全与场景模式去除秒级一键、芯片防盗等噱头词 - 导航栏标题统一规范为在线咨询、名片编辑、展会数据 - 新增专项测试并通过全量62项回归测试
这个提交包含在:
@@ -222,9 +222,9 @@ export function resolveArticlesText(key: ArticlesCopyKey): string {
|
||||
case 'title':
|
||||
return zh ? '文章与商务动态' : 'Insights & Articles';
|
||||
case 'subtitle':
|
||||
return zh ? '发布深度博文、展会动态或行业洞察,同步呈现至微官网' : 'Publish insights, articles and updates to your micro-site.';
|
||||
return zh ? '发布业务动态与专栏文章,并在微官网中展示' : 'Publish insights, articles and updates to your micro-site.';
|
||||
case 'publishBtn':
|
||||
return zh ? '发布新动态' : 'New Article';
|
||||
return zh ? '发布动态' : 'New Article';
|
||||
case 'editBtn':
|
||||
return zh ? '编辑' : 'Edit';
|
||||
case 'deleteBtn':
|
||||
@@ -232,7 +232,7 @@ export function resolveArticlesText(key: ArticlesCopyKey): string {
|
||||
case 'emptyTitle':
|
||||
return zh ? '暂无文章动态' : 'No Articles Yet';
|
||||
case 'emptyDesc':
|
||||
return zh ? '点击下方按钮,撰写并发布您的第一篇商务洞察动态' : 'Tap below to publish your first insight or company update.';
|
||||
return zh ? '可发布业务动态与专栏文章' : 'Tap below to publish your first insight or company update.';
|
||||
case 'statusPublished':
|
||||
return zh ? '已发布' : 'Published';
|
||||
case 'statusDraft':
|
||||
|
||||
@@ -177,11 +177,12 @@ export function resolveCasesText(key: CasesCopyKey): string {
|
||||
|
||||
switch (key) {
|
||||
case 'title':
|
||||
return zh ? '产品相册与标杆案例' : 'Portfolio & Case Studies';
|
||||
// 兼容历史标题匹配: 产品相册与标杆案例,规范展示为产品与案例
|
||||
return zh ? '产品与案例' : 'Portfolio & Case Studies';
|
||||
case 'subtitle':
|
||||
return zh ? '随时维护产品画廊与标杆案例,在微官网中向全球买家展现硬核实力' : 'Showcase your products and case studies on your micro-site.';
|
||||
return zh ? '维护产品案例,并在微官网中展示' : 'Showcase your products and case studies on your micro-site.';
|
||||
case 'addBtn':
|
||||
return zh ? '新增产品案例' : 'Add Case Study';
|
||||
return zh ? '新增案例' : 'Add Case Study';
|
||||
case 'editBtn':
|
||||
return zh ? '编辑' : 'Edit';
|
||||
case 'deleteBtn':
|
||||
@@ -189,7 +190,7 @@ export function resolveCasesText(key: CasesCopyKey): string {
|
||||
case 'emptyTitle':
|
||||
return zh ? '暂无产品案例' : 'No Cases Yet';
|
||||
case 'emptyDesc':
|
||||
return zh ? '点击下方按钮,拍照或上传您的首个产品相册与案例' : 'Tap below to add your first product showcase or case study.';
|
||||
return zh ? '可添加产品相册与案例展示' : 'Tap below to add your first product showcase or case study.';
|
||||
case 'fieldTitle':
|
||||
return zh ? '案例/产品名称' : 'Title';
|
||||
case 'fieldClient':
|
||||
@@ -197,9 +198,9 @@ export function resolveCasesText(key: CasesCopyKey): string {
|
||||
case 'fieldDuration':
|
||||
return zh ? '项目周期 (选填)' : 'Timeline';
|
||||
case 'fieldMetrics':
|
||||
return zh ? '量化成效标签' : 'Key Metrics Tag';
|
||||
return zh ? '成效标签' : 'Key Metrics Tag';
|
||||
case 'fieldDesc':
|
||||
return zh ? '方案成果简述' : 'Overview';
|
||||
return zh ? '方案与成果描述' : 'Overview';
|
||||
case 'fieldCover':
|
||||
return zh ? '产品封面与相册图片' : 'Cover & Photos';
|
||||
case 'saveBtn':
|
||||
|
||||
@@ -84,7 +84,7 @@ export type ApplySceneResult = {
|
||||
const MODE_COPY: Record<OmniLocale, Record<ModeCopyKey, string>> = {
|
||||
'zh-CN': {
|
||||
title: '场景模式',
|
||||
desc: '日间展会用商务档,晚宴社交用社交档。挂失设备不可切换。',
|
||||
desc: '支持商务与社交场景快速切换,挂失状态下不可切换。',
|
||||
uidLabel: '芯片 UID',
|
||||
cardIdLabel: '名片 ID',
|
||||
business: '日间展会',
|
||||
|
||||
@@ -204,7 +204,7 @@ export function selectDevice(state: SecurityState, id: number): void {
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键远程挂失冻结设备 (active -> frozen)
|
||||
* 远程挂失冻结设备 (active -> frozen)
|
||||
*/
|
||||
export async function freezeDevice(
|
||||
state: SecurityState,
|
||||
@@ -290,14 +290,14 @@ export function resolveSecurityText(key: SecurityCopyKey): string {
|
||||
return isZh ? 'NFC 安全与挂失' : 'NFC Security & Remote Lock';
|
||||
case 'desc':
|
||||
return isZh
|
||||
? '物理名片丢失或遭遇异常,可立即远程一键挂失冻结,保护商业资产安全。'
|
||||
? '物理名片丢失或遭遇异常,可立即远程挂失冻结,保护商业资产安全。'
|
||||
: 'Remotely freeze lost cards instantly to prevent unauthorized access.';
|
||||
case 'statusActive':
|
||||
return isZh ? '正常使用中' : 'Active';
|
||||
case 'statusFrozen':
|
||||
return isZh ? '已挂失冻结' : 'Frozen';
|
||||
case 'freezeBtn':
|
||||
return isZh ? '一键远程挂失' : 'Freeze Card';
|
||||
return isZh ? '远程挂失' : 'Freeze Card';
|
||||
case 'unfreezeBtn':
|
||||
return isZh ? '解除挂失恢复' : 'Unfreeze Card';
|
||||
case 'warningTitle':
|
||||
@@ -331,7 +331,7 @@ export function resolveSecurityText(key: SecurityCopyKey): string {
|
||||
case 'operationError':
|
||||
return isZh ? '操作异常' : 'Something went wrong';
|
||||
case 'shieldTitleActive':
|
||||
return isZh ? '芯片防盗与云端防护运行中' : 'Cloud & Chip Protection Active';
|
||||
return isZh ? '设备防护状态正常' : 'Cloud & Chip Protection Active';
|
||||
case 'shieldDescActive':
|
||||
return isZh
|
||||
? '物理近场触碰正常联通,触碰即可即时唤起您的专属微官网。'
|
||||
@@ -360,8 +360,8 @@ export function resolveSecurityText(key: SecurityCopyKey): string {
|
||||
: 'Cloud portal data, assets, and radar traces remain intact';
|
||||
case 'policyPoint3':
|
||||
return isZh
|
||||
? '在展会或出差行李中寻回实体卡后,可在此秒级一键解冻恢复'
|
||||
: 'One-click remote unfreeze anytime without needing a replacement card';
|
||||
? '寻回实体卡后,可在此解冻恢复'
|
||||
: 'Remote unfreeze anytime without needing a replacement card';
|
||||
case 'confirmFreezeTitle':
|
||||
return isZh ? '确认远程挂失此实体卡?' : 'Freeze this physical card?';
|
||||
case 'confirmFreezeDesc':
|
||||
@@ -379,7 +379,7 @@ export function resolveSecurityText(key: SecurityCopyKey): string {
|
||||
case 'cancelBtn':
|
||||
return isZh ? '取消' : 'Cancel';
|
||||
case 'cardListTitle':
|
||||
return isZh ? '名下 NFC 硬件资产' : 'Registered NFC Cards';
|
||||
return isZh ? 'NFC 设备列表' : 'Registered NFC Cards';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* OmniCard AI (CRMmp) - 展会团队战报业务驱动层
|
||||
* OmniCard AI (CRMmp) - 展会团队数据业务驱动层
|
||||
* 并行汇总线索分页与雷达足迹,产出数字摘要
|
||||
*/
|
||||
|
||||
@@ -116,7 +116,7 @@ export function resolveOverviewText(key: OverviewCopyKey): string {
|
||||
|
||||
const zh = isZhLocale();
|
||||
if (key === 'title') {
|
||||
return zh ? '展会战报' : 'Expo briefing';
|
||||
return zh ? '展会数据' : 'Expo Data';
|
||||
}
|
||||
if (key === 'desc') {
|
||||
return zh ? '汇总线索与足迹' : 'Leads and visitor trail at a glance';
|
||||
@@ -128,7 +128,7 @@ export function resolveOverviewText(key: OverviewCopyKey): string {
|
||||
return zh ? '主要国家' : 'Top country';
|
||||
}
|
||||
if (key === 'refresh') {
|
||||
return zh ? '刷新战报' : 'Refresh briefing';
|
||||
return zh ? '刷新数据' : 'Refresh Data';
|
||||
}
|
||||
if (key === 'unknownCountry') {
|
||||
return zh ? '未标注' : 'Unspecified';
|
||||
@@ -137,7 +137,7 @@ export function resolveOverviewText(key: OverviewCopyKey): string {
|
||||
return zh ? '现场排行' : 'Floor ranking';
|
||||
}
|
||||
if (key === 'liveBadge') {
|
||||
return zh ? '实时展会战报' : 'LIVE EXPO';
|
||||
return zh ? '实时展会数据' : 'LIVE EXPO';
|
||||
}
|
||||
if (key === 'syncTime') {
|
||||
return zh ? '已同步' : 'Synced';
|
||||
@@ -155,7 +155,7 @@ export function resolveOverviewText(key: OverviewCopyKey): string {
|
||||
return zh ? '冠军' : 'TOP 1';
|
||||
}
|
||||
if (key === 'emptyLeads') {
|
||||
return zh ? '暂无新留资线索,保持现场触碰' : 'No new leads yet, keep networking';
|
||||
return zh ? '暂无新线索' : 'No new leads yet';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ export function resolveLeadDetailText(key: LeadDetailCopyKey): string {
|
||||
return zh ? '保存到通讯录' : 'Save Contact';
|
||||
}
|
||||
if (key === 'generateAiAction') {
|
||||
return zh ? '一键生成破冰话术' : 'Generate Script';
|
||||
return zh ? '生成跟进话术' : 'Generate Script';
|
||||
}
|
||||
if (key === 'copyScriptAction') {
|
||||
return zh ? '复制话术' : 'Copy Script';
|
||||
@@ -219,7 +219,7 @@ export function resolveLeadDetailText(key: LeadDetailCopyKey): string {
|
||||
return zh ? '潜客档案' : 'Lead Profile';
|
||||
}
|
||||
if (key === 'aiScriptTitle') {
|
||||
return zh ? '智能跟进建议' : 'AI Copilot';
|
||||
return zh ? '建议跟进话术' : 'Follow-up Suggestion';
|
||||
}
|
||||
if (key === 'noteSavedToast') {
|
||||
return zh ? '备忘已保存' : 'Note saved';
|
||||
@@ -314,7 +314,7 @@ export function formatWhatsAppUrl(rawPhone: string | null | undefined): string {
|
||||
}
|
||||
|
||||
/**
|
||||
* 智能破冰话术生成器 (基于客户姓名、公司、渠道与意向板块)
|
||||
* 跟进话术生成器 (基于客户姓名、公司、渠道与意向板块)
|
||||
*/
|
||||
export function generateAiIcebreaker(
|
||||
lead: LeadEntity | null,
|
||||
@@ -346,14 +346,13 @@ export function generateAiIcebreaker(
|
||||
}
|
||||
|
||||
if (isZh) {
|
||||
const companyPart = company !== '' ? `${company}的` : '';
|
||||
const topicPart = keyTopic !== '' ? `与【${keyTopic}】` : '';
|
||||
return `您好 ${name},我是来自 OmniCard 的商务顾问。注意到您此前通过 ${source} 触达并关注了我们${companyPart}智能数字名片${topicPart}方案。请问您近期是否有具体的数字化升级或商务展会名片需求?我可为您准备一份定制演示方案。`;
|
||||
const topicPart = keyTopic !== '' ? `【${keyTopic}】等` : '';
|
||||
return `您好 ${name},看到您此前通过 ${source} 关注了我们的数字名片${topicPart}内容。请问您近期是否有相关的业务合作或定制需求?期待与您交流。`;
|
||||
}
|
||||
|
||||
const firstWord = name.split(' ')[0];
|
||||
const companyPart = company !== '' ? ` for ${company}` : '';
|
||||
return `Hi ${firstWord}, this is the OmniCard team. Noticed you recently connected via ${source} and explored our digital identity solutions. Would love to see if you have any questions or if you'd like a quick tailored demo${companyPart}. Looking forward to connecting!`;
|
||||
return `Hi ${firstWord}, thanks for connecting via ${source} and reviewing our profile. Please let me know if you have any questions or collaboration interests${companyPart}. Look forward to connecting!`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -225,16 +225,16 @@ export function resolveWorkplaceText(key: string, locale?: string): string {
|
||||
en: 'Sales Workplace',
|
||||
},
|
||||
'workplace.greeting': {
|
||||
zh: '早安!今日有高意向客商正在关注您的业务',
|
||||
en: 'Good morning! High-intent prospects are viewing your business today',
|
||||
zh: '今日业务概况与线索跟进',
|
||||
en: 'Today business overview & lead follow-up',
|
||||
},
|
||||
'workplace.radar_active': {
|
||||
zh: '雷达在线监测中',
|
||||
en: 'Radar Live Active',
|
||||
},
|
||||
'workplace.quick_showcase': {
|
||||
zh: '闪电出示展台',
|
||||
en: 'Lightning Showcase',
|
||||
zh: '出示名片',
|
||||
en: 'Show Card',
|
||||
},
|
||||
'workplace.view_portal': {
|
||||
zh: '预览微官网',
|
||||
@@ -253,8 +253,8 @@ export function resolveWorkplaceText(key: string, locale?: string): string {
|
||||
en: 'NFC Business Mode Ready',
|
||||
},
|
||||
'workplace.kpi_title': {
|
||||
zh: '今日战情报表',
|
||||
en: 'Today Sales KPIs',
|
||||
zh: '今日数据',
|
||||
en: 'Today KPIs',
|
||||
},
|
||||
'workplace.kpi_taps': {
|
||||
zh: '触碰/扫码',
|
||||
@@ -273,16 +273,16 @@ export function resolveWorkplaceText(key: string, locale?: string): string {
|
||||
en: 'Intent Rate',
|
||||
},
|
||||
'workplace.radar_pulse_title': {
|
||||
zh: '实时雷达高光足迹',
|
||||
en: 'Live Radar Pulse',
|
||||
zh: '实时访客',
|
||||
en: 'Live Visitors',
|
||||
},
|
||||
'workplace.radar_pulse_desc': {
|
||||
zh: '正在深入阅读方案案例,停留超 3 分钟',
|
||||
en: 'Deeply exploring cases, stay over 3 mins',
|
||||
},
|
||||
'workplace.radar_action_whatsapp': {
|
||||
zh: '一键破冰',
|
||||
en: 'Break Ice',
|
||||
zh: '立即联系',
|
||||
en: 'Contact Now',
|
||||
},
|
||||
'workplace.leads_todo_title': {
|
||||
zh: '今日待办商机',
|
||||
@@ -293,12 +293,12 @@ export function resolveWorkplaceText(key: string, locale?: string): string {
|
||||
en: 'View All',
|
||||
},
|
||||
'workplace.ai_tip_title': {
|
||||
zh: 'AI 销售副驾驶洞察',
|
||||
en: 'AI Sales Co-pilot',
|
||||
zh: '跟进建议',
|
||||
en: 'Follow-up Suggestion',
|
||||
},
|
||||
'workplace.ai_tip_desc': {
|
||||
zh: '检测到中东地区客商对储能案例访问频次环比上升 65%,建议主动跟进。',
|
||||
en: 'Overseas visits on energy cases grew +65%, recommended to follow up now.',
|
||||
zh: '近期重点客户对解决方案案例关注度上升,建议及时跟进。',
|
||||
en: 'Prospect engagement on solution cases is rising. Follow-up recommended.',
|
||||
},
|
||||
'workplace.primary_cta': {
|
||||
zh: '出示名片码',
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<view class="ai-top-bar">
|
||||
<view class="ai-top-identity">
|
||||
<view class="ai-avatar-wrap">
|
||||
<text class="ai-avatar-text">AI</text>
|
||||
<text class="ai-avatar-text">OC</text>
|
||||
<view class="ai-online-dot"></view>
|
||||
</view>
|
||||
<view class="ai-top-meta">
|
||||
@@ -23,7 +23,7 @@
|
||||
<view class="ai-welcome-card">
|
||||
<view class="ai-welcome-header">
|
||||
<view class="ai-concierge-avatar">
|
||||
<text class="ai-concierge-icon-text">AI</text>
|
||||
<text class="ai-concierge-icon-text">OC</text>
|
||||
</view>
|
||||
<view class="ai-welcome-meta">
|
||||
<text class="ai-welcome-title">{{ t('empty') }}</text>
|
||||
@@ -118,7 +118,7 @@
|
||||
:class="item.role === 'assistant' ? 'ai-bubble-assistant ai-glow' : 'ai-bubble-user'"
|
||||
>
|
||||
<view v-if="item.role === 'assistant'" class="ai-msg-avatar">
|
||||
<text class="ai-msg-avatar-text">AI</text>
|
||||
<text class="ai-msg-avatar-text">OC</text>
|
||||
</view>
|
||||
<view class="ai-bubble-content">
|
||||
<text class="ai-bubble-text">{{ item.content }}</text>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<view class="ocr-top-row">
|
||||
<view class="ocr-identity">
|
||||
<view class="ocr-ai-icon-box">
|
||||
<text class="ocr-ai-icon-text">AI</text>
|
||||
<text class="ocr-ai-icon-text">SCAN</text>
|
||||
</view>
|
||||
<view class="ocr-titles">
|
||||
<text class="ocr-title">{{ t('ocrTitle') }}</text>
|
||||
|
||||
@@ -175,12 +175,12 @@ export function resolveAiChatText(key: AiChatCopyKey): string {
|
||||
return zh ? '输入你想了解的内容' : 'Ask about this card';
|
||||
}
|
||||
if (key === 'empty') {
|
||||
return zh ? '向顾问提问,了解业务与服务。' : 'Ask the advisor about this business.';
|
||||
return zh ? '您好,欢迎咨询。您可以了解业务介绍、服务案例或提交合作需求。' : 'Welcome! Feel free to inquire about our services, cases, or partnership.';
|
||||
}
|
||||
if (key === 'leadHint') {
|
||||
return zh
|
||||
? '留下姓名和联系方式,方便继续沟通。'
|
||||
: 'Leave your name and contact so we can continue.';
|
||||
? '留下您的联系方式,方便进一步沟通。'
|
||||
: 'Leave your contact details so we can follow up with you.';
|
||||
}
|
||||
if (key === 'missingCard') {
|
||||
return zh ? '缺少名片标识,暂时无法对话。' : 'A card ID is required to start this chat.';
|
||||
@@ -201,38 +201,38 @@ export function resolveAiChatText(key: AiChatCopyKey): string {
|
||||
return zh ? 'WhatsApp 或 电子邮箱' : 'WhatsApp or Email';
|
||||
}
|
||||
if (key === 'submitLead') {
|
||||
return zh ? '获取专属方案' : 'Get Custom Proposal';
|
||||
return zh ? '提交需求' : 'Submit Request';
|
||||
}
|
||||
if (key === 'submitting') {
|
||||
return zh ? '提交中' : 'Submitting';
|
||||
}
|
||||
if (key === 'submittedSuccess') {
|
||||
return zh
|
||||
? '已收到您的信息,顾问将尽快与您联系。'
|
||||
: 'Information received. Our advisor will reach out shortly.';
|
||||
? '信息已提交,我们将尽快与您联系。'
|
||||
: 'Information received. We will get in touch shortly.';
|
||||
}
|
||||
if (key === 'leadCardTitle') {
|
||||
return zh ? '获取专属方案与报价' : 'Get Custom Proposal & Pricing';
|
||||
return zh ? '获取方案与报价' : 'Proposal & Pricing';
|
||||
}
|
||||
if (key === 'leadCardDesc') {
|
||||
return zh
|
||||
? '留下您的称呼与联系方式(WhatsApp 或邮箱),商务团队将快速与您对接。'
|
||||
? '请留下您的联系方式,商务人员将尽快与您对接。'
|
||||
: 'Leave your contact info and our team will get in touch.';
|
||||
}
|
||||
if (key === 'submitFailed') {
|
||||
return zh ? '提交失败,请重试' : 'Submission failed, please retry';
|
||||
}
|
||||
if (key === 'statusOnline') {
|
||||
return zh ? '在线 · 全天候接待' : 'Online · 24/7 Available';
|
||||
return zh ? '在线' : 'Online';
|
||||
}
|
||||
if (key === 'advisorSubtitle') {
|
||||
return zh ? '专属智能顾问为您解答业务' : 'Digital concierge ready to assist';
|
||||
return zh ? '商务咨询与业务对接' : 'Business inquiry & consultation';
|
||||
}
|
||||
if (key === 'quickPricing') {
|
||||
return zh ? '产品方案与报价' : 'Pricing & Plans';
|
||||
}
|
||||
if (key === 'quickCases') {
|
||||
return zh ? '标杆客户与案例' : 'Client Success Cases';
|
||||
return zh ? '客户案例' : 'Client Cases';
|
||||
}
|
||||
if (key === 'quickServices') {
|
||||
return zh ? '核心服务能力' : 'Core Capabilities';
|
||||
@@ -424,12 +424,12 @@ export async function sendStreamMessage(
|
||||
let fullReply = '';
|
||||
if (isIntent) {
|
||||
fullReply = zh
|
||||
? '关于方案价格与合作权益,已为您梳理核心细节。请在下方卡片留下您的联系信息,专属顾问将在15分钟内提供完整报价。'
|
||||
? '关于方案与合作细节,已为您准备相关资料。请在下方填写您的联系方式,我们将尽快与您对接。'
|
||||
: 'For pricing and partnership details, we have tailored options. Please leave your details below to receive our pricing sheet.';
|
||||
} else {
|
||||
fullReply = zh
|
||||
? '我是名片智能顾问,很高兴为您服务。我可以为您介绍名片主页、Bento微官网与团队专业能力。请随时提问。'
|
||||
: 'I am the digital concierge for this card. I can introduce the profile, Bento blocks, and our capabilities. Feel free to ask.';
|
||||
? '您好,欢迎咨询。您可以了解业务介绍、服务案例或提交合作需求,我们将尽快与您联系。'
|
||||
: 'Welcome! I can introduce the profile, business blocks, and our capabilities. Feel free to ask.';
|
||||
}
|
||||
|
||||
const step = 3;
|
||||
@@ -450,9 +450,9 @@ export function createLeadCardPayload(locale?: string): ChatLeadPayload {
|
||||
const loc = locale != null && locale !== '' ? locale : getCurrentLocale();
|
||||
const zh = loc.startsWith('zh');
|
||||
return {
|
||||
title: zh ? '获取专属方案与报价' : 'Get Custom Proposal & Pricing',
|
||||
title: zh ? '获取方案与报价' : 'Proposal & Pricing',
|
||||
description: zh
|
||||
? '留下您的称呼与联系方式(WhatsApp 或邮箱),商务团队将快速与您对接。'
|
||||
? '请留下您的联系方式,商务人员将尽快与您对接。'
|
||||
: 'Leave your contact info and our team will get in touch.',
|
||||
name: '',
|
||||
contact: '',
|
||||
|
||||
@@ -133,7 +133,7 @@ export function resetExchangeForm(state: ExchangeState): void {
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交留资:校验通过后调用已有 submitLead
|
||||
* 提交名片交换:校验通过后调用已有 submitLead
|
||||
*/
|
||||
export async function submitExchange(state: ExchangeState): Promise<LeadEntity | null> {
|
||||
const cardId = resolveExchangeCardId(state);
|
||||
@@ -203,7 +203,7 @@ export async function submitExchange(state: ExchangeState): Promise<LeadEntity |
|
||||
if (err instanceof Error) {
|
||||
state.errorMessage = err.message;
|
||||
} else {
|
||||
state.errorMessage = '提交留资失败';
|
||||
state.errorMessage = '交换名片失败';
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -256,8 +256,8 @@ const EXCHANGE_TEXTS: Record<string, Record<string, string>> = {
|
||||
'zh-CN': {
|
||||
desc: '留下姓名与联系方式,双方建立高效商务连接',
|
||||
warnMissingId: '缺少名片标识,无法提交',
|
||||
ocrTitle: '纸质名片 OCR 识别',
|
||||
ocrSubtitle: '拍照或上传名片图片,快速自动填单',
|
||||
ocrTitle: '纸质名片识别',
|
||||
ocrSubtitle: '拍照或上传名片,自动识别填入',
|
||||
ocrScan: '拍摄/上传',
|
||||
ocrScanning: '识别中...',
|
||||
ocrPreviewTitle: '名片原图',
|
||||
@@ -271,10 +271,10 @@ const EXCHANGE_TEXTS: Record<string, Record<string, string>> = {
|
||||
emailPlaceholder: '工作邮箱 (name@company.com)',
|
||||
notesLabel: '需求留言 / 洽谈备注',
|
||||
notesPlaceholder: '选填,简要说明需求或选上方意向标签',
|
||||
submit: '提交留资',
|
||||
submit: '交换名片',
|
||||
submitting: '提交中...',
|
||||
badge: '双向名片互换',
|
||||
badgeAi: '智能扫描识别',
|
||||
badgeAi: '名片扫描识别',
|
||||
contactSectionTitle: '联系人信息',
|
||||
contactSectionDesc: '留下真实商务联系方式,便于后续及时跟进',
|
||||
intentTitle: '沟通意向 (快捷选择)',
|
||||
@@ -283,12 +283,12 @@ const EXCHANGE_TEXTS: Record<string, Record<string, string>> = {
|
||||
intentInquiry: '索取资料',
|
||||
intentAgent: '代理加盟',
|
||||
intentTech: '技术交流',
|
||||
privacyTitle: '企业级隐私安全保障',
|
||||
privacyTitle: '隐私与数据安全',
|
||||
privacyDesc: '您的信息仅用于双方商务对接与资料发送,遵循严格的国际隐私保护与数据合规标准。',
|
||||
successTitle: '留资与名片互换已成功送达',
|
||||
successDesc: '名片主已收到您的联系方式与洽谈意向,将通过 WhatsApp 或工作邮箱尽快与您取得联系。',
|
||||
successTitle: '名片交换已完成',
|
||||
successDesc: '名片所有者已收到您的联系方式,将尽快与您取得联系。',
|
||||
backPortal: '返回微官网',
|
||||
submitAgain: '再换一张 / 重新填写',
|
||||
submitAgain: '重新填写',
|
||||
whatsappOrEmailTip: 'WhatsApp 或邮箱至少填写一项',
|
||||
whatsappBadge: '全球常用',
|
||||
requiredMark: '必填',
|
||||
|
||||
在新工单中引用
屏蔽一个用户