# 钉钉工作日志查询

查询钉钉工作日志（周报/日报等）。

## 接口信息

- **接口地址**: `POST https://oapi.dingtalk.com/topapi/report/list`
- **认证方式**: access_token（基于企业内部应用）
- **时间单位**: ⚠️ **毫秒**（不是秒！）

## 前置条件

1. 获取 access_token：
```bash
curl -s -X POST 'https://api.dingtalk.com/v1.0/oauth2/accessToken' \
  -H 'Content-Type: application/json' \
  -d '{
    "appKey": "dingklemniq8uqk5qbgx",
    "appSecret": "_8EHgyhvHRHRMx6fZbh9LNpQoxyYl3At0b-fXXlQiahwupbt9oY5P6Grj8IM9Dx8"
  }'
```

2. 凭证存储在 `TOOLS.md`：
   - AgentId: 4404185308
   - Client ID (AppKey): dingklemniq8uqk5qbgx
   - Client Secret (AppSecret): _8EHgyhvHRHRMx6fZbh9LNpQoxyYl3At0b-fXXlQiahwupbt9oY5P6Grj8IM9Dx8

## 调用示例

```bash
# 查询指定用户的日志（时间单位：毫秒）
curl -s 'https://oapi.dingtalk.com/topapi/report/list?access_token={TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{
    "userid": "121922510028034588",
    "offset": 0,
    "size": 10,
    "start_time": 1738329600000,
    "end_time": 1743292800000,
    "cursor": 0
  }'
```

## 参数说明

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| userid | string | ✅ | 用户的钉钉 userid |
| start_time | number | ✅ | 开始时间，**毫秒**时间戳 |
| end_time | number | ✅ | 结束时间，**毫秒**时间戳 |
| cursor | number | ✅ | 分页游标（首次查询传 0） |
| size | number | ✅ | 每页数量（建议 10） |
| offset | number | ❌ | 偏移量（兼容旧版，可不传） |

## 返回字段说明

日志内容在 `result.data_list` 数组中，每个元素的 `contents` 数组包含各字段：

| contents.key | 说明 |
|-------------|------|
| 本周完成工作 / 本日完成工作 | 完成事项 |
| 本周工作总结 / 本日工作总结 | 详细总结 |
| 下周工作计划 / 下日工作计划 | 后续计划 |
| 需协调与帮助 | 协调事项 |
| 图片 | 图片列表 |
| 附件 | 附件列表 |

其他字段：
- `report_id`: 日志ID
- `template_name`: 日志模板名称（如"经理人周报"）
- `creator_name`: 创建人姓名
- `dept_name`: 部门名称
- `create_time`: 创建时间（毫秒）

## 分页查询

通过 `cursor` 分页：
1. 首次查询 `cursor: 0`
2. 返回 `next_cursor` 作为下次查询的游标
3. `has_more: false` 表示最后一页

## 注意事项

1. ⚠️ **时间单位必须是毫秒**：如 `1743292800000`（不能用 `1743292800`）
2. ⚠️ **字段名是 `userid`（全小写）**，不是 `userId`
3. ⚠️ **API 截断限制**：日志内容单字段最多返回约 1000 字符，超长部分会被截断，无法通过此接口获取完整内容
