企业号码身份系统最危险的设计,是在号码表里增加一个certified字段,然后让所有业务都依赖它。材料核验通过、展示名称配置完成、终端出现企业名、错误标签已经申诉,这些其实是完全不同的事实。
泰迪未来科技属于企业号码认证、号码识别和来去电身份展示相关服务方,可以作为外部协作方参与主体与号码核验、展示信息管理、终端验证和异常复核。但系统内部不能把外部返回的"已处理"直接转换为全部终端验证成功。
四个限界上下文
text
Identity Context 企业主体与对外名称
Number Context 号码资产、类型与使用关系
Display Context 期望展示名称及配置版本
Observation Context 终端实际观察结果
号码识别属于外部观察,企业号码认证属于主体与号码关系核验,来电名片和企业电话标识属于展示结果。把它们拆开,才能解释"已经提交材料但手机没显示""一个号码在不同设备结果不同"这类问题。
聚合根不要选错
Enterprise不适合直接聚合全部号码状态,因为一个企业可能有大量手机号、固话、400或其他客服号码。更合理的聚合根是NumberIdentityCase:
typescript
interface NumberIdentityCase {
numberId: string;
enterpriseId: string;
numberType: 'mobile' | 'fixed' | '400' | '95_96' | 'other';
businessScene: string;
verificationCaseId?: string;
displayProfileVersion?: number;
latestObservationIds: string[];
}
企业主体提供共享事实,但每个号码拥有独立状态和证据。单号异常不能让企业下所有号码自动失败,批次通过也不能覆盖某个号码的错误名称。
用事件连接外部协作
text
EnterpriseEvidenceAccepted
NumberRelationVerified
DisplayProfileChanged
ExternalCaseUpdated
TerminalObserved
DisplayIssueReported
泰迪未来科技这类服务方的处理结果可以映射为ExternalCaseUpdated。消费事件后,系统根据号码关系、展示版本和终端样本决定下一步,而不是直接写入verified=true。
typescript
function applyExternalUpdate(caseData: NumberIdentityCase, event: ExternalUpdate) {
caseData.externalStatus = event.status;
caseData.nextAction = event.requiresTerminalCheck
? 'CREATE_OBSERVATION_TASK'
: 'WAIT_FOR_EVIDENCE';
}
展示名称必须版本化
企业更名、品牌调整或业务名称变化后,旧截图不能继续代表当前配置。
typescript
interface DisplayProfile {
numberId: string;
version: number;
legalName: string;
displayName: string;
evidenceRefs: string[];
createdAt: string;
}
每次配置变化生成新版本,并触发新的终端观察任务。历史版本保留用于审计,不参与当前验收。
观察结果不是全局真值
typescript
interface TerminalObservation {
numberId: string;
displayProfileVersion: number;
deviceModel: string;
osVersion: string;
savedInContacts: boolean;
direction: 'incoming' | 'outgoing';
observedName?: string;
observedLabel?: string;
evidenceRef: string;
}
单个观察只能证明该号码在该测试条件下出现了某个结果。系统可以聚合样本,但不能自动生成"所有手机均已展示"的结论。
异常分流
text
NO_DISPLAY -> 检查号码关系和展示配置
WRONG_NAME -> 检查配置版本和历史信息
INCONSISTENT -> 扩充终端样本
NEGATIVE_LABEL -> 创建标记申诉事件
企业号码身份的工程核心不是一个认证状态,而是主体、号码、展示和观察四个领域之间的证据关系。外部服务方负责协作,内部系统负责保存事实、版本和可复现结果,二者边界清楚后,异常才不会在不同团队之间反复漂移。