131 lines
2.7 KiB
Markdown
131 lines
2.7 KiB
Markdown
# SAP C4C 附件批量下载工具
|
||
|
||
从 SAP C4C 下载 Ticket 附件并上传到群晖 DSM。
|
||
|
||
---
|
||
|
||
## 环境要求
|
||
|
||
- Python >= 3.8
|
||
- Ubuntu 20.04+ 或 macOS
|
||
|
||
---
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
python -m playwright install chromium
|
||
# Ubuntu 需额外执行(需要 sudo)
|
||
python -m playwright install-deps chromium
|
||
```
|
||
|
||
---
|
||
|
||
## 文件说明
|
||
|
||
| 文件 | 说明 |
|
||
|---|---|
|
||
| `sap-c4c-AttachmentFolder.py` | 核心下载脚本,支持单个 Ticket 下载 |
|
||
| `batch_download.py` | 批量下载脚本,从 CSV 读取 ID 并行执行 |
|
||
| `get_ticket_ids.py` | 从 CSV 提取 Ticket ID 工具 |
|
||
| `datasource/` | 存放 SAP Analytics 导出的 CSV 文件 |
|
||
| `downloads/` | 本地临时下载目录(上传 DSM 后自动清理) |
|
||
| `error_log.txt` | 错误日志,每次批量运行时重置 |
|
||
|
||
---
|
||
|
||
## 单个 Ticket 下载
|
||
|
||
```bash
|
||
python sap-c4c-AttachmentFolder.py \
|
||
--tenant https://my300375.c4c.saphybriscloud.cn \
|
||
--user admin \
|
||
--password 'your_password' \
|
||
--ticket 20950 \
|
||
--output-dir ./downloads
|
||
```
|
||
|
||
### 同时上传到群晖 DSM
|
||
|
||
```bash
|
||
python sap-c4c-AttachmentFolder.py \
|
||
--tenant https://my300375.c4c.saphybriscloud.cn \
|
||
--user admin \
|
||
--password 'your_password' \
|
||
--ticket 20950 \
|
||
--output-dir ./downloads \
|
||
--dsm-url http://10.0.10.235:5000 \
|
||
--dsm-user PLM \
|
||
--dsm-password 'dsm_password' \
|
||
--dsm-path /Newgonow/AU-SPFJ
|
||
```
|
||
|
||
### 仅列出附件不下载
|
||
|
||
```bash
|
||
python sap-c4c-AttachmentFolder.py ... --list-only
|
||
```
|
||
|
||
### JSON 输出模式
|
||
|
||
```bash
|
||
python sap-c4c-AttachmentFolder.py ... --json
|
||
```
|
||
|
||
---
|
||
|
||
## 批量下载
|
||
|
||
将 SAP Analytics 导出的 CSV 文件放入 `datasource/` 目录,然后运行:
|
||
|
||
```bash
|
||
python batch_download.py
|
||
```
|
||
|
||
- 默认读取 CSV 第二列的 Ticket ID,取前 10 个
|
||
- 最多 5 个任务并行执行
|
||
- 每个 Ticket 使用独立子目录 `downloads/{ticket_id}`,避免并行冲突
|
||
- 上传 DSM 完成后自动清理本地文件和子目录
|
||
- 错误记录到 `error_log.txt`
|
||
|
||
### 修改并行数或 Ticket 数量
|
||
|
||
编辑 `batch_download.py` 顶部配置:
|
||
|
||
```python
|
||
WORKERS = 5 # 并行数
|
||
# get_ticket_ids(10) 中的 10 为读取数量
|
||
```
|
||
|
||
---
|
||
|
||
## DSM 目录结构
|
||
|
||
上传后文件按以下结构组织:
|
||
|
||
```
|
||
{dsm_path}/
|
||
└── {ticket_id}_{serial_id}/
|
||
└── {issue_id}_{issue_description}/
|
||
└── 附件文件
|
||
```
|
||
|
||
> `Quote & Chassis` 类型的附件会同时复制到所有其他 issue 目录下。
|
||
|
||
---
|
||
|
||
## 环境变量(可选)
|
||
|
||
也可通过环境变量代替命令行参数:
|
||
|
||
| 环境变量 | 对应参数 |
|
||
|---|---|
|
||
| `C4C_TENANT` | `--tenant` |
|
||
| `C4C_USERNAME` | `--user` |
|
||
| `C4C_PASSWORD` | `--password` |
|
||
| `DSM_URL` | `--dsm-url` |
|
||
| `DSM_USERNAME` | `--dsm-user` |
|
||
| `DSM_PASSWORD` | `--dsm-password` |
|
||
| `DSM_PATH` | `--dsm-path` |
|