企业考勤月报全流程自动化交付技能 (Monthly Attendance Report SOP)
一、 技能概述与核心定位
本 Skill 专门用于处理企业级「月度考勤数据统计、排名与多端报表交付」,实现从原始打卡底表(Excel)到最终全量表、独立业务分表、静态样式固化以及无损打印级 PDF 交付件的端到端全自动生产。
具备强健的规则确定性、严谨的人员合规过滤、精细的像素级表格排版,以及两道强制性前置业务确认关卡。
二、 两个强制前置业务确认关卡 (Mandatory Gates)
在执行任何考勤核算与生成脚本之前,Agent 必须严格按顺序执行以下两项前置核验与确认:
关卡 1:花名册自动检索与用户确认
业务原则:严禁静默自选花名册;必须让用户对人员档案基准拥有最终把控权。
- 用户已显式指定花名册:
- 若用户在输入指令中已直接提供文件路径或指明文件名(例如:“使用
〔中台〕员工花名册-OD_zhaohui118278_2026-09-03_10-11-06.xls”),直接以此文件为准,跳过检索步骤。
- 若用户在输入指令中已直接提供文件路径或指明文件名(例如:“使用
- 用户未指定花名册(自动检索与确认):
- 运行内置扫描工具:
python <skill_path>/scripts/scan_roster.py --dir <project_or_data_dir> - 工具将自动递归检索包含
花名册、OD_、roster、员工的 Excel 文件,解析制表日期、修改时间、工作表名称及预估在册人数,并按最新版本推荐首选。 - Agent 必须主动向用户输出格式化提示并等待用户确认:
“🔍 花名册前置确认: 在项目中检索到以下疑似花名册文件:
- 【推荐首选】
〔中台〕员工花名册-OD_zhaohui118278_2026-09-03_10-11-06.xls(版本日期:2026-09-03,共 4,962 条员工记录) ... 请确认是否使用推荐的花名册作为本期基准?(如需使用其他文件,请直接回复文件路径)”
- 【推荐首选】
- 必须得到用户明确确认后,方可进入下一步。
- 运行内置扫描工具:
关卡 2:考勤规则增量校验与用户确认
业务原则:严禁遇到未知打卡状态时擅自假定权重为 0 或 1;必须拦截并由用户审批新增规则。
- 自动比对原始打卡底表与规则库:
- 运行内置规则校验工具:
python <skill_path>/scripts/check_rules.py --raw <raw_attendance.xlsx> --rules <skill_path>/config/考勤规则.json - 工具将全量扫描打卡底表(
Sheet0)中的所有上午状态|下午状态组合,与现有规则库比对。
- 运行内置规则校验工具:
- 若全部匹配:
- 输出
✅ 考勤规则核验通过:全部状态组合均已收录,无新增规则,自动继续执行。
- 输出
- 若发现未收录的新增规则(强制拦截):
- 立即暂停执行流程,向用户列出具体的未收录组合、出现频次及涉及员工:
“⚠️ 考勤规则增量校验拦截:发现未收录的新考勤状态组合! 在本次打卡底表中扫描到以下未收录的状态组合:
- 新状态组合:
请假转出勤|请假转出勤(累计出现 4 次,涉及员工:王五、赵六)
请确认上述新组合的出勤折算权重(
1.0全天出勤 /0.5半天出勤 /0.0不计出勤)。” - 新状态组合:
- 待用户回复权重后,执行规则追加:
python <skill_path>/scripts/check_rules.py --raw <raw.xlsx> --rules <rules.json> --add "请假转出勤|请假转出勤" --weight 0.0 - 更新规则库后,方可继续执行后续核算。
- 立即暂停执行流程,向用户列出具体的未收录组合、出现频次及涉及员工:
三、 核心业务口径与计算规则
1. 人员地域与常驻判定(北京口径)
- 提取花名册中的办公地点字段(如中台花名册
AF列); - 包含
BJ、北京或ABJ1的判定为北京常驻人员,予以保留; - 其余非北京常驻(如上海、广州、苏州、成都、台湾等异地)以及两份花名册均未收录人员予以剔除。
2. 人员与业务排除白名单
- 高管人员排除:
000001 池宇峰按业务明确要求排除统计,直接剔除,不计入集团职能也不计入全量; - 业务排除:归属
完美世界文化的人员(如陈阳 601102、廖宇 001827)不属于统计范围,直接剔除。
3. 洪恩业务线接入标准(方案 B)
- 全面接入真实人脸打卡数据:取消历史抑制,B 行(人脸早/晚)正常展示浅蓝色门禁时间(
FF0070C0); - 全面接入 F 列核算:正常计算人脸修正均工时(保留 2 位小数
0.00格式); - 全员按 F 列升序排列:与集团职能、游戏业务同等标准,全量及分表统一按 F 列升序排序。
4. 业务区域与分表标准定义
全量表共分为 7 个标准业务区域(按顺序排列,各分表不重复收录重点关注人员):
重点关注:固定名单重点关注人员(按 F 升序排列);游戏业务:包含游戏业务主线及电竞与平台业务;集团职能:包含集团各职能部门、采购供应商中心、体外业务等;影视业务:影视业务人员;虚拟世界:虚拟世界产品与研发团队;新业务事业群:新业务各项目部;洪恩:洪恩业务线。
5. 单向防作弊异常打卡标红规则
针对每日签到/签退打卡时间: $$\begin{cases} \textbf{签到标红 (红色 FFE54C5E)}: & \text{人脸最早识别时间} - \text{实体签到时间} > 60\text{分钟} \quad \text{(人未到、卡先刷)} \ \textbf{签退标红 (红色 FFE54C5E)}: & \text{实体签退时间} - \text{人脸最晚识别时间} > 60\text{分钟} \quad \text{(人已走、卡延后刷)} \ \textbf{缺卡 / 当天无人脸数据}: & \text{浅灰色} \quad (\texttt{FF808080}) \ \textbf{其余正常打卡}: & \text{纯黑实色} \quad (\texttt{FF000000}) \end{cases}$$
- 跨午夜凌晨 4 点前打卡自动归一化加上 24 小时参与比对,杜绝跨午夜误报。
6. 均工时偏差标红预警(G - F > 0.5)
- 全月打卡签到签退均工时(G 列)比人脸修正均工时(F 列)严格大 0.5 小时以上($G - F > 0.5$),G 列 6 行合并单元格字体标为红色(
FFE54C5E),提示该员工全月刷卡在司时间存在显著虚高偏差。
四、 表格视觉与排版固化规范
- 二维冻结窗格:
- 全量表:冻结窗格设为
J6(纵向冻结第 15 行日历表头,横向锁定 AI 列基础信息); - 7 个业务分表:冻结窗格设为
J7(纵向冻结第 16 行日历表头与业务大标题,横向锁定 AI 列); - 保证上下滚动时表头永远常驻,左右滑动浏览下旬打卡时员工工号/姓名/部门永远常驻左侧。
- 全量表:冻结窗格设为
- 表头 J1~J3 行内富文本色彩图例:
J1:单元格 “黄色” ,表示这是一个考勤补签,其中“黄色”为加粗金黄(FFFFC000);J2:字体 “红色” ,表示这个考勤数据有 “异常” (与人脸识别相差60分钟以上),其中“红色”为加粗标准红(FFFF0000);J3:字体 “灰色” ,表示这个日期没有人脸数据,其中“灰色”为常规灰(FF808080)。
- 日历 Session 与周末/假期立柱:
- 工作日列:列宽统一为
11.17,背景透明无填充,无内部竖向杂线; - 周末/假期列:列宽统一为
9.17,整列浅灰色贯穿(FFF2F2F2),表头第 4~5 行合并居中显示“周末/假期”,除第 6 行业务线底线和第 12 行组底线外左右无边框; - 表头日期强制锁定为
m/d;@(如8/3、8/10),杜绝########。
- 工作日列:列宽统一为
- 静态纯净交付:
- 彻底清空 Excel 的动态条件格式(Conditional Formatting),所有色彩(红/灰/黑/黄)均由代码直接写入单元格静态属性,确保任何 Excel 版本或 Office 软件打开色值饱满不虚化。
- 打印级无损 PDF 导出:
- 页面横向(Landscape),纸张 Letter,适合宽度 1 页;
- 智能计算分页符(RowBreak),确保 6 行一组的员工数据绝不跨页被切断;
- 全量表稳定分页为 12 页,重点关注表稳定分页为 1 页。
五、 端到端标准执行流程 (SOP)
当收到用户的考勤月报需求时,执行以下 5 步标准作业程序:
[用户输入] ──> [Gate 1: 扫描/确认花名册] ──> [Gate 2: 增量校验考勤规则] ──> [运行自动化引擎] ──> [交付 Excel/PDF 及审计对账]
步骤 1:定位花名册(执行 Gate 1)
- 用户未指明时,调用扫描脚本:
python ~/.agents/skills/monthly-attendance-report/scripts/scan_roster.py --dir . - 提示用户确认花名册路径。
步骤 2:校验考勤规则(执行 Gate 2)
- 扫描打卡底表:
python ~/.agents/skills/monthly-attendance-report/scripts/check_rules.py --raw "<raw_attendance.xlsx>" --rules "~/.agents/skills/monthly-attendance-report/config/考勤规则.json" - 若有未录入规则,询问用户并录入。
步骤 3:一键运行交付引擎
- 执行核心生成管线:
python ~/.agents/skills/monthly-attendance-report/scripts/pipeline.py \ --raw "<raw_attendance.xlsx>" \ --roster "<confirmed_roster.xls>" \ --rules "~/.agents/skills/monthly-attendance-report/config/考勤规则.json" \ --exclusions "~/.agents/skills/monthly-attendance-report/config/exclusions.json" \ --template "~/.agents/skills/monthly-attendance-report/template/attendance_template.xlsm" \ --out-dir "./交付"
步骤 4:交付文件产出检查
验证交付目录中是否包含完整的交付件:
考勤数据+排名-YYYY年MM01-MMDD- v1.0.xlsx考勤数据+排名-YYYY年MM01-MMDD- v1.0_最新.xlsx全量_考勤数据+排名-YYYY年MM01-MMDD- v1.0.pdf重点关注_考勤数据+排名-YYYY年MM01-MMDD- v1.0.pdf
步骤 5:向用户输出结构化对账与审计汇报
汇报模版如下:
【YYYY年MM月 考勤月报交付全部完成】
- 人员名单核验结果:
- 原始打卡底表:XX 人
- 花名册成功匹配:XX 人(未匹配 XX 人,异地剔除 XX 人,特殊排除 XX 人)
- 最终北京在册统计:XX 人(重点关注 X 人,游戏 XX 人,职能 XX 人,影视 X 人,虚拟 X 人,新业务 X 人,洪恩 XX 人)
- 异常与预警统计:
- 触发单向异常打卡标红:共 XX 处
- 触发均工时偏差标红预警(G - F > 0.5):共 X 人
- 交付成果物:
- 交付 Excel:
交付/考勤数据+排名-YYYY年MM01-MMDD- v1.0_最新.xlsx- 全量 PDF:
交付/全量_考勤数据+排名-YYYY年MM01-MMDD- v1.0.pdf- 重点关注 PDF:
交付/重点关注_考勤数据+排名-YYYY年MM01-MMDD- v1.0.pdf