graph TD
A[客户注册请求] --> B{X-Channel头部检查}
B -- Salesforce渠道 --> C[邮政编码验证]
B -- 其他渠道 --> D[前端注册流程]
C --> E[从地址中提取市场信息]
E --> F{市场检查}
F -- DE/ES/FR/IT --> G[验证5位数字邮政编码]
F -- CH/BE/AT --> H[验证4位数字邮政编码]
F -- NL --> I[验证荷兰格式: #### AA]
F -- PT --> J[验证葡萄牙格式: ####-###]
F -- GB --> K[验证英国格式: 6-8个字符]
G --> L{邮政编码无效?}
H --> L
I --> L
J --> L
K --> L
L -- 是 --> M[Raise Error: 无效邮政编码]
L -- 否 --> N[Salesforce CRM注册]
N --> O{记录类型检查}
O -- 轻量级/兴趣记录 --> P[轻量级账户注册]
O -- 商业账户 --> Q[商业账户同步到AEP]
O -- 商业联系人 --> R[商业联系人注册]
O -- 其他 --> S[无效账户类型错误]
D --> T{注册类型}
T -- 潜在客户 --> U{VIP购买提交?}
U -- 是 --> V[验证优惠券代码]
V --> P
U -- 否 --> P
T -- 完整注册 + 个人账户 --> W[不支持完整注册]
T -- 完整注册 + 商业联系人 --> X[不支持商业联系人注册]
T -- 其他 --> Y[无效账户类型错误]
Q --> Z{AEP aep-b2b-account-trigger 开关启用?}
Z -- 是 --> AA[准备B2B账户AEP数据]
AA --> AB[AEP流式摄入]
Z -- 否 --> AC[日志: B2B账户无法同步]
P --> AD[账户搜索]
AD --> AE{是否有完整账户?}
AE -- 是 --> AF[设置完整账户标志]
AE -- 否 --> AG[生成注册令牌]
subgraph "轻量级账户注册过程"
AF --> AH{S-Object类型}
AG --> AH
AH -- 个人账户 --> AI[准备B2C账户请求]
AH -- 潜在客户来源Superlite --> AJ[准备Superlite潜在客户请求]
AH -- 其他 --> AK[准备潜在客户请求]
AI --> AL[设置标签变量]
AJ --> AL
AK --> AL
AL --> AM[设置账户信息]
AM --> AN[设置UID变量]
AN --> AO[账户搜索]
AO --> AP[设置令牌变量]
AP --> AQ{X-Channel是Salesforce?}
end
AQ -- 是 --> AR{兴趣记录类型?}
AR -- 是 --> AS[准备CDC事件请求]
AS --> AT[AEP流式摄入]
AR -- 否 --> AU[更新Salesforce外部ID]
AU --> AV[准备CDC配置文件数据集]
AV --> AW{AEP数据集类型}
AW -- B2C潜在客户 --> AX[准备B2C潜在客户请求]
AW -- B2B潜在客户 --> AY[准备B2B潜在客户请求]
AW -- B2C账户 --> AZ[准备B2C账户请求]
AX --> BA[AEP流式摄入]
AY --> BA
AZ --> BA
AQ -- 否 --> BB[准备请求数据]
BB --> BC[附加潜在客户来源]
BC --> BD{潜在客户来源是Newsletter?}
BD -- 是 --> BE[异步转换并发布到Lite注册 消息队列Publish_lite Register]
BD -- 否 --> BF[同意映射]
BF --> BG[RMS超轻量级实现]
subgraph "Super Light流程"
BG --> BH[RMS实现:记录输入数据]
BH --> BI{记录类型是个人潜在客户?}
BI -- 是 --> BJ[异步执行并行处理]
BJ --> BK[NL AEP流式摄入子流程]
BJ --> BL[RMS CDC配置文件子流程]
BJ --> BM[RMS CRM实现子流程]
BK --> BN[准备请求数据AEP]
BN --> BO[AEP流式摄入]
BL --> BP[同意映射]
BP --> BQ[账户信息更新]
BM --> BR[准备CRM请求数据]
BR --> BS[B2C客户注册子流程]
BS --> BT[创建B2C账户]
BT --> BU{创建成功?}
BU -- 是 --> BV[映射成功响应]
BU -- 否 --> BW[映射错误响应]
BV --> BX[返回成功响应]
BW --> BX
BI -- 否 --> BY[记录无效潜在客户类型日志]
BY --> BX[返回成功响应]
end
BD --> BZ{有优惠券?}
BZ -- 是 --> CA[存储已使用优惠券代码]
BZ -- 否 --> CB[生成并存储令牌]
CB --> CC[映射响应数据]
CA --> CC
BE --> CC
BX --> CC
CC --> CD[返回成功响应]
R --> CE{是否有gigyaBPID?}
CE -- 是 --> CF[邀请成员加入组织]
CE -- 否 --> CG[注册组织并邀请成员]
subgraph "注册组织并邀请成员流程"
CG --> CH[设置recordID变量]
CH --> CI[获取记录信息子流程]
CI --> CJ[准备B2B负载CRM AEP数据]
CJ --> CK[注册组织子流程]
CK --> CL[设置accountType变量]
CL --> CM[准备数据同步请求]
CM --> CN[Salesforce外部ID更新子流程]
CN --> CO[准备B2B账户AEP数据]
CO --> CP[AEP流式摄入]
CP --> CF
end
CF --> CQ[准备邀请成员数据]
CQ --> CR[设置成员同意信息]
CR --> CS[邀请成员子流程]
CS --> CT[设置gigyaUid变量]
CT --> CU{X-Channel是Salesforce?}
CU -- 是 --> CV[设置accountType变量]
CV --> CW[准备Salesforce外部ID更新数据]
CW --> CX[更新Salesforce外部ID]
CX --> CY[准备CDC配置文件数据集]
CY --> CZ[B2B联系人AEP数据]
CZ --> DA[AEP流式摄入]
CU -- 否 --> DB[更新成员同意信息]
DB --> DC[设置账户信息]
DC --> DD{AWS触发器oneTime-pwd-aws-trigger启用?}
DD -- 是 --> DE[准备邮件内容]
DE --> DF[准备发送邮件数据]
DF --> DG[发送一次性密码邮件]
DG --> DH{邮件发送成功?}
DH -- 是 --> DI[映射响应数据: 邮件发送成功]
DH -- 否 --> DJ[映射响应数据: 邀请成功]
DA --> DB
DI --> DK[返回成功响应]
DJ --> DK