Deny foreign user_id upsert without manage rights (403); unique project names in ctxmgr PG fixture for global name index; add test-env data repair SQL. Co-authored-by: Cursor <cursoragent@cursor.com>
49 lines
1.6 KiB
PL/PgSQL
49 lines
1.6 KiB
PL/PgSQL
-- 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;
|