package server import ( "testing" "chat-agent-system/internal/chat" "chat-agent-system/internal/coordinator" ) func TestBindSessionProjectContext_FillsEmptyProjectID(t *testing.T) { sess := chat.NewSession("sess-p6024-u4", &coordinator.UserProjectContext{ Project: coordinator.ProjectInfo{Name: "吞咽电刺激"}, }, nil, nil) sess.SetProjectID(6024) bindSessionProjectContext(sess) if sess.UserCtx.Project.ID != "6024" { t.Fatalf("project id=%q", sess.UserCtx.Project.ID) } } // 2026-09-28 回填会话项目绑定后,SetProjectID 会同步协调器上下文: // 切换项目必须传导(旧断言"保留 9"固化的是切换不生效的缺陷)。 func TestBindSessionProjectContext_SwitchPropagates(t *testing.T) { sess := chat.NewSession("sess-keep", &coordinator.UserProjectContext{ Project: coordinator.ProjectInfo{ID: "9", Name: "已绑定"}, }, nil, nil) sess.SetProjectID(6024) if sess.UserCtx.Project.ID != "6024" { t.Fatalf("project switch must propagate, got %q", sess.UserCtx.Project.ID) } bindSessionProjectContext(sess) if sess.UserCtx.Project.ID != "6024" { t.Fatalf("bind must not overwrite explicit binding, got %q", sess.UserCtx.Project.ID) } } func TestBindSessionProjectContext_SkipsUnboundSession(t *testing.T) { sess := chat.NewSession("sess-none", &coordinator.UserProjectContext{ Project: coordinator.ProjectInfo{Name: "未选项目"}, }, nil, nil) sess.SetProjectID(0) bindSessionProjectContext(sess) if sess.UserCtx.Project.ID != "" { t.Fatalf("project id=%q", sess.UserCtx.Project.ID) } }