allinssl/frontend/scripts/index.md

194 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 多功能任务同步工作流管理平台项目文档
## 一、项目概述
### 1. 项目目标
打造一个可视化、可扩展的任务同步工作流管理平台,支持多种主流任务执行类型的配置、管理与自动化执行,帮助用户高效管理跨平台、跨工具的任务流程,提升开发、运维及文件处理效率。
### 2. 核心价值
- **统一管理**:通过标准化界面管理文件同步、项目编译、代码同步等多类型任务,避免工具碎片化。
- **灵活配置**:支持动态添加任务类型,每种任务类型提供专属配置表单,适配不同场景需求。
- **高效执行**集成主流协议SFTP/FTP、开发工具TurboRepo、Git及本地操作一键触发任务执行并实时反馈状态。
### 3. 技术架构
#### 后端
- **框架**Egg.jsNode.js 企业级框架,支持高性能 API 开发与插件扩展)
- **数据库**SQLite轻量级文件型数据库适合快速原型与小型部署
- **任务执行**:通过 Node.js 原生模块(如 `child_process`)调用系统命令,集成 SFTP/FTP 客户端库(如 `ssh2-sftp-client`、Git 工具库(如 `simple-git`)实现任务逻辑。
#### 前端
- **构建工具**Vite 6极速开发服务器与优化构建
- **框架**Svelte 5轻量响应式 UI 框架,组件化开发)
- **UI 组件库**Shadcn-Svelte现代风格、可自定义的组件集合含表单、表格、模态框等
- **状态管理**Svelte 原生响应式系统 + 轻量表单库(如 `svelte-forms-library`
### 4. 适用场景
- **开发团队**管理项目编译、代码同步Git、微服务架构下的项目分离TurboRepo
- **运维/文件处理**:批量配置文件本地同步、跨服务器 SFTP/FTP 上传任务。
- **自动化场景**:通过定时触发或手动执行,减少重复性操作。
## 二、核心功能模块
### 1. 工作流基础管理
#### 1工作流列表
- **展示字段**:任务名称、类型(文件同步/SFTP上传等、状态待执行/进行中/成功/失败)、创建时间、操作(编辑/删除/立即执行)。
- **交互功能**
- 搜索过滤:支持按任务名称、类型关键词搜索。
- 排序功能:按创建时间、执行状态升/降序排列。
- 批量操作:可选删除多个任务(需二次确认)。
#### 2增删改查操作
- **添加任务**
1. 选择任务类型(下拉菜单,含 5 种预设类型,预留扩展接口)。
2. 动态加载该类型专属配置表单(见下文各类型详情)。
3. 提交后生成任务记录,状态默认「待执行」。
- **编辑任务**:支持修改配置参数,保存后不影响历史执行记录。
- **删除任务**:物理删除数据库记录,关联执行日志可选择保留或清除。
### 2. 任务类型与配置详情
#### 1文件本地同步
- **核心功能**:将本地文件/目录从源路径复制到目标路径,支持增量同步(可选)。
- **配置参数**
- 任务名称(必填)
- 入口文件地址:文件/目录选择组件(支持系统文件弹窗选择,显示绝对路径)
- 出口文件地址:同上
- 同步模式:立即同步/定时同步(可选,需后续扩展定时模块)
#### 2文件 SFTP/FTP 上传
- **核心功能**:通过 SFTP安全传输或 FTP 协议将本地文件上传至远程服务器。
- **配置参数**
- 任务名称(必填)
- 入口文件地址:本地文件/目录选择
- 协议类型单选按钮SFTP/FTP默认 SFTP
- 远程服务器信息:
- IP 地址(必填)
- 端口选填SFTP 默认为 22FTP 默认为 21
- 用户名(必填)
- 密码(必填,输入框掩码处理)
#### 3项目编译
- **核心功能**:在指定项目路径执行自定义编译命令(如 `npm run build`、`make` 等)。
- **配置参数**
- 任务名称(必填)
- 项目路径:选择项目根目录(文件选择组件,校验是否存在 `package.json` 等标识文件)
- 编译命令:文本输入框(支持多行,如分步骤执行命令,用 `&&` 分隔)
- 环境变量:选填(可配置编译所需的环境参数,如 `NODE_ENV=production`
#### 4Git 项目同步
- **核心功能**:克隆、拉取或推送 Git 仓库,支持代码同步与版本控制。
- **配置参数**
- 任务名称(必填)
- Git 项目地址:输入框(支持 `http`/`https`/`ssh` 协议,如 `git@github.com:user/repo.git`
- 本地存储路径:选填(默认克隆至系统临时目录,可自定义本地存放路径)
- 操作类型:单选(克隆/拉取/推送,默认拉取)
#### 5项目分离TurboRepo
- **核心功能**:基于 TurboRepo 架构分离 monorepo 中的子项目,支持独立构建或发布。
- **配置参数**
- 任务名称(必填)
- 分离的项目名称:输入框(需与 TurboRepo 配置中的 `name` 字段匹配)
- 根项目路径:选择 TurboRepo 根目录(校验是否存在 `turbo.json` 配置文件)
- 操作类型:单选(分离并构建/仅分离,默认分离并构建)
### 3. 任务执行与反馈
- **触发方式**
- 手动触发:列表页「立即执行」按钮。
- 定时触发:后续扩展(需添加 cron 表达式配置字段)。
- **执行状态**
- 进行中:显示加载动画,禁用编辑/删除操作。
- 成功:记录执行时间,可查看日志详情(如同步文件数量、编译输出)。
- 失败:显示错误原因(如网络异常、权限不足),支持重试。
- **日志系统**
- 记录每次执行的开始/结束时间、状态、关键参数及错误信息。
- 日志详情页支持关键词搜索、导出为文本文件。
## 三、技术实现细节
### 1. 后端Egg.js + SQLite
#### 1数据模型设计
`Workflow` 表字段:
| 字段名 | 类型 | 说明 |
|----------------|--------------|----------------------------------------------------------------------|
| id | INTEGER | 自增主键 |
| name | VARCHAR(50) | 任务名称(唯一) |
| type | VARCHAR(20) | 任务类型file_local, sftp_ftp, compile, git, turborepo |
| config | TEXT | 配置参数JSON 字符串,存储各类型专属字段,如 SFTP 的 IP、端口等 |
| status | VARCHAR(20) | 状态pending/running/success/failed默认 pending |
| create_time | DATETIME | 创建时间(默认当前时间) |
#### 2API 接口设计
- **列表接口**`GET /workflows`,支持分页、搜索、排序(返回包含状态、类型、操作按钮的列表数据)。
- **创建/编辑接口**`POST /workflows`、`PUT /workflows/:id`,接收包含 `type``config` 的 JSON 数据。
- **执行接口**`POST /workflows/:id/execute`,触发任务执行逻辑,返回执行任务 ID 用于状态轮询。
- **日志接口**`GET /workflows/:id/logs`,获取该任务历史执行日志。
#### 3任务执行逻辑
- 基于 `child_process.spawn` 执行本地命令如编译、Git 操作),通过流处理实时捕获输出日志。
- SFTP/FTP 上传使用 `ssh2-sftp-client`支持连接池管理与错误重试3 次失败后终止)。
- 任务执行时通过 Egg.js 插件(如 `egg-redis`)实现分布式锁(后续扩展多实例部署)。
### 2. 前端Svelte 5 + Shadcn-Svelte
#### 1组件结构
- **核心组件**
- `WorkflowList.svelte`:任务列表,包含搜索栏、操作按钮,集成 `shadcn-svelte``Table`、`Button` 组件。
- `WorkflowForm.svelte`:动态表单,根据 `type` 渲染不同字段(如 SFTP 表单包含 IP/端口输入Git 表单包含仓库地址输入)。
- `FileSelect.svelte`:封装文件/目录选择组件,基于原生 `<input type="file">` 扩展目录选择(需浏览器支持 `webkitdirectory` 属性)。
- **状态管理**
- 使用 Svelte 响应式变量(`let config = {}`)存储表单数据,通过 `bind:value` 绑定输入框。
- 表单提交前校验必填字段(如 SFTP 的 IP、用户名错误信息通过 `shadcn-svelte``Alert` 组件提示。
#### 2动态表单实现
```svelte
{#if type === 'sftp_ftp'}
<SFTPConfigForm bind:config />
{:else if type === 'compile'}
<CompileConfigForm bind:config />
{:else if type === 'git'}
<GitConfigForm bind:config />
{/if}
```
每个类型对应独立子组件,封装专属字段逻辑,提升可维护性。
#### 3执行状态交互
- 点击「立即执行」按钮后,禁用按钮并显示加载状态,通过 WebSocket后续扩展或轮询接口`GET /workflows/:id/status`)实时更新任务状态。
- 失败状态显示红色警告,附带「重试」按钮,一键重新提交执行请求。
## 四、技术栈文档索引
1. **Egg.js 框架**
- 官网:[https://www.eggjs.org/zh-CN](https://www.eggjs.org/zh-CN)
- 核心功能插件机制、中间件、ORM 集成(本项目使用 SQLite 原生驱动)。
2. **Shadcn-Svelte**
- 官网:[https://next.shadcn-svelte.com/](https://next.shadcn-svelte.com/)
- 组件列表:按钮、表单、模态框、表格等,支持完全自定义样式(基于 Tailwind CSS
3. **Svelte 5**
- 官网:[https://svelte.dev/](https://svelte.dev/)
- 特性:组件化开发、响应式系统、编译时优化,适合构建高性能前端界面。
4. **Vite 6**
- 官网:[https://cn.vitejs.dev/](https://cn.vitejs.dev/)
- 优势:极速冷启动、按需编译、支持 Svelte 单文件组件(.svelte热更新。
## 五、后续扩展方向
1. **定时任务**:添加 cron 表达式配置,支持按计划执行任务(如每天凌晨同步文件)。
2. **可视化工作流编辑器**:允许用户通过拖拽节点配置多步骤任务流程(如先编译项目,再同步至服务器)。
3. **权限管理**:区分管理员与普通用户,控制任务创建、编辑权限。
4. **多语言支持**:集成 i18n 插件,适配中英文界面。
通过以上设计,项目实现了多类型任务的统一管理与高效执行,结合现代技术栈确保了开发效率与用户体验,适用于中小型团队及个人用户的自动化任务场景。