58 lines
1.3 KiB
Markdown
58 lines
1.3 KiB
Markdown
|
|
# FEISHU 飞书模块
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
飞书表格 API 集成,用于获取排班信息。支持自动 Token 刷新。
|
||
|
|
|
||
|
|
## 结构
|
||
|
|
|
||
|
|
```
|
||
|
|
feishu/
|
||
|
|
├── __init__.py # 统一导出
|
||
|
|
├── client.py # FeishuSheetsClient - HTTP客户端
|
||
|
|
├── manager.py # FeishuScheduleManager - 业务入口
|
||
|
|
└── parser.py # ScheduleDataParser - 表格解析
|
||
|
|
```
|
||
|
|
|
||
|
|
## 查找指南
|
||
|
|
|
||
|
|
| 任务 | 位置 |
|
||
|
|
|------|------|
|
||
|
|
| 修改API调用 | `client.py` |
|
||
|
|
| 获取排班信息 | `manager.py:get_schedule_for_date()` |
|
||
|
|
| 解析新表格格式 | `parser.py` |
|
||
|
|
|
||
|
|
## 使用方式
|
||
|
|
|
||
|
|
```python
|
||
|
|
from feishu import FeishuScheduleManager
|
||
|
|
|
||
|
|
manager = FeishuScheduleManager()
|
||
|
|
schedule = manager.get_schedule_for_date("2026-03-01")
|
||
|
|
# {'day_shift': '张三', 'night_shift': '李四', ...}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 关键逻辑
|
||
|
|
|
||
|
|
### Token 管理 (client.py)
|
||
|
|
- 自动获取 `tenant_access_token`
|
||
|
|
- 提前30分钟刷新
|
||
|
|
- 备用: 环境变量 `FEISHU_TOKEN`
|
||
|
|
|
||
|
|
### 表格选择 (manager.py:93-148)
|
||
|
|
- 2026年优先使用年度表格
|
||
|
|
- 其他年份优先月度表格
|
||
|
|
- 降级使用第一个表格
|
||
|
|
|
||
|
|
### 表格解析 (parser.py)
|
||
|
|
- 月度表格: 第一行为表头,查找日期列
|
||
|
|
- 年度表格: 查找月份块,再查日期列
|
||
|
|
|
||
|
|
## 环境变量
|
||
|
|
|
||
|
|
```
|
||
|
|
FEISHU_BASE_URL=https://open.feishu.cn/open-apis/sheets/v3
|
||
|
|
FEISHU_APP_ID=cli_xxx
|
||
|
|
FEISHU_APP_SECRET=xxx
|
||
|
|
FEISHU_SPREADSHEET_TOKEN=xxx
|
||
|
|
```
|