Persist workflow_instance_id, stage_instance_id, scope_kind on chat messages and task runs; resolve scope from live instance for chat and document tasks so refresh can apply consistent stage authorization. Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.5 KiB
SQL
37 lines
1.5 KiB
SQL
-- +goose Up
|
|
-- 消息工作流作用域:支持刷新后阶段授权与历史兼容
|
|
|
|
ALTER TABLE chat_messages
|
|
ADD COLUMN IF NOT EXISTS workflow_instance_id BIGINT REFERENCES project_workflow_instances(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS stage_instance_id BIGINT REFERENCES project_stage_instances(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS stage_key TEXT,
|
|
ADD COLUMN IF NOT EXISTS scope_kind TEXT NOT NULL DEFAULT 'legacy_unscoped';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_chat_messages_session_scope
|
|
ON chat_messages (session_id, scope_kind)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_chat_messages_stage_key
|
|
ON chat_messages (session_id, stage_key)
|
|
WHERE deleted_at IS NULL AND stage_key IS NOT NULL;
|
|
|
|
ALTER TABLE task_runs
|
|
ADD COLUMN IF NOT EXISTS workflow_instance_id BIGINT REFERENCES project_workflow_instances(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS stage_instance_id BIGINT REFERENCES project_stage_instances(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS workflow_stage_key TEXT;
|
|
|
|
-- +goose Down
|
|
ALTER TABLE task_runs
|
|
DROP COLUMN IF EXISTS workflow_stage_key,
|
|
DROP COLUMN IF EXISTS stage_instance_id,
|
|
DROP COLUMN IF EXISTS workflow_instance_id;
|
|
|
|
DROP INDEX IF EXISTS idx_chat_messages_stage_key;
|
|
DROP INDEX IF EXISTS idx_chat_messages_session_scope;
|
|
|
|
ALTER TABLE chat_messages
|
|
DROP COLUMN IF EXISTS scope_kind,
|
|
DROP COLUMN IF EXISTS stage_key,
|
|
DROP COLUMN IF EXISTS stage_instance_id,
|
|
DROP COLUMN IF EXISTS workflow_instance_id;
|