-
-
Notifications
You must be signed in to change notification settings - Fork 70
/
api_ai_resume_parse.go
156 lines (139 loc) · 8.31 KB
/
api_ai_resume_parse.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
* Copyright 2022 chyroc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package lark
import (
"context"
"io"
)
// ParseAIResume 简历信息解析接口, 支持PDF/DOCX/PNG/JPG四种文件类型的一次性的识别。
//
// 单租户限流: 10QPS, 同租户下的应用没有限流, 共享本租户的 10QPS 限流
//
// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/ai/document_ai-v1/resume/parse
func (r *AIService) ParseAIResume(ctx context.Context, request *ParseAIResumeReq, options ...MethodOptionFunc) (*ParseAIResumeResp, *Response, error) {
if r.cli.mock.mockAIParseAIResume != nil {
r.cli.Log(ctx, LogLevelDebug, "[lark] AI#ParseAIResume mock enable")
return r.cli.mock.mockAIParseAIResume(ctx, request, options...)
}
req := &RawRequestReq{
Scope: "AI",
API: "ParseAIResume",
Method: "POST",
URL: r.cli.openBaseURL + "/open-apis/document_ai/v1/resume/parse",
Body: request,
MethodOption: newMethodOption(options),
NeedTenantAccessToken: true,
IsFile: true,
}
resp := new(parseAIResumeResp)
response, err := r.cli.RawRequest(ctx, req, resp)
return resp.Data, response, err
}
// MockAIParseAIResume mock AIParseAIResume method
func (r *Mock) MockAIParseAIResume(f func(ctx context.Context, request *ParseAIResumeReq, options ...MethodOptionFunc) (*ParseAIResumeResp, *Response, error)) {
r.mockAIParseAIResume = f
}
// UnMockAIParseAIResume un-mock AIParseAIResume method
func (r *Mock) UnMockAIParseAIResume() {
r.mockAIParseAIResume = nil
}
// ParseAIResumeReq ...
type ParseAIResumeReq struct {
File io.Reader `json:"file,omitempty"` // 简历文件, 支持 PDF / DOCX / PNG / JPG, 示例值: file binary
}
// ParseAIResumeResp ...
type ParseAIResumeResp struct {
Resumes []*ParseAIResumeRespResume `json:"resumes,omitempty"` // 简历信息
}
// ParseAIResumeRespResume ...
type ParseAIResumeRespResume struct {
FileMd5 string `json:"file_md5,omitempty"` // 文件标识ID, 依据文件内容自动生成
Content string `json:"content,omitempty"` // 文本内容, 当接口返回成功时, 该字段才存在
NewContent string `json:"new_content,omitempty"` // 经过排序后的文本内容, 当接口返回成功时, 该字段才存在
Name string `json:"name,omitempty"` // 名称
Email string `json:"email,omitempty"` // 邮箱
Mobile string `json:"mobile,omitempty"` // 手机号码
MobileIsVirtual bool `json:"mobile_is_virtual,omitempty"` // 手机号码是否虚拟号码
CountryCode string `json:"country_code,omitempty"` // 手机号码国家编码
Educations []*EHREducation `json:"educations,omitempty"` // 教育经历
Careers []*ParseAIResumeRespResumeCareer `json:"careers,omitempty"` // 职业经历
Projects []*ParseAIResumeRespResumeProject `json:"projects,omitempty"` // 项目经历
WorkYear int64 `json:"work_year,omitempty"` // 工作年限, 为空表示工作年限未知, 数字单位为年, 整数
DateOfBirth string `json:"date_of_birth,omitempty"` // 生日, 格式YYYY-MM-DD
Gender int64 `json:"gender,omitempty"` // 性别, 可选值有: 0: 未知, 1: 男性, 2: 女性
WillingPositions []string `json:"willing_positions,omitempty"` // 希望获得的职位列表
CurrentLocation string `json:"current_location,omitempty"` // 当前工作地点(城市)
WillingLocations []string `json:"willing_locations,omitempty"` // 希望工作地点列表
HomeLocation string `json:"home_location,omitempty"` // 家乡(城市)
Languages []*ParseAIResumeRespResumeLanguage `json:"languages,omitempty"` // 语言
Awards []*ParseAIResumeRespResumeAward `json:"awards,omitempty"` // 获奖
Certificates []*ParseAIResumeRespResumeCertificate `json:"certificates,omitempty"` // 证书
Competitions []*ParseAIResumeRespResumeCompetition `json:"competitions,omitempty"` // 竞赛
SelfEvaluation string `json:"self_evaluation,omitempty"` // 自我评价
URLs []string `json:"urls,omitempty"` // 链接列表
SocialLinks []string `json:"social_links,omitempty"` // 社交链接
}
// ParseAIResumeRespResumeAward ...
type ParseAIResumeRespResumeAward struct {
Award string `json:"award,omitempty"` // 奖项
Date string `json:"date,omitempty"` // 获奖时间, 格式: YYYY
Description string `json:"description,omitempty"` // 描述
}
// ParseAIResumeRespResumeCareer ...
type ParseAIResumeRespResumeCareer struct {
Company string `json:"company,omitempty"` // 公司名称
StartDate string `json:"start_date,omitempty"` // 开始时间, 格式: YYYY-MM-DD
StartTime string `json:"start_time,omitempty"` // 始时间, 格式: YYYY-MM-DD, 跟start_date值一样
EndDate string `json:"end_date,omitempty"` // 结束时间, 格式: YYYY-MM-DD
EndTime string `json:"end_time,omitempty"` // 结束时间, 格式: YYYY-MM-DD 或 “至今”, 当值为“至今”时, end_date["", 值为其他时, end_date]end_time
Title string `json:"title,omitempty"` // 职位
Type int64 `json:"type,omitempty"` // 工作类型, 可选值有: 1: 实习, 2: 全职
TypeStr string `json:"type_str,omitempty"` // 工作类型——'实习'、'全职'
JobDescription string `json:"job_description,omitempty"` // 工作描述
}
// ParseAIResumeRespResumeCertificate ...
type ParseAIResumeRespResumeCertificate struct {
Name string `json:"name,omitempty"` // 证书名称
Desc string `json:"desc,omitempty"` // 描述
}
// ParseAIResumeRespResumeCompetition ...
type ParseAIResumeRespResumeCompetition struct {
Name string `json:"name,omitempty"` // 竞赛名称
Desc string `json:"desc,omitempty"` // 描述
}
// ParseAIResumeRespResumeLanguage ...
type ParseAIResumeRespResumeLanguage struct {
Level int64 `json:"level,omitempty"` // 语言等级
Description string `json:"description,omitempty"` // 语言描述
}
// ParseAIResumeRespResumeProject ...
type ParseAIResumeRespResumeProject struct {
Name string `json:"name,omitempty"` // 项目名称
Title string `json:"title,omitempty"` // 项目岗位
StartDate string `json:"start_date,omitempty"` // 开始时间, 格式: YYYY-MM-DD
StartTime string `json:"start_time,omitempty"` // 开始时间, 格式: YYYY-MM-DD, 跟start_date值一样
EndDate string `json:"end_date,omitempty"` // 结束时间, 格式: YYYY-MM-DD
EndTime string `json:"end_time,omitempty"` // 结束时间, 格式: YYYY-MM-DD 或 “至今”, 当值为“至今”时, end_date=="", 值
Description string `json:"description,omitempty"` // 项目描述
}
// parseAIResumeResp ...
type parseAIResumeResp struct {
Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败
Msg string `json:"msg,omitempty"` // 错误描述
Data *ParseAIResumeResp `json:"data,omitempty"`
Error *ErrorDetail `json:"error,omitempty"`
}