05-目的地连锁架构研究.md

结论先行:采用“统一身份与客户数据中枢 + 目的地业务域独立部署”的联邦式架构。统一账户中心负责跨小程序识别用户、授权互认、跨目的地客户标签和引流;每个目的地继续独立承载订单、商品、商户、库存、核销、目的地运营规则。不要把两个现网系统立即改造成一个集中式大单体,也不要继续维持两套完全孤立的用户体系。

依据是:刘总的需求同时包含“每个目的地拉起就用”和“客户信息互通、互相引流”;YOS 与 kailash 已经真实运行,技术栈同构但业务规模和领域差异明显,且目前两套用户表、token、微信 appid 均未打通。因此,身份和客户关系必须集中治理,目的地交易数据必须保持边界。

一、微信生态身份打通:硬约束与正解

硬约束

  1. openid 按小程序 appid 隔离。 同一个微信用户进入不同目的地小程序,会产生不同的 openid。不能把 A 小程序的 openid 直接当成 B 小程序的用户主键。材料已明确指出这一点。
  1. unionid 不能简单假定为无条件可用。 微信开放平台体系下,满足绑定和授权条件时,可以通过 unionid 识别同一开放平台体系内的用户;但是否能取得、在哪个接口取得、用户是否完成相应授权,取决于微信开放平台配置和实际授权链路。材料没有提供现有 appid 是否已绑定同一微信开放平台、unionid 获取情况,因此这一项需要上线前核验。
  1. 不同小程序的登录态不能直接互用。 A 小程序签发的 session 或业务 token,不能直接当作 B 小程序的微信登录凭证。跨小程序访问必须由统一账户中心建立自己的账户关系和短期业务 token。
  1. 微信授权仍以用户在当前小程序中的授权为边界。 统一账户中心可以识别账户和管理业务关系,但不能替代当前小程序必要的登录、手机号、订阅消息或其他微信授权流程。材料未涉及具体授权范围,应按实际产品流程补充确认。

推荐方案

建立独立的“连锁账户中心”,形成如下关系:

微信身份
  ├─ appid_A + openid_A ─┐
  ├─ appid_B + openid_B ─┼─> identity_binding ─> global_user_id
  └─ unionid(可用时作为强关联辅助)

global_user_id ─> 统一客户资料、足迹、偏好、会员、引流关系
目的地 token   ─> 当前目的地业务权限和业务会话

统一账户中心至少提供:

跨目的地跳转时,采用“当前小程序登录 → 账户中心识别或绑定 → 账户中心签发目的地访问凭证”的方式。若 unionid 不可用,应把手机号授权、用户主动确认、订单或会员关系等作为补充绑定路径;其中后两类只能作为产品和风控设计的一部分,不能在材料不足时直接定义为微信身份等价证明。

二、数据分层:共享身份,隔离交易

建议采用“共享中枢库 + 目的地业务库”的边界,而不是把全部数据放进一张共享业务表。

统一共享域

这些数据服务于跨目的地识别和引流:

共享域保存跨目的地运营所需的最小数据。订单明细、身份证件、行程安全信息、医疗或高风险出行信息等,应按必要性、授权和目的地业务边界处理。材料未涉及具体个人信息合规要求和数据出境情况,需要另行做隐私与合规评审。

目的地隔离域

每个目的地独立管理:

关键库表原则

业务表继续使用目的地内的本地用户映射,例如:

destination_user
- id
- destination_id
- global_user_id
- local_openid 或本地用户标识
- status
- created_at

订单等表保留明确的 destination_id 和本地业务主键:

order
- id
- destination_id
- destination_user_id
- amount
- payment_status
- fulfillment_status

所有跨域调用都通过服务接口或事件同步完成,不能让目的地业务库直接互相读写。共享域存“客户关系和运营摘要”,目的地库存“事实交易和履约明细”。这样既能互通客户,也能保留每个目的地独立运营、审计、备份和故障隔离能力。

三、引流机制:从推荐到可结算归因

