get-parsed-talents-api-documentation.md 12 KB

get-parsed-talents 接口使用说明书

接口概述

get-parsed-talents 接口用于获取解析人才记录列表,支持按状态过滤查询。该接口返回 parsed_talents 数据库表中的记录,按创建时间倒序排列。

基本信息

  • 接口名称: get-parsed-talents
  • HTTP方法: GET
  • 访问路径: /get-parsed-talents
  • 接口描述: 获取解析人才记录列表,支持状态过滤
  • 数据来源: parsed_talents 数据库表

请求参数

查询参数 (Query Parameters)

参数名 类型 必填 默认值 说明
status string null 状态过滤参数,如果为空则查询所有记录

参数说明

  • status: 用于过滤特定状态的记录
    • 可选值: "待审核", "已入库", "已拒绝", "active", "inactive"
    • 如果参数为空或不传,则返回所有状态的记录
    • 参数值不区分大小写,但建议使用标准状态值

响应格式

成功响应 (200 OK)

{
    "success": true,
    "message": "成功获取 X 条解析人才记录",
    "data": [
        {
            "id": 1,
            "name_zh": "张三",
            "name_en": "Zhang San",
            "title_zh": "总经理",
            "title_en": "General Manager",
            "mobile": "13800138000",
            "phone": "010-12345678",
            "email": "zhangsan@example.com",
            "hotel_zh": "北京希尔顿酒店",
            "hotel_en": "Beijing Hilton Hotel",
            "address_zh": "北京市朝阳区建国门外大街1号",
            "address_en": "1 Jianguomenwai Street, Chaoyang District, Beijing",
            "postal_code_zh": "100020",
            "postal_code_en": "100020",
            "brand_zh": "希尔顿",
            "brand_en": "Hilton",
            "affiliation_zh": "希尔顿酒店集团",
            "affiliation_en": "Hilton Hotels & Resorts",
            "image_path": "minio/talents/zhangsan.jpg",
            "career_path": [
                {
                    "date": "2024-01-15",
                    "hotel_zh": "北京希尔顿酒店",
                    "hotel_en": "Beijing Hilton Hotel",
                    "title_zh": "总经理",
                    "title_en": "General Manager",
                    "image_path": "minio/talents/zhangsan.jpg",
                    "source": "webpage_extraction"
                }
            ],
            "brand_group": "希尔顿集团",
            "birthday": "1980-05-15",
            "residence": "北京市朝阳区",
            "age": 44,
            "native_place": "北京市",
            "origin_source": [
                {
                    "task_type": "webpage_talent",
                    "minio_path": "minio/webpage/zhangsan.md",
                    "source_date": "2024-01-15 14:30:25"
                }
            ],
            "talent_profile": "资深酒店管理专家,拥有15年酒店管理经验...",
            "task_id": "task_001",
            "task_type": "webpage_talent",
            "created_at": "2024-01-15T14:30:25",
            "updated_at": "2024-01-15T14:30:25",
            "updated_by": "system",
            "status": "待审核"
        }
    ],
    "count": 1
}

错误响应 (500 Internal Server Error)

{
    "success": false,
    "message": "获取解析人才记录失败: 数据库连接错误",
    "data": [],
    "count": 0
}

响应字段说明

顶层字段

字段名 类型 说明
success boolean 请求是否成功
message string 响应消息
data array 人才记录数组
count integer 记录总数

人才记录字段 (data 数组中的对象)

字段名 类型 说明
id integer 记录唯一标识符
name_zh string 中文姓名
name_en string 英文姓名
title_zh string 中文职位
title_en string 英文职位
mobile string 手机号码
phone string 固定电话
email string 电子邮箱
hotel_zh string 中文酒店名称
hotel_en string 英文酒店名称
address_zh string 中文地址
address_en string 英文地址
postal_code_zh string 中文邮政编码
postal_code_en string 英文邮政编码
brand_zh string 中文品牌名称
brand_en string 英文品牌名称
affiliation_zh string 中文隶属关系
affiliation_en string 英文隶属关系
image_path string 图片文件路径
career_path array 职业轨迹数组
brand_group string 品牌组合
birthday string 生日 (YYYY-MM-DD格式)
residence string 居住地
age integer 年龄
native_place string 籍贯
origin_source array 原始资料记录数组
talent_profile string 人才档案描述
task_id string 解析任务ID
task_type string 解析任务类型
created_at string 创建时间
updated_at string 更新时间
updated_by string 更新人
status string 记录状态

career_path 数组字段

字段名 类型 说明
date string 职业记录日期
hotel_zh string 中文酒店名称
hotel_en string 英文酒店名称
title_zh string 中文职位
title_en string 英文职位
image_path string 相关图片路径
source string 数据来源

origin_source 数组字段

字段名 类型 说明
task_type string 任务类型
minio_path string MinIO存储路径
source_date string 数据来源时间

使用示例

1. 查询所有记录

请求:

GET /get-parsed-talents

响应:

