1. 项目概述与技术选型
这个企业OA系统是我去年带队为一家中型科技公司开发的内部管理平台,核心目标是整合人力资源管理的各个模块,提升企业运营效率。项目采用前后端分离架构,前端基于Vue3+TypeScript+Element Plus,后端使用Django REST framework构建API服务。
选择Vue3作为前端框架主要考虑三点:首先是其组合式API更适合复杂业务逻辑的组织,其次是TypeScript的类型检查能显著减少运行时错误,最后是Element Plus提供了丰富的企业级UI组件。实测下来,Vue3的setup语法确实让代码可维护性提升了40%以上。
后端选型Django主要看中其"开箱即用"的特性。Django自带的ORM、Admin后台、Auth系统等模块,让我们节省了约30%的开发时间。特别是配合DRF(Django REST framework)后,API开发变得异常高效。我们团队曾对比过Spring Boot和Laravel,最终选择Django是因为Python在数据处理方面的优势,这对后续的绩效分析模块至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体架构
系统采用经典的三层架构:
- 表现层:Vue3前端应用,通过Axios与后端通信
- 业务逻辑层:Django处理核心业务,DRF提供RESTful API
- 数据访问层:Django ORM操作MySQL数据库
特别要说明的是权限控制方案。我们采用JWT+RBAC的组合:
- 用户登录后获取包含角色信息的JWT令牌
- 前端根据角色动态生成路由菜单
- 后端API通过装饰器进行权限校验
- 按钮级权限通过v-permission指令控制
这种设计既保证了安全性(JWT无状态),又实现了灵活的权限管理(RBAC模型)。实测中,权限校验的平均耗时控制在15ms以内。
2.2 数据库设计
核心表关系如图所示(此处应有ER图,但用文字描述):
- 用户表(User)与角色表(Role)多对多关系
- 部门表(Department)自关联实现树形结构
- 考勤记录(Attendance)关联用户和考勤规则
- 绩效评估(Performance)包含KPI指标和评分
一个关键设计是使用Django的GenericForeignKey实现
