08
入口与编排 · 月度核对编排

考勤月度核对(追觅类)

attendance-monthly-reconcile
🔁
入口与编排 skills/attendance/
把 HRO 外包场景下「数据员考勤表 → 员工核对 → 问题跟进 → HR 审核包」的月度流程标准化。本 skill 负责流程编排与八阶段门禁(阶段 0–7,不可跳门);数据归档交 data-prep、异常清单交 exception-review、备注生成交 remarks。从追觅考勤组操作录屏蒸馏,覆盖 80% 飞书打卡场景。

CLIENT PROFILE

适用客户画像 / 试点
数据源数据员月导出
数据员按月导出考勤汇总表,常无身份证号。
打卡80 / 20
80% 员工飞书打卡,20% 可能链接打卡或其他,需单独分支。
拆表按考勤部门
按考勤部门拆分多表,每部门一套加班班次规则。
规模数百人 / 2 HR
数百人,2 名 HR 各负责约一半。
试点追觅
追觅(本 skill 首发来源),约 320 人 / 2 人。

TRIGGERS

触发场景
追觅考勤 / 月度考勤核对
考勤表整理 / 数据员表整理
按人发考勤
attendance monthly reconcile / 考勤月度核对

SESSION ENTRY

会话入口
1 · 客户/目录名
data/raw/ 下子目录名
2 · 薪资月
YYYYMM
3 · 当月花名册
HRO 导出,含离职但当月计薪人员
4 · 数据员原始表
可能多 sheet / 多文件,按考勤部门拆分
ENV · 环境变量
DATASET_NAME="<目录名>"
PAY_PERIOD="<YYYYMM>"
SOURCE_DIR="data/raw/${DATASET_NAME}"
OUTPUT_DIR="outputs/${DATASET_NAME}-${PAY_PERIOD}"

INPUT & OUTPUT

输入 / 产出
↘ INPUT · 输入
  • 当月花名册(含离职但当月计薪,姓名/身份证/部门/职位/入离职日期)
  • 顾问各考勤部门当月人员清单
  • 数据员原始考勤表(多 sheet/多文件按考勤部门拆分)
↗ OUTPUT · 产出
  • reference_roster.xlsx(含「考勤部门」列)
  • 整理后数据员表 + 按人 HTML 切片(脱敏后个人切片 + 画数)
  • 问题员工审核包:改表截图 + 飞书凭证 + 「核对无误」确认
  • 下游产物 exception_review.xlsx / attendance_remarks.xlsx
🪜

PHASE GATES

阶段门禁(必须按序)阶段 0–7 · 八阶段 · 不可跳门
  1. 0
    花名册与考勤部门GATE
    每人有「考勤部门」列(HR 维护,非原始字段);职位与 HRO 按身份证号已核对。新增员工对比本月各表 vs 上月,出现在哪张表即属该考勤部门。产出 reference_roster.xlsx
  2. 1
    原始表备份 + 补字段GATE
    数据员表整表复制保留原始版;working copy 用 VLOOKUP 花名册补身份证号、职位。
  3. 2
    先对人头GATE
    只统计人数与花名册比对、记录差异,此阶段不改任何考勤数据
  4. 3
    整理数据员表(发员工前)GATE
    隐藏求和为 0 的列;请假只留事假/调休;调休假天数加入实际出勤;迟到早退首次发放前不扣。
  5. 4
    按人截图发放GATE
    截员工行到「总计」列(含按日明细)+ 附「画数」汇总模板,飞书/微信发送。可用 split_employee_slices.py 把宽表按员工生成 HTML 切片 + 索引(默认脱敏身份证/工资等敏感列)。每人已发「个人切片 + 画数」。
  6. 5
    问题跟进GATE
    仅处理反馈有问题的员工:加班、夜班、公出、迟到、事假(细则见下)。改表标黄 + 批注。
  7. 6
    二次确认GATE
    改表后必须员工回复「核对无误」才闭环。
  8. 7
    审核包GATE
    问题员工 Sheet 附改表截图 + 原始确认 + 飞书凭证一并归档;无问题员工保留「核对无误」文字即可。

