本项目是一套面向制造型企业的人事管理系统(HRM),部署于企业内网供人事部门及管理层使用。立项前公司人事数据依赖 Excel 台账手工维护,存在数据分散易错、合同到期无提醒、考勤需人工从钉钉导出核对、人员结构统计耗时等问题;项目目标是将员工档案、人事异动、合同、考勤与统计分析统一线上化。系统首页为人力资源数据看板,左侧菜单按业务域组织,功能如下:
一、首页看板:展示在职员工总数、男女人数、30天内新入职人数等指标卡,并以图表呈现性别分布、工龄分布、年龄分布、学历分布及各部门人数分布。
二、基础信息:①员工管理——在职员工花名册,60余字段完整档案(身份信息、学历专业、招聘来源、合同日期、考核分数等),支持按工号/姓名/手机号/身份证模糊搜索与分页浏览;②部门管理、③职务管理、④职级管理——组织架构三类基础数据的增删改查与分页维护。
三、人事管理:①入职登记——新员工登记与档案维护,支持 Excel 批量导入建档和全量导出;②转正管理——试用期员工列表与一键转正,自动写入转正日期;③离退管理——支持在职、待离职、离职、退休、自离、急辞六种状态流转与批量处理;④合同管理——合同签订/到期/续签日期维护及合同扫描件上传、在线预览、删除;⑤师徒管理——师徒关系绑定与多方评分记录,自动计算平均分;⑥工龄管理、⑦生日管理——按工龄区间和自然季度分组展示,支持多 Sheet 分组导出 Excel。
四、行政管理:①快递管理、②宿舍管理、③餐费管理、④车辆管理——用于后续扩展公司日常行政事务的线上化管理,目前已在菜单中完成入口规划与页面框架预留。
五、考勤管理:①同步数据——对接钉钉开放平台,获取 access_token 并批量拉取员工打卡数据入库;②考勤数据——打卡记录查询与核对;班次、排班、请假、补卡、加班、调休、报表为规划中的扩展菜单。
六、绩效管理:①绩效考核、②绩效报表——规划中的员工绩效评价与统计模块。
七、系统管理:①用户管理(账号增删改查);②系统配置、③服务配置;以及登录鉴权与退出登录。
核心业务流程:Excel 批量导入建档 → 入职登记/转正/离退/合同等日常异动维护(系统自动派生年龄、工龄等数据)→ 钉钉考勤自动同步 → 生日、工龄等报表一键分组导出,形成"建档—异动—考勤—分析"的完整人事管理闭环。
整体架构:本系统采用 Python Django 5.2 单体 MVT 架构(服务端渲染),数据库为 PostgreSQL,前端采用 Django 模板 + Bootstrap + Chart.js。按业务划分为 accounts(认证与看板)、basic_info(人事核心)、attendance(考勤同步)三个 Django App,每个 App 自带 models/views/templates/static,模块化清晰。系统已实际部署于公司内网服务器供全员使用。
本人独立完成全部开发工作:包括需求分析、数据库设计(7张业务表,主表60余字段)、3个应用模块共约50个视图函数、30余个页面模板的前后端全部编码,以及部署上线运维。核心成果包括:基于 pandas + openpyxl 的 Excel 双向导入导出,支持34列中文表头映射、外键自动识别创建、按工号 upsert 幂等导入,以及单文件多 Sheet 的生日/工龄分组报表导出,老员工档案导入由人工数天缩短至分钟级;模型层自动化,从身份证号自动解析出生日期/年龄、自动计算工龄与师徒平均分,并通过 Django 信号机制自动记录状态变更时间,杜绝人工维护差错;钉钉开放平台集成,实现 access_token 获取、打卡数据批量同步及时间戳时区转换;基于会话的登录鉴权与密码强度校验;Q 对象多条件搜索 + 分页的通用组件全站复用。
难点与解决:一是项目从 Django 2.1 跨大版本升级至 5.2,中间件、时区、数据库驱动(psycopg2→psycopg3)等多处不兼容,通过逐版本迁移和回归测试解决;二是 Excel 导出在响应流中偶发文件损坏,改用 BytesIO 内存缓冲后彻底解决;三是钉钉打卡数据为 UTC 时间且字段嵌套复杂,通过时区转换和字段映射规范化处理;四是导入数据质量参差,通过字段校验 + get_or_create 去重保证导入幂等性。