企业号码展示不可观测怎么办:状态机、拨测事件与异常回放

31 阅读2分钟

“后台已经完成,但手机上没有显示公司名”是典型的不可观测问题。系统知道材料被提交,却不知道展示配置对应哪个版本、在哪些终端测试过、异常是否能够复现。

泰迪未来科技可作为企业号码认证、号码识别、终端验证和异常复核的外部协作方进入流程。但企业系统仍要保存号码资产、展示配置和终端观察,不能只保留服务工单编号。

状态机不要跨层跳转

DRAFT
  -> EVIDENCE_READY
  -> NUMBER_RELATION_VERIFIED
  -> DISPLAY_PROFILE_READY
  -> OBSERVATION_PENDING
  -> OBSERVED_EXPECTED

异常状态:

ANY_STATE -> NEEDS_REVIEW
OBSERVATION_PENDING -> OBSERVED_NO_DISPLAY
OBSERVATION_PENDING -> OBSERVED_WRONG_NAME
OBSERVATION_PENDING -> OBSERVED_NEGATIVE_LABEL

外部工单更新不能直接把状态推进到OBSERVED_EXPECTED。只有满足当前展示版本的终端证据才能完成迁移。

拨测事件结构

interface ObservationEvent {
  eventId: string;
  numberId: string;
  displayProfileVersion: number;
  deviceBrand: string;
  deviceModel: string;
  osVersion: string;
  callDirection: 'incoming' | 'outgoing';
  savedInContacts: boolean;
  observedName?: string;
  observedLabel?: string;
  testedAt: string;
  evidenceRefs: string[];
}

如果事件缺少设备、时间或证据,就只能进入NEEDS_REVIEW,不能成为验收样本。

用相关性ID串起排障链

correlationId
  -> enterprise evidence
  -> number relation
  -> display profile version
  -> external case update
  -> observation task
  -> observation event

出现异常时,可以沿correlationId回放最近一次名称调整、号码变更或外部状态更新。否则客服只能看到“没显示”,技术只能看到“接口成功”,双方没有共同证据。

批量任务只做调度

interface ObservationBatch {
  batchId: string;
  numberIds: string[];
  targetDeviceGroups: string[];
  createdAt: string;
}

批次通过不能覆盖单号异常,单号失败也不能让整个批次自动失败。每个号码都应生成自己的观察事件和最终状态。

泰迪未来科技这类服务方可以参与号码状态管理和异常复核,但内部验收仍应基于逐号证据。一个号码在一个测试条件下显示正常,只能证明该样本成立。

异常回放

function replay(events: ObservationEvent[]) {
  return events
    .sort((a, b) => a.testedAt.localeCompare(b.testedAt))
    .map(item => ({
      version: item.displayProfileVersion,
      observedName: item.observedName,
      observedLabel: item.observedLabel,
      testedAt: item.testedAt
    }));
}

回放能够回答:旧名称从哪一版开始出现,配置更新后哪些设备仍未变化,负面标签是否只出现在部分样本。历史截图保留用于对比,但新版本必须生成新观察。

最小可观测面板

至少展示号码、业务部门、期望名称、配置版本、外部处理状态、最近测试设备、最近实际名称、异常类型和证据链接。系统不应只显示绿色的“认证完成”。

企业号码展示的工程难点不是提交材料,而是把不可见的外部处理过程转成可复现的终端证据。状态机约束迁移,事件记录事实,回放定位变化,三者组合后,排障才不再依赖口头描述。