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
..
2026-09-19 14:01:21 +08:00
2026-09-26 01:44:56 +08:00
2026-09-26 01:49:25 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00