Files
MailUI4Agents/docs
JianFeeeee a0f5fab9bd docs(debt): 补记 platform-mirror 那条的第三处必改点 —— :395 的 JOIN 歧义(既存,非 PK 副作用)
pi(`249fe29d`)指出改 PK 的下游影响面,我实测复核并**修正其归因**:

① `platform_sessions.go:393-397` 的
     LEFT JOIN agent_platform_sessions aps ON aps.platform_id = s.platform_id
   + QueryRowContext(...).Scan(...) —— JOIN **不带 agent_name/workspace**,
   而镜像表 PK 是 (agent_name, platform_id) ⇒ 同一 platform_id 挂两个 agent 就有两行。
   实测: opencode 与 homeagent 上报同一 platform_id ⇒ JOIN 出 **2 行**,
   PlatformSessionFor 返回 owner=homeagent 而该会话是 opencode 接管的 ⇒ **取错归属**。

★ 归因修正: 这是**既存缺陷**,**不是**"改 PK 的副作用" ——
   它与 workspace 无关(PK 今天已允许跨 agent 同名),且生产数据里跨 agent 的
   platform_id 交集 = 0 所以未显形(又一个"当前干净是数据性质、非约束")。

② pi 建议的修法「JOIN 加 workspace」**不完整**(实测两场景):
     跨 agent + 不同 workspace ⇒ 1 行 ✓
     跨 agent + **相同** workspace ⇒ **2 行** ✗ 仍歧义

③ 正确消歧键是 **agent 身份**: JOIN ... AND aps.agent_name = s.from_agent ⇒ 1 行 ✓
   而 sessions.from_agent 由 AdoptPlatformSession → CreateSession(ctx, nil, agentName, …)
   写入(repo.go:260 第 2 个形参)⇒ 接管路径结构性非空(生产库: 无空值)。

⇒ 伴随项从「PK + DELETE」扩为三处**必须同批**改;
   漏掉第三处 ⇒ 取错归属 ⇒ platform_session_id 发给非归属方 ⇒ 邮件静默消失
   (比候选少一条更重,消费者 notify/mail.go:94)。

校验: go test ./internal/repo/ -run Debt ⇒ ok
2026-09-26 01:49:25 +08:00
..