customer v2 POST

11 阅读1分钟
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