{
    "success": true,
    "message": "成功获取 150 条解析人才记录",
    "data": [...],
    "count": 150
}

2. 查询待审核记录

请求:

GET /get-parsed-talents?status=待审核

响应:

{
    "success": true,
    "message": "成功获取 25 条解析人才记录",
    "data": [...],
    "count": 25
}

3. 查询已入库记录

请求:

GET /get-parsed-talents?status=已入库

响应:

{
    "success": true,
    "message": "成功获取 120 条解析人才记录",
    "data": [...],
    "count": 120
}

4. 查询已拒绝记录

请求:

GET /get-parsed-talents?status=已拒绝

响应:

{
    "success": true,
    "message": "成功获取 5 条解析人才记录",
    "data": [...],
    "count": 5
}

前端集成示例

JavaScript (使用 fetch)

// 获取所有记录
async function getAllParsedTalents() {
    try {
        const response = await fetch('/get-parsed-talents');
        const data = await response.json();
        
        if (data.success) {
            console.log(`获取到 ${data.count} 条记录`);
            return data.data;
        } else {
            console.error('获取失败:', data.message);
            return [];
        }
    } catch (error) {
        console.error('请求失败:', error);
        return [];
    }
}

// 获取特定状态的记录
async function getParsedTalentsByStatus(status) {
    try {
        const response = await fetch(`/get-parsed-talents?status=${encodeURIComponent(status)}`);
        const data = await response.json();
        
        if (data.success) {
            console.log(`获取到 ${data.count} 条 ${status} 状态的记录`);
            return data.data;
        } else {
            console.error('获取失败:', data.message);
            return [];
        }
    } catch (error) {
        console.error('请求失败:', error);
        return [];
    }
}

// 使用示例
getAllParsedTalents().then(talents => {
    console.log('所有人才记录:', talents);
});

getParsedTalentsByStatus('待审核').then(talents => {
    console.log('待审核人才记录:', talents);
});

JavaScript (使用 axios)

import axios from 'axios';

// 获取所有记录
async function getAllParsedTalents() {
    try {
        const response = await axios.get('/get-parsed-talents');
        const { success, data, count, message } = response.data;
        
        if (success) {
            console.log(`获取到 ${count} 条记录`);
            return data;
        } else {
            console.error('获取失败:', message);
            return [];
        }
    } catch (error) {
        console.error('请求失败:', error);
        return [];
    }
}

// 获取特定状态的记录
async function getParsedTalentsByStatus(status) {
    try {
        const response = await axios.get('/get-parsed-talents', {
            params: { status }
        });
        const { success, data, count, message } = response.data;
        
        if (success) {
            console.log(`获取到 ${count} 条 ${status} 状态的记录`);
            return data;
        } else {
            console.error('获取失败:', message);
            return [];
        }
    } catch (error) {
        console.error('请求失败:', error);
        return [];
    }
}

React Hook 示例

import { useState, useEffect } from 'react';

function useParsedTalents(status = null) {
    const [talents, setTalents] = useState([]);
    const [loading, setLoading] = useState(false);
    const [error, setError] = useState(null);

    useEffect(() => {
        const fetchTalents = async () => {
            setLoading(true);
            setError(null);
            
            try {
                const url = status 
                    ? `/get-parsed-talents?status=${encodeURIComponent(status)}`
                    : '/get-parsed-talents';
                    
                const response = await fetch(url);
                const data = await response.json();
                
                if (data.success) {
                    setTalents(data.data);
                } else {
                    setError(data.message);
                }
            } catch (err) {
                setError('请求失败: ' + err.message);
            } finally {
                setLoading(false);
            }
        };

        fetchTalents();
    }, [status]);

    return { talents, loading, error };
}

// 使用示例
function TalentList() {
    const { talents, loading, error } = useParsedTalents('待审核');

    if (loading) return <div>加载中...</div>;
    if (error) return <div>错误: {error}</div>;

    return (
        <div>
            <h2>待审核人才列表 ({talents.length})</h2>
            {talents.map(talent => (
                <div key={talent.id}>
                    <h3>{talent.name_zh}</h3>
                    <p>职位: {talent.title_zh}</p>
                    <p>酒店: {talent.hotel_zh}</p>
                    <p>状态: {talent.status}</p>
                </div>
            ))}
        </div>
    );
}

注意事项

  1. 分页处理: 当前接口返回所有匹配的记录,如果数据量很大,建议前端实现分页显示
  2. 状态值: 建议使用标准状态值,如 "待审核", "已入库", "已拒绝"
  3. 错误处理: 始终检查 success 字段,处理可能的错误情况
  4. 数据格式: 日期时间字段使用 ISO 8601 格式
  5. 空值处理: 某些字段可能为 null 或空字符串,前端需要适当处理
  6. 字符编码: 中文字段使用 UTF-8 编码

状态码说明

HTTP状态码 说明
200 请求成功
500 服务器内部错误

更新日志

  • v1.0.0 (2024-01-15): 初始版本,支持基本查询和状态过滤功能

联系方式

如有问题或建议,请联系开发团队。