-- ============ Workspace Run Profiles ============ -- 每个 workspace 下可配置多个运行档(dev/prod/test)。后端把每个 profile -- 作为长驻进程拉起;运行态(running/stopped/crashed)在 RunSupervisor 内存中维护, -- 不落库。下列三个 last_* 字段仅记录最近一次运行的历史,供前端展示与排障。 CREATE TABLE workspace_run_profiles ( id UUID PRIMARY KEY, workspace_id UUID NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE, slug TEXT NOT NULL, name TEXT NOT NULL, description TEXT NOT NULL DEFAULT '', command TEXT NOT NULL, -- 启动命令(exec 的 argv[0] 或 shell -c 串) args TEXT[] NOT NULL DEFAULT '{}', -- 额外参数 encrypted_env BYTEA, -- AES-GCM 密文(profile env 覆盖,map[string]string 的 JSON) enabled BOOLEAN NOT NULL DEFAULT TRUE, last_started_at TIMESTAMPTZ, -- 最近一次 start 时间 last_exit_code INTEGER, -- 最近一次退出码(NULL=从未退出/从未运行) last_error TEXT NOT NULL DEFAULT '', -- 最近一次 stderr 尾部 / 启动错误 created_by UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (workspace_id, slug) ); CREATE INDEX idx_run_profiles_workspace ON workspace_run_profiles(workspace_id);