# Monthly Attendance Report

> 企业考勤月报全流程自动化交付技能。涵盖疑似花名册自动搜寻与用户确认、未收录考勤规则校验与审批、北京常驻判定与高管/业务排除（000001池宇峰/完美世界文化）、洪恩人脸全量接入与统一排序、单向防作弊标红与G-F>0.5均工时预警、J6/J7二维冻结窗格、J1~J3富文本图例、全量与7大业务分表自动化生成、静态纯净格式固化及无损PDF导出全流程。触发场景包括：考勤月报、生成考勤报表、月度考勤、考勤排名、考勤数据处理等。

- Skill: `sleevesun/monthly-attendance-report` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add sleevesun/monthly-attendance-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sleevesun/monthly-attendance-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: sleevesun (https://skillmd.com/u/sleevesun)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sleevesun/monthly-attendance-report

---


# 企业考勤月报全流程自动化交付技能 (Monthly Attendance Report SOP)

## 一、 技能概述与核心定位

本 Skill 专门用于处理企业级「月度考勤数据统计、排名与多端报表交付」，实现从原始打卡底表（Excel）到最终全量表、独立业务分表、静态样式固化以及无损打印级 PDF 交付件的**端到端全自动生产**。

具备强健的规则确定性、严谨的人员合规过滤、精细的像素级表格排版，以及**两道强制性前置业务确认关卡**。

---

## 二、 两个强制前置业务确认关卡 (Mandatory Gates)

在执行任何考勤核算与生成脚本之前，Agent **必须严格按顺序执行以下两项前置核验与确认**：

### 关卡 1：花名册自动检索与用户确认

> **业务原则**：严禁静默自选花名册；必须让用户对人员档案基准拥有最终把控权。

1. **用户已显式指定花名册**：
   - 若用户在输入指令中已直接提供文件路径或指明文件名（例如：“使用 `〔中台〕员工花名册-OD_zhaohui118278_2026-09-03_10-11-06.xls`”），**直接以此文件为准**，跳过检索步骤。
2. **用户未指定花名册（自动检索与确认）**：
   - 运行内置扫描工具：
     ```bash
     python <skill_path>/scripts/scan_roster.py --dir <project_or_data_dir>
     ```
   - 工具将自动递归检索包含 `花名册`、`OD_`、`roster`、`员工` 的 Excel 文件，解析制表日期、修改时间、工作表名称及预估在册人数，并按最新版本推荐首选。
   - **Agent 必须主动向用户输出格式化提示并等待用户确认**：
     > “🔍 **花名册前置确认**：
     > 在项目中检索到以下疑似花名册文件：
     > 1. 【推荐首选】`〔中台〕员工花名册-OD_zhaohui118278_2026-09-03_10-11-06.xls`（版本日期：2026-09-03，共 4,962 条员工记录）
     > ...
     > 请确认是否使用推荐的花名册作为本期基准？（如需使用其他文件，请直接回复文件路径）”
   - **必须得到用户明确确认后，方可进入下一步。**

---

### 关卡 2：考勤规则增量校验与用户确认

> **业务原则**：严禁遇到未知打卡状态时擅自假定权重为 0 或 1；必须拦截并由用户审批新增规则。

1. **自动比对原始打卡底表与规则库**：
   - 运行内置规则校验工具：
     ```bash
     python <skill_path>/scripts/check_rules.py --raw <raw_attendance.xlsx> --rules <skill_path>/config/考勤规则.json
     ```
   - 工具将全量扫描打卡底表（`Sheet0`）中的所有 `上午状态|下午状态` 组合，与现有规则库比对。
2. **若全部匹配**：
   - 输出 `✅ 考勤规则核验通过：全部状态组合均已收录，无新增规则`，自动继续执行。
3. **若发现未收录的新增规则（强制拦截）**：
   - **立即暂停执行流程**，向用户列出具体的未收录组合、出现频次及涉及员工：
     > “⚠️ **考勤规则增量校验拦截：发现未收录的新考勤状态组合！**
     > 在本次打卡底表中扫描到以下未收录的状态组合：
     > 1. 新状态组合：`请假转出勤|请假转出勤`（累计出现 4 次，涉及员工：王五、赵六）
     > 
     > 请确认上述新组合的出勤折算权重（`1.0` 全天出勤 / `0.5` 半天出勤 / `0.0` 不计出勤）。”
   - 待用户回复权重后，执行规则追加：
     ```bash
     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 个标准业务区域**（按顺序排列，各分表不重复收录重点关注人员）：
1. `重点关注`：固定名单重点关注人员（按 F 升序排列）；
2. `游戏业务`：包含游戏业务主线及电竞与平台业务；
3. `集团职能`：包含集团各职能部门、采购供应商中心、体外业务等；
4. `影视业务`：影视业务人员；
5. `虚拟世界`：虚拟世界产品与研发团队；
6. `新业务事业群`：新业务各项目部；
7. `洪恩`：洪恩业务线。

### 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`），提示该员工全月刷卡在司时间存在显著虚高偏差。

---

## 四、 表格视觉与排版固化规范

1. **二维冻结窗格**：
   - **全量表**：冻结窗格设为 **`J6`**（纵向冻结第 1~5 行日历表头，横向锁定 A~I 列基础信息）；
   - **7 个业务分表**：冻结窗格设为 **`J7`**（纵向冻结第 1~6 行日历表头与业务大标题，横向锁定 A~I 列）；
   - 保证上下滚动时表头永远常驻，左右滑动浏览下旬打卡时员工工号/姓名/部门永远常驻左侧。
2. **表头 J1~J3 行内富文本色彩图例**：
   - `J1`：`单元格 “黄色” ，表示这是一个考勤补签`，其中 `“黄色”` 为加粗金黄（`FFFFC000`）；
   - `J2`：`字体 “红色” ，表示这个考勤数据有 “异常” （与人脸识别相差60分钟以上）`，其中 `“红色”` 为加粗标准红（`FFFF0000`）；
   - `J3`：`字体 “灰色” ，表示这个日期没有人脸数据`，其中 `“灰色”` 为常规灰（`FF808080`）。
3. **日历 Session 与周末/假期立柱**：
   - 工作日列：列宽统一为 **`11.17`**，背景透明无填充，无内部竖向杂线；
   - 周末/假期列：列宽统一为 **`9.17`**，整列浅灰色贯穿（`FFF2F2F2`），表头第 4~5 行合并居中显示“周末/假期”，除第 6 行业务线底线和第 12 行组底线外左右无边框；
   - 表头日期强制锁定为 **`m/d;@`**（如 `8/3`、`8/10`），杜绝 `########`。
4. **静态纯净交付**：
   - 彻底清空 Excel 的动态条件格式（Conditional Formatting），所有色彩（红/灰/黑/黄）均由代码直接写入单元格静态属性，确保任何 Excel 版本或 Office 软件打开色值饱满不虚化。
5. **打印级无损 PDF 导出**：
   - 页面横向（Landscape），纸张 Letter，适合宽度 1 页；
   - 智能计算分页符（RowBreak），确保 6 行一组的员工数据绝不跨页被切断；
   - 全量表稳定分页为 12 页，重点关注表稳定分页为 1 页。

---

## 五、 端到端标准执行流程 (SOP)

当收到用户的考勤月报需求时，执行以下 5 步标准作业程序：

```text
[用户输入] ──> [Gate 1: 扫描/确认花名册] ──> [Gate 2: 增量校验考勤规则] ──> [运行自动化引擎] ──> [交付 Excel/PDF 及审计对账]
```

### 步骤 1：定位花名册（执行 Gate 1）
- 用户未指明时，调用扫描脚本：
  ```bash
  python ~/.agents/skills/monthly-attendance-report/scripts/scan_roster.py --dir .
  ```
- 提示用户确认花名册路径。

### 步骤 2：校验考勤规则（执行 Gate 2）
- 扫描打卡底表：
  ```bash
  python ~/.agents/skills/monthly-attendance-report/scripts/check_rules.py --raw "<raw_attendance.xlsx>" --rules "~/.agents/skills/monthly-attendance-report/config/考勤规则.json"
  ```
- 若有未录入规则，询问用户并录入。

### 步骤 3：一键运行交付引擎
- 执行核心生成管线：
  ```bash
  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`

