-- One-shot data repair for test env triage (project 4/5 dup + member sessions). -- Usage: -- docker exec -i shuimu-system-pg-test psql -U app -d agent_system_test < scripts/fix-test-env-triage-data.sql -- Safe to re-run (idempotent where possible). BEGIN; -- 1) Retire duplicate project 4 (wanjiahao); keep project 5 (admin + members + assets). UPDATE projects SET status = 'demo_retired', updated_at = now() WHERE id = 4 AND name = '全自动冲击波治疗仪' AND COALESCE(status, 'active') <> 'demo_retired'; -- 2) Fix mis-owned member sessions created by creator upsert (owner was forced to admin). UPDATE chat_sessions SET user_id = 32, updated_at = now() WHERE session_id = 'sess-p5-u32' AND project_id = 5 AND user_id = 4; UPDATE chat_sessions SET user_id = 33, updated_at = now() WHERE session_id = 'sess-p5-u33' AND project_id = 5 AND user_id = 4; -- 3) Ensure chenwei (35) private session on project 5. INSERT INTO chat_sessions (session_id, user_id, project_id, title, created_at, updated_at) SELECT 'sess-p5-u35', 35, 5, '全自动冲击波治疗仪', now(), now() WHERE EXISTS ( SELECT 1 FROM project_members WHERE project_id = 5 AND user_id = 35 AND status = 'active' ) ON CONFLICT (session_id) DO UPDATE SET user_id = EXCLUDED.user_id, project_id = EXCLUDED.project_id, title = COALESCE(NULLIF(EXCLUDED.title, ''), chat_sessions.title), updated_at = now(); COMMIT; -- Verification queries (run after): -- SELECT id, name, creator_user_id, status FROM projects WHERE name LIKE '%冲击波%' OR id IN (4,5); -- SELECT session_id, user_id, project_id FROM chat_sessions WHERE project_id = 5 ORDER BY session_id;