This template should help get you started developing with Tauri, React and Typescript in Vite.
Rust 代码位于 src-tauri/src,主要由四个模块组成:
| 模块 | 作用 | 关键接口 |
|---|---|---|
db.rs | 负责与 SQLite(rusqlite)交互,初始化表结构并提供 CRUD | insert_script、list_scripts、get_script、insert_log、update_script_status、delete_script |
script.rs | 暴露给前端的 tauri command,实现脚本管理与日志逻辑 | add_script、add_existing_script、get_script_detail、list_scripts、append_script_log、run_script、stop_script、delete_script |
file.rs | 文件操作辅助,创建/删除文件与目录 | create_file_with_dirs、delete_file 等 |
path.rs | 路径校验与权限检测,统一返回体 | exists、is_file、is_directory 等 |
db.rs 中的核心结构体对应 docs/AllDoc.md 描述的需求:
Script:脚本记录,包含 id、name、path、描述、Python/UV 版本、状态、创建/更新时间,以及日志列表。ScriptLog:日志记录,包含 script_id、当前状态、是否 live,以及按行的日志内容 ScriptLogLine。ScriptListQuery / PaginatedScripts:分页查询入参与结果。NewScript / NewScriptLog:新增脚本与日志的 payload。| Command 名称 | 功能 | 请求参数示例 |
|---|---|---|
add_script | 新建脚本:若 path 不存在会创建空文件 | { "name": "demo", "path": "/tmp/demo.py" } |
add_existing_script | 登记已有脚本:要求指定路径已存在 | 同上 |
get_script_detail | 获取脚本详情及日志 | { "script_id": 1 } |
list_scripts | 分页+搜索脚本 | { "query": { "page": 1, "page_size": 10, "keyword": "demo", "status": 1 } } |
append_script_log | 追加日志 | { "script_id": 1, "status": 1, "live": true, "data": [{ "time": "...", "message": "日志" }] } |
run_script | 异步执行 Python 脚本(后台线程)并实时写入日志 | { "script_id": 1 } |
stop_script | 将状态置为结束并写“手动停止”日志 | { "script_id": 1 } |
delete_script | 删除脚本记录,支持只删除数据库记录或同时删除文件 | { "script_id": 1, "delete_file": true } |
check_uv | 检查本机 uv 版本,用于 NewScript 自动补全 | 无参数 |
前端可通过 @tauri-apps/api/core 的 invoke 调用,例如:
import { invoke } from "@tauri-apps/api/core";
const payload = { name: "demo", path: "/tmp/demo.py" };
const result = await invoke<ApiResult<Script>>("add_script", payload);
pyfastgui.sqlite3。PYFASTGUI_DB_PATH 指定另一个文件位置。db::set_db_path/reset_db_path 覆盖该路径。run_script 会在后台线程中启动脚本进程,并通过管道持续读取 stdout/stderr。每读取到一行非空输出,都会即时写入 script_logs 表(live=true,状态 Running),从而支持前端实时展示执行过程。脚本退出后会根据退出码自动写入成功/失败日志,并更新脚本状态为 Success 或 Error。若无法找到 Python 解释器或线程启动失败,会立即回滚状态并写入错误日志。
pnpm dev(或 npm run dev)启动 Vite 前端,同时 tauri dev 会构建 Rust 端。src-tauri 执行 cargo check 或 cargo test。src-tauri/src/script.rs 包含针对新增脚本与分页查询的单元测试,可作为调用示例。