docs: 重写README为项目说明文档,包含功能特性、项目结构、核心模块说明
This commit is contained in:
483
README.md
483
README.md
@@ -1,358 +1,207 @@
|
|||||||
# OrbitIn - 码头作业日志管理系统使用手册
|
# OrbitIn
|
||||||
|
|
||||||
从 Confluence API 获取交接班日志,提取作业数据并生成统计报表。
|
码头作业日志管理工具。从 Confluence API 获取交接班日志,提取作业数据并生成统计报表。
|
||||||
|
|
||||||
---
|
## 功能特性
|
||||||
|
|
||||||
## 目录
|
- **数据获取**:从 Confluence API 获取交接班日志 HTML
|
||||||
|
- **文本提取**:提取保留布局的文本内容,支持表格格式化
|
||||||
|
- **数据库存储**:SQLite3 数据库存储,支持二次靠泊记录合并
|
||||||
|
- **报表生成**:生成日报和月度统计,包含完成率计算
|
||||||
|
- **数据调整**:支持手动添加/剔除统计数据,月底数据自动转移
|
||||||
|
- **智能调整**:月底最后一天自动询问剔除12点后数据,月初自动添加上月数据
|
||||||
|
- **GUI界面**:tkinter 图形界面,支持一键操作
|
||||||
|
- **飞书集成**:自动获取排班人员信息,支持应用凭证自动刷新token
|
||||||
|
- **月份页面映射**:支持配置各月份的Confluence页面ID,解决每月页面ID变化问题
|
||||||
|
|
||||||
1. [快速开始](#1-快速开始)
|
## 快速开始
|
||||||
2. [配置说明](#2-配置说明)
|
|
||||||
3. [GUI界面使用](#3-gui界面使用)
|
|
||||||
4. [命令行操作](#4-命令行操作)
|
|
||||||
5. [常见场景](#5-常见场景)
|
|
||||||
6. [故障排除](#6-故障排除)
|
|
||||||
|
|
||||||
---
|
### 安装依赖
|
||||||
|
|
||||||
## 1. 快速开始
|
|
||||||
|
|
||||||
### 1.1 环境要求
|
|
||||||
|
|
||||||
- Python 3.7+
|
|
||||||
- pip 包管理器
|
|
||||||
|
|
||||||
### 1.2 安装依赖
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /path/to/OrbitIn
|
|
||||||
pip install requests beautifulsoup4 python-dotenv
|
pip install requests beautifulsoup4 python-dotenv
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.3 首次运行
|
### 配置
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 复制配置文件
|
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
|
# 编辑 .env 文件,填入配置
|
||||||
# 编辑配置文件(见下一节)
|
|
||||||
|
|
||||||
# 启动GUI界面
|
|
||||||
python3 src/gui.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
### 使用
|
||||||
|
|
||||||
## 2. 配置说明
|
|
||||||
|
|
||||||
### 2.1 配置文件位置
|
|
||||||
|
|
||||||
项目根目录下的 `.env` 文件(需手动创建或从 `.env.example` 复制)
|
|
||||||
|
|
||||||
### 2.2 必填配置
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Confluence API 配置
|
# GUI 方式
|
||||||
|
python3 src/gui.py
|
||||||
|
|
||||||
|
# CLI 方式
|
||||||
|
python3 main.py fetch-save # 获取并保存数据
|
||||||
|
python3 main.py report 2025-12-28 # 生成日报
|
||||||
|
```
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
OrbitIn/
|
||||||
|
├── main.py # CLI 入口
|
||||||
|
├── README.md # 项目说明
|
||||||
|
├── .env # 环境配置(敏感信息)
|
||||||
|
├── .env.example # 环境配置示例
|
||||||
|
├── data/ # 数据目录
|
||||||
|
│ ├── daily_logs.db # SQLite3 数据库
|
||||||
|
│ └── schedule_cache.json # 排班数据缓存
|
||||||
|
├── logs/ # 日志目录
|
||||||
|
│ └── app.log # 应用日志
|
||||||
|
└── src/ # 代码模块
|
||||||
|
├── __init__.py
|
||||||
|
├── config.py # 统一配置管理
|
||||||
|
├── logging_config.py # 统一日志配置
|
||||||
|
├── report.py # 报表生成器
|
||||||
|
├── gui.py # GUI 图形界面
|
||||||
|
├── database/ # 数据库模块
|
||||||
|
│ ├── base.py # 数据库基类
|
||||||
|
│ ├── daily_logs.py # 每日日志数据库
|
||||||
|
│ └── schedules.py # 排班数据库
|
||||||
|
├── confluence/ # Confluence API 模块
|
||||||
|
│ ├── client.py # Confluence API 客户端
|
||||||
|
│ ├── parser.py # HTML 内容解析器
|
||||||
|
│ ├── text.py # HTML 文本提取器
|
||||||
|
│ ├── log_parser.py # 日志解析器
|
||||||
|
│ └── manager.py # 内容管理器
|
||||||
|
└── feishu/ # 飞书 API 模块
|
||||||
|
├── client.py # 飞书 API 客户端
|
||||||
|
├── parser.py # 排班数据解析器
|
||||||
|
└── manager.py # 飞书排班管理器
|
||||||
|
```
|
||||||
|
|
||||||
|
## 核心模块
|
||||||
|
|
||||||
|
### ConfluenceClient (src/confluence/client.py)
|
||||||
|
|
||||||
|
- `fetch_content(content_id, expand)` - 获取页面内容
|
||||||
|
- `get_html(content_id)` - 获取 HTML 字符串
|
||||||
|
|
||||||
|
### HTMLTextExtractor (src/confluence/text.py)
|
||||||
|
|
||||||
|
- `extract(html)` - 从 HTML 提取保留布局的文本
|
||||||
|
- 使用 `html.parser`(非 lxml)
|
||||||
|
- 移除带 `ac:name` 属性的 Confluence 宏元素
|
||||||
|
- 表格格式化使用 `ljust()` 列对齐
|
||||||
|
|
||||||
|
### HandoverLogParser (src/confluence/log_parser.py)
|
||||||
|
|
||||||
|
- `parse(text)` - 解析日志文本,返回 `ShipLog` 列表
|
||||||
|
- 自动合并同日期同班次同船名的记录(二次靠泊)
|
||||||
|
- `ShipLog` 数据类:date, shift, ship_name, teu, efficiency, vehicles
|
||||||
|
|
||||||
|
### DailyLogsDatabase (src/database/daily_logs.py)
|
||||||
|
|
||||||
|
- `insert(log)` - 插入单条记录(存在则跳过)
|
||||||
|
- `insert_many(logs)` - 批量插入
|
||||||
|
- `query_by_date(date)` - 按日期查询
|
||||||
|
- `query_by_ship(ship_name)` - 按船名查询
|
||||||
|
- `query_all(limit)` - 查询所有
|
||||||
|
- `get_stats()` - 获取统计信息
|
||||||
|
- `get_ships_with_monthly_teu(year_month)` - 获取当月每艘船的作业量
|
||||||
|
- `insert_cross_month_exclusion()` - 跨月数据调整
|
||||||
|
- `insert_confluence_page()` - 保存月份页面ID映射
|
||||||
|
- `get_confluence_page_for_date()` - 获取指定日期对应的页面ID
|
||||||
|
|
||||||
|
### DailyReportGenerator (src/report.py)
|
||||||
|
|
||||||
|
- `generate_report(date)` - 生成日报
|
||||||
|
- `print_report(date)` - 打印日报
|
||||||
|
- `get_shift_personnel(date)` - 获取班次人员(从飞书排班表获取)
|
||||||
|
|
||||||
|
### OrbitInGUI (src/gui.py)
|
||||||
|
|
||||||
|
- tkinter 图形界面
|
||||||
|
- 支持获取数据、生成日报
|
||||||
|
- 支持手动剔除次月多统计的船
|
||||||
|
- 日报内容可复制
|
||||||
|
|
||||||
|
### FeishuScheduleManager (src/feishu/manager.py)
|
||||||
|
|
||||||
|
- `get_schedule_for_date(date)` - 获取指定日期的排班信息
|
||||||
|
- `get_schedule_for_today()` - 获取今天的排班信息
|
||||||
|
- `refresh_all_schedules(days)` - 批量刷新排班信息
|
||||||
|
|
||||||
|
## 文本格式约定
|
||||||
|
|
||||||
|
- 列表前缀:`•` 用于 `ul`,数字+点用于 `ol`
|
||||||
|
- 粗体使用 `**text**`,斜体使用 `*text*`
|
||||||
|
- 水平线使用 `─` (U+2500) 字符
|
||||||
|
- 链接渲染为 `text (url)`
|
||||||
|
|
||||||
|
## 配置
|
||||||
|
|
||||||
|
在 `.env` 文件中配置:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Confluence 配置
|
||||||
CONFLUENCE_BASE_URL=https://confluence.westwell-lab.com/rest/api
|
CONFLUENCE_BASE_URL=https://confluence.westwell-lab.com/rest/api
|
||||||
CONFLUENCE_TOKEN=your-api-token
|
CONFLUENCE_TOKEN=your-api-token
|
||||||
CONFLUENCE_CONTENT_ID=155764524
|
CONFLUENCE_CONTENT_ID=155764524
|
||||||
```
|
|
||||||
|
|
||||||
**如何获取Confluence API Token:**
|
# 飞书表格配置
|
||||||
1. 登录 Confluence
|
|
||||||
2. 点击右上角头像 → Settings → Security → API tokens
|
|
||||||
3. 创建新 token 并复制
|
|
||||||
|
|
||||||
### 2.3 可选配置
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 飞书表格配置(用于获取排班人员信息)
|
|
||||||
FEISHU_BASE_URL=https://open.feishu.cn/open-apis/sheets/v3
|
FEISHU_BASE_URL=https://open.feishu.cn/open-apis/sheets/v3
|
||||||
|
FEISHU_TOKEN=your-feishu-api-token
|
||||||
FEISHU_SPREADSHEET_TOKEN=EgNPssi2ghZ7BLtGiTxcIBUmnVh
|
FEISHU_SPREADSHEET_TOKEN=EgNPssi2ghZ7BLtGiTxcIBUmnVh
|
||||||
FEISHU_APP_ID=your-feishu-app-id
|
FEISHU_APP_ID=your-feishu-app-id
|
||||||
FEISHU_APP_SECRET=your-feishu-app-secret
|
FEISHU_APP_SECRET=your-feishu-app-secret
|
||||||
|
|
||||||
# 业务配置
|
# 业务配置
|
||||||
DAILY_TARGET_TEU=300 # 每日目标TEU,用于计算完成率
|
DAILY_TARGET_TEU=300
|
||||||
DUTY_PHONE=13107662315 # 值班电话,显示在日报中
|
DUTY_PHONE=13107662315
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2.4 月份页面ID映射
|
## 命令
|
||||||
|
|
||||||
由于每月 Confluence 页面ID不同,建议配置月份映射:
|
|
||||||
|
|
||||||
| 月份 | 页面ID | 用途 |
|
|
||||||
|------|--------|------|
|
|
||||||
| 2025-12 | xxx | 获取12月日志 |
|
|
||||||
| 2026-01 | xxx | 获取1月日志 |
|
|
||||||
|
|
||||||
在 GUI 中点击「管理页面ID映射」进行配置。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. GUI界面使用
|
|
||||||
|
|
||||||
### 3.1 启动GUI
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 默认:获取、提取、解析并保存到数据库
|
||||||
|
python3 main.py
|
||||||
|
|
||||||
|
# 仅获取HTML并提取文本
|
||||||
|
python3 main.py fetch
|
||||||
|
|
||||||
|
# 生成日报
|
||||||
|
python3 main.py report 2025-12-28
|
||||||
|
|
||||||
|
# 生成昨日日报
|
||||||
|
python3 main.py report-today
|
||||||
|
|
||||||
|
# 手动剔除次月多统计的船
|
||||||
|
python3 main.py --cross-exclude --source-date 2025-12-31 --target-date 2026-01-01 --ship-name "学友洋山" --teu 100
|
||||||
|
|
||||||
|
# 配置测试
|
||||||
|
python3 main.py config-test
|
||||||
|
|
||||||
|
# GUI界面
|
||||||
python3 src/gui.py
|
python3 src/gui.py
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.2 界面布局
|
## 测试模式
|
||||||
|
|
||||||
```
|
如果设置了环境变量 `DEBUG_MODE=true`,系统会使用本地 `layout_output.txt` 文件而不是从 Confluence API 获取数据,方便离线测试。
|
||||||
┌─────────────────────────────────────────────────────────────┐
|
|
||||||
│ OrbitIn - 码头作业日志管理工具 │
|
|
||||||
├──────────────────────────┬──────────────────────────────────┤
|
|
||||||
│ │ 日报内容 (可复制): │
|
|
||||||
│ [获取并处理数据] │ ┌────────────────────────────┐ │
|
|
||||||
│ [重置数据库] │ │ │ │
|
|
||||||
│ ────────────────── │ │ 2026年1月1日 日报 │ │
|
|
||||||
│ 生成日报: │ │ ... │ │
|
|
||||||
│ [____2026-01-01__] │ │ │ │
|
|
||||||
│ [生成日报] [今日日报] │ └────────────────────────────┘ │
|
|
||||||
│ ────────────────── │ │
|
|
||||||
│ [剔除次月多统计] │ [复制日报] [复制全部] │
|
|
||||||
│ ────────────────── │ │
|
|
||||||
│ [数据库统计] │ 日志输出: │
|
|
||||||
│ [清空输出] │ ┌────────────────────────────┐ │
|
|
||||||
│ ────────────────── │ │ [INFO] 准备就绪... │ │
|
|
||||||
│ [管理页面ID映射] │ └────────────────────────────┘ │
|
|
||||||
│ │ │
|
|
||||||
└──────────────────────────┴──────────────────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.3 核心功能
|
## 注意事项
|
||||||
|
|
||||||
| 功能按钮 | 说明 | 快捷键 |
|
1. 二次靠泊记录会在解析时自动合并
|
||||||
|---------|------|--------|
|
2. 重复获取数据不会累加TEU(会跳过已存在的记录)
|
||||||
| 获取并处理数据 | 从Confluence获取最新数据 | Ctrl+Enter |
|
3. 未统计数据在报表中不显示,但会计算到当月实际作业量
|
||||||
| 今日日报 | 统计作业的作业情况 | - |
|
4. 昨日日报按钮默认获取前一天的数据(因为通常在第二天汇报)
|
||||||
| 剔除次月多统计 | 手动调整跨月数据 | - |
|
5. 月底数据调整适用于**每个月最后一天**,而不仅限12月
|
||||||
| 数据库统计 | 查看当月作业统计 | - |
|
|
||||||
| 管理页面ID映射 | 配置各月页面ID | - |
|
|
||||||
|
|
||||||
### 3.4 数据获取流程
|
## 技术栈
|
||||||
|
|
||||||
1. 启动GUI(自动获取前一天数据)
|
- Python 3.7+
|
||||||
2. 查看日报内容
|
- SQLite3
|
||||||
3. 如需调整,点击「剔除次月多统计」
|
- Requests (HTTP 客户端)
|
||||||
|
- BeautifulSoup4 (HTML 解析)
|
||||||
|
- tkinter (GUI)
|
||||||
|
- 类型提示
|
||||||
|
|
||||||
### 3.5 使用「剔除次月多统计」功能
|
## 许可证
|
||||||
|
|
||||||
**使用场景:**
|
MIT
|
||||||
- 每月最后一天(如1月31日、2月28日)24:00后还有作业
|
|
||||||
- 需要将这部分数据算到次月1日
|
|
||||||
- 次月1日或2日整理数据时,发现上月最后一天有数据未剔除
|
|
||||||
|
|
||||||
**操作步骤:**
|
|
||||||
|
|
||||||
1. 点击左侧「剔除次月多统计」按钮
|
|
||||||
2. 弹窗中选择源月份和目标月份:
|
|
||||||
- 源月份:被剔除数据的月份(如 2025-01,选择1月的最后一天)
|
|
||||||
- 目标月份:数据转移到的月份(如 2025-02,选择2月的第一天)
|
|
||||||
3. 从列表中选择要转移的船,或手动输入
|
|
||||||
4. 修改TEU值(如只需部分转移)
|
|
||||||
5. 点击「确定」确认操作
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 命令行操作
|
|
||||||
|
|
||||||
### 4.1 命令列表
|
|
||||||
|
|
||||||
| 命令 | 说明 | 示例 |
|
|
||||||
|-----|------|------|
|
|
||||||
| `fetch-save` | 获取并保存数据 | `python3 main.py fetch-save` |
|
|
||||||
| `fetch` | 仅获取HTML | `python3 main.py fetch` |
|
|
||||||
| `report <日期>` | 生成日报 | `python3 main.py report 2025-12-28` |
|
|
||||||
| `report-today` | 生成今日日报 | `python3 main.py report-today` |
|
|
||||||
| `config-test` | 测试配置连接 | `python3 main.py config-test` |
|
|
||||||
|
|
||||||
### 4.2 跨月调整命令
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 将数据从1月31日转移到2月1日
|
|
||||||
python3 main.py \
|
|
||||||
--cross-exclude \
|
|
||||||
--source-date 2025-01-31 \
|
|
||||||
--target-date 2025-02-01 \
|
|
||||||
--ship-name "学友洋山" \
|
|
||||||
--teu 100 \
|
|
||||||
--twenty 50 \
|
|
||||||
--forty 25
|
|
||||||
```
|
|
||||||
|
|
||||||
**参数说明:**
|
|
||||||
|
|
||||||
| 参数 | 必填 | 说明 |
|
|
||||||
|-----|------|------|
|
|
||||||
| `--source-date` | 是 | 源日期(被剔除数据的日期) |
|
|
||||||
| `--target-date` | 是 | 目标日期(数据转移到的日期) |
|
|
||||||
| `--ship-name` | 是 | 船名 |
|
|
||||||
| `--teu` | 是 | TEU数量 |
|
|
||||||
| `--twenty` | 否 | 20尺箱量(默认0) |
|
|
||||||
| `--forty` | 否 | 40尺箱量(默认0) |
|
|
||||||
| `--reason` | 否 | 调整原因(默认"手动剔除次月多统计的船") |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 常见场景
|
|
||||||
|
|
||||||
### 场景1:日常获取数据
|
|
||||||
|
|
||||||
**操作:**
|
|
||||||
1. 每天打开GUI
|
|
||||||
2. 自动获取前一天数据
|
|
||||||
3. 查看/复制日报
|
|
||||||
|
|
||||||
**说明:**
|
|
||||||
- 程序在第二天自动获取前一天的日志
|
|
||||||
- 无需手动干预
|
|
||||||
|
|
||||||
### 场景2:月底数据处理
|
|
||||||
|
|
||||||
**问题:**
|
|
||||||
- 每月最后一天24:00后还有作业(如1月31日、2月28日、3月31日...)
|
|
||||||
- 需要将这部分数据算到次月1日
|
|
||||||
|
|
||||||
**操作:**
|
|
||||||
1. 月底最后一天获取数据后,系统会自动弹出询问
|
|
||||||
2. 输入需要剔除的数据(船名、TEU、尺寸)
|
|
||||||
3. 系统自动将数据转移到次月1日
|
|
||||||
|
|
||||||
### 场景3:月初补调数据
|
|
||||||
|
|
||||||
**问题:**
|
|
||||||
- 次月1日或2日打开工具整理数据
|
|
||||||
- 发现上月最后一天的数据忘记剔除(如1月2日发现1月31日未剔除)
|
|
||||||
|
|
||||||
**操作:**
|
|
||||||
1. 点击「剔除次月多统计」
|
|
||||||
2. 源月份选择上月(如 2025-01)
|
|
||||||
3. 目标月份选择当前月(如 2025-02)
|
|
||||||
4. 选择要转移的船或手动输入
|
|
||||||
5. 确认完成
|
|
||||||
|
|
||||||
### 场景4:跨日船处理(部分转移)
|
|
||||||
|
|
||||||
**问题:**
|
|
||||||
- 一艘船在月底和次月都有作业
|
|
||||||
- 只需要转移部分TEU到次月
|
|
||||||
|
|
||||||
**操作:**
|
|
||||||
1. 点击「剔除次月多统计」
|
|
||||||
2. 从列表中选择该船
|
|
||||||
3. 手动修改TEU值(如原200TEU,改为50TEU,表示只转移50TEU)
|
|
||||||
4. 确认完成
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. 故障排除
|
|
||||||
|
|
||||||
### 6.1 连接失败
|
|
||||||
|
|
||||||
**症状:** 无法获取Confluence数据
|
|
||||||
|
|
||||||
**排查步骤:**
|
|
||||||
1. 检查 `.env` 文件中的 `CONFLUENCE_BASE_URL` 和 `CONFLUENCE_TOKEN`
|
|
||||||
2. 确认API token未过期
|
|
||||||
3. 测试网络连接
|
|
||||||
|
|
||||||
**解决方案:**
|
|
||||||
```bash
|
|
||||||
# 测试配置
|
|
||||||
python3 main.py config-test
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6.2 页面ID错误
|
|
||||||
|
|
||||||
**症状:** 获取的数据不对或为空
|
|
||||||
|
|
||||||
**原因:** 每月Confluence页面ID不同
|
|
||||||
|
|
||||||
**解决方案:**
|
|
||||||
1. 在GUI中点击「管理页面ID映射」
|
|
||||||
2. 添加当前月份的页面ID
|
|
||||||
|
|
||||||
### 6.3 数据重复
|
|
||||||
|
|
||||||
**症状:** 同一艘船出现多次
|
|
||||||
|
|
||||||
**原因:** 二次靠泊记录未被正确合并
|
|
||||||
|
|
||||||
**说明:** 系统会自动合并同一天的二次靠泊记录,无需手动处理
|
|
||||||
|
|
||||||
### 6.4 飞书数据获取失败
|
|
||||||
|
|
||||||
**排查步骤:**
|
|
||||||
1. 验证飞书表格权限
|
|
||||||
2. 检查 `FEISHU_APP_ID` 和 `FEISHU_APP_SECRET`
|
|
||||||
3. 确认应用已发布到企业
|
|
||||||
|
|
||||||
### 6.5 日志查看
|
|
||||||
|
|
||||||
**日志文件位置:** `logs/app.log`
|
|
||||||
|
|
||||||
**日志级别:**
|
|
||||||
- 默认:INFO
|
|
||||||
- 调试:设置环境变量 `LOG_LEVEL=DEBUG`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 查看实时日志
|
|
||||||
tail -f logs/app.log
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 技术支持
|
|
||||||
|
|
||||||
如遇到问题,请:
|
|
||||||
1. 查看日志输出
|
|
||||||
2. 检查配置文件
|
|
||||||
3. 联系管理员
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 附录
|
|
||||||
|
|
||||||
### A. 文件结构
|
|
||||||
|
|
||||||
```
|
|
||||||
OrbitIn/
|
|
||||||
├── main.py # CLI入口
|
|
||||||
├── README.md # 使用手册
|
|
||||||
├── .env # 配置(敏感信息)
|
|
||||||
├── .env.example # 配置模板
|
|
||||||
├── data/ # 数据目录
|
|
||||||
│ ├── daily_logs.db # SQLite3数据库
|
|
||||||
│ └── schedule_cache.json # 排班缓存
|
|
||||||
├── logs/ # 日志目录
|
|
||||||
│ └── app.log # 应用日志
|
|
||||||
└── src/ # 源代码
|
|
||||||
├── config.py # 配置管理
|
|
||||||
├── gui.py # GUI界面
|
|
||||||
├── report.py # 报表生成
|
|
||||||
├── database/ # 数据库模块
|
|
||||||
├── confluence/ # Confluence API
|
|
||||||
└── feishu/ # 飞书 API
|
|
||||||
```
|
|
||||||
|
|
||||||
### B. 数据库表结构
|
|
||||||
|
|
||||||
**daily_logs 表:** 存储每日作业记录
|
|
||||||
- id, date, shift, ship_name, teu, twenty_feet, forty_feet
|
|
||||||
|
|
||||||
**manual_adjustments 表:** 存储手动调整记录
|
|
||||||
- id, date, ship_name, teu, adjustment_type, note
|
|
||||||
|
|
||||||
### C. 版本历史
|
|
||||||
|
|
||||||
- v1.0 - 初始版本
|
|
||||||
- v1.1 - 添加跨月调整功能
|
|
||||||
- v1.2 - 添加月份页面ID映射
|
|
||||||
- v1.3 - 优化GUI界面
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**最后更新:** 2026年1月
|
|
||||||
|
|||||||
Reference in New Issue
Block a user