graph TD
A[PUT /customer-registration] --> B{X-Channel == Salesforce?}
B -- Yes --> C[邮政编码验证]
B -- No --> D[前端更新流程]
C --> E[从地址中提取市场信息]
E --> F{市场验证}
F -- DE/ES/FR/IT --> G[5位数字邮编检查]
F -- CH/BE/AT --> H[4位数字邮编检查]
F -- NL --> I[荷兰格式检查]
F -- PT --> J[葡萄牙格式检查]
F -- GB --> K[英国格式检查]
G --> L{邮编无效?}
H --> L
I --> L
J --> L
K --> L
L -- Yes --> M[错误: 无效邮编]
L -- No --> N[Salesforce CRM 更新]
N --> O{记录类型}
O -- 轻量级潜在客户/兴趣 --> P[轻量级账户更新实现]
O -- 完整B2C账户 --> Q[完整B2C账户更新]
O -- 商业账户 --> R{有gigyaBPID?}
R -- Yes --> S[CRM B2B账户更新]
R -- No --> T[商业账户同步到AEP]
O -- 商业联系人 --> U[更新商业联系人]
O -- 兴趣记录 --> V[更新兴趣]
O -- 其他 --> W[无效账户类型]
P --> X{gigyaUid为空?}
X -- Yes --> Y[轻量级账户注册]
X -- No --> Z[获取账户令牌]
Z --> AA[准备更新请求]
AA --> AB[设置账户信息]
AB --> AC{AEP数据集类型}
AC -- 个人潜在客户 --> AD[B2C潜在客户请求]
AC -- 商业潜在客户 --> AE[B2B潜在客户请求]
AC -- 其他 --> AF[B2C账户请求]
AD --> AG[流式摄入]
AE --> AG
AF --> AG
Q --> AH[分散收集器]
AH --> AI[准备CDC请求]
AI --> AJ[设置账户信息]
AH --> AK[获取客户交互]
AK --> AL[准备AEP请求]
AL --> AM[流式摄入]
AH --> AN[获取电商访问令牌]
AN --> AO[准备更新数据]
AO --> AP[私人客户更新电商]
S --> AQ[分散收集器]
AQ --> AR{制裁标志?}
AR -- Yes --> AS[通过BPID获取商业联系人]
AS --> AT[并行处理每个联系人]
AT --> AU[准备CDC请求]
AU --> AV[设置账户信息]
AR --> AW[准备更新组织数据]
AW --> AX[更新组织子流程]
AQ --> AY[准备B2B账户AEP]
AY --> AZ[流式摄入]
AQ --> BA[获取电商访问令牌]
BA --> BB[准备B2B单位]
BB --> BC[商业单位创建或更新电商]
T --> BD{AEP B2B账户触发器?}
BD -- Yes --> BE[准备B2B账户AEP]
BE --> BF[流式摄入]
BD -- No --> BG[日志: 无法同步B2B账户]
U --> BH[分散收集器]
BH --> BI[准备联系人请求]
BI --> BJ[设置账户信息]
BH --> BK[准备B2B联系人AEP]
BK --> BL[流式摄入]
BH --> BM[获取电商访问令牌]
BM --> BN[准备B2B客户]
BN --> BO[商业客户创建或更新电商]
V --> BP{gigyaUid为空?}
BP -- Yes --> BQ[轻量级账户注册]
BP -- No --> BR[账户搜索]
BR --> BS{有完整账户?}
BS -- Yes --> BT[设置fullAccount = true]
BS -- No --> BU[设置fullAccount = false]
BU --> BV[获取注册令牌]
BT --> BW[准备兴趣请求]
BV --> BW
BW --> BX[设置账户信息]
BX --> BY[CDC事件请求]
BY --> BZ[流式摄入]
D --> CA{注册类型}
CA -- 潜在客户 --> CB[新闻订阅RMS]
CA -- 完整 --> CC[不在范围内]
CA -- 其他 --> CD[无效账户类型]
CB --> CE{令牌为空?}
CE -- Yes --> CF[轻量级账户更新实现]
CE -- No --> CG[检索用户信息]
CG --> CH[获取CRM档案]
CH --> CI[准备请求数据]
CI --> CJ{内容偏好?}
CJ -- Yes --> CK[分散收集器同步]
CJ -- No --> CL[分散收集器同步]
CK --> CM{订阅已更新?}
CL --> CM
CM -- Yes --> CN[异步CDC同步]
CN --> CO[账户搜索]
CO --> CP[客户CDC实现]
CM -- No --> CQ[日志: 旅程已提交]
CQ --> CR[响应数据]
CN --> CR
CO --> CR
CP --> CR
CR --> CS[返回成功响应]
CF --> CT[设置邮箱变量]
CT --> CU[尝试获取账户令牌]
CU --> CV{gigyaUid为空?}
CV -- Yes --> CW[同意载荷]
CW --> CX[轻量级账户注册]
CV -- No --> CY[轻量级账户更新]
CY --> CZ[设置邮箱变量]
CZ --> DA[获取账户令牌]
DA --> DB{S-对象类型}
DB -- 个人账户 --> DC[准备B2C账户请求]
DB -- 其他 --> DD[准备潜在客户请求]
DC --> DE[设置账户信息]
DD --> DE
DE --> DF[设置gigyaUid]
DF --> DG{AEP数据集类型}
DG -- 个人潜在客户 --> DH[B2C潜在客户请求]
DG -- 商业潜在客户 --> DI[B2B潜在客户请求]
DG -- 其他 --> DJ[B2C账户请求]
DH --> DK[流式摄入]
DI --> DK
DJ --> DK
DK --> DL[映射响应数据]