feat: 添加飞书表格模块支持排班人员信息获取

- 新增 src/feishu_v2.py: 飞书表格API客户端,支持数据库存储和2026年全年排班表
- 新增 src/schedule_database.py: 排班信息数据库模块,用于缓存排班数据
- 新增 docs/feishu_data_flow.md: 飞书数据流文档
- 新增 plans/feishu_scheduling_plan.md: 飞书排班表模块设计文档
- 更新 src/report.py: 使用新的飞书模块获取排班人员信息
- 更新 src/gui.py: 启动时自动获取新数据,添加auto_fetch_data方法
- 更新 .env.example: 添加飞书配置示例
- 更新 AGENTS.md: 更新项目文档
- 更新 main.py: 集成飞书模块

功能特性:
1. 支持从飞书表格获取排班人员信息
2. 支持2025年月度表格和2026年全年排班表
3. 使用SQLite数据库缓存,减少API调用
4. 自动检测表格更新
5. GUI启动时自动获取最新数据
6. 日报中正确显示次日班次人员信息
This commit is contained in:
2025-12-31 00:03:34 +08:00
parent 272d0156bb
commit dc2a55bbf4
10 changed files with 1908 additions and 13 deletions

View File

@@ -22,7 +22,10 @@ OrbitIn/
├── debug/ # 调试输出目录
│ └── layout_output_*.txt # 带时间戳的调试文件
├── data/ # 数据目录
── daily_logs.db # SQLite3 数据库
── daily_logs.db # SQLite3 数据库
│ └── schedule_cache.json # 排班数据缓存
├── plans/ # 设计文档目录
│ └── feishu_scheduling_plan.md # 飞书排班表模块设计
└── src/ # 代码模块
├── __init__.py
├── confluence.py # Confluence API 客户端
@@ -30,7 +33,8 @@ OrbitIn/
├── parser.py # 日志解析器
├── database.py # SQLite3 数据库操作
├── report.py # 日报生成器
── gui.py # GUI 图形界面
── gui.py # GUI 图形界面
└── feishu.py # 飞书表格 API 客户端(新增)
```
## 核心模块
@@ -69,6 +73,7 @@ OrbitIn/
- `generate_report(date)` - 生成日报
- `print_report(date)` - 打印日报
- `get_shift_personnel(date)` - 获取班次人员(从飞书排班表获取)
### OrbitInGUI (src/gui.py:22)
@@ -76,6 +81,12 @@ OrbitIn/
- 支持获取数据、生成日报、添加未统计数据
- 日报内容可复制
### FeishuScheduleManager (src/feishu.py:150)
- `get_schedule_for_date(date)` - 获取指定日期的排班信息
- `get_schedule_for_today()` - 获取今天的排班信息
- `get_schedule_for_tomorrow()` - 获取明天的排班信息
## 文本格式约定
- 列表前缀:`•` 用于 `ul`,数字+点用于 `ol`
@@ -113,12 +124,18 @@ python3 src/gui.py
## 配置
`.env` 文件中配置 Confluence 连接信息:
`.env` 文件中配置连接信息:
```bash
# Confluence 配置
CONFLUENCE_BASE_URL=https://confluence.westwell-lab.com/rest/api
CONFLUENCE_TOKEN=your-api-token
CONFLUENCE_CONTENT_ID=155764524
# 飞书表格配置(用于获取排班人员信息)
FEISHU_BASE_URL=https://open.feishu.cn/open-apis/sheets/v3
FEISHU_TOKEN=your-feishu-api-token
FEISHU_SPREADSHEET_TOKEN=EgNPssi2ghZ7BLtGiTxcIBUmnVh
```
## 测试模式