Files
gloria/README.md

190 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2026-03-03 02:14:47 +08:00
# Gloria - 福州港日报管理系统
从飞书获取排班信息,从 Metabase 获取船舶作业数据,从 Confluence 获取船舶报告,从 Jira 获取故障信息,生成标准化日报和交接班报告。
2026-03-03 02:14:47 +08:00
## 功能
- **日报生成**: 自动生成每日作业报告
- **班次交接报告**: 分别统计白班/夜班作业情况
- 船号显示 (462#、463# 等)
- 故障次数/故障率
- 人工介入次数/介入率
- 作业效率 (循环/车/小时)
- **Confluence 集成**: 从实船作业统计页面获取船舶数据
- **Jira 集成**: 查询故障单数量
2026-03-03 02:14:47 +08:00
- **GUI 界面**: 基于 Tkinter 的图形界面
- **CLI 支持**: 命令行方式运行
## 项目结构
```
Gloria/
├── daily_report_gui.py # GUI 入口
├── report_generator.py # 日报生成核心
├── shift_report.py # 班次交接报告
├── feishu/ # 飞书 API 集成
├── metabase/ # Metabase 数据查询
├── confluence/ # Confluence API 集成
├── jira_client.py # Jira API 客户端
2026-03-03 02:14:47 +08:00
└── template/ # 报告模板
```
## 快速开始
### 环境要求
- Python 3.10+
- 依赖: `requests`, `python-dotenv`
### 安装
```bash
pip install requests python-dotenv
```
### 配置
创建 `.env` 文件:
```bash
# Metabase
MATEBASE_USERNAME=your_username
MATEBASE_PASSWORD=your_password
# 飞书
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret
FEISHU_SPREADSHEET_TOKEN=your_spreadsheet_token
# Confluence (可选)
CONFLUENCE_URL=https://confluence.westwell-lab.com
CONFLUENCE_TOKEN=your_token
# Jira (可选)
JIRA_URL=https://jira.westwell-lab.com
JIRA_USERNAME=your_username
JIRA_TOKEN=your_token
2026-03-03 02:14:47 +08:00
```
### 运行
```bash
# GUI 模式
python daily_report_gui.py
# 日报 (CLI)
python report_generator.py --date 2026-03-01
# 班次交接报告
python shift_report.py --date 2026-03-01 --shift day
python shift_report.py --date 2026-03-01 --shift night
python shift_report.py --date 2026-03-01 --shift all
2026-03-03 02:14:47 +08:00
```
## 模块使用
### Metabase 数据查询
#### 按时间范围查询作业数据 (time_operations.py)
```bash
# CLI 方式
python metabase/time_operations.py --start 2026-02-01 --end 2026-03-01
python metabase/time_operations.py -s 2026-02-01 -e 2026-03-01
# Python API
from metabase import TimeOperationsClient
client = TimeOperationsClient()
data = client.get_operations_by_time("2026-03-01 08:00:00", "2026-03-01 20:00:00")
# 返回: {'cnt20': 100, 'cnt40': 50, 'teu': 200, ...}
```
**输出字段:**
| 字段 | 说明 |
|------|------|
| cnt20 | 20尺箱量 |
| cnt40 | 40尺箱量 |
| teu | TEU 数 |
| cntAll | 总箱数 |
#### 按船舶查询作业数据 (vessel_operations.py)
```bash
# CLI 方式
python metabase/vessel_operations.py 260301-华晟67
# Python API
from metabase import VesselOperationsClient
client = VesselOperationsClient()
data = client.get_vessel_operations("260301-华晟67")
# 返回: {'cnt20': 44, 'cnt40': 22, 'teu': 88, 'cycle_h_normal': 2.35, ...}
```
**输出字段:**
| 字段 | 说明 |
|------|------|
| cnt20 | 20尺箱量 |
| cnt40 | 40尺箱量 |
| teu | TEU 数 |
| cycle_h_normal | 无人集卡效率 (循环/车/小时) |
| cycle_h_filtered | 无人集卡效率 (剔除异常) |
| start_time | 作业开始时间 |
| end_time | 作业结束时间 |
### 飞书排班查询
```python
from feishu import FeishuScheduleManager
manager = FeishuScheduleManager()
# 获取指定日期排班
schedule = manager.get_schedule_for_date("2026-03-01")
# 返回: {'day_shift': '张三', 'night_shift': '李四', ...}
# 获取今天/明天排班
today = manager.get_schedule_for_today()
tomorrow = manager.get_schedule_for_tomorrow()
```
### Confluence 船舶报告
```python
from confluence import VesselReportManager
manager = VesselReportManager()
# 获取指定日期范围内的报告
reports = manager.get_vessel_reports_in_range("2026-03-01", "2026-03-02")
# 返回包含船号、船名、故障次数、人工介入次数等的报告列表
```
2026-03-03 02:14:47 +08:00
## 班次时间
| 类型 | 时间范围 |
|------|----------|
| 白班 | 08:00 - 20:00 |
| 夜班 | 20:00 - 次日 08:00 |
## N/A 记录处理
Metabase 中可能出现 vesselVisitID 为 "N/A" 的记录(通常是数据同步问题导致)。系统会自动根据作业时间将这些记录归属到对应的船舶:
- 检查 N/A 记录的时间范围
- 与其他船舶的时间范围进行重叠判断
- 将 N/A 记录的 TEU 合并到时间重叠的船舶
2026-03-03 02:14:47 +08:00
## 注意事项
- 程序需在 **8:00 后运行**,确保最后一条船指令结束时间超过 8 点
- 飞书 Token 自动刷新,提前 30 分钟续期
- Metabase 无原生 Python SDK使用 REST API
- Confluence 和 Jira 需要配置相应 Token 才能启用完整功能
2026-03-03 02:14:47 +08:00
## License
MIT