# weekly-report **Repository Path**: chenkewen/weekly-report ## Basic Information - **Project Name**: weekly-report - **Description**: Weekly Report System (周报管理系统) 🚀 一个面向中小团队的周报管理 SaaS 系统 本项目采用 Spring Boot + Vue 3 前后端分离架构,旨在帮助团队高效管理周报,提升信息同步效率。支持 AI 辅助写作、周报抄送、团队周报查看及数据可视化等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Weekly Report System (周报管理系统) 🚀 **一个面向中小团队的周报管理与工作流协同 SaaS 系统** 本项目采用 **Spring Boot + Vue 3 + Flowable** 前后端分离架构,集成了周报管理、工作流引擎、AI 辅助写作、数据可视化等功能,旨在帮助团队高效管理周报并实现业务流程自动化。 --- ## 📋 目录 - [技术栈](#-技术栈-tech-stack) - [核心功能](#-核心功能-features) - [周报管理](#1-周报管理) - [工作流引擎](#2-工作流引擎-flowable) - [系统管理](#3-系统管理) - [数据分析](#4-数据分析与可视化) - [AI 辅助](#5-ai-辅助功能) - [通知与提醒](#6-通知与提醒) - [导出功能](#7-导出功能) - [技术特性](#-技术特性) - [目录结构](#-目录结构) - [快速开始](#-快速开始) --- ## 🛠️ 技术栈 (Tech Stack) ### 🖥️ 后端 (Backend) | 技术 | 版本 | 说明 | |------|------|------| | **Spring Boot** | 2.7.18 | 核心框架 | | **Sa-Token** | 1.44.0 | 权限认证 (JWT + Redis) | | **MyBatis-Plus** | 3.5.5 | ORM 框架 | | **Flowable** | 6.8.0 | 工作流引擎 (BPMN 2.0) | | **MySQL** | 8.0 | 关系型数据库 | | **Redis** | - | 缓存与会话存储 | | **Hutool** | 5.8.25 | Java 工具库 | | **P6Spy** | 3.9.1 | SQL 日志监控 | | **FastExcel** | 1.0.0 | Excel 导出 | | **Spring Mail** | - | 邮件发送 | | **Spring AOP** | - | 切面编程 | | **Lombok** | - | 代码简化 | ### 🌐 前端 (Frontend) | 技术 | 版本 | 说明 | |------|------|------| | **Vue** | 3.5.24 | 渐进式 JavaScript 框架 | | **TypeScript** | 5.9.3 | 类型安全 | | **Vite** | 7.2.4 | 构建工具 | | **Element Plus** | 2.13.1 | UI 组件库 | | **Tailwind CSS** | 4.1.18 | 原子化 CSS 框架 | | **Pinia** | 3.0.4 | 状态管理 | | **Vue Router** | 4.6.4 | 路由管理 | | **ECharts** | 6.0.0 | 数据可视化 | | **LogicFlow** | 2.0.0 | 流程图绘制引擎 | | **VueQuill** | 1.2.0 | 富文本编辑器 | | **Axios** | 1.13.2 | HTTP 客户端 | | **date-fns** | 4.1.0 | 日期处理 | --- ## ✨ 核心功能 (Features) ### 1. 周报管理 #### 📝 周报编写与管理 - **富文本编辑器**: 支持格式化文本、图片、表格等多种内容形式 - **周报模板**: 包含本周工作总结、下周计划、问题与建议等标准模块 - **我的周报**: 查看和管理个人历史周报,支持编辑、删除 - **团队周报**: 根据权限查看团队成员的周报,支持按时间、人员、部门筛选 - **周报抄送 (CC)**: 支持抄送给特定同事,实现跨部门信息同步 - **周报评论**: 支持对周报进行评论互动 #### 📊 周报统计 - **提交率统计**: 实时统计团队周报提交情况 - **未提交报告**: 查看未按时提交周报的成员列表 - **数据可视化**: 通过 ECharts 图表展示周报提交趋势 #### 💝 感恩墙 (Gratitude Graph) - **感谢功能**: 支持在周报中感谢协助的同事 - **感恩图谱**: 可视化展示团队成员之间的协作关系网络 - **互动统计**: 统计感谢次数,促进团队凝聚力 --- ### 2. 工作流引擎 (Flowable) #### 🎨 流程设计 - **可视化建模器**: 基于 LogicFlow 的 BPMN 2.0 流程设计器 - **拖拽式设计**: 支持开始节点、用户任务、网关(排他、并行、包容)、结束节点等 - **属性配置面板**: - 节点基本属性(ID、名称) - 任务分配(指定用户、候选用户、候选组) - 多实例配置(串行、并行、竞争) - 完成条件设置 - 流转条件配置 - **流程分类管理**: 支持流程分类,便于组织管理 #### 📦 流程部署 - **流程发布**: 将设计好的流程模型部署到 Flowable 引擎 - **版本管理**: 支持流程版本控制,可查看历史版本 - **部署列表**: 查看所有已部署的流程定义 - **流程激活/挂起**: 控制流程的可用状态 #### 🚀 流程实例管理 - **发起流程**: 选择流程定义并填写表单发起新流程 - **我发起的流程**: 查看自己发起的所有流程实例 - **流程详情**: 查看流程进度、当前节点、历史记录 - **流程图高亮**: 实时显示流程执行到的节点 - **流程撤销**: 发起人可撤销未完成的流程 - **管理员终止**: 管理员可强制终止任何流程 - **流程跳转**: 支持跳转到指定节点(前跳/后跳) - 智能处理并行网关跳转 - 自动清理后续历史记录 - 记录管理员跳转备注 #### ✅ 任务管理 - **待办任务**: 查看分配给自己的待处理任务 - **已办任务**: 查看已完成的历史任务 - **任务办理**: - 审批通过/驳回 - 填写审批意见 - 附件上传 - **任务委托**: 将任务委托给其他用户处理 - **任务转办**: 永久转移任务给其他用户 - **加签功能**: - **前加签**: 在当前节点前插入审批人 - **后加签**: 在当前节点后插入审批人 - 支持多人加签 - **抄送我的**: 查看抄送给自己的流程信息 #### 🔄 多实例任务 - **串行多实例**: 按顺序逐个审批 - **并行多实例**: 多人同时审批 - **竞争多实例**: 任一候选人完成即可 - **完成条件**: 自定义多实例完成条件(如 50% 通过率) #### 📜 流程历史 - **活动历史**: 完整的流程执行轨迹 - **任务历史**: 每个任务的处理人、处理时间、审批意见 - **时间轴展示**: 可视化流程历史记录 - **流程图回放**: 在流程图上标注已完成节点 #### 🔐 委托管理 - **委托设置**: 设置时间段内的任务委托规则 - **委托列表**: 查看和管理所有委托关系 - **自动委托**: 在委托期间自动转发任务 --- ### 3. 系统管理 #### 👥 用户管理 - **用户增删改查**: 完整的用户生命周期管理 - **用户信息**: 姓名、邮箱、手机号、部门、角色等 - **密码管理**: 密码加密存储,支持重置 - **用户状态**: 启用/禁用用户账号 - **批量操作**: 支持批量导入、导出用户 #### 🏢 部门管理 - **树形结构**: 支持多级部门层级 - **部门增删改查**: 完整的部门管理功能 - **部门负责人**: 设置部门负责人 - **部门成员**: 查看部门下的所有成员 #### 🔑 权限认证 - **Sa-Token**: 基于 Sa-Token 的权限认证体系 - **JWT Token**: 无状态的 Token 认证 - **Redis 会话**: Session 存储在 Redis 中 - **权限拦截**: AOP 切面实现权限控制 - **角色管理**: 支持多角色权限体系 --- ### 4. 数据分析与可视化 #### 📈 数据统计 - **周报提交统计**: 按时间维度统计周报提交情况 - **部门统计**: 各部门周报提交率对比 - **个人统计**: 个人周报提交历史 - **流程统计**: 工作流执行效率分析 #### 📊 可视化图表 - **ECharts 集成**: 丰富的图表类型 - **实时数据**: 数据实时更新 - **交互式图表**: 支持筛选、缩放、导出 - **Dashboard**: 首页数据看板 --- ### 5. AI 辅助功能 #### 🤖 AI 周报润色 - **内容优化**: AI 辅助优化周报文字表达 - **智能总结**: 自动提取工作要点 - **语法检查**: 检查并修正语法错误 - **风格调整**: 调整周报语气和风格 --- ### 6. 通知与提醒 #### 📧 邮件通知 - **周报提醒**: 定期提醒未提交周报的成员 - **流程通知**: 任务分配、流程完成等通知 - **抄送通知**: 周报抄送邮件提醒 #### 🔔 系统通知 - **站内消息**: 系统内消息通知 - **通知中心**: 查看所有历史通知 - **消息标记**: 已读/未读状态管理 --- ### 7. 导出功能 #### 📥 数据导出 - **Excel 导出**: 基于 FastExcel 的高性能导出 - **周报导出**: 导出周报数据 - **统计报表导出**: 导出各类统计报表 - **自定义导出**: 支持自定义导出字段 --- ## 🎯 技术特性 ### 后端架构特性 - ✅ **前后端分离**: RESTful API 设计 - ✅ **统一响应格式**: 标准化的 API 响应结构 - ✅ **全局异常处理**: 统一异常拦截和处理 - ✅ **参数校验**: 基于 Validation 的参数验证 - ✅ **SQL 监控**: P6Spy 实时监控 SQL 执行 - ✅ **代码生成**: MyBatis-Plus 代码生成器 - ✅ **数据库版本控制**: Liquibase 数据库迁移 - ✅ **批量优化**: 批量查询避免 N+1 问题 - ✅ **缓存策略**: Redis 缓存提升性能 ### 前端架构特性 - ✅ **TypeScript**: 类型安全,减少运行时错误 - ✅ **组件化开发**: 可复用的 Vue 组件 - ✅ **响应式设计**: 适配不同屏幕尺寸 - ✅ **路由守卫**: 权限控制和登录拦截 - ✅ **状态管理**: Pinia 集中式状态管理 - ✅ **请求拦截**: Axios 拦截器处理 Token 和错误 - ✅ **懒加载**: 路由和组件按需加载 - ✅ **现代化 UI**: 基于 Tailwind CSS 的美观界面 ### 工作流特性 - ✅ **BPMN 2.0 标准**: 符合国际流程建模标准 - ✅ **可视化设计**: 拖拽式流程设计器 - ✅ **复杂网关支持**: 排他、并行、包容网关 - ✅ **多实例任务**: 串行、并行、竞争模式 - ✅ **动态任务分配**: 支持表达式和监听器 - ✅ **流程跳转**: 灵活的流程控制 - ✅ **历史追溯**: 完整的流程执行记录 - ✅ **委托转办**: 灵活的任务委托机制 --- ## 📂 目录结构 (Directory Structure) ``` weekly-report/ ├── frontend/ # 前端项目 (Vue 3 + TypeScript) │ ├── src/ │ │ ├── api/ # API 接口定义 │ │ │ ├── auth.ts # 认证接口 │ │ │ ├── report.ts # 周报接口 │ │ │ ├── workflow.ts # 工作流接口 │ │ │ └── ... │ │ ├── components/ # 公共组件 │ │ ├── layouts/ # 布局组件 │ │ ├── views/ # 页面视图 │ │ │ ├── Dashboard.vue # 首页仪表盘 │ │ │ ├── Login.vue # 登录页 │ │ │ ├── Profile.vue # 个人中心 │ │ │ ├── Statistics.vue # 数据统计页 │ │ │ ├── admin/ # 系统管理 │ │ │ │ ├── UserManage.vue # 用户管理 │ │ │ │ └── DeptManage.vue # 部门管理 │ │ │ ├── report/ # 周报模块 │ │ │ │ ├── MyReports.vue # 我的周报 │ │ │ │ ├── TeamReports.vue # 团队周报 │ │ │ │ ├── ReportEdit.vue # 周报编辑 │ │ │ │ ├── CcReports.vue # 抄送周报 │ │ │ │ ├── GratitudeGraph.vue # 感恩图谱 │ │ │ │ └── UnsubmittedReports.vue # 未提交报告 │ │ │ └── workflow/ # 工作流模块 │ │ │ ├── ModelList.vue # 流程模型列表 │ │ │ ├── ModelDesign.vue # 流程设计器 │ │ │ ├── DeployList.vue # 部署列表 │ │ │ ├── StartProcess.vue # 发起流程 │ │ │ ├── TodoTask.vue # 待办任务 │ │ │ ├── DoneTask.vue # 已办任务 │ │ │ ├── MyProcess.vue # 我的流程 │ │ │ ├── InstanceList.vue # 流程实例 │ │ │ ├── CopyToMe.vue # 抄送我的 │ │ │ ├── DelegatedTask.vue # 委托任务 │ │ │ ├── TaskHistory.vue # 任务历史 │ │ │ └── components/ # 工作流组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── types/ # TypeScript 类型定义 │ │ └── utils/ # 工具函数 │ ├── package.json # 前端依赖 │ └── vite.config.ts # Vite 配置 │ ├── src/main/ # 后端项目 (Spring Boot) │ ├── java/com/weekly/report/ │ │ ├── WeeklyReportApplication.java # 启动类 │ │ ├── controller/ # 控制器层 │ │ │ ├── AuthController.java # 认证控制器 │ │ │ ├── ReportController.java # 周报控制器 │ │ │ ├── UserController.java # 用户控制器 │ │ │ ├── CommonUserController.java # 通用用户控制器 │ │ │ ├── DeptController.java # 部门控制器 │ │ │ ├── StatisticsController.java # 统计控制器 │ │ │ ├── ThanksController.java # 感谢控制器 │ │ │ ├── ReportAiController.java # AI 控制器 │ │ │ ├── WfModelController.java # 流程模型控制器 │ │ │ ├── WfDeployController.java # 流程部署控制器 │ │ │ ├── WfInstanceController.java # 流程实例控制器 │ │ │ ├── WfTaskController.java # 任务控制器 │ │ │ ├── WfDelegateController.java # 委托控制器 │ │ │ ├── SysNotificationController.java # 通知控制器 │ │ │ ├── ReminderController.java # 提醒控制器 │ │ │ └── ExportController.java # 导出控制器 │ │ ├── service/ # 服务层 │ │ ├── mapper/ # 数据访问层 │ │ ├── entity/ # 实体类 │ │ │ ├── Report.java # 周报实体 │ │ │ ├── SysUser.java # 用户实体 │ │ │ ├── SysDept.java # 部门实体 │ │ │ ├── ReportCc.java # 周报抄送 │ │ │ ├── ReportThanks.java # 感谢记录 │ │ │ ├── WfDelegate.java # 工作流委托 │ │ │ ├── WfCopy.java # 工作流抄送 │ │ │ └── SysNotification.java # 系统通知 │ │ ├── dto/ # 数据传输对象 │ │ ├── vo/ # 视图对象 │ │ ├── config/ # 配置类 │ │ │ ├── SaTokenConfig.java # Sa-Token 配置 │ │ │ ├── FlowableConfig.java # Flowable 配置 │ │ │ ├── RedisConfig.java # Redis 配置 │ │ │ └── ... │ │ ├── common/ # 公共类 │ │ │ ├── R.java # 统一响应 │ │ │ ├── BaseEntity.java # 基础实体 │ │ │ └── ... │ │ └── aspect/ # 切面 │ └── resources/ │ ├── application.yml # 配置文件 │ └── db/changelog/ # Liquibase 变更集 │ ├── pom.xml # Maven 依赖 └── README.md # 项目文档 ``` --- ## 🚀 快速开始 (Quick Start) ### 环境要求 - **JDK**: 1.8+ - **Node.js**: 16+ - **MySQL**: 8.0+ - **Redis**: 5.0+ - **Maven**: 3.6+ ### 1. 后端启动 ```bash # 1. 克隆项目 git clone cd weekly-report # 2. 配置数据库 # 创建数据库: weekly_report # 修改 src/main/resources/application.yml 中的数据库配置 # 3. 配置 Redis # 修改 application.yml 中的 Redis 配置 # 4. 启动后端 mvn spring-boot:run # 或在 IDE 中运行 WeeklyReportApplication.java ``` ### 2. 前端启动 ```bash # 1. 进入前端目录 cd frontend # 2. 安装依赖 npm install # 3. 启动开发服务器 npm run dev # 4. 构建生产版本 npm run build ``` ### 3. 访问系统 - **前端地址**: http://localhost:3000 - **后端地址**: http://localhost:8080 - **默认账号**: admin / 123456 --- ## 🤝 开发规范 ### 后端规范 - **JDK 版本**: 1.8 - **工具类**: 优先使用 Hutool - **返回格式**: 统一使用 `R` 包装 - **请求对象**: POST 请求使用 DTO - **响应对象**: 返回数据使用 VO - **注释语言**: 中文 ### 前端规范 - **语言**: TypeScript - **组件**: 优先使用 Element Plus - **样式**: Tailwind CSS + SCSS - **状态管理**: Pinia - **代码风格**: ESLint + Prettier --- ## 📄 License 本项目仅供学习交流使用。 --- ## 👨‍💻 作者 **ckw** - 周报管理系统 --- ## 🙏 致谢 感谢以下开源项目: - Spring Boot - Vue.js - Flowable - Element Plus - LogicFlow - 以及所有依赖的开源库