引流机制要同时具备推荐、跳转、归因和结算四个环节。只有推荐曝光而没有归因账本,最终会变成运营口号,无法确认哪个目的地、哪个分销员或哪个内容带来了订单。

推荐场景

材料已明确“长岛完成行程后推荐冈仁波齐线路”这一方向;具体推荐算法、转化率和客单价材料未涉及,不能预先承诺效果。

推荐链路

A 目的地事件
  -> 统一事件总线
  -> 客户标签/推荐规则
  -> B 目的地商品或内容
  -> 带 referral_id 的跳转
  -> B 小程序登录或识别
  -> 下单/支付/核销
  -> 归因锁定与佣金结算

每次引流生成不可重复使用或可控复用的 referral_id,至少记录:来源目的地、来源页面、来源用户或分销员、目标目的地、目标商品、活动版本、创建时间、有效期和归因规则版本。

推荐规则建议

第一阶段采用可解释规则:已完成目的地、明确浏览行为、用户选择的兴趣、季节和产品库存。第二阶段再引入 YOS 已有的 AI brain 或推荐能力。依据是 YOS 已有 brain AI 域,但材料没有说明其是否已具备跨实例推荐能力,因此不能直接把现有 AI 能力视为可复用成品。

四、YOS 与 kailash 的迁移路径及 YOS 角色

YOS 的定位

建议 YOS 同时保留“长岛目的地实例”身份,并逐步承担“连锁平台能力提供方”的角色。YOS 不宜直接变成所有目的地的业务数据库,因为它的城市级多业态和 AI brain 能力与 kailash 的转山垂直域差异较大。

YOS 可以沉淀的连锁公共能力包括:

但是否把 credits、wallet、vouchers 全部升级为跨目的地公共资产,材料未给出业务规则,必须逐项确认所有权、有效期、退款、会计和结算责任。

迁移顺序

阶段一:旁路接入统一账户中心。

先建立账户中心和身份映射表,不改动现网订单、支付和核销主链路。YOS 与 kailash 各自增加 global_user_id 映射,通过登录后绑定或用户主动触发绑定,把新用户和可确认的老用户接入统一账户。两套旧 token 暂时继续有效,统一账户 token 只用于新增跨目的地能力。

阶段二:新用户优先统一。

新注册用户直接走统一账户中心;本地系统仍保留本地用户记录,形成 global_user_id ↔ local_user_id 映射。对老用户采用渐进式绑定,避免仅凭昵称、头像等弱信息自动合并。

阶段三:打通客户事件和引流。

先同步到访、完成订单、内容浏览、推荐点击等最小事件集,建设统一归因;订单事实仍在原目的地系统中。以长岛和冈仁波齐各选一个明确场景做闭环,例如“完成 A 行程后推荐 B 线路并形成可查询归因记录”。

阶段四:统一运营入口。

在账户中心或连锁运营台提供目的地发现、足迹、会员和跨目的地权益视图。目的地商户、订单和履约仍回到各自系统处理。

阶段五:新目的地按模板接入。

新目的地接入统一身份、事件、推荐、归因、分销和结算接口;业务域根据目的地特点部署,避免复制一整套连锁公共能力。

迁移期间必须提供双写或事件补偿、映射对账、失败重试、人工合并和回滚开关。材料未提供两套现网数据库规模、部署方式和接口兼容性,因此具体迁移工期不能准确估计。

五、部署形态:独立业务实例 + 集中公共服务

针对当前两个真实运行的系统,推荐:

                    连锁公共平面
        统一账户 / token / 客户 / 事件 / 归因 / 会员
                 /                 \
        长岛业务平面              冈仁波齐业务平面
       YOS + 独立DB              kailash + 独立DB
                 \
              未来目的地业务平面

每个目的地保留独立服务器和业务数据库,统一账户中心、客户中枢、事件总线和连锁运营台可以独立部署。公共服务不应和 YOS 的某个目的地业务代码永久耦合,否则 YOS 故障或版本发布会影响全连锁。

