背景
文档访问申请的待审批卡片不显示申请人名字(显示匿名)。
根因:申请人名由 producer(docs-backend)预解析后通过 actor_name 传给 octo-server,而 docs-backend 走 getUser 需要一枚 session token;该 token 会过期/为空时解析失败 → actor_name 为空 → 卡片显示匿名。文档持有者看不到是谁在申请,无法决策。
目标
让 octo-server 作为身份权威,服务端按 uid 解析申请人名,彻底摆脱 producer 侧的会过期凭证。
范围(octo-server 侧)
modules/notify/:
model.go:DocsCardFields 新增 ActorUID 字段。
card.go:新增 hydrateActorName —— 当 ActorName 为空且 ActorUID 非空时,用本模块已持有的 userService.GetUser(uid) 服务端解析名字填入。best-effort + 幂等:已有名字不覆盖,解析 miss/error 时留空、降级为原来的匿名 banner。
配套 producer 改动(docs-backend 传 actor_uid)在其仓库单独 PR。
背景
文档访问申请的待审批卡片不显示申请人名字(显示匿名)。
根因:申请人名由 producer(docs-backend)预解析后通过
actor_name传给 octo-server,而 docs-backend 走getUser需要一枚 session token;该 token 会过期/为空时解析失败 →actor_name为空 → 卡片显示匿名。文档持有者看不到是谁在申请,无法决策。目标
让 octo-server 作为身份权威,服务端按 uid 解析申请人名,彻底摆脱 producer 侧的会过期凭证。
范围(octo-server 侧)
modules/notify/:model.go:DocsCardFields新增ActorUID字段。card.go:新增hydrateActorName—— 当ActorName为空且ActorUID非空时,用本模块已持有的userService.GetUser(uid)服务端解析名字填入。best-effort + 幂等:已有名字不覆盖,解析 miss/error 时留空、降级为原来的匿名 banner。配套 producer 改动(docs-backend 传
actor_uid)在其仓库单独 PR。