RED LINES

门禁红线 · 禁止
禁止
  • 未做人头核对就改数据。
  • 未首次发放就预扣迟到。
  • 未员工确认就提交 HR。

STAGE 3 DETAIL

阶段 3 整理细则
按序执行
  • 3.1 隐藏求和为 0 的列(严重迟到、旷工等本月无数据列)。
  • 3.2 请假列只保留:事假、调休假(其余隐藏)。
  • 3.3 调休假天数 += 实际出勤天数(系统实际出勤不含调休)。
  • 3.4 迟到早退:首次发放前不扣,等员工反馈。
参考列 / 不做
  • 参考列:应出勤天数、实际出勤天数、事假、调休假、工作日/休息日/节假日加班、关联调休、不关联调休、按日明细列。
  • 不做:预核加班、预处夜班/公出。

STAGE 5 DETAIL

阶段 5 问题跟进细则
5.1 加班飞书考勤日历截图
  • 先按考勤部门查班次规则(见 rules_catalog_draft.md),再叠加职位维度(来源 HRO):工程师无工作日加班;追觅测试中心工程师工作日加班到 8 点后有补贴;技术员工作日/节假日/休息日均可能有加班。
  • 工作日加班 = 实际下班 − 规定下班 − 晚餐 0.5h(部分考勤部门不扣晚餐,见 LESSONS 考勤部门明细)。
  • 周末看「小月亮」+ 加班申请「是否关联调休」: → 整天计入关联调休; → 计入不关联调休(加班费)。
  • 改表:标黄 + 批注,更新工作日/休息日/节假日合计。
5.2 夜班每月约 10+ 人 · 单方
  • 顾问吴轲月初提供名单;跨天取 Day1 上班卡 + Day2 下班卡。
  • 确认有夜班的考勤部门:MOVA、追觅测试中心(洗地机测评中心无夜班);系统常误显迟到。
5.3 公出每月约 10+ 人 · 单方
  • 有出勤天数无打卡时间 → 索要每日打卡截图。
5.4 迟到 / 5.5 事假追问
  • 迟到:无补卡/请假 → 扣 0.5 天;首次发放不预扣。
  • 事假:问清假别;年假查邮件;填「考勤特殊事项模板」发顾问。

CONFIRMED · 2026-06

顾问确认口径八阶段「正确」· 总体「需修订」
标准计薪天
320 天/月口径(约 320 人 / 2 HR)。
职位影响加班
来源 HRO,阶段 5 须叠加:工程师无工作日加班;追觅测试中心工程师 8 点后有补贴;技术员均可能加班。
夜班
名单由顾问吴轲月初提供;有夜班部门 = MOVA、追觅测试中心。
数据员表差异
链接打卡、表头格式不同;考勤部门命名由客户确定。
交付追加
除审核包外,需附考勤表差异文字说明
考勤部门明细
32 个考勤部门的晚餐扣 0.5h / 夜班 / 链接打卡口径见 LESSONS.md(如割草机有链接打卡、直播排班/客户体验中心不扣晚餐)。
规则补全 ETA
顾问承诺 rules_catalog_draft.md2026-06-30 前补全。

PIPELINE

与其他 skill 衔接
源数据归档(推荐先做):data-prep · prepare_attendance_data.py
异常审核(阶段 5 之后):exception-review · build_exception_review.py
备注生成(终审后):remarks · build_attendance_remarks.py
约 20% 链接打卡员工 / 数据员表格式不统一 → 流程未在本 skill 完整覆盖,需单独分支。

RUN

运行命令
RUN · 编排下游 skill + 本 skill 切片
# 源数据归档(推荐先做)
uv run python skills/attendance/attendance-data-prep/scripts/prepare_attendance_data.py \
  "${SOURCE_DIR}" "${OUTPUT_DIR}" \
  --base-table <花名册.xlsx>

