# MingFlow **Repository Path**: suxia2/ming-flow ## Basic Information - **Project Name**: MingFlow - **Description**: 明序项目协作平台 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ming-Flow 任务管理与审批工作流系统 ## 项目简介 Ming-Flow 是一个基于 Spring Boot 的企业级任务管理和审批工作流系统,提供完整的任务生命周期管理、审批流程处理、客户管理、个人工作台等功能。系统采用模块化设计,支持灵活的审批模板配置、委托机制、附件管理以及多渠道通知推送。 ## 技术栈 - **后端框架**: Spring Boot 3.x - **数据库**: PostgreSQL + MyBatis - **对象存储**: MinIO - **消息队列**: Redis (用于缓存和幂等性处理) - **安全框架**: Spring Security + JWT - **API 文档**: Swagger/OpenAPI ## 系统架构 系统采用清晰的分层架构设计,核心模块包括: ``` backend/src/main/java/com/cmbird/todo/ ├── approval/ # 审批模块 │ ├── action/ # 审批操作(转交、加签等) │ ├── decision/ # 审批决策 │ ├── delegation/ # 审批委托 │ ├── instance/ # 审批实例管理 │ ├── template/ # 审批模板 │ └── validity/ # 审批有效性管理 ├── attachment/ # 附件管理 ├── audit/ # 审计日志 ├── customer/ # 客户管理 ├── dashboard/ # 个人工作台 ├── framework/ # 框架组件 ├── identity/ # 身份认证 ├── notification/ # 通知系统 └── ... ``` ## 核心功能模块 ### 1. 审批管理 (Approval) **审批决策** - 审批收件箱:查询待处理审批列表 - 我发起的:查看已提交的审批 - 审批详情:获取审批实例完整信息 - 提交决策:通过、拒绝、代理等操作 **审批动作** - 转交审批:将审批任务转交给其他用户 - 加签:在当前节点添加审批人 - 加节点:在流程中添加新节点 - 抄送:复制审批给相关人员 **审批委托** - 创建委托规则 - 撤销委托 - 委托候选人查询 - 委托链检测(防止循环委托) **审批模板** - 项目审批模板配置 - 草稿管理(创建、更新、删除、验证) - 模板发布与版本管理 - 审批人候选人查询 - 模板继承与禁用 ### 2. 任务管理 (Task) - 任务创建与编辑 - 任务状态流转 - 任务依赖管理 - 任务附件上传/下载 - 任务指派与交接 - 任务评论与@提及 - 任务甘特图视图 ### 3. 客户管理 (Customer) - 客户列表查询 - 客户创建/更新/归档 - 客户费率管理 - 客户进度追踪 ### 4. 个人工作台 (Dashboard) - 任务统计(总数、逾期、即将到期) - 状态分布汇总 - 最近待办任务 - 完成趋势 - 待处理审批数量 - 工时登记摘要 ### 5. 附件管理 (Attachment) - 附件上传(生成上传票据) - 附件确认(防篡改验证) - 附件下载(生成下载票据) - 附件删除 - 自动清理过期附件 ### 6. 通知系统 (Notification) **邮件通知** - SMTP 配置管理 - 邮件模板预览 - 测试邮件发送 - 邮件投递状态追踪 - 死信重试机制 **推送通知** - 推送渠道配置 - 推送目标策略 - 推送凭证保护 - 投递日志查询 **通知收件箱** - 分页查询通知 - 未读数量查询 - 标记已读/未读 - 全部标记已读 ### 7. 用户与权限 (Identity) - 用户登录认证 - CSRF 保护 - 用户管理(创建、禁用、重置密码) - 角色与权限管理 - 用户会话管理 - 每日工作容量配置 ## API 端点概览 ### 审批相关 ``` GET /api/v1/approvals/inbox # 审批收件箱 GET /api/v1/approvals/initiated # 我发起的审批 GET /api/v1/approvals/{instanceId} # 审批详情 POST /api/v1/approvals/{instanceId}/todos/{todoId}/decisions # 提交决策 POST /api/v1/approvals/{instanceId}/todos/{todoId}/transfers # 转交审批 POST /api/v1/approvals/{instanceId}/nodes/{nodeId}/approvers # 加签 POST /api/v1/approvals/{instanceId}/nodes # 加节点 POST /api/v1/approvals/{instanceId}/copies # 抄送 ``` ### 任务相关 ``` GET /api/v1/tasks # 任务列表 POST /api/v1/tasks # 创建任务 GET /api/v1/tasks/{taskId} # 任务详情 PUT /api/v1/tasks/{taskId} # 更新任务 POST /api/v1/tasks/{taskId}/complete # 完成任务 POST /api/v1/tasks/{taskId}/reopen # 重新打开 ``` ### 审批模板 ``` GET /api/v1/projects/{projectId}/approval-template # 模板配置 POST /api/v1/projects/{projectId}/approval-template/draft # 创建草稿 PUT /api/v1/projects/{projectId}/approval-template/draft # 更新草稿 DELETE /api/v1/projects/{projectId}/approval-template/draft # 删除草稿 POST /api/v1/projects/{projectId}/approval-template/publish # 发布模板 ``` ### 附件相关 ``` GET /api/v1/tasks/{taskId}/attachments # 附件列表 POST /api/v1/tasks/{taskId}/attachments/upload-tickets # 创建上传票据 POST /api/v1/tasks/{taskId}/attachments/{attachmentId}/confirm # 确认附件 GET /api/v1/tasks/{taskId}/attachments/{attachmentId}/download-ticket # 下载票据 DELETE /api/v1/tasks/{taskId}/attachments/{attachmentId} # 删除附件 ``` ## 环境配置 ### 配置文件 主要配置文件位于 `backend/src/main/resources/application.yml`: ```yaml server: port: 8080 spring: datasource: url: jdbc:postgresql://localhost:5432/mingflow username: your_username password: your_password redis: host: localhost port: 6379 app: minio: endpoint: http://localhost:9000 access-key: minioadmin secret-key: minioadmin bucket: attachments mail: smtp-password: your_smtp_password push: public-web-base-url: http://localhost:3000 ``` ### 环境变量 | 变量名 | 描述 | 默认值 | |--------|------|--------| | `SERVER_PORT` | 服务端口 | 8080 | | `DB_HOST` | 数据库主机 | localhost | | `DB_PORT` | 数据库端口 | 5432 | | `DB_NAME` | 数据库名称 | mingflow | | `DB_USER` | 数据库用户 | - | | `DB_PASSWORD` | 数据库密码 | - | | `REDIS_HOST` | Redis 主机 | localhost | | `REDIS_PORT` | Redis 端口 | 6379 | | `MINIO_ENDPOINT` | MinIO 端点 | http://localhost:9000 | | `MINIO_ACCESS_KEY` | MinIO 访问密钥 | minioadmin | | `MINIO_SECRET_KEY` | MinIO 密钥 | minioadmin | | `SMTP_HOST` | SMTP 服务器 | - | | `SMTP_PORT` | SMTP 端口 | 587 | ## 快速开始 ### 前置条件 - JDK 17+ - PostgreSQL 14+ - Redis 7+ - MinIO (或 S3 兼容存储) ### 编译运行 ```bash # 克隆项目 git clone https://gitee.com/suxia2/ming-flow.git cd ming-flow # 编译项目 cd backend ./mvnw clean package -DskipTests # 运行服务 java -jar target/todo-*.jar ``` ### 初始化数据 首次启动时,系统会自动: 1. 创建数据库表结构 2. 初始化管理员账号(用户名:`admin`,密码:`admin123`) ## 安全性 - **认证**: 基于 Session 的认证机制 - **授权**: 基于角色的访问控制 (RBAC) - **CSRF 保护**: 使用 Cookie CSRF Token - **输入验证**: 严格的请求参数验证 - **审计追踪**: 所有变更操作记录审计日志 - **幂等性**: API 请求使用 Idempotency-Key 防止重复提交 ## 监控与运维 ### 健康检查 ``` GET /actuator/health ``` ### 审计日志查询 系统记录完整的操作审计日志,包括: - 操作类型 - 变更前后数据 - 操作时间 - 操作人信息 - 请求追踪 ID ## 扩展指南 ### 添加新审批类型 1. 在 `ApprovalActionType` 枚举中添加新类型 2. 实现对应的处理逻辑 3. 在审批模板中配置新节点类型 ### 添加新通知渠道 1. 实现 `NotificationChannel` 接口 2. 注册为 Spring Bean 3. 配置渠道特定参数 ## 许可证 本项目采用 Apache License 2.0 许可证。 ## 贡献指南 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request ## 联系方式 - 项目地址: https://gitee.com/suxia2/ming-flow - 问题反馈: https://gitee.com/suxia2/ming-flow/issues ## 致谢 感谢所有为该项目贡献代码和提出建议的开发者!