# add_parse_task 接口返回数据格式说明

## 接口概述

`add_parse_task` 接口用于新增解析任务，支持多种任务类型：名片、简历、新任命、招聘、杂项。根据任务类型的不同，返回的数据格式也有所差异。

## 通用返回格式

所有响应都遵循以下通用格式：

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

## HTTP 状态码

- **200**: 所有文件上传成功，任务创建成功
- **206**: 部分文件上传成功，任务创建成功
- **400**: 请求参数错误
- **500**: 服务器内部错误

## 成功响应格式

### 1. 文件上传类型任务（名片、简历、新任命、杂项）

```json
{
  "success": true,
  "message": "解析任务创建成功，所有文件上传完成",
  "data": {
      "id": 123,
      "task_name": "parse_task_20241201_a1b2c3d4",
      "task_status": "待解析",
      "task_type": "名片",
      "task_source": [
         {"original_filename": "张三名片.jpg",
          "minio_path":"https://192.168.3.143:9000/dataops-platform/talent_photos/20241201_001234_张三名片.jpg",
         "status":"正常"},
        {"original_filename": "李四名片.png",
         "minio_path":"https://192.168.3.143:9000/dataops-platform/talent_photos/20241201_001235_李四名片.png",
         "status":"出错"}
        ],
      "collection_count": 2,
      "parse_count": 0,
      "parse_result": null,
      "created_at": "2024-12-01 10:30:45",
      "created_by": "api_user",
      "updated_at": "2024-12-01 10:30:45",
      "updated_by": "api_user"
  }
}


```

### 2. 招聘类型任务

```json
{
  "success": true,
  "message": "招聘任务创建成功",
  "data": {
      "id": 123,
      "task_name": "parse_task_20241201_a1b2c3d4",
      "task_status": "待解析",
      "task_type": "招聘",
      "task_source":[
    {
        "name_zh": "王维全",
        "name_en": "Tom",  
        "age": 54,
        "birthday": "1971-01-08",
        "career_path": [
          {
            "date": "2019-07-01",
            "hotel_zh": "太舞·帕思顿酒店",
            "title_zh": "总经理"
          }
        ],
        "created_at": "2024-10-09",
        "email": "514103553@qq.com",
        "mobile": "13801018434",
        "updated_at": "2025-07-02",
        "id": "1843919715576168450",
        "userId": "390325402075271168"
      },
      {
        "name_zh": "张勇刚",
        "name_en": "Jack",  
        "age": 34,
        "birthday": "1991-01-08",
        "career_path": [
          {
            "date": "2022-06-01",
            "hotel_zh": "丽江希尔顿酒店",
            "title_zh": "总经理"
          }
        ],
        "created_at": "2024-10-09",
        "email": "56723@126.com",
        "mobile": "13901018434",
        "updated_at": "2025-07-02",
        "id": "1843919715576168651",
        "userId": "390325402075271269"
      }
  ],
      "collection_count": 2,
      "parse_count": 0,
      "parse_result": null,
      "created_at": "2024-12-01 10:30:45",
      "created_by": "api_user",
      "updated_at": "2024-12-01 10:30:45",
      "updated_by": "api_user"
  }
}
```

### 3. 部分成功响应（状态码 206）

当部分文件上传失败时，返回格式如下：

```json
参考文件上传类型任务的返回格式。可以把出错的文件status设置为出错。
```

## 错误响应格式

### 1. 参数错误（状态码 400）

```json
{
  "success": false,
  "message": "缺少task_type参数",
  "data": null
}
```

```json
{
  "success": false,
  "message": "task_type参数必须是以下值之一：名片、简历、新任命、招聘、杂项",
  "data": null
}
```

```json
{
  "success": false,
  "message": "名片任务需要上传文件，请使用files字段上传文件",
  "data": null
}
```

```json
{
  "success": false,
  "message": "招聘类型任务不需要上传文件",
  "data": null
}
```

```json
{
  "success": false,
  "message": "新任命类型任务需要提供publish_time参数",
  "data": null
}
```

### 2. 服务器错误（状态码 500）

```json
{
  "success": false,
  "message": "无法连接到MinIO服务器",
  "data": null
}
```

```json
{
  "success": false,
  "message": "所有文件上传失败",
  "data": {
    "uploaded_count": 0,
    "failed_count": 2,
    "failed_uploads": [
      {
        "filename": "名片1.jpg",
        "error": "文件上传失败：网络连接超时"
      },
      {
        "filename": "名片2.png",
        "error": "文件上传失败：存储空间不足"
      }
    ]
  }
}
```

## 特殊说明

1. **新任命类型**：在 `task_source` 中会额外包含 `publish_time` 字段
2. **招聘类型**：不需要文件上传，minio_paths为空
3. **文件路径**：所有文件都会上传到MinIO存储，路径格式为 `https://host:port/bucket/directory/filename`
4. **任务名称**：自动生成，格式为 `parse_task_YYYYMMDD_UUID` 或 `recruitment_task_YYYYMMDD_UUID`
5. **状态码206**：表示部分成功，通常用于文件上传时部分文件失败的情况 