# 网页文本解析API接口文档

## 接口概述

**接口名称**: 网页文本解析接口  
**接口路径**: `/api/data-parse/webpage-parse`  
**请求方法**: `POST`  
**内容类型**: `application/json`  
**功能描述**: 解析网页Markdown文本并使用QWen AI模型提取人员任命信息

---

## 输入参数

### 请求头
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| Content-Type | string | 是 | 必须为 `application/json` |

### 请求体参数
| 参数名 | 类型 | 必填 | 长度限制 | 说明 |
|--------|------|------|----------|------|
| markdown_text | string | 是 | 10-50000字符 | 网页的Markdown格式文本内容 |
| publish_time | string | 是 | - | 发布时间，用于设置career_path中的date字段，建议格式：YYYY-MM-DD |

### 请求体示例
```json
{
    "markdown_text": "![照片](https://example.com/photo.jpg)\n\n**张三先生**\n**Mr. Zhang San**\n\n北京万豪酒店\n总经理\n\n张三先生拥有15年酒店管理经验...",
    "publish_time": "2025-01-15"
}
```

---

## 输出参数

### 响应格式
所有响应均为JSON格式，包含以下基本结构：

```json
{
    "success": boolean,
    "message": string,
    "data": array|null
}
```

### 成功响应 (200)
```json
{
    "success": true,
    "message": "网页文本解析成功",
    "data": [
        {
            "name_zh": "张三",
            "name_en": "Zhang San",
            "title_zh": "总经理",
            "title_en": "General Manager",
            "hotel_zh": "北京万豪酒店",
            "hotel_en": "Beijing Marriott Hotel",
            "brand_group": "万豪",
            "pic_url": "https://example.com/photo.jpg",
            "career_path": [
                {
                    "date": "2025-01-15",
                    "hotel_en": "Beijing Marriott Hotel",
                    "hotel_zh": "北京万豪酒店",
                    "image_path": "",
                    "source": "webpage_extraction",
                    "title_en": "General Manager",
                    "title_zh": "总经理"
                }
            ]
        }
    ]
}
```

### 数据字段说明
| 字段名 | 类型 | 说明 |
|--------|------|------|
| name_zh | string | 人员中文姓名 |
| name_en | string | 人员英文姓名 |
| title_zh | string | 中文职位/头衔 |
| title_en | string | 英文职位/头衔 |
| hotel_zh | string | 中文酒店/公司名称 |
| hotel_en | string | 英文酒店/公司名称 |
| brand_group | string | 酒店品牌集团 |
| pic_url | string | 人员照片URL链接 |
| career_path | array | 职业轨迹数组 |

### career_path 对象说明
| 字段名 | 类型 | 说明 |
|--------|------|------|
| date | string | 任命日期 (使用传入的publish_time) |
| hotel_en | string | 英文酒店名称 |
| hotel_zh | string | 中文酒店名称 |
| image_path | string | 图片路径 (固定为空字符串) |
| source | string | 数据来源 (固定为"webpage_extraction") |
| title_en | string | 英文职位 |
| title_zh | string | 中文职位 |

---

## 错误响应

### 400 - 请求参数错误

#### 缺少必填参数
```json
{
    "success": false,
    "message": "缺少必填参数: markdown_text",
    "data": null
}
```

#### 参数类型错误
```json
{
    "success": false,
    "message": "markdown_text 必须是字符串类型",
    "data": null
}
```

#### 内容长度错误
```json
{
    "success": false,
    "message": "markdown_text 内容过长，最大支持50KB",
    "data": null
}
```

#### 请求格式错误
```json
{
    "success": false,
    "message": "请求必须是 JSON 格式",
    "data": null
}
```

### 500 - 服务器内部错误
```json
{
    "success": false,
    "message": "网页文本解析失败: 具体错误信息",
    "data": null
}
```

---

## 状态码说明

| 状态码 | 说明 | 响应示例 |
|--------|------|----------|
| 200 | 解析成功 | 返回提取的人员信息数据 |
| 400 | 请求参数错误 | 参数缺失、类型错误、内容格式问题等 |
| 500 | 服务器内部错误 | AI模型调用失败、系统异常等 |

---

## 使用说明

### 1. 环境要求
- 需要配置 `QWEN_API_KEY` 环境变量
- 服务器需要能访问阿里云QWen API

### 2. 支持的内容格式
- 支持标准Markdown格式文本
- 支持提取照片链接（`![描述](URL)` 格式）
- 支持中英文混合内容
- 支持多人员信息提取

### 3. 内容长度限制
- 最小长度：10字符
- 最大长度：50,000字符 (约50KB)

### 4. 最佳实践
- 提供结构化的Markdown内容以获得更好的提取效果
- 照片链接应放置在人员姓名前面，通过空行分隔
- 使用标准的日期格式 (YYYY-MM-DD) 作为 publish_time

---

## 测试样例

### 样例1：单人信息提取

