# OrbitIn - 码头作业日志管理系统 从 Confluence API 获取交接班日志,提取作业数据并生成统计报表。 ## 功能特性 - 从 Confluence 获取交接班日志 HTML - 提取保留布局的文本内容 - SQLite3 数据库存储 - 生成日报和月度统计 - 支持未统计数据手动录入 - 支持二次靠泊记录合并 - GUI 图形界面(可选) ## 项目结构 ``` OrbitIn/ ├── main.py # CLI 入口 ├── README.md # 项目说明 ├── AGENTS.md # AI助手开发文档 ├── .env # 环境配置(敏感信息) ├── .env.example # 环境配置示例 ├── layout_output.txt # 缓存的布局文本 ├── debug/ # 调试输出目录 │ └── layout_output_*.txt # 带时间戳的调试文件 ├── data/ # 数据目录 │ └── daily_logs.db # SQLite3 数据库 └── src/ # 代码模块 ├── __init__.py ├── confluence.py # Confluence API 客户端 ├── extractor.py # HTML 文本提取器 ├── parser.py # 日志解析器 ├── database.py # 数据库操作 ├── report.py # 报表生成器 └── gui.py # GUI 图形界面 ``` ## 快速开始 ### 安装依赖 ```bash pip install requests beautifulsoup4 python-dotenv ``` ### 配置 Confluence 在 `.env` 文件中配置: ```bash # .env CONFLUENCE_BASE_URL=https://your-confluence.atlassian.net/rest/api CONFLUENCE_TOKEN=your-api-token CONFLUENCE_CONTENT_ID=155764524 ``` 参考 `.env.example` 文件创建 `.env` 文件。 ### 使用方法 #### 命令行方式 ```bash # 默认:获取、提取、解析并保存到数据库 python3 main.py # 仅获取HTML并提取文本(保存到debug目录) python3 main.py fetch # 获取并保存带时间戳的debug文件 python3 main.py fetch-debug # 生成日报(指定日期) python3 main.py report 2025-12-28 # 生成昨日日报 python3 main.py report-today # 解析测试(使用已有的layout_output.txt) python3 main.py parse-test # 添加未统计数据 python3 main.py --unaccounted 118 --month 2025-12 # 显示帮助 python3 main.py --help ``` #### GUI 方式 ```bash python3 src/gui.py ``` GUI 功能: - 获取并处理数据 - 获取 (Debug模式) - 生成日报 - 昨日日报(自动获取前一天数据) - 添加未统计数据 - 数据库统计(显示当月每艘船的作业量) - 日报内容可复制 ## 数据格式 ### 日报表 (daily_handover_logs) | 字段 | 类型 | 说明 | |------|------|------| | id | INTEGER | 主键 | | date | TEXT | 日期 YYYY-MM-DD | | shift | TEXT | 班次 (白班/夜班) | | ship_name | TEXT | 船名(不含船号前缀) | | teu | INTEGER | 作业量 TEU | | efficiency | REAL | 效率 | | vehicles | INTEGER | 上场车辆数 | | created_at | TEXT | 创建时间 | ### 未统计表 (monthly_unaccounted) | 字段 | 类型 | 说明 | |------|------|------| | id | INTEGER | 主键 | | year_month | TEXT | 年月 YYYY-MM | | teu | INTEGER | 未统计的 TEU | | note | TEXT | 备注 | | created_at | TEXT | 创建时间 | ## 特性说明 ### 二次靠泊合并 解析时会自动合并同一天的二次靠泊记录: - 夜班 学友洋山: 273TEU - 夜班 学友洋山(二次靠泊): 14TEU - 合并后: 夜班 学友洋山: 287TEU ### 未统计数据 可以在数据库统计中查看当月每艘船的作业量总计,便于跟踪船舶运营情况。 ## 示例输出 ``` 日期:12/28 船名:学友洋山 作业量:246TEU 当日实际作业量:246TEU 当月计划作业量:8400TEU (用天数*300TEU) 当月实际作业量:12632TEU 当月完成比例:150.38% 12/29 白班人员: 12/29 夜班人员: 24小时值班手机:13107662315 ``` ## 技术栈 - Python 3.7+ - SQLite3 - Requests (HTTP 客户端) - HTMLParser (标准库) - tkinter (GUI,可选) ## License MIT