# 飞球 ETL GUI 管理系统

一个基于 PySide6 的图形化 ETL 管理工具。

## 功能特性

- **任务配置**: 选择和配置 ETL 任务，支持参数设置和 CLI 命令预览
- **任务管理**: 任务队列管理、执行历史记录、自动执行
- **环境配置**: 图形化编辑 `.env` 配置文件
- **数据库查看**: 浏览表结构、执行 SQL 查询
- **ETL 状态**: 实时查看 ODS/DWD 数据状态和执行记录
- **日志查看**: 实时日志输出、过滤、导出

## 快速开始

### 1. 安装依赖

```bash
cd etl_billiards
pip install -r requirements.txt
```

### 2. 运行 GUI

**方法一：使用启动脚本**

```bash
# Windows 命令行
run_gui.bat

# 或 PowerShell
.\run_gui.ps1
```

**方法二：直接运行 Python**

```bash
cd etl_billiards
python -m gui.main
```

## 打包为 EXE

### 安装打包工具

```bash
pip install pyinstaller
```

### 执行打包

```bash
# 目录模式（推荐，启动更快）
python build_exe.py

# 单文件模式
python build_exe.py --onefile

# 显示控制台（调试用）
python build_exe.py --console

# 清理并重新打包
python build_exe.py --clean
```

打包完成后，EXE 文件位于 `dist/ETL管理系统/` 目录。

## 目录结构

```
gui/
├── main.py              # 应用入口
├── main_window.py       # 主窗口
├── widgets/             # UI 组件
│   ├── task_panel.py    # 任务配置面板
│   ├── task_manager.py  # 任务管理器
│   ├── env_editor.py    # 环境变量编辑器
│   ├── log_viewer.py    # 日志查看器
│   ├── db_viewer.py     # 数据库查看器
│   └── status_panel.py  # ETL 状态面板
├── workers/             # 后台工作线程
│   ├── task_worker.py   # 任务执行线程
│   └── db_worker.py     # 数据库查询线程
├── models/              # 数据模型
│   └── task_model.py    # 任务数据模型
├── utils/               # 工具模块
│   ├── cli_builder.py   # CLI 命令构建器
│   └── config_helper.py # 配置辅助
└── resources/           # 资源文件
    └── styles.qss       # 样式表
```

## 使用说明

### 任务配置

1. 在左侧选择任务分类
2. 勾选要执行的任务
3. 配置运行参数（Pipeline 模式、时间窗口等）
4. 查看底部的 CLI 命令预览
5. 点击「立即执行」或「添加到队列」

### 环境配置

1. 打开「环境配置」面板
2. 编辑各项配置（数据库、API、路径等）
3. 点击「保存」

### 数据库查看

1. 打开「数据库」面板
2. 输入或使用 .env 中的 DSN
3. 点击「连接」
4. 浏览表结构或执行 SQL 查询

## 常见问题

### Q: 启动时提示缺少 PySide6

```bash
pip install PySide6
```

### Q: 连接数据库失败

检查 `.env` 中的 `PG_DSN` 配置是否正确。

### Q: 打包后运行闪退

使用 `--console` 参数重新打包，查看错误信息：

```bash
python build_exe.py --console
```

## 技术栈

- Python 3.10+
- PySide6 (Qt for Python)
- psycopg2 (PostgreSQL)
- PyInstaller (打包)
