启动项目逻辑

This commit is contained in:
2026-06-09 22:43:29 +08:00
parent d5a28b11a3
commit f4a7c770af
43 changed files with 3797 additions and 42 deletions
@@ -0,0 +1 @@
DROP TABLE IF EXISTS workspace_run_profiles;
@@ -0,0 +1,23 @@
-- ============ 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);