# 商品品类分析脚本

## 功能说明

这个脚本用于批量分析商品标题，提取商品的品类、适用人群、标签、场景、季节和材质/功能等信息。

### 主要特性

1. **批量处理**：每次处理20条数据，提高效率
2. **完整日志**：记录所有API请求、响应和解析结果
3. **断点续传**：每处理完一个批次自动保存，支持中断后继续
4. **ID映射**：使用序号1-20，最后映射回原始ID
5. **Markdown解析**：高效解析LLM返回的markdown表格

## 输出字段

| 字段 | 说明 | 示例 |
|------|------|------|
| id | 原始商品ID | 107365 |
| title | 原始英文标题 | Sunglasses Men Polarized... |
| title_cn | 中文标题 | 男士偏光飞行员太阳镜 |
| category_path | 品类路径（大类>细分） | 配件>眼镜>太阳镜 |
| tags | 细分标签 | 偏光,金属框,复古 |
| target_audience | 适用人群 | 男女通用,成人 |
| usage_scene | 使用场景 | 驾驶,钓鱼,户外 |
| season | 适用季节 | 四季 |
| key_attributes | 关键属性 | UV400防护,防眩光 |
| material | 材质说明 | 金属框架,树脂镜片 |
| features | 功能特点 | 偏光防眩,轻量化设计 |
| selling_points | 商品卖点 | 专业偏光镜片，有效过滤眩光，适合驾驶和户外运动 |

## 安装依赖

```bash
pip install requests
```

## 使用方法

### 1. 设置API密钥

```bash
export DASHSCOPE_API_KEY="your_api_key_here"
```

### 2. 测试运行（处理前40条）

```bash
# 创建测试数据
python test_process.py

# 运行测试脚本
python process_products_test.py
```

### 3. 正式运行（处理全部数据）

```bash
python process_products.py
```

## 文件结构

```
.
├── saas_170_products.csv          # 输入文件（原始数据）
├── process_products.py            # 主处理脚本
├── test_process.py                # 测试准备脚本
├── output_logs/                   # 输出目录
│   ├── products_analyzed.csv     # 最终结果（CSV格式）
│   └── logs/                      # 日志目录
│       ├── process_*.log          # 主日志文件
│       └── batch_*.json           # 每个批次的详细日志
│           ├── input_products     # 输入数据
│           ├── raw_response       # 原始响应
│           ├── full_response_json # 完整API响应JSON
│           ├── parsed_results     # 解析后的markdown表格
│           └── final_results      # 最终格式化结果
```

## 日志说明

每个批次的JSON日志包含：

1. **input_products**: 输入的商品列表（使用临时序号1-20）
2. **raw_response**: LLM返回的原始markdown文本
3. **full_response_json**: 完整的API响应（包括usage、model等）
4. **parsed_results**: 从markdown解析出的结构化数据
5. **final_results**: 映射回原始ID后的最终结果

## 配置参数

可以在脚本开头修改以下参数：

```python
BATCH_SIZE = 20              # 每批处理数量
MODEL_NAME = "qwen-turbo"    # 模型名称
INPUT_FILE = "saas_170_products.csv"  # 输入文件
OUTPUT_FILE = "output_logs/products_analyzed.csv"  # 输出文件
```

## 注意事项

1. 确保 `DASHSCOPE_API_KEY` 环境变量已设置
2. 处理4万条数据约需2000次API调用，请确保API配额充足
3. 每个批次会自动保存，可随时中断和恢复
4. 日志文件可能较大，请确保磁盘空间充足

## 预计时间

- 每批次约10-15秒
- 总批次约2270批（45389条 ÷ 20）
- 预计总时间：6-9小时

## 结果格式示例

```csv
id,title,title_cn,category_path,tags,target_audience,usage_scene,season,key_attributes,material,features,selling_points
107365,"Sunglasses Men Polarized...","男士偏光飞行员太阳镜","配件>眼镜>太阳镜","偏光,金属框,复古","男女通用,成人","驾驶,钓鱼,户外","四季","UV400防护,防眩光","金属框架,树脂镜片","偏光防眩,轻量化","专业偏光镜片，有效过滤眩光，适合驾驶和户外运动"
107366,"Nintendo Switch™...","任天堂Switch游戏机","电子产品>游戏机>掌机","家用,便携,双人","通用,青少年","家庭娱乐,聚会,旅行","四季","无线连接,HD震动","电子元件,塑料","便携设计,多人游戏","任天堂官方正品，支持多种游戏模式，适合家庭娱乐"
```

## 故障排查

### API密钥错误
```
Error: DASHSCOPE_API_KEY environment variable not set!
```
解决：设置环境变量 `export DASHSCOPE_API_KEY="your_key"`

### API请求失败
检查日志文件中的详细错误信息，可能原因：
- API配额不足
- 网络连接问题
- 代理设置问题（脚本已自动禁用代理）
- 请求格式错误

脚本已内置重试机制（最多重试3次，间隔5秒），可以自动处理临时网络问题。

### 解析失败
查看 `batch_*.json` 日志中的 `raw_response` 字段，检查LLM返回格式是否符合预期

### 代理连接错误
如果遇到代理连接错误：
1. 脚本已自动设置 `NO_PROXY=*` 环境变量
2. 脚本已在请求中明确禁用代理
3. 如果仍有问题，手动取消系统代理设置：
   ```bash
   unset http_proxy
   unset https_proxy
   unset HTTP_PROXY
   unset HTTPS_PROXY
   ```
