为 DooTask 提供灵活的审批流程管理,支持请假、加班、外出、报销等多种业务申请。本仓库包含审批服务的完整源码、容器构建脚本以及 DooTask 插件的打包与自动发布配置。
- 后端:Go 实现的工作流引擎与 HTTP 接口,监听
8700端口。 - 前端:基于 Vite + Vue 3 的审批配置与流转界面(
workflow-vue3/)。 - dootask-plugin/:插件打包配置(元数据、Nginx 反向代理、Docker Compose)。
- Dockerfile:多阶段自包含构建,单条命令即可产出可运行镜像。
.
├── Dockerfile # 多阶段构建:前端(vite) + 后端(Go) + nginx
├── main.go # 后端服务入口
├── config.json # 后端运行配置(端口、数据库等默认值)
├── workflow-config/ # 配置加载(读取 config.json,可被环境变量覆盖)
├── workflow-engine/ # 工作流引擎(模型、服务)
├── workflow-controller/ # HTTP 控制器
├── workflow-router/ # 路由
├── util/ # 通用工具
├── workflow-vue3/ # 前端源码(Vite + Vue 3)
├── docker/nginx/default.conf # 容器内 Nginx 配置(静态资源 + /api 反向代理)
├── dootask-plugin/ # 插件打包与发布配置
│ ├── config.yml # 插件元信息(名称、描述、标签)
│ └── 0.1.0/ # 运行配置(docker-compose.yml / nginx.conf)
└── .github/workflows/release.yml # 打 tag 自动构建并发布
- Go 1.20(后端,CGO 关闭,静态编译)
- Vue 3 + Vite 3(前端)
- Nginx(容器内托管前端静态资源并反向代理后端
/api) - MySQL(数据存储)
Dockerfile 为三阶段自包含构建,无需预先编译前端或后端,单条命令即可:
# 本地构建
DOCKER_BUILDKIT=1 docker build -t kuaifan/dooapprove:0.1.0 .
# 多架构构建并推送
docker buildx build --push -t kuaifan/dooapprove:0.1.0 \
--platform linux/amd64,linux/arm64 .三个阶段:
frontend(node:18-alpine):npm install+vite build,产出workflow-vue3/distbackend(golang:1.20-alpine):交叉编译出main,支持多架构- 运行镜像(nginx:alpine):汇总后端二进制、
config.json、前端产物与 Nginx 配置
需本机具备 Go 1.20、Node.js 18+ 以及一个可用的 MySQL。
# 后端(读取 config.json,请按本地环境调整其中的数据库连接)
go run main.go # 监听 http://127.0.0.1:8700
# 前端(另开终端)
cd workflow-vue3
npm install
npm run dev运行时数据库等连接参数可由环境变量注入(容器部署即通过此方式,见 dootask-plugin/0.1.0/docker-compose.yml 传入的 MYSQL_*、KEY、DEMO_DATA 等)。
发布通过 推送 tag 触发 .github/workflows/release.yml,自动完成:构建多架构镜像并推送到 Docker Hub(kuaifan/dooapprove),打包 dootask-plugin/ 并以系统应用方式发布到 DooTask 应用商店(appid approve)。
git tag 0.1.9 # 纯版本号,不加 v 前缀;版本号只增不重复
git push origin 0.1.9发布要点(详见 .claude/skills/release-plugin/):
- tag 不带
v前缀,tag 名即镜像 tag 和插件版本。 - 插件源目录固定叫
dootask-plugin/0.1.0/(占位名),CI 会在打包时重命名为 tag 名,请勿在仓库中按版本号新建目录。修改插件运行配置改0.1.0/下的文件,修改元信息改dootask-plugin/config.yml。 - 依赖 4 个仓库级 Secrets:
DOCKER_USERNAME/DOCKER_PASSWORD、DOOTASK_USERNAME/DOOTASK_PASSWORD。
面向插件使用者的安装说明见 dootask-plugin/README.md(中文:dootask-plugin/README_zh.md)。