# 异常审核(阶段 5 之后)
uv run python skills/attendance/attendance-exception-review/scripts/build_exception_review.py \
  "${OUTPUT_DIR}/attachments" "${PAY_PERIOD}" \
  "${OUTPUT_DIR}/exception_review.xlsx" \
  --reference-summary "${OUTPUT_DIR}/reference_roster.xlsx" \
  --config <attendance_config.json>

# 备注生成(终审后)
uv run python skills/attendance/attendance-remarks/scripts/build_attendance_remarks.py \
  "${OUTPUT_DIR}/attachments" "${PAY_PERIOD}" \
  "${OUTPUT_DIR}/attendance_remarks.xlsx" \
  --config <attendance_config.json> \
  --reference-summary "${OUTPUT_DIR}/reference_roster.xlsx"

# 阶段 4 · 按员工生成 HTML 切片包(默认脱敏身份证/工资等敏感列)
uv run python skills/attendance/attendance-monthly-reconcile/scripts/split_employee_slices.py \
  <整理后的数据员考勤宽表.xlsx> \
  "${OUTPUT_DIR}/employee_slices" \
  --id-column <员工标识列名>

BENCHMARK

耗时基准追觅 320 人 / 2 人
整理数据员表
~3h 两人合计
按人发放
~50–60min
问题跟进
~12–20min/人 夜班/公出
合计(含跟进)
约 1 人日/月

ROADMAP

自动化路线图
normalize_attendance_workbook.pyP0 · 待实现
数据员表规范化。
roster_headcount_diff.pyP0 · 待实现
花名册与考勤表人头差异比对。
split_employee_slices.pyP1 · 已实现首版
宽表按员工输出到「总计」列的 HTML 切片 + 索引;默认脱敏身份证/工资/银行卡等敏感列(--drop-keyword 可追加),表头不匹配 / 0 切片时告警并非零退出。
加班规则验算P1 · 扩展现有
扩展现有 exception-review,自动验算加班/关联调休。

NOTES

注意事项 / 蒸馏来源
数据员表不统一
约 80% 适用本流程,20% 需分支。
考勤部门命名
客户定,非 HR 自定。
规则表前置
rules_catalog_draft.md 须顾问补全后才能自动化。
蒸馏来源
追觅(考勤组)视频会议录屏:workflow_draft.md(八阶段)、rules_catalog_draft.md、skill_outline.md、60 分钟访谈转写、关键操作截图。

ACCEPTANCE

闭环验收

ANTI-PATTERNS & RETRY

反例检查 / 失败重试
未核对花名册人头差异就开始按人发放。
把链接打卡员工(约 20%)硬套飞书打卡流程,不单独分支。
数据员表未统一格式就跳过阶段 3 整理。
员工反馈问题后只改表、不收集凭证或未记录处理链。
个人切片把身份证号/工资等内部列直接发给员工(应保留默认脱敏或用 --drop-keyword 追加)。
失败重试
  • 人头差异无法解释 → 暂停发放,回阶段 1–2 核对花名册与考勤部门。
  • 加班/夜班规则不清 → 先补 rules_catalog_draft.md 再验算,不凭经验改表。
  • 下游 data-prep / exception-review 失败 → 修复输入目录后从失败阶段重跑,不跳过门禁。
  • 凭证缺失 → 标记待追问,不将问题员工当作「核对无误」结案。

RETROSPECTIVE

复盘沉淀
写入 LESSONS.md
新客户分支(链接打卡、特殊班次、数据员表格式)写入 LESSONS.md,稳定后再更新阶段门禁或自动化路线图。
已知高频风险
格式不统一跳过阶段 3 致口径不一致;链接打卡硬套分支;人头差异未解释发放会在阶段 5–6 放大为批量返工。