# 考勤与日志

两个独立产品，都容易和 OA 审批混。

## 考勤

| 场景 | 命令 |
| --- | --- |
| 打卡流水（时间/地点/定位方式） | `attendance +check-record` |
| 打卡结果（迟到/早退/缺卡） | `attendance +check-result` |
| 签到记录 | `attendance +get-checkin-record` |
| 假期余额变更 | `attendance +get-leave-records` |
| 补卡规则详情 | `attendance +get-adjustment-rule` |
| **补卡/请假/加班/外出/出差的审批链接** | `attendance +get-approve-template` |

还覆盖排班、班次、考勤组、报表、个人规则。

### 考勤类审批不走 OA

这是最容易搞错的一条：

| 审批类型 | 走哪 |
| --- | --- |
| 补卡、请假、加班、外出、出差 | **`attendance`** 的审批模板 |
| 其余通用审批 | **`oa`** |

助手按这个判据分流。

### 参数提醒

多数考勤命令需要 `--users`（userId 列表，**最多 100 个，逗号分隔，不能重复**）。助手会先解析出 userId 再调用，不会把「缺少必填参数」这种内部错误抛给你看。

## 日志（日报/周报）

| 场景 | 命令 |
| --- | --- |
| 我收到的日志 | `report +inbox-list` |
| 我发出的日志 | `report +outbox-list` |
| 我最近提交的一篇 | `report +report-latest` |
| 按名称搜模板 | `report +template-search` |

### 时间参数：ISO-8601，不是 epoch

⚠️ **`report` 用 ISO-8601，`oa` 用 epoch 毫秒。** 两者不通用。

```bash
dws report +inbox-list --start 2026-08-25T00:00:00Z --end 2026-09-01T00:00:00Z --format json
```

且**跨度不得超过 180 天**。

### 模板字段是组织自定义的

写周报时助手会**先读模板结构再填**，不会猜字段名——各组织的日志模板字段完全不同，猜错会填到错的格子里。

流程：
1. `+template-search` 找到模板
2. 读模板字段结构
3. 收集内容（本周待办 + 本周会议 + 可选听记结论）
4. **按模板字段组织后完整展示给你确认**
5. 确认后提交

## 实际用法

```
我最近收到哪些日志？
```

真机实测（用例 c7）：助手正确用了 ISO-8601 时间参数，没有和 `oa` 的 epoch 毫秒搞混。