**请求**:
```bash
curl -X POST http://localhost:5000/api/data-parse/webpage-parse \
  -H "Content-Type: application/json" \
  -d '{
    "markdown_text": "![照片](https://example.com/sandra.jpg)\n\n**周银萍 女士**\n**Ms. Sandra Zhou**\n\n深圳中洲万豪酒店\n人力资源总监\n\n近日，深圳中洲万豪酒店正式任命周银萍女士为酒店人力资源总监...",
    "publish_time": "2025-01-15"
  }'
```

**响应**:
```json
{
    "success": true,
    "message": "网页文本解析成功",
    "data": [
        {
            "name_zh": "周银萍",
            "name_en": "Sandra Zhou",
            "title_zh": "人力资源总监",
            "title_en": "Director of Human Resources",
            "hotel_zh": "深圳中洲万豪酒店",
            "hotel_en": "Shenzhen Marriott Hotel Nanshan",
            "brand_group": "万豪",
            "pic_url": "https://example.com/sandra.jpg",
            "career_path": [
                {
                    "date": "2025-01-15",
                    "hotel_en": "Shenzhen Marriott Hotel Nanshan",
                    "hotel_zh": "深圳中洲万豪酒店",
                    "image_path": "",
                    "source": "webpage_extraction",
                    "title_en": "Director of Human Resources",
                    "title_zh": "人力资源总监"
                }
            ]
        }
    ]
}
```

### 样例2：多人信息提取

**请求**:
```bash
curl -X POST http://localhost:5000/api/data-parse/webpage-parse \
  -H "Content-Type: application/json" \
  -d '{
    "markdown_text": "**1**\n\n![照片1](https://example.com/photo1.jpg)\n\n**曲晶 女士**\n\n诺金国际\n市场营销副总裁\n\n**2**\n\n![照片2](https://example.com/photo2.jpg)\n\n**扎西央宗 女士**\n\n北海涠洲岛悦苑酒店\n总经理",
    "publish_time": "2025-01-15"
  }'
```

**响应**:
```json
{
    "success": true,
    "message": "网页文本解析成功",
    "data": [
        {
            "name_zh": "曲晶",
            "name_en": "",
            "title_zh": "市场营销副总裁",
            "title_en": "",
            "hotel_zh": "诺金国际",
            "hotel_en": "",
            "brand_group": "诺金",
            "pic_url": "https://example.com/photo1.jpg",
            "career_path": [...]
        },
        {
            "name_zh": "扎西央宗",
            "name_en": "",
            "title_zh": "总经理",
            "title_en": "",
            "hotel_zh": "北海涠洲岛悦苑酒店",
            "hotel_en": "",
            "brand_group": "悦榕",
            "pic_url": "https://example.com/photo2.jpg",
            "career_path": [...]
        }
    ]
}
```

### 样例3：参数错误

**请求**:
```bash
curl -X POST http://localhost:5000/api/data-parse/webpage-parse \
  -H "Content-Type: application/json" \
  -d '{
    "markdown_text": "内容太短"
  }'
```

**响应**:
```json
{
    "success": false,
    "message": "缺少必填参数: publish_time",
    "data": null
}
```

---

## 开发指南

### Python 示例
```python
import requests
import json

def parse_webpage_text(markdown_text, publish_time):
    url = "http://localhost:5000/api/data-parse/webpage-parse"
    headers = {"Content-Type": "application/json"}
    data = {
        "markdown_text": markdown_text,
        "publish_time": publish_time
    }
    
    response = requests.post(url, headers=headers, json=data)
    return response.json()

# 使用示例
result = parse_webpage_text("网页内容...", "2025-01-15")
if result["success"]:
    print(f"成功提取 {len(result['data'])} 个人员信息")
else:
    print(f"提取失败: {result['message']}")
```

### JavaScript 示例
```javascript
async function parseWebpageText(markdownText, publishTime) {
    const response = await fetch('/api/data-parse/webpage-parse', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            markdown_text: markdownText,
            publish_time: publishTime
        })
    });
    
    return await response.json();
}

// 使用示例
parseWebpageText("网页内容...", "2025-01-15")
    .then(result => {
        if (result.success) {
            console.log(`成功提取 ${result.data.length} 个人员信息`);
        } else {
            console.error(`提取失败: ${result.message}`);
        }
    });
```

---

## 注意事项

1. **API密钥**: 确保服务器已正确配置 `QWEN_API_KEY` 环境变量
2. **网络访问**: 服务器需要能够访问阿里云QWen API服务
3. **内容质量**: 提供结构化、清晰的Markdown内容可以获得更好的提取效果
4. **并发限制**: 建议控制并发请求数量，避免超出API调用限制
5. **错误处理**: 建议在客户端实现适当的错误处理和重试机制
6. **数据验证**: 建议对返回的数据进行二次验证，确保提取质量

---

## 更新日志

**版本 2.0** (2025-01-15)
- 新增 `publish_time` 必填参数
- 更新 career_path 中 date 字段的设置逻辑
- 增强参数验证和错误处理
- 更新API文档和使用示例

**版本 1.0** (初始版本)
- 基础的网页文本解析功能
- 支持单人和多人信息提取
- 集成QWen AI模型 