如果当前团队运维能力有限,公共服务初期可以部署在一套受控环境中,但逻辑上必须独立服务、独立数据库 schema 或数据库、独立权限和独立备份。随着目的地数量增加,再按容量和故障域拆分。

不建议现在直接采用全量集中式多租户库,依据是:

未来若连锁目的地数量、运营团队和数据治理成熟,可将公共域演进为集中式平台;目的地业务仍可保持服务或库级隔离。

六、福钥与跨目的地分销

这里必须先把“权益使用”和“佣金归属”拆开。福钥能否在 A 赚、B 用,材料只提出了问题,没有给出既定规则,因此需要产品和财务共同确认。架构上可以支持,但不应默认所有福钥天然通用。

推荐的账本模型

福钥采用统一账户下的权益账本,业务使用时由目标目的地核验:

福钥账户
  -> 获取来源:目的地、活动、分销员、订单
  -> 权益类型:通用/目的地专属/商品专属
  -> 余额或权益数量
  -> 目标目的地使用
  -> 冻结、核销、退款、过期
  -> 目的地间清分

每笔权益都要记录发行方、使用方、承担成本方、有效期、适用范围和清分状态。这样才能回答“谁发的、谁用了、谁承担成本、退款退给谁”。

分销归因

“我的客人”终身绑定可以作为客户关系模型,但必须增加归属范围、有效期、转移和冲突规则。建议将以下关系分开保存:

跨目的地订单可按以下方式核算:

来源分销员 -> 引流目的地 A -> 成交目的地 B -> B 订单

佣金以订单和核销状态为结算依据,归因关系在下单时锁定,退款、取消和部分核销触发反向调整。对于“我的客人”终身绑定与本次订单归因冲突的情况,应预先定义优先级,例如以明确分享链路、活动规则或既有绑定关系中的一种为主;最终优先级材料未涉及,需由业务确认。

结算上建议按目的地分别出账,由连锁结算服务生成跨目的地应收应付;不要让一个目的地直接修改另一个目的地的佣金记录。

七、最短可行路线图

P0:架构冻结与现状核验

目标是确定不可逆的边界:

P1:统一身份旁路上线

验收重点是同一用户能够在两个小程序分别登录,并在账户中心得到可审计的同一 global_user_id;两个目的地原有订单和支付流程不受影响。

P2:客户事件与单场景引流闭环

P3:跨目的地内容、会员和福钥试点

P4:产品化为目的地接入模板

主要风险与控制点

  1. 微信身份无法自动合并。 控制方式是以 unionid 和可验证绑定为主,弱信息只用于提示,不用于自动合并;所有合并保留审计记录。
  1. 统一 token 造成越权。 控制方式是 token 明确 audience、destination scope、角色和有效期;目的地服务自行校验权限,账户中心不直接授予订单操作权限。
  1. 共享数据扩大隐私和泄露影响。 控制方式是最小化共享、分级授权、脱敏、访问审计和按目的地隔离敏感业务数据。具体合规义务材料未涉及,需专项评审。
  1. 双系统迁移破坏现网交易。 控制方式是旁路接入、事件补偿、双写对账、灰度比例、回滚开关和人工处理队列。
  1. 跨目的地推荐形成数据孤岛或错误归因。 控制方式是统一事件规范、归因 ID、规则版本、时间窗和可查询的归因账本。
  1. 福钥和佣金跨目的地无法清分。 控制方式是先定义发行方、使用方、成本承担方和结算方,再开发账本;没有规则前只做不可跨目的地使用的试点。
  1. YOS 继续吸收所有公共能力导致中枢单点依赖。 控制方式是将连锁公共服务从 YOS 业务代码中抽出,YOS 保留长岛实例,同时作为能力来源和首个验证场景。

最终应冻结三条架构原则:

材料没有提供 appid 开放平台绑定状态、unionid 可用性、个人信息授权方案、现网数据库结构、部署拓扑、福钥业务规则和分销结算规则。这些是 P0 必须核验的前置事实,不能在架构评审中假定已经成立。