开源地址https://gitee.com/fish982000/kpi-360-backend.git一套可直接用于生产的多模式KPI / OKR / 360 度 / 通用企业绩效考核平台。支持不同的考核方式自评、上下级评、平级评同时实现多种评分计算方式比率法、区间法、定性平级法、加减法支持分步评分和表格一屏评分的打分模式不只是「教学项目」而是按 DDD 分层、覆盖完整考核生命周期、可灵活配置规则与权重的开源系统本项目前后端均重度采用AI编程实现前端总体风格简洁后端完全采用DDD模式构建注重域之间隔离和防腐业务域尽量做到充血大家可以基于自己实际情况做改造如发现bug或不足的地方欢迎提意见也非常欢迎来到本人星球 系统截图模块截图仪表盘按季度概览考核模板设计器维度 / 指标 / 考核方式 / 积分规则考核活动管理生成关系 → 启动 → 计算成绩动态评价表单按计算方式实时算分我的成绩扁平实例视图 结果确认权限管理角色 资源树 按钮级控制一、产品定位KPI-360 是面向中小型企业 HR / 业务部门负责人的通用化绩效考核中台。一次部署即可同时承接KPI定量目标、目标值 实际值按比率法 / 区间法 / 加减分法自动算分OKR目标 关键结果权重可灵活配置、支持季度 / 年度滚动360 度评估自评 上级评 下级评 同事评支持匿名、提名、人数下限通用考核员工胜任力、态度品行、培训测评等任意自定义模板核心差异点 — 区别于一般开源练手项目维度一般 demo / 练手项目KPI-360架构三层 CRUDController-Service-MapperDDD 四层 充血模型 防腐端口业务规则集中在 Domain 层评分能力只支持「直接打分」5 套打分策略直接打分 / 比率法 / 区间法 / 加减分法 / 定性等级法通过策略模式 ScoringEngine 路由考核类型写死一种AssessType 元数据驱动GEN / KPI / OKR / 360同一系统横跨多种考核口径评估关系固定上下级关系生成引擎自评 / 上级评 / 下级评 / 同事评四路并行支持「需先选人」交互peer / sub表单静态 React 表单动态评价表单模板配置驱动 UI按指标 scoringType 实时渲染不同输入控件并算分权限仅登录拦截三层隔离菜单 路由守卫 按钮 resCodeSa-Token SaCheckPermissionADMIN 通配兜底数据安全明文存储评估任务的rater_id/execute_idAES-128 透明加密Converter 层完成历史明文兼容成绩计算简单平均去极值 最低评分人数校验 权重再分配 分数封顶规则全部 JSON 可配结果模型一张大宽表考核实例CampaignInst 实例明细CampaignInstDetail状态化模型支持「待评估 → 已评估 → 已确认 → 关闭」全生命周期部署可用性仅 dev 跑通MyBatis-Plus 分页自动配置 全局异常 字段自动填充 Knife4j 文档 Nginx 部署示例二、覆盖的考核模式1. KPI关键绩效指标维度Dimension 指标Indicator二级结构每个指标可配置目标值 / 单位 / 计算方式scoringTypeDIRECT_SCORE直接打分评分人按主观打分RATIO比率法实际值 / 目标值 × 基础分可配封顶STEP区间法阶梯分档如 ≥110% 得 100100~110% 得 80…ADD_SUB加减分法基础分 加分项 - 扣分项可设上下限维度权重 指标权重双层加权自动归一化2. OKR模板的「维度」即 Objective「指标」即 Key Result权重可按季度自定义通过 raterWeightConfig 控制谁来打分一个员工可以同时参与多个 OKR 周期基于实例模型互不干扰3. 360 度评估四路评估关系自动生成自评 / 上级评 / 下级评 / 同事评下级评 / 同事评支持「先选人」流程任务类型 SELECTED → 选人后转 ASSESS 子任务同事评支持匿名展示被考核人看不到具体评价人评估人数下限校验min_rater_threshold—— 不到人数该路结果自动作废权重重新分配4. 通用考核定性评价计算方式QUAL_LEVEL定性等级A / B / C / D 等级映射到分数支持单选量表、多选、问答、需证据填写proof 字段适用于素质评估、培训测评、态度考核等场景三、业务流程一图看懂① 设计期 ② 执行期 ③ 结算期 ④ 应用期 ───────────────────── ────────────────────────────── ──────────────── ────────────────── 维度库 考核活动 计算成绩 我的成绩 │ │ │ │ ▼ ▼ ▼ ▼ 指标库 ──► 模板KPI/OKR/360 ──► 关系生成 ──► 评价填报 ──► 去极值 ──► 实例结果 ──► 员工确认 / 申诉 │ │ │ ▲ ▼ ▼ ▼ │ 打分规则 raterWeightConfig 任务ASSESS/SELECT 审批 / 归档 scoreRuleConfig self/super/sub/peer阶段角色关键能力① 设计HR / 管理员维度复用 指标多种计分方式 模板复制 JSON 化的考核方式与积分规则② 执行HR / 直接上级 / 员工一键生成评估关系与任务、最晚完成时间lf_time endTime7d、待办通知栏、自动联动结束③ 结算系统加权汇总、去极值、最低评分人数校验、维度得分、排名、维度雷达图④ 应用员工 / HR个人成绩页 结果确认 申诉流程 历史归档四、灵活性与可扩展性设计4.1 策略模式驱动的「打分引擎」domain/assessment/service/scoring/├──ScoringStrategy.java// 接口compute(indicator, response, options) - calScore├──DirectScoreStrategy.java ├──RatioStrategy.java ├──StepStrategy.java ├──AddSubStrategy.java ├──QualLevelStrategy.java └──ScoringEngine.java// 按 indicator.scoringType 路由到对应策略新增一种计分方式例如「KPI 权重浮动公式」只需实现一个新 Strategy 并注册到 ScoringEngine无需改动任何业务代码前端TaskDetail.tsx同步以相同分支渲染输入控件实际值 / 等级 / 加减分项逻辑一一映射4.2 元数据化的「考核类型」AssessType枚举GEN / KPI / OKR / 360贯穿 Dimension / Indicator / Template / Campaign 四层。同一份维度库可在 KPI 模板和 OKR 模板中复用同一个员工同一季度可同时参与 KPI 考核与 360 评估互不影响4.3 JSON 可配置的「考核方式」与「积分规则」assess_template.rater_weight_configJSON[{type:self,weight:0.30,score_type:table,assessee_scope:{include_type:ALL,exclude_roles:[DEPT_MANAGER,DEPT_SUPERVISOR]},rater_scope:{type:SELF,min_select:1,max_select:1},rater_visiable:true},{type:peer,weight:0.10,min_select:5,max_select:10,rater_visiable:false,...:...}]assess_template.score_rule_configJSON{trim_extreme:true,// 去极值trim_count:1,// 去掉最高最低各 1 个min_rater_threshold:3,// 评估人数下限score_cap:100}// 分数封顶— 调整这两段 JSON即可应对几乎所有企业的差异化考核规则无需改代码、无需重新部署。4.4 防腐端口隔离的「跨域访问」OrgUserQueryPort—— assessment 域访问 system 域人员数据EvaluationFormQueryPort—— assessment 域获取模板表单结构NotificationPort—— assessment 域发送通知结果assessment 域不直接 import其他域的类未来替换组织架构服务如对接钉钉 / 企业微信通讯录只需替换端口实现。4.5 「考核实例」模型支持滚动 / 并行CampaignInstCampaignInstDetail二级实例化一个员工 × 一个活动 一个实例独立状态PROCESSING → ASSESSED → SUBMIT → CLOSE一个实例 × 一种评价方式 一个明细独立 weight / 评价人数 / 得分天然支持同一员工同时参与多个活动、跨季度滚动考核五、生产可用性5.1 安全Sa-Token完整鉴权框架token 走 Redis分布式可横向扩容三层权限隔离菜单后端动态返回 menu tree 路由守卫前端 MenuGuard 按钮resCode 显隐SaCheckPermission全面铺开8 个 Facade 的写接口全部声明权限码ADMIN 角色通过 StpInterface 返回*自动放行AES-128 字段级加密评估任务的rater_id/execute_id落库自动加密读取透明解密历史明文兼容5.2 性能 / 工程MyBatis-Plus分页 createTime/updateTime 自动填充 逻辑删除TanStack React Query客户端缓存 自动失效刷新同一接口跨页面共享缓存Vite 8 Tailwind 4极速 HMRTypeScript 严格模式 ESLintKnife4j (OpenAPI 3)接口文档http://localhost:8080/doc.html全局异常处理器BusinessException→ 统一Result.fail(...)前端 axios 拦截器统一 toast5.3 部署友好标准 Spring Boot fatjarmvn clean package→java -jar前端 Nginx 静态部署 /api/反向代理数据库初始化 SQL 在backend/src/main/resources/db/migration/下管理含 RBAC 种子数据开箱即用关键资源密钥 / 数据库密码支持环境变量覆盖KPI360_SECURITY_AESKEY等六、架构总览6.1 后端 DDD 四层facadeHTTP 接口层 ├─ web/ ControllerRestController SaCheckPermission ├─ dto/ 请求对象 ├─ vo/ 响应对象 └─ assembler/ MapStruct 转换Dto↔Command / View↔Vo application应用层 · 编排 事务 ├─ command/ 写命令对象 ├─ query/ 读返回 ViewCQRS └─ service/ AppServiceTransactional domain领域层 · 业务核心 ├─ {system | assessment | auth | notification} ├─ entity / valobj / aggregate ├─ service 领域服务含 ScoringEngine、CampaignGenerateService、ScoreCalculationService ├─ repository IXxxRepository 接口 └─ port 防腐端口OrgUserQueryPort / EvaluationFormQueryPort / NotificationPort infrastructure基础设施层 ├─ persistence/{dataobject, mapper, converter, repository} ├─ bridge 端口实现 └─ security Sa-Token / BCrypt / AES 工具依赖方向严格单向facade → application → domain ← infrastructure领域层不依赖任何技术框架业务规则可独立单元测试。6.2 前端src/ ├─ api/ 接口封装按业务模块 16 个 ├─ store/ Zustand仅 auth ├─ hooks/ usePermission按 resCode 控制按钮显隐 ├─ router/ 懒加载 MenuGuard ├─ components/Layout/ 动态菜单基于后端 menu tree ├─ pages/ 15 个业务页面 └─ utils/ iconLibrary统一 lucide 图标React 19 TypeScript 6 Vite 8 Ant Design 6 Tailwind 4TanStack React Query 5 数据层组件按左树 右内容标准模式国际化、主题色紫色 #8b5cf6、圆角rounded-primary统一约定七、与一般开源练手项目的对比小结能力通常的练手项目KPI-360业务覆盖单一考核口径KPI / OKR / 360 / 通用 一体化评分逻辑硬编码 if-else策略模式 JSON 规则可配关系生成不支持4 路评估关系自动生成 选人流程数据安全明文字段级 AES Sa-Token 三层权限状态机没有或随意改字段Campaign / Task / Inst 实体方法封装迁移工程化主分支 push 就上线DDD 防腐 Assembler 单元可测试文档化README 一句话后端 31 章 前端 28 章详细变更日志可扩展性改业务必须改核心新增计分方式 / 考核类型 / 端口实现零侵入八、技术栈后端Java 17 · Spring Boot 3.2 · MyBatis-Plus · Sa-Token · MySQL 8 · Redis · MapStruct · Knife4j · Lombok · EasyExcel · Hutool前端React 19 · TypeScript 6 · Vite 8 · Ant Design 6 · Tailwind 4 · TanStack React Query 5 · Zustand · Axios · React Router 7 · Recharts · dayjs · lucide-react详细技术栈与部署步骤见后端backend/README.md前端frontend/README.md后端架构详解backend/doc/代码汇总20260522v2.md前端架构详解frontend/doc/前端代码扫描总结.md九、路线图节选✅ DDD 四层 Assembler 层完成✅ KPI / OKR / 360 / 通用 四类考核模板支持✅ 5 套打分策略DirectScore / Ratio / Step / AddSub / QualLevel✅ 考核实例模型CampaignInst 成绩确认 / 申诉✅ Sa-Token 三层权限隔离 字段级 AES 加密✅ 仪表盘按季度过滤startMonth / endMonth WebSocket 实时通知替换 60s 轮询 批量导入导出员工 / 模板 / 成绩 Excel BI 集成成绩同步至 Superset / DataEase 多租户隔离SaaS 化版本 本项目后续会作为一个模块集成到作者另外一个正在开发的项目中具备商用级别的表单引擎、流程引擎和即时通讯能力十、开源协议本项目采用GPL2.0GNU General Public License协议开源,追加Commons Clause。允许个人 / 团队技术学习与企业内部使用禁止任何形式的对外商业化包括但不限于对外销售、SaaS 化对外服务、二次封装售卖等商业授权请联系作者二次分发须遵守 GPL 协议保留版权声明与作者署名。如果本项目对你有帮助欢迎 Star ⭐ 与转发产品建议、Bug 反馈、合作咨询请通过知识星球联系作者。
KPI-360 · 开源企业级绩效考核管理系统
发布时间:2026/6/10 13:27:21
开源地址https://gitee.com/fish982000/kpi-360-backend.git一套可直接用于生产的多模式KPI / OKR / 360 度 / 通用企业绩效考核平台。支持不同的考核方式自评、上下级评、平级评同时实现多种评分计算方式比率法、区间法、定性平级法、加减法支持分步评分和表格一屏评分的打分模式不只是「教学项目」而是按 DDD 分层、覆盖完整考核生命周期、可灵活配置规则与权重的开源系统本项目前后端均重度采用AI编程实现前端总体风格简洁后端完全采用DDD模式构建注重域之间隔离和防腐业务域尽量做到充血大家可以基于自己实际情况做改造如发现bug或不足的地方欢迎提意见也非常欢迎来到本人星球 系统截图模块截图仪表盘按季度概览考核模板设计器维度 / 指标 / 考核方式 / 积分规则考核活动管理生成关系 → 启动 → 计算成绩动态评价表单按计算方式实时算分我的成绩扁平实例视图 结果确认权限管理角色 资源树 按钮级控制一、产品定位KPI-360 是面向中小型企业 HR / 业务部门负责人的通用化绩效考核中台。一次部署即可同时承接KPI定量目标、目标值 实际值按比率法 / 区间法 / 加减分法自动算分OKR目标 关键结果权重可灵活配置、支持季度 / 年度滚动360 度评估自评 上级评 下级评 同事评支持匿名、提名、人数下限通用考核员工胜任力、态度品行、培训测评等任意自定义模板核心差异点 — 区别于一般开源练手项目维度一般 demo / 练手项目KPI-360架构三层 CRUDController-Service-MapperDDD 四层 充血模型 防腐端口业务规则集中在 Domain 层评分能力只支持「直接打分」5 套打分策略直接打分 / 比率法 / 区间法 / 加减分法 / 定性等级法通过策略模式 ScoringEngine 路由考核类型写死一种AssessType 元数据驱动GEN / KPI / OKR / 360同一系统横跨多种考核口径评估关系固定上下级关系生成引擎自评 / 上级评 / 下级评 / 同事评四路并行支持「需先选人」交互peer / sub表单静态 React 表单动态评价表单模板配置驱动 UI按指标 scoringType 实时渲染不同输入控件并算分权限仅登录拦截三层隔离菜单 路由守卫 按钮 resCodeSa-Token SaCheckPermissionADMIN 通配兜底数据安全明文存储评估任务的rater_id/execute_idAES-128 透明加密Converter 层完成历史明文兼容成绩计算简单平均去极值 最低评分人数校验 权重再分配 分数封顶规则全部 JSON 可配结果模型一张大宽表考核实例CampaignInst 实例明细CampaignInstDetail状态化模型支持「待评估 → 已评估 → 已确认 → 关闭」全生命周期部署可用性仅 dev 跑通MyBatis-Plus 分页自动配置 全局异常 字段自动填充 Knife4j 文档 Nginx 部署示例二、覆盖的考核模式1. KPI关键绩效指标维度Dimension 指标Indicator二级结构每个指标可配置目标值 / 单位 / 计算方式scoringTypeDIRECT_SCORE直接打分评分人按主观打分RATIO比率法实际值 / 目标值 × 基础分可配封顶STEP区间法阶梯分档如 ≥110% 得 100100~110% 得 80…ADD_SUB加减分法基础分 加分项 - 扣分项可设上下限维度权重 指标权重双层加权自动归一化2. OKR模板的「维度」即 Objective「指标」即 Key Result权重可按季度自定义通过 raterWeightConfig 控制谁来打分一个员工可以同时参与多个 OKR 周期基于实例模型互不干扰3. 360 度评估四路评估关系自动生成自评 / 上级评 / 下级评 / 同事评下级评 / 同事评支持「先选人」流程任务类型 SELECTED → 选人后转 ASSESS 子任务同事评支持匿名展示被考核人看不到具体评价人评估人数下限校验min_rater_threshold—— 不到人数该路结果自动作废权重重新分配4. 通用考核定性评价计算方式QUAL_LEVEL定性等级A / B / C / D 等级映射到分数支持单选量表、多选、问答、需证据填写proof 字段适用于素质评估、培训测评、态度考核等场景三、业务流程一图看懂① 设计期 ② 执行期 ③ 结算期 ④ 应用期 ───────────────────── ────────────────────────────── ──────────────── ────────────────── 维度库 考核活动 计算成绩 我的成绩 │ │ │ │ ▼ ▼ ▼ ▼ 指标库 ──► 模板KPI/OKR/360 ──► 关系生成 ──► 评价填报 ──► 去极值 ──► 实例结果 ──► 员工确认 / 申诉 │ │ │ ▲ ▼ ▼ ▼ │ 打分规则 raterWeightConfig 任务ASSESS/SELECT 审批 / 归档 scoreRuleConfig self/super/sub/peer阶段角色关键能力① 设计HR / 管理员维度复用 指标多种计分方式 模板复制 JSON 化的考核方式与积分规则② 执行HR / 直接上级 / 员工一键生成评估关系与任务、最晚完成时间lf_time endTime7d、待办通知栏、自动联动结束③ 结算系统加权汇总、去极值、最低评分人数校验、维度得分、排名、维度雷达图④ 应用员工 / HR个人成绩页 结果确认 申诉流程 历史归档四、灵活性与可扩展性设计4.1 策略模式驱动的「打分引擎」domain/assessment/service/scoring/├──ScoringStrategy.java// 接口compute(indicator, response, options) - calScore├──DirectScoreStrategy.java ├──RatioStrategy.java ├──StepStrategy.java ├──AddSubStrategy.java ├──QualLevelStrategy.java └──ScoringEngine.java// 按 indicator.scoringType 路由到对应策略新增一种计分方式例如「KPI 权重浮动公式」只需实现一个新 Strategy 并注册到 ScoringEngine无需改动任何业务代码前端TaskDetail.tsx同步以相同分支渲染输入控件实际值 / 等级 / 加减分项逻辑一一映射4.2 元数据化的「考核类型」AssessType枚举GEN / KPI / OKR / 360贯穿 Dimension / Indicator / Template / Campaign 四层。同一份维度库可在 KPI 模板和 OKR 模板中复用同一个员工同一季度可同时参与 KPI 考核与 360 评估互不影响4.3 JSON 可配置的「考核方式」与「积分规则」assess_template.rater_weight_configJSON[{type:self,weight:0.30,score_type:table,assessee_scope:{include_type:ALL,exclude_roles:[DEPT_MANAGER,DEPT_SUPERVISOR]},rater_scope:{type:SELF,min_select:1,max_select:1},rater_visiable:true},{type:peer,weight:0.10,min_select:5,max_select:10,rater_visiable:false,...:...}]assess_template.score_rule_configJSON{trim_extreme:true,// 去极值trim_count:1,// 去掉最高最低各 1 个min_rater_threshold:3,// 评估人数下限score_cap:100}// 分数封顶— 调整这两段 JSON即可应对几乎所有企业的差异化考核规则无需改代码、无需重新部署。4.4 防腐端口隔离的「跨域访问」OrgUserQueryPort—— assessment 域访问 system 域人员数据EvaluationFormQueryPort—— assessment 域获取模板表单结构NotificationPort—— assessment 域发送通知结果assessment 域不直接 import其他域的类未来替换组织架构服务如对接钉钉 / 企业微信通讯录只需替换端口实现。4.5 「考核实例」模型支持滚动 / 并行CampaignInstCampaignInstDetail二级实例化一个员工 × 一个活动 一个实例独立状态PROCESSING → ASSESSED → SUBMIT → CLOSE一个实例 × 一种评价方式 一个明细独立 weight / 评价人数 / 得分天然支持同一员工同时参与多个活动、跨季度滚动考核五、生产可用性5.1 安全Sa-Token完整鉴权框架token 走 Redis分布式可横向扩容三层权限隔离菜单后端动态返回 menu tree 路由守卫前端 MenuGuard 按钮resCode 显隐SaCheckPermission全面铺开8 个 Facade 的写接口全部声明权限码ADMIN 角色通过 StpInterface 返回*自动放行AES-128 字段级加密评估任务的rater_id/execute_id落库自动加密读取透明解密历史明文兼容5.2 性能 / 工程MyBatis-Plus分页 createTime/updateTime 自动填充 逻辑删除TanStack React Query客户端缓存 自动失效刷新同一接口跨页面共享缓存Vite 8 Tailwind 4极速 HMRTypeScript 严格模式 ESLintKnife4j (OpenAPI 3)接口文档http://localhost:8080/doc.html全局异常处理器BusinessException→ 统一Result.fail(...)前端 axios 拦截器统一 toast5.3 部署友好标准 Spring Boot fatjarmvn clean package→java -jar前端 Nginx 静态部署 /api/反向代理数据库初始化 SQL 在backend/src/main/resources/db/migration/下管理含 RBAC 种子数据开箱即用关键资源密钥 / 数据库密码支持环境变量覆盖KPI360_SECURITY_AESKEY等六、架构总览6.1 后端 DDD 四层facadeHTTP 接口层 ├─ web/ ControllerRestController SaCheckPermission ├─ dto/ 请求对象 ├─ vo/ 响应对象 └─ assembler/ MapStruct 转换Dto↔Command / View↔Vo application应用层 · 编排 事务 ├─ command/ 写命令对象 ├─ query/ 读返回 ViewCQRS └─ service/ AppServiceTransactional domain领域层 · 业务核心 ├─ {system | assessment | auth | notification} ├─ entity / valobj / aggregate ├─ service 领域服务含 ScoringEngine、CampaignGenerateService、ScoreCalculationService ├─ repository IXxxRepository 接口 └─ port 防腐端口OrgUserQueryPort / EvaluationFormQueryPort / NotificationPort infrastructure基础设施层 ├─ persistence/{dataobject, mapper, converter, repository} ├─ bridge 端口实现 └─ security Sa-Token / BCrypt / AES 工具依赖方向严格单向facade → application → domain ← infrastructure领域层不依赖任何技术框架业务规则可独立单元测试。6.2 前端src/ ├─ api/ 接口封装按业务模块 16 个 ├─ store/ Zustand仅 auth ├─ hooks/ usePermission按 resCode 控制按钮显隐 ├─ router/ 懒加载 MenuGuard ├─ components/Layout/ 动态菜单基于后端 menu tree ├─ pages/ 15 个业务页面 └─ utils/ iconLibrary统一 lucide 图标React 19 TypeScript 6 Vite 8 Ant Design 6 Tailwind 4TanStack React Query 5 数据层组件按左树 右内容标准模式国际化、主题色紫色 #8b5cf6、圆角rounded-primary统一约定七、与一般开源练手项目的对比小结能力通常的练手项目KPI-360业务覆盖单一考核口径KPI / OKR / 360 / 通用 一体化评分逻辑硬编码 if-else策略模式 JSON 规则可配关系生成不支持4 路评估关系自动生成 选人流程数据安全明文字段级 AES Sa-Token 三层权限状态机没有或随意改字段Campaign / Task / Inst 实体方法封装迁移工程化主分支 push 就上线DDD 防腐 Assembler 单元可测试文档化README 一句话后端 31 章 前端 28 章详细变更日志可扩展性改业务必须改核心新增计分方式 / 考核类型 / 端口实现零侵入八、技术栈后端Java 17 · Spring Boot 3.2 · MyBatis-Plus · Sa-Token · MySQL 8 · Redis · MapStruct · Knife4j · Lombok · EasyExcel · Hutool前端React 19 · TypeScript 6 · Vite 8 · Ant Design 6 · Tailwind 4 · TanStack React Query 5 · Zustand · Axios · React Router 7 · Recharts · dayjs · lucide-react详细技术栈与部署步骤见后端backend/README.md前端frontend/README.md后端架构详解backend/doc/代码汇总20260522v2.md前端架构详解frontend/doc/前端代码扫描总结.md九、路线图节选✅ DDD 四层 Assembler 层完成✅ KPI / OKR / 360 / 通用 四类考核模板支持✅ 5 套打分策略DirectScore / Ratio / Step / AddSub / QualLevel✅ 考核实例模型CampaignInst 成绩确认 / 申诉✅ Sa-Token 三层权限隔离 字段级 AES 加密✅ 仪表盘按季度过滤startMonth / endMonth WebSocket 实时通知替换 60s 轮询 批量导入导出员工 / 模板 / 成绩 Excel BI 集成成绩同步至 Superset / DataEase 多租户隔离SaaS 化版本 本项目后续会作为一个模块集成到作者另外一个正在开发的项目中具备商用级别的表单引擎、流程引擎和即时通讯能力十、开源协议本项目采用GPL2.0GNU General Public License协议开源,追加Commons Clause。允许个人 / 团队技术学习与企业内部使用禁止任何形式的对外商业化包括但不限于对外销售、SaaS 化对外服务、二次封装售卖等商业授权请联系作者二次分发须遵守 GPL 协议保留版权声明与作者署名。如果本项目对你有帮助欢迎 Star ⭐ 与转发产品建议、Bug 反馈、合作咨询请通过知识星球联系作者。