04
数据准备 · 来源归一
考勤来源归一
attendance-source-normalizer
把散落在源目录、.msg 附件、邮件正文、视觉记录里的考勤资料整理成统一审核入口。负责「资料是什么、属于谁、是什么证据类型」。主要服务 B 型 / 邮件凭证型客户。
◧
FLOW TYPES
适用客户珠海基石
钉钉汇总表 + 大量 .msg 补卡/加班/出差/年假凭证
奥托立夫
钉钉考勤报表 + 补卡/加班/出差/请假/外出子表
复宏汉霖·英伟达
公司名 + 员工名 + 考勤/审批 .msg,夹杂图片/PDF/Excel
⚡
TRIGGERS
触发场景▸大量 .msg 补卡/加班/出差凭证要归集
▸多来源混杂,要先认清「谁的、什么证据」
▸B 型客户交付前要一份可审计的来源清单
↹
INPUT & OUTPUT
输入 / 产出↘ INPUT · 输入
- data/raw/<目录名>
- attachments/(已抽附件)
- reference_roster.xlsx
- _email_texts.jsonl · vision_extracted_records.jsonl
↗ OUTPUT · 产出
- normalized_sources.xlsx:来源归一 · 归属覆盖 · 待追问
🪜
STEPS
处理流程- 1汇集所有来源msg、Excel、PDF、图片全部进「来源归一」,不漏原始邮件。
- 2归属员工从 roster、邮件主题、文件名、视觉记录多路匹配;匹配不到进「待追问」。
- 3分证据类型至少区分补卡、加班、出差/公出、外出、请假/休假、考勤汇总、审批。
- 4算归属覆盖每个员工已归属来源数和证据类型,缺口一目了然。
⇄
PIPELINE
与其他 skill 衔接←
先跑 data-prep 抽附件、预渲染 PDF。
→
来源清单交给 exception-review 判异常、remarks 算备注。
✓
ACCEPTANCE
闭环验收- ✓所有 .msg、Excel、PDF、图片来源均进入「来源归一」。
- ✓员工名能从 roster / 主题 / 文件名 / 视觉记录匹配,匹配不到进待追问。
- ✓证据类型至少区分 7 类。
- ✓交付给 HR 引用 xlsx,不只给 JSON / JSONL。
⊘
ANTI-PATTERNS
反例检查✗
.msg 已抽附件,但原始邮件没进来源清单。
✗
只按文件名归属,忽略 roster、邮件主题或视觉记录。
✗
把客户名、公司名、部门名当成员工名。
✗
图片/PDF 仍待识别,却被标成已解析考勤结论。
⌘
RUN
运行命令uv run python skills/attendance/attendance-source-normalizer/scripts/normalize_attendance_sources.py \
data/raw/<目录名> outputs/<目录名>/normalized_sources.xlsx \
--attachments-dir outputs/<目录名>/attachments \
--reference-roster outputs/<目录名>/reference_roster.xlsx \
--email-texts outputs/<目录名>/_email_texts.jsonl \
--vision-records outputs/<目录名>/vision_extracted_records.jsonl