设计考勤打卡的心得体会

    在今年8-10份,独自一个人担任促销管理系统的考勤系统的开发。从需求理解、到表设计、到API接口的输出,bug的修复到最后的完工。今天停下脚步总结一下。


在整个过程中,给我最深刻的时最开始的表设计。考勤打卡每个企业个性化比较强,我的这个项目是促销人员使用的考勤打卡系统,模式:班次–排版-考勤。 每个人各不相同,不具备使用考勤组。(其他考勤系统,常常用考勤组,便于管理)。

需求场景

  • 一个促销人员一天可以有多个班次,每个班次都有一个考勤,考勤和班次强关联
  • 每个班次必须要有签到和签退、签到签退可以打卡多次,但有效签到只取第一次,签退只取最后一次,
  • 每个班次可以设置限制最早打卡时间、最晚打卡时间;
  • 每个班次可以设置晚到多少时间不算迟到、同时保证考勤时长、签退时间应该顺延时间差值、
  • 每个班次可以设置一个时间段做为不计工时时间段。
  • 考虑到复杂性,将跨天情况进行排除;
  • 多班次,班次与客户,排版问题等、会涉及到大量一对多关系。

最后需要按月抽取一张报表,统计每个人员,应出勤天数、实际出勤天数、应出勤工时、实际出勤工时、迟到次数、早退次数、缺口次数、迟到总时长、早退总时长、且按月按请假类型汇总该有请假时长(请假类型固定)。


面临的问题:

  1. 如果一个人有多个岗位(角色)、使用不同的岗位打卡、如何统计这个人的考勤、;不管是多少岗位,都是一个人;即计表时;应该用人员id
  2. 如果冗余的字段会设计大量被更新的可能性、这样的冗余是不合适的。如果主表的时间被修改、则冗余字段是否应该修改,需要考虑两个问题:一、是历史数据;二、是未发生的记录。冗余字段适合 查询多、修改少)
  3. 报表的抽取问题、是按月抽取还是按日抽取;抽取的时间点很重要。如果按月抽取、这个月发生的数据不能形成报表;如果按照天抽取,是增量抽取,还是该月发生的数据抽取;同时考虑,人员变更情况(入职和离职)
  4. 如果存在跨月份审批问题;会修改过去月份;这个时候会设涉及更新历史报表汇总数据问题
  5. 数据校验问题、牵扯对象过多,校验变得越发复杂;
  6. 进度 vs 质量。 这个是一个需要权衡的点。领导更关注结果;但质量是我们对自己的要求。当然先完成任务可能偏重要一点

后记

在设计阶段应该将问题搞清楚、后面的工作才会更轻松一些。考勤系统多种多样;个性化强、没有所谓的通用版本。满足了客户要求;让客户用着安心才是软件开发目的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值