feat: 本地 uv 与托管 Python 环境管理

- 新增 uv 管理:只认程序目录副本或指定路径,支持从科大镜像下载并按 sha256 校验

- uv 环境变量(UV_*)可配置,默认相对程序目录(python / uv-cache),同时注入 uv 调用与任务进程

- 新增托管虚拟环境与 Python 版本管理:用 uv 下载解释器、预创建环境、查看已装包

- 新建任务保存时自动创建 .venv,运行期只校验、不再自动装依赖;镜像只在装包时使用

- 前端改为顶部品牌栏 + 三栏工作台,uv / 镜像源 / 虚拟环境各自独立弹窗

- 发布包构建后去掉工作区继承的低完整性标签

- 修复调度集成测试并发时误取 skipped 运行的问题
This commit is contained in:
2026-11-07 16:57:27 +08:00
parent 2aa2a1ac18
commit 1914d38451
36 changed files with 5168 additions and 508 deletions
@@ -0,0 +1,11 @@
-- uv 可执行文件来自哪里:系统 PATH(system)、程序目录下的 uv 目录(managed),
-- 或用户自己下载后指定的路径(custom)。只保留一行。
CREATE TABLE IF NOT EXISTS uv_settings (
id INTEGER PRIMARY KEY CHECK (id = 1),
source TEXT NOT NULL DEFAULT 'system' CHECK (source IN ('system', 'managed', 'custom')),
custom_path TEXT,
updated_at TEXT NOT NULL
);
INSERT OR IGNORE INTO uv_settings (id, source, custom_path, updated_at)
VALUES (1, 'system', NULL, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'));
@@ -0,0 +1,21 @@
-- uv 只认平台自己的副本(程序目录 uv)或用户指定的路径,不再读系统 PATH。
CREATE TABLE uv_settings_v2 (
id INTEGER PRIMARY KEY CHECK (id = 1),
source TEXT NOT NULL CHECK (source IN ('managed', 'custom')),
custom_path TEXT,
updated_at TEXT NOT NULL
);
INSERT INTO uv_settings_v2 (id, source, custom_path, updated_at)
SELECT id,
CASE WHEN source = 'custom' THEN 'custom' ELSE 'managed' END,
custom_path,
updated_at
FROM uv_settings;
DROP TABLE uv_settings;
ALTER TABLE uv_settings_v2 RENAME TO uv_settings;
INSERT OR IGNORE INTO uv_settings (id, source, custom_path, updated_at)
VALUES (1, 'managed', NULL, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'));
@@ -0,0 +1,2 @@
-- uv 管理页允许额外注入 UV_* 环境变量(缓存目录、Python 安装目录、超时等)。
ALTER TABLE uv_settings ADD COLUMN extra_env TEXT NOT NULL DEFAULT '{}';