// Package document_ai code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package larkdocument_ai

import (
	"io"

	"bytes"

	"github.com/larksuite/oapi-sdk-go/v3/core"
)

const (
	OcrModeForce  = "force"  // pdf类型文件直接走OCR解析
	OcrModeAuto   = "auto"   // pdf类型文件先走本地解析，无法解析（扫描/图片版）再走OCR
	OcrModeUnused = "unused" // 不调用OCR，扫描/图片PDF返回不可解析信息
)

type BankCard struct {
	Entities []*BankCardEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type BankCardBuilder struct {
	entities     []*BankCardEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewBankCardBuilder() *BankCardBuilder {
	builder := &BankCardBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *BankCardBuilder) Entities(entities []*BankCardEntity) *BankCardBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *BankCardBuilder) Build() *BankCard {
	req := &BankCard{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type BankCardEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type BankCardEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewBankCardEntityBuilder() *BankCardEntityBuilder {
	builder := &BankCardEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：card_number
func (builder *BankCardEntityBuilder) Type(type_ string) *BankCardEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：5184********8888
func (builder *BankCardEntityBuilder) Value(value string) *BankCardEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *BankCardEntityBuilder) Build() *BankCardEntity {
	req := &BankCardEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type BankEntity struct {
	AccountName *string `json:"account_name,omitempty"` // 账户名

	BankName *string `json:"bank_name,omitempty"` // 银行名称

	AccountNumber *string `json:"account_number,omitempty"` // 账户ID

	Phone *string `json:"phone,omitempty"` // 电话

	Contacts *string `json:"contacts,omitempty"` // 联系人

	TaxNumber *string `json:"tax_number,omitempty"` // 传真号码

	Address *string `json:"address,omitempty"` // 联系地址

	IdNumber *string `json:"id_number,omitempty"` // id号

	Email *string `json:"email,omitempty"` // 邮箱
}

type BankEntityBuilder struct {
	accountName     string // 账户名
	accountNameFlag bool

	bankName     string // 银行名称
	bankNameFlag bool

	accountNumber     string // 账户ID
	accountNumberFlag bool

	phone     string // 电话
	phoneFlag bool

	contacts     string // 联系人
	contactsFlag bool

	taxNumber     string // 传真号码
	taxNumberFlag bool

	address     string // 联系地址
	addressFlag bool

	idNumber     string // id号
	idNumberFlag bool

	email     string // 邮箱
	emailFlag bool
}

func NewBankEntityBuilder() *BankEntityBuilder {
	builder := &BankEntityBuilder{}
	return builder
}

// 账户名
//
// 示例值：北京字节跳动网络技术有限公司
func (builder *BankEntityBuilder) AccountName(accountName string) *BankEntityBuilder {
	builder.accountName = accountName
	builder.accountNameFlag = true
	return builder
}

// 银行名称
//
// 示例值：中国农业银行北京和平里支行
func (builder *BankEntityBuilder) BankName(bankName string) *BankEntityBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 账户ID
//
// 示例值：1123012345004701
func (builder *BankEntityBuilder) AccountNumber(accountNumber string) *BankEntityBuilder {
	builder.accountNumber = accountNumber
	builder.accountNumberFlag = true
	return builder
}

// 电话
//
// 示例值：010-81234688
func (builder *BankEntityBuilder) Phone(phone string) *BankEntityBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 联系人
//
// 示例值：张三
func (builder *BankEntityBuilder) Contacts(contacts string) *BankEntityBuilder {
	builder.contacts = contacts
	builder.contactsFlag = true
	return builder
}

// 传真号码
//
// 示例值：91110112345684235
func (builder *BankEntityBuilder) TaxNumber(taxNumber string) *BankEntityBuilder {
	builder.taxNumber = taxNumber
	builder.taxNumberFlag = true
	return builder
}

// 联系地址
//
// 示例值：A市B区C园D楼3-8
func (builder *BankEntityBuilder) Address(address string) *BankEntityBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// id号
//
// 示例值：1123012345004701
func (builder *BankEntityBuilder) IdNumber(idNumber string) *BankEntityBuilder {
	builder.idNumber = idNumber
	builder.idNumberFlag = true
	return builder
}

// 邮箱
//
// 示例值：zhangsan.1111@bytedance.com
func (builder *BankEntityBuilder) Email(email string) *BankEntityBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

func (builder *BankEntityBuilder) Build() *BankEntity {
	req := &BankEntity{}
	if builder.accountNameFlag {
		req.AccountName = &builder.accountName

	}
	if builder.bankNameFlag {
		req.BankName = &builder.bankName

	}
	if builder.accountNumberFlag {
		req.AccountNumber = &builder.accountNumber

	}
	if builder.phoneFlag {
		req.Phone = &builder.phone

	}
	if builder.contactsFlag {
		req.Contacts = &builder.contacts

	}
	if builder.taxNumberFlag {
		req.TaxNumber = &builder.taxNumber

	}
	if builder.addressFlag {
		req.Address = &builder.address

	}
	if builder.idNumberFlag {
		req.IdNumber = &builder.idNumber

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	return req
}

type BankInfo struct {
	BankType *string `json:"bank_type,omitempty"` // 甲乙方信息类型

	Value *BankEntity `json:"value,omitempty"` // 值
}

type BankInfoBuilder struct {
	bankType     string // 甲乙方信息类型
	bankTypeFlag bool

	value     *BankEntity // 值
	valueFlag bool
}

func NewBankInfoBuilder() *BankInfoBuilder {
	builder := &BankInfoBuilder{}
	return builder
}

// 甲乙方信息类型
//
// 示例值：buy
func (builder *BankInfoBuilder) BankType(bankType string) *BankInfoBuilder {
	builder.bankType = bankType
	builder.bankTypeFlag = true
	return builder
}

// 值
//
// 示例值：value
func (builder *BankInfoBuilder) Value(value *BankEntity) *BankInfoBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *BankInfoBuilder) Build() *BankInfo {
	req := &BankInfo{}
	if builder.bankTypeFlag {
		req.BankType = &builder.bankType

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type BodyEntity struct {
	Address *string `json:"address,omitempty"` // 地址

	Contacts *string `json:"contacts,omitempty"` // 联系人

	Email *string `json:"email,omitempty"` // 邮箱

	Phone *string `json:"phone,omitempty"` // 电话

	IdNumber *string `json:"id_number,omitempty"` // ID

	LegalRepresentative *string `json:"legal_representative,omitempty"` // 法人代表

	Party *string `json:"party,omitempty"` // 当事人
}

type BodyEntityBuilder struct {
	address     string // 地址
	addressFlag bool

	contacts     string // 联系人
	contactsFlag bool

	email     string // 邮箱
	emailFlag bool

	phone     string // 电话
	phoneFlag bool

	idNumber     string // ID
	idNumberFlag bool

	legalRepresentative     string // 法人代表
	legalRepresentativeFlag bool

	party     string // 当事人
	partyFlag bool
}

func NewBodyEntityBuilder() *BodyEntityBuilder {
	builder := &BodyEntityBuilder{}
	return builder
}

// 地址
//
// 示例值：北京市海淀区紫金数码园4号楼
func (builder *BodyEntityBuilder) Address(address string) *BodyEntityBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 联系人
//
// 示例值：张三
func (builder *BodyEntityBuilder) Contacts(contacts string) *BodyEntityBuilder {
	builder.contacts = contacts
	builder.contactsFlag = true
	return builder
}

// 邮箱
//
// 示例值：zhangsan.1111@bytedance.com
func (builder *BodyEntityBuilder) Email(email string) *BodyEntityBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 电话
//
// 示例值：13600000000
func (builder *BodyEntityBuilder) Phone(phone string) *BodyEntityBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// ID
//
// 示例值：310XXXXXXXXXXXXXXX
func (builder *BodyEntityBuilder) IdNumber(idNumber string) *BodyEntityBuilder {
	builder.idNumber = idNumber
	builder.idNumberFlag = true
	return builder
}

// 法人代表
//
// 示例值：张三
func (builder *BodyEntityBuilder) LegalRepresentative(legalRepresentative string) *BodyEntityBuilder {
	builder.legalRepresentative = legalRepresentative
	builder.legalRepresentativeFlag = true
	return builder
}

// 当事人
//
// 示例值：北京字节跳动网络技术有限公司
func (builder *BodyEntityBuilder) Party(party string) *BodyEntityBuilder {
	builder.party = party
	builder.partyFlag = true
	return builder
}

func (builder *BodyEntityBuilder) Build() *BodyEntity {
	req := &BodyEntity{}
	if builder.addressFlag {
		req.Address = &builder.address

	}
	if builder.contactsFlag {
		req.Contacts = &builder.contacts

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.phoneFlag {
		req.Phone = &builder.phone

	}
	if builder.idNumberFlag {
		req.IdNumber = &builder.idNumber

	}
	if builder.legalRepresentativeFlag {
		req.LegalRepresentative = &builder.legalRepresentative

	}
	if builder.partyFlag {
		req.Party = &builder.party

	}
	return req
}

type BodyInfo struct {
	BodyType *string `json:"body_type,omitempty"` // 主体类型

	Value *BodyEntity `json:"value,omitempty"` // 值
}

type BodyInfoBuilder struct {
	bodyType     string // 主体类型
	bodyTypeFlag bool

	value     *BodyEntity // 值
	valueFlag bool
}

func NewBodyInfoBuilder() *BodyInfoBuilder {
	builder := &BodyInfoBuilder{}
	return builder
}

// 主体类型
//
// 示例值：buy
func (builder *BodyInfoBuilder) BodyType(bodyType string) *BodyInfoBuilder {
	builder.bodyType = bodyType
	builder.bodyTypeFlag = true
	return builder
}

// 值
//
// 示例值：value
func (builder *BodyInfoBuilder) Value(value *BodyEntity) *BodyInfoBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *BodyInfoBuilder) Build() *BodyInfo {
	req := &BodyInfo{}
	if builder.bodyTypeFlag {
		req.BodyType = &builder.bodyType

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type BusinessEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type BusinessEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewBusinessEntityBuilder() *BusinessEntityBuilder {
	builder := &BusinessEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：legal_representative
func (builder *BusinessEntityBuilder) Type(type_ string) *BusinessEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *BusinessEntityBuilder) Value(value string) *BusinessEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *BusinessEntityBuilder) Build() *BusinessEntity {
	req := &BusinessEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type BusinessLicense struct {
	Entities []*BusinessEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type BusinessLicenseBuilder struct {
	entities     []*BusinessEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewBusinessLicenseBuilder() *BusinessLicenseBuilder {
	builder := &BusinessLicenseBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *BusinessLicenseBuilder) Entities(entities []*BusinessEntity) *BusinessLicenseBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *BusinessLicenseBuilder) Build() *BusinessLicense {
	req := &BusinessLicense{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type ChinesePassport struct {
	Entities []*ChinesePassportEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type ChinesePassportBuilder struct {
	entities     []*ChinesePassportEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewChinesePassportBuilder() *ChinesePassportBuilder {
	builder := &ChinesePassportBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *ChinesePassportBuilder) Entities(entities []*ChinesePassportEntity) *ChinesePassportBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *ChinesePassportBuilder) Build() *ChinesePassport {
	req := &ChinesePassport{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type ChinesePassportEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type ChinesePassportEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewChinesePassportEntityBuilder() *ChinesePassportEntityBuilder {
	builder := &ChinesePassportEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：full_name_cn
func (builder *ChinesePassportEntityBuilder) Type(type_ string) *ChinesePassportEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *ChinesePassportEntityBuilder) Value(value string) *ChinesePassportEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *ChinesePassportEntityBuilder) Build() *ChinesePassportEntity {
	req := &ChinesePassportEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type CodeDetail struct {
	Language *string `json:"language,omitempty"` // 语言ID

	LanguageName *string `json:"language_name,omitempty"` // 语言名字

	Content *string `json:"content,omitempty"` // 代码块内容
}

type CodeDetailBuilder struct {
	language     string // 语言ID
	languageFlag bool

	languageName     string // 语言名字
	languageNameFlag bool

	content     string // 代码块内容
	contentFlag bool
}

func NewCodeDetailBuilder() *CodeDetailBuilder {
	builder := &CodeDetailBuilder{}
	return builder
}

// 语言ID
//
// 示例值：22
func (builder *CodeDetailBuilder) Language(language string) *CodeDetailBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 语言名字
//
// 示例值：Go
func (builder *CodeDetailBuilder) LanguageName(languageName string) *CodeDetailBuilder {
	builder.languageName = languageName
	builder.languageNameFlag = true
	return builder
}

// 代码块内容
//
// 示例值：//引用中代码块\npackage main\n\nimport "fmt"\n\nfunc main() {\n	fmt.Println("Hello, World!")\n}\n
func (builder *CodeDetailBuilder) Content(content string) *CodeDetailBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

func (builder *CodeDetailBuilder) Build() *CodeDetail {
	req := &CodeDetail{}
	if builder.languageFlag {
		req.Language = &builder.language

	}
	if builder.languageNameFlag {
		req.LanguageName = &builder.languageName

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	return req
}

type Currency struct {
	CurrencyName *string `json:"currency_name,omitempty"` // 币种名称

	CurrencyText *string `json:"currency_text,omitempty"` // 币种符号
}

type CurrencyBuilder struct {
	currencyName     string // 币种名称
	currencyNameFlag bool

	currencyText     string // 币种符号
	currencyTextFlag bool
}

func NewCurrencyBuilder() *CurrencyBuilder {
	builder := &CurrencyBuilder{}
	return builder
}

// 币种名称
//
// 示例值：CNY
func (builder *CurrencyBuilder) CurrencyName(currencyName string) *CurrencyBuilder {
	builder.currencyName = currencyName
	builder.currencyNameFlag = true
	return builder
}

// 币种符号
//
// 示例值：¥
func (builder *CurrencyBuilder) CurrencyText(currencyText string) *CurrencyBuilder {
	builder.currencyText = currencyText
	builder.currencyTextFlag = true
	return builder
}

func (builder *CurrencyBuilder) Build() *Currency {
	req := &Currency{}
	if builder.currencyNameFlag {
		req.CurrencyName = &builder.currencyName

	}
	if builder.currencyTextFlag {
		req.CurrencyText = &builder.currencyText

	}
	return req
}

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type DocChunkBboxItem struct {
	BboxPositions []string `json:"bbox_positions,omitempty"` // bbox坐标列表
}

type DocChunkBboxItemBuilder struct {
	bboxPositions     []string // bbox坐标列表
	bboxPositionsFlag bool
}

func NewDocChunkBboxItemBuilder() *DocChunkBboxItemBuilder {
	builder := &DocChunkBboxItemBuilder{}
	return builder
}

// bbox坐标列表
//
// 示例值：
func (builder *DocChunkBboxItemBuilder) BboxPositions(bboxPositions []string) *DocChunkBboxItemBuilder {
	builder.bboxPositions = bboxPositions
	builder.bboxPositionsFlag = true
	return builder
}

func (builder *DocChunkBboxItemBuilder) Build() *DocChunkBboxItem {
	req := &DocChunkBboxItem{}
	if builder.bboxPositionsFlag {
		req.BboxPositions = builder.bboxPositions
	}
	return req
}

type DocChunkPosition struct {
	PageNumbers []int `json:"page_numbers,omitempty"` // pdf文件解析结果所在页数

	Bboxes []*DocChunkBboxItem `json:"bboxes,omitempty"` // pdf文件解析结果bbox信息
}

type DocChunkPositionBuilder struct {
	pageNumbers     []int // pdf文件解析结果所在页数
	pageNumbersFlag bool

	bboxes     []*DocChunkBboxItem // pdf文件解析结果bbox信息
	bboxesFlag bool
}

func NewDocChunkPositionBuilder() *DocChunkPositionBuilder {
	builder := &DocChunkPositionBuilder{}
	return builder
}

// pdf文件解析结果所在页数
//
// 示例值：
func (builder *DocChunkPositionBuilder) PageNumbers(pageNumbers []int) *DocChunkPositionBuilder {
	builder.pageNumbers = pageNumbers
	builder.pageNumbersFlag = true
	return builder
}

// pdf文件解析结果bbox信息
//
// 示例值：
func (builder *DocChunkPositionBuilder) Bboxes(bboxes []*DocChunkBboxItem) *DocChunkPositionBuilder {
	builder.bboxes = bboxes
	builder.bboxesFlag = true
	return builder
}

func (builder *DocChunkPositionBuilder) Build() *DocChunkPosition {
	req := &DocChunkPosition{}
	if builder.pageNumbersFlag {
		req.PageNumbers = builder.pageNumbers
	}
	if builder.bboxesFlag {
		req.Bboxes = builder.bboxes
	}
	return req
}

type DocChunkResult struct {
	Id *int `json:"id,omitempty"` // 段落索引

	Type *string `json:"type,omitempty"` // 该chunk属于哪一种文档元素

	Positions *DocChunkPosition `json:"positions,omitempty"` // chunk的位置信息，pdf文档中会有bbox和page_no

	Text *string `json:"text,omitempty"` // 段落文本内容

	Level *int `json:"level,omitempty"` // 段落层级，类似飞书文档的Hn

	Parent *int `json:"parent,omitempty"` // 当前段落父节点索引

	Children []int `json:"children,omitempty"` // 当前段落所有子节点索引

	Label *string `json:"label,omitempty"` // 段落的语义标签，（以论文为例，会有title, author, abstract, introduction, related works...）

	BlockId *string `json:"block_id,omitempty"` // 飞书文档的block_id字段

	TableDetail *DocChunkTableDetail `json:"table_detail,omitempty"` // 如chunk=table，则此字段包含表格信息

	LlmDetail *LlmDetail `json:"llm_detail,omitempty"` // 多模态返回的详细信息

	ImageDetail *ImageDetail `json:"image_detail,omitempty"` // 图片内容详细信息

	SlideIndex *int `json:"slide_index,omitempty"` // pptx文件里面的页码

	MdText *string `json:"md_text,omitempty"` // 若to_md设置为true, md_collapsed设置为false, 各chunk转成markdown的结果；若chunk为表格，不管开启与否返回的都是表格的markdown结果

	HtmlText *string `json:"html_text,omitempty"` // 当chunk为表格的情况下，返回html的结果

	FileDetail *FileDetail `json:"file_detail,omitempty"` // 文件信息 在type为file时用来表示文件信息

	CodeDetail *CodeDetail `json:"code_detail,omitempty"` // 飞书云文档返回的代码块信息
}

type DocChunkResultBuilder struct {
	id     int // 段落索引
	idFlag bool

	type_    string // 该chunk属于哪一种文档元素
	typeFlag bool

	positions     *DocChunkPosition // chunk的位置信息，pdf文档中会有bbox和page_no
	positionsFlag bool

	text     string // 段落文本内容
	textFlag bool

	level     int // 段落层级，类似飞书文档的Hn
	levelFlag bool

	parent     int // 当前段落父节点索引
	parentFlag bool

	children     []int // 当前段落所有子节点索引
	childrenFlag bool

	label     string // 段落的语义标签，（以论文为例，会有title, author, abstract, introduction, related works...）
	labelFlag bool

	blockId     string // 飞书文档的block_id字段
	blockIdFlag bool

	tableDetail     *DocChunkTableDetail // 如chunk=table，则此字段包含表格信息
	tableDetailFlag bool

	llmDetail     *LlmDetail // 多模态返回的详细信息
	llmDetailFlag bool

	imageDetail     *ImageDetail // 图片内容详细信息
	imageDetailFlag bool

	slideIndex     int // pptx文件里面的页码
	slideIndexFlag bool

	mdText     string // 若to_md设置为true, md_collapsed设置为false, 各chunk转成markdown的结果；若chunk为表格，不管开启与否返回的都是表格的markdown结果
	mdTextFlag bool

	htmlText     string // 当chunk为表格的情况下，返回html的结果
	htmlTextFlag bool

	fileDetail     *FileDetail // 文件信息 在type为file时用来表示文件信息
	fileDetailFlag bool

	codeDetail     *CodeDetail // 飞书云文档返回的代码块信息
	codeDetailFlag bool
}

func NewDocChunkResultBuilder() *DocChunkResultBuilder {
	builder := &DocChunkResultBuilder{}
	return builder
}

// 段落索引
//
// 示例值：1
func (builder *DocChunkResultBuilder) Id(id int) *DocChunkResultBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 该chunk属于哪一种文档元素
//
// 示例值：title
func (builder *DocChunkResultBuilder) Type(type_ string) *DocChunkResultBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// chunk的位置信息，pdf文档中会有bbox和page_no
//
// 示例值：
func (builder *DocChunkResultBuilder) Positions(positions *DocChunkPosition) *DocChunkResultBuilder {
	builder.positions = positions
	builder.positionsFlag = true
	return builder
}

// 段落文本内容
//
// 示例值：设备采购合同...
func (builder *DocChunkResultBuilder) Text(text string) *DocChunkResultBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 段落层级，类似飞书文档的Hn
//
// 示例值：1
func (builder *DocChunkResultBuilder) Level(level int) *DocChunkResultBuilder {
	builder.level = level
	builder.levelFlag = true
	return builder
}

// 当前段落父节点索引
//
// 示例值：1
func (builder *DocChunkResultBuilder) Parent(parent int) *DocChunkResultBuilder {
	builder.parent = parent
	builder.parentFlag = true
	return builder
}

// 当前段落所有子节点索引
//
// 示例值：
func (builder *DocChunkResultBuilder) Children(children []int) *DocChunkResultBuilder {
	builder.children = children
	builder.childrenFlag = true
	return builder
}

// 段落的语义标签，（以论文为例，会有title, author, abstract, introduction, related works...）
//
// 示例值：author
func (builder *DocChunkResultBuilder) Label(label string) *DocChunkResultBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 飞书文档的block_id字段
//
// 示例值：123
func (builder *DocChunkResultBuilder) BlockId(blockId string) *DocChunkResultBuilder {
	builder.blockId = blockId
	builder.blockIdFlag = true
	return builder
}

// 如chunk=table，则此字段包含表格信息
//
// 示例值：
func (builder *DocChunkResultBuilder) TableDetail(tableDetail *DocChunkTableDetail) *DocChunkResultBuilder {
	builder.tableDetail = tableDetail
	builder.tableDetailFlag = true
	return builder
}

// 多模态返回的详细信息
//
// 示例值：
func (builder *DocChunkResultBuilder) LlmDetail(llmDetail *LlmDetail) *DocChunkResultBuilder {
	builder.llmDetail = llmDetail
	builder.llmDetailFlag = true
	return builder
}

// 图片内容详细信息
//
// 示例值：
func (builder *DocChunkResultBuilder) ImageDetail(imageDetail *ImageDetail) *DocChunkResultBuilder {
	builder.imageDetail = imageDetail
	builder.imageDetailFlag = true
	return builder
}

// pptx文件里面的页码
//
// 示例值：0
func (builder *DocChunkResultBuilder) SlideIndex(slideIndex int) *DocChunkResultBuilder {
	builder.slideIndex = slideIndex
	builder.slideIndexFlag = true
	return builder
}

// 若to_md设置为true, md_collapsed设置为false, 各chunk转成markdown的结果；若chunk为表格，不管开启与否返回的都是表格的markdown结果
//
// 示例值：本项目旨在提供一个简洁高效的视频处理服务，支持以下功能：  - 视频分段切片 - 精准帧抽取 - 帧图重命名与排序 - 多线程并发处理 - 抽帧结果打包上传
func (builder *DocChunkResultBuilder) MdText(mdText string) *DocChunkResultBuilder {
	builder.mdText = mdText
	builder.mdTextFlag = true
	return builder
}

// 当chunk为表格的情况下，返回html的结果
//
// 示例值：<table border="1">   <thead>	 <tr>	   <th>用户名</th>	   <th>年龄</th>	   <th>邮箱</th>	   <th>状态</th>	 </tr>   </thead>   <tbody>	 <tr>	   <td>Alice</td>	   <td>24</td>	   <td>alice@example.com</td>	   <td>启用</td>	 </tr>	 <tr>	   <td>Bob</td>	   <td>30</td>	   <td>bob@example.com</td>	   <td>禁用</td>	 </tr>	 <tr>	   <td>Charlie</td>	   <td>28</td>	   <td>charlie@example.com</td>	   <td>启用</td>	 </tr>   </tbody> </table>
func (builder *DocChunkResultBuilder) HtmlText(htmlText string) *DocChunkResultBuilder {
	builder.htmlText = htmlText
	builder.htmlTextFlag = true
	return builder
}

// 文件信息 在type为file时用来表示文件信息
//
// 示例值：
func (builder *DocChunkResultBuilder) FileDetail(fileDetail *FileDetail) *DocChunkResultBuilder {
	builder.fileDetail = fileDetail
	builder.fileDetailFlag = true
	return builder
}

// 飞书云文档返回的代码块信息
//
// 示例值：
func (builder *DocChunkResultBuilder) CodeDetail(codeDetail *CodeDetail) *DocChunkResultBuilder {
	builder.codeDetail = codeDetail
	builder.codeDetailFlag = true
	return builder
}

func (builder *DocChunkResultBuilder) Build() *DocChunkResult {
	req := &DocChunkResult{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.positionsFlag {
		req.Positions = builder.positions
	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.levelFlag {
		req.Level = &builder.level

	}
	if builder.parentFlag {
		req.Parent = &builder.parent

	}
	if builder.childrenFlag {
		req.Children = builder.children
	}
	if builder.labelFlag {
		req.Label = &builder.label

	}
	if builder.blockIdFlag {
		req.BlockId = &builder.blockId

	}
	if builder.tableDetailFlag {
		req.TableDetail = builder.tableDetail
	}
	if builder.llmDetailFlag {
		req.LlmDetail = builder.llmDetail
	}
	if builder.imageDetailFlag {
		req.ImageDetail = builder.imageDetail
	}
	if builder.slideIndexFlag {
		req.SlideIndex = &builder.slideIndex

	}
	if builder.mdTextFlag {
		req.MdText = &builder.mdText

	}
	if builder.htmlTextFlag {
		req.HtmlText = &builder.htmlText

	}
	if builder.fileDetailFlag {
		req.FileDetail = builder.fileDetail
	}
	if builder.codeDetailFlag {
		req.CodeDetail = builder.codeDetail
	}
	return req
}

type DocChunkTableCell struct {
	Type *string `json:"type,omitempty"` // 现在只有paragraph，目前只支持文本形式的单元格内容返回

	Text *string `json:"text,omitempty"` // 文本内容

	X0 *string `json:"x0,omitempty"` // 单元格的bbox坐标（左）

	Y0 *string `json:"y0,omitempty"` // 单元格的bbox坐标（上）

	X1 *string `json:"x1,omitempty"` // 单元格的bbox坐标（右）

	Y1 *string `json:"y1,omitempty"` // 单元格的bbox坐标（下）

	RowIndex *int `json:"row_index,omitempty"` // 单元格行逻辑坐标，表示当前单元格在第rowIndex行

	ColIndex *int `json:"col_index,omitempty"` // 单元格列逻辑坐标，表示当前单元格在第colIndex列

	RowSpan *int `json:"row_span,omitempty"` // 单元格占的行数

	ColSpan *int `json:"col_span,omitempty"` // 单元格占的列数

	IsMergeCell *bool `json:"is_merge_cell,omitempty"` // 是否为合并单元格

	Images []string `json:"images,omitempty"` // 单元格内部图片列表（base64 / 文件token）

	Files []string `json:"files,omitempty"` // 单元格内部文件列表（临时链接 / 文件token）

	IsHeader *bool `json:"is_header,omitempty"` // 是否是表头
}

type DocChunkTableCellBuilder struct {
	type_    string // 现在只有paragraph，目前只支持文本形式的单元格内容返回
	typeFlag bool

	text     string // 文本内容
	textFlag bool

	x0     string // 单元格的bbox坐标（左）
	x0Flag bool

	y0     string // 单元格的bbox坐标（上）
	y0Flag bool

	x1     string // 单元格的bbox坐标（右）
	x1Flag bool

	y1     string // 单元格的bbox坐标（下）
	y1Flag bool

	rowIndex     int // 单元格行逻辑坐标，表示当前单元格在第rowIndex行
	rowIndexFlag bool

	colIndex     int // 单元格列逻辑坐标，表示当前单元格在第colIndex列
	colIndexFlag bool

	rowSpan     int // 单元格占的行数
	rowSpanFlag bool

	colSpan     int // 单元格占的列数
	colSpanFlag bool

	isMergeCell     bool // 是否为合并单元格
	isMergeCellFlag bool

	images     []string // 单元格内部图片列表（base64 / 文件token）
	imagesFlag bool

	files     []string // 单元格内部文件列表（临时链接 / 文件token）
	filesFlag bool

	isHeader     bool // 是否是表头
	isHeaderFlag bool
}

func NewDocChunkTableCellBuilder() *DocChunkTableCellBuilder {
	builder := &DocChunkTableCellBuilder{}
	return builder
}

// 现在只有paragraph，目前只支持文本形式的单元格内容返回
//
// 示例值：paragraph
func (builder *DocChunkTableCellBuilder) Type(type_ string) *DocChunkTableCellBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 文本内容
//
// 示例值：Transformer-CC...
func (builder *DocChunkTableCellBuilder) Text(text string) *DocChunkTableCellBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 单元格的bbox坐标（左）
//
// 示例值：181.0478
func (builder *DocChunkTableCellBuilder) X0(x0 string) *DocChunkTableCellBuilder {
	builder.x0 = x0
	builder.x0Flag = true
	return builder
}

// 单元格的bbox坐标（上）
//
// 示例值：57.51546
func (builder *DocChunkTableCellBuilder) Y0(y0 string) *DocChunkTableCellBuilder {
	builder.y0 = y0
	builder.y0Flag = true
	return builder
}

// 单元格的bbox坐标（右）
//
// 示例值：197.11617
func (builder *DocChunkTableCellBuilder) X1(x1 string) *DocChunkTableCellBuilder {
	builder.x1 = x1
	builder.x1Flag = true
	return builder
}

// 单元格的bbox坐标（下）
//
// 示例值：62.600098
func (builder *DocChunkTableCellBuilder) Y1(y1 string) *DocChunkTableCellBuilder {
	builder.y1 = y1
	builder.y1Flag = true
	return builder
}

// 单元格行逻辑坐标，表示当前单元格在第rowIndex行
//
// 示例值：10
func (builder *DocChunkTableCellBuilder) RowIndex(rowIndex int) *DocChunkTableCellBuilder {
	builder.rowIndex = rowIndex
	builder.rowIndexFlag = true
	return builder
}

// 单元格列逻辑坐标，表示当前单元格在第colIndex列
//
// 示例值：10
func (builder *DocChunkTableCellBuilder) ColIndex(colIndex int) *DocChunkTableCellBuilder {
	builder.colIndex = colIndex
	builder.colIndexFlag = true
	return builder
}

// 单元格占的行数
//
// 示例值：3
func (builder *DocChunkTableCellBuilder) RowSpan(rowSpan int) *DocChunkTableCellBuilder {
	builder.rowSpan = rowSpan
	builder.rowSpanFlag = true
	return builder
}

// 单元格占的列数
//
// 示例值：3
func (builder *DocChunkTableCellBuilder) ColSpan(colSpan int) *DocChunkTableCellBuilder {
	builder.colSpan = colSpan
	builder.colSpanFlag = true
	return builder
}

// 是否为合并单元格
//
// 示例值：
func (builder *DocChunkTableCellBuilder) IsMergeCell(isMergeCell bool) *DocChunkTableCellBuilder {
	builder.isMergeCell = isMergeCell
	builder.isMergeCellFlag = true
	return builder
}

// 单元格内部图片列表（base64 / 文件token）
//
// 示例值：
func (builder *DocChunkTableCellBuilder) Images(images []string) *DocChunkTableCellBuilder {
	builder.images = images
	builder.imagesFlag = true
	return builder
}

// 单元格内部文件列表（临时链接 / 文件token）
//
// 示例值：
func (builder *DocChunkTableCellBuilder) Files(files []string) *DocChunkTableCellBuilder {
	builder.files = files
	builder.filesFlag = true
	return builder
}

// 是否是表头
//
// 示例值：
func (builder *DocChunkTableCellBuilder) IsHeader(isHeader bool) *DocChunkTableCellBuilder {
	builder.isHeader = isHeader
	builder.isHeaderFlag = true
	return builder
}

func (builder *DocChunkTableCellBuilder) Build() *DocChunkTableCell {
	req := &DocChunkTableCell{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.x0Flag {
		req.X0 = &builder.x0

	}
	if builder.y0Flag {
		req.Y0 = &builder.y0

	}
	if builder.x1Flag {
		req.X1 = &builder.x1

	}
	if builder.y1Flag {
		req.Y1 = &builder.y1

	}
	if builder.rowIndexFlag {
		req.RowIndex = &builder.rowIndex

	}
	if builder.colIndexFlag {
		req.ColIndex = &builder.colIndex

	}
	if builder.rowSpanFlag {
		req.RowSpan = &builder.rowSpan

	}
	if builder.colSpanFlag {
		req.ColSpan = &builder.colSpan

	}
	if builder.isMergeCellFlag {
		req.IsMergeCell = &builder.isMergeCell

	}
	if builder.imagesFlag {
		req.Images = builder.images
	}
	if builder.filesFlag {
		req.Files = builder.files
	}
	if builder.isHeaderFlag {
		req.IsHeader = &builder.isHeader

	}
	return req
}

type DocChunkTableDetail struct {
	TableIdx *int `json:"table_idx,omitempty"` // 全文的第n个表格

	Text *string `json:"text,omitempty"` // 表格的所有文字内容，'\t\n'代表换行，'\t'代表新单元格

	Cells []*DocChunkTableRow `json:"cells,omitempty"` // 表格中全部cell的数据

	TableName *string `json:"table_name,omitempty"` // 表格名称

	Caption *string `json:"caption,omitempty"` // 表格描述，当前为表格上下文

	MdText *string `json:"md_text,omitempty"` // 表格的markdown结果

	HtmlText *string `json:"html_text,omitempty"` // 表格的html结果

	TableImg *TableImg `json:"table_img,omitempty"` // 整个表格区域直接转的图片

	SubTableIdx *int `json:"sub_table_idx,omitempty"` // 识别表头后拆分的子表ID

	TableRange *string `json:"table_range,omitempty"` // 子表的范围

	HeaderRanges []string `json:"header_ranges,omitempty"` // 表头范围

	DescRanges []string `json:"desc_ranges,omitempty"` // 表格描述行的范围
}

type DocChunkTableDetailBuilder struct {
	tableIdx     int // 全文的第n个表格
	tableIdxFlag bool

	text     string // 表格的所有文字内容，'\t\n'代表换行，'\t'代表新单元格
	textFlag bool

	cells     []*DocChunkTableRow // 表格中全部cell的数据
	cellsFlag bool

	tableName     string // 表格名称
	tableNameFlag bool

	caption     string // 表格描述，当前为表格上下文
	captionFlag bool

	mdText     string // 表格的markdown结果
	mdTextFlag bool

	htmlText     string // 表格的html结果
	htmlTextFlag bool

	tableImg     *TableImg // 整个表格区域直接转的图片
	tableImgFlag bool

	subTableIdx     int // 识别表头后拆分的子表ID
	subTableIdxFlag bool

	tableRange     string // 子表的范围
	tableRangeFlag bool

	headerRanges     []string // 表头范围
	headerRangesFlag bool

	descRanges     []string // 表格描述行的范围
	descRangesFlag bool
}

func NewDocChunkTableDetailBuilder() *DocChunkTableDetailBuilder {
	builder := &DocChunkTableDetailBuilder{}
	return builder
}

// 全文的第n个表格
//
// 示例值：1
func (builder *DocChunkTableDetailBuilder) TableIdx(tableIdx int) *DocChunkTableDetailBuilder {
	builder.tableIdx = tableIdx
	builder.tableIdxFlag = true
	return builder
}

// 表格的所有文字内容，'\t\n'代表换行，'\t'代表新单元格
//
// 示例值：Code\tExecutable\tAST Matching\...
func (builder *DocChunkTableDetailBuilder) Text(text string) *DocChunkTableDetailBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 表格中全部cell的数据
//
// 示例值：
func (builder *DocChunkTableDetailBuilder) Cells(cells []*DocChunkTableRow) *DocChunkTableDetailBuilder {
	builder.cells = cells
	builder.cellsFlag = true
	return builder
}

// 表格名称
//
// 示例值：表格1
func (builder *DocChunkTableDetailBuilder) TableName(tableName string) *DocChunkTableDetailBuilder {
	builder.tableName = tableName
	builder.tableNameFlag = true
	return builder
}

// 表格描述，当前为表格上下文
//
// 示例值：表格描述了xxx
func (builder *DocChunkTableDetailBuilder) Caption(caption string) *DocChunkTableDetailBuilder {
	builder.caption = caption
	builder.captionFlag = true
	return builder
}

// 表格的markdown结果
//
// 示例值：| 用户名   | 年龄 | 邮箱					| 状态   | |----------|------|-------------------------|--------| | Alice	| 24   | alice@example.com	   | 启用   | | Bob	  | 30   | bob@example.com		 | 禁用   | | Charlie  | 28   | charlie@example.com	 | 启用   |
func (builder *DocChunkTableDetailBuilder) MdText(mdText string) *DocChunkTableDetailBuilder {
	builder.mdText = mdText
	builder.mdTextFlag = true
	return builder
}

// 表格的html结果
//
// 示例值：<table border="1">   <thead>	 <tr>	   <th>用户名</th>	   <th>年龄</th>	   <th>邮箱</th>	   <th>状态</th>	 </tr>   </thead>   <tbody>	 <tr>	   <td>Alice</td>	   <td>24</td>	   <td>alice@example.com</td>	   <td>启用</td>	 </tr>	 <tr>	   <td>Bob</td>	   <td>30</td>	   <td>bob@example.com</td>	   <td>禁用</td>	 </tr>	 <tr>	   <td>Charlie</td>	   <td>28</td>	   <td>charlie@example.com</td>	   <td>启用</td>	 </tr>   </tbody> </table>
func (builder *DocChunkTableDetailBuilder) HtmlText(htmlText string) *DocChunkTableDetailBuilder {
	builder.htmlText = htmlText
	builder.htmlTextFlag = true
	return builder
}

// 整个表格区域直接转的图片
//
// 示例值：
func (builder *DocChunkTableDetailBuilder) TableImg(tableImg *TableImg) *DocChunkTableDetailBuilder {
	builder.tableImg = tableImg
	builder.tableImgFlag = true
	return builder
}

// 识别表头后拆分的子表ID
//
// 示例值：1
func (builder *DocChunkTableDetailBuilder) SubTableIdx(subTableIdx int) *DocChunkTableDetailBuilder {
	builder.subTableIdx = subTableIdx
	builder.subTableIdxFlag = true
	return builder
}

// 子表的范围
//
// 示例值：A1:B1
func (builder *DocChunkTableDetailBuilder) TableRange(tableRange string) *DocChunkTableDetailBuilder {
	builder.tableRange = tableRange
	builder.tableRangeFlag = true
	return builder
}

// 表头范围
//
// 示例值：
func (builder *DocChunkTableDetailBuilder) HeaderRanges(headerRanges []string) *DocChunkTableDetailBuilder {
	builder.headerRanges = headerRanges
	builder.headerRangesFlag = true
	return builder
}

// 表格描述行的范围
//
// 示例值：
func (builder *DocChunkTableDetailBuilder) DescRanges(descRanges []string) *DocChunkTableDetailBuilder {
	builder.descRanges = descRanges
	builder.descRangesFlag = true
	return builder
}

func (builder *DocChunkTableDetailBuilder) Build() *DocChunkTableDetail {
	req := &DocChunkTableDetail{}
	if builder.tableIdxFlag {
		req.TableIdx = &builder.tableIdx

	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.cellsFlag {
		req.Cells = builder.cells
	}
	if builder.tableNameFlag {
		req.TableName = &builder.tableName

	}
	if builder.captionFlag {
		req.Caption = &builder.caption

	}
	if builder.mdTextFlag {
		req.MdText = &builder.mdText

	}
	if builder.htmlTextFlag {
		req.HtmlText = &builder.htmlText

	}
	if builder.tableImgFlag {
		req.TableImg = builder.tableImg
	}
	if builder.subTableIdxFlag {
		req.SubTableIdx = &builder.subTableIdx

	}
	if builder.tableRangeFlag {
		req.TableRange = &builder.tableRange

	}
	if builder.headerRangesFlag {
		req.HeaderRanges = builder.headerRanges
	}
	if builder.descRangesFlag {
		req.DescRanges = builder.descRanges
	}
	return req
}

type DocChunkTableRow struct {
	RowCells []*DocChunkTableCell `json:"row_cells,omitempty"` // 表格解析单行数据
}

type DocChunkTableRowBuilder struct {
	rowCells     []*DocChunkTableCell // 表格解析单行数据
	rowCellsFlag bool
}

func NewDocChunkTableRowBuilder() *DocChunkTableRowBuilder {
	builder := &DocChunkTableRowBuilder{}
	return builder
}

// 表格解析单行数据
//
// 示例值：
func (builder *DocChunkTableRowBuilder) RowCells(rowCells []*DocChunkTableCell) *DocChunkTableRowBuilder {
	builder.rowCells = rowCells
	builder.rowCellsFlag = true
	return builder
}

func (builder *DocChunkTableRowBuilder) Build() *DocChunkTableRow {
	req := &DocChunkTableRow{}
	if builder.rowCellsFlag {
		req.RowCells = builder.rowCells
	}
	return req
}

type DrivingEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type DrivingEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewDrivingEntityBuilder() *DrivingEntityBuilder {
	builder := &DrivingEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：name
func (builder *DrivingEntityBuilder) Type(type_ string) *DrivingEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *DrivingEntityBuilder) Value(value string) *DrivingEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *DrivingEntityBuilder) Build() *DrivingEntity {
	req := &DrivingEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type DrvingLicense struct {
	Entities []*DrivingEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type DrvingLicenseBuilder struct {
	entities     []*DrivingEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewDrvingLicenseBuilder() *DrvingLicenseBuilder {
	builder := &DrvingLicenseBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *DrvingLicenseBuilder) Entities(entities []*DrivingEntity) *DrvingLicenseBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *DrvingLicenseBuilder) Build() *DrvingLicense {
	req := &DrvingLicense{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type ExtractCopy struct {
	CopyNum *int `json:"copy_num,omitempty"` // 盖章份数

	OriginalCopy *string `json:"original_copy,omitempty"` // 从原文中抽取的盖章份数

	Key *string `json:"key,omitempty"` // 盖章文件类型

	Text *string `json:"text,omitempty"` // 原文有关盖章份数的描述
}

type ExtractCopyBuilder struct {
	copyNum     int // 盖章份数
	copyNumFlag bool

	originalCopy     string // 从原文中抽取的盖章份数
	originalCopyFlag bool

	key     string // 盖章文件类型
	keyFlag bool

	text     string // 原文有关盖章份数的描述
	textFlag bool
}

func NewExtractCopyBuilder() *ExtractCopyBuilder {
	builder := &ExtractCopyBuilder{}
	return builder
}

// 盖章份数
//
// 示例值：2
func (builder *ExtractCopyBuilder) CopyNum(copyNum int) *ExtractCopyBuilder {
	builder.copyNum = copyNum
	builder.copyNumFlag = true
	return builder
}

// 从原文中抽取的盖章份数
//
// 示例值：一式贰份
func (builder *ExtractCopyBuilder) OriginalCopy(originalCopy string) *ExtractCopyBuilder {
	builder.originalCopy = originalCopy
	builder.originalCopyFlag = true
	return builder
}

// 盖章文件类型
//
// 示例值：协议
func (builder *ExtractCopyBuilder) Key(key string) *ExtractCopyBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 原文有关盖章份数的描述
//
// 示例值：此协议一式贰份，双方各执壹份，具有同等法律效力。
func (builder *ExtractCopyBuilder) Text(text string) *ExtractCopyBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *ExtractCopyBuilder) Build() *ExtractCopy {
	req := &ExtractCopy{}
	if builder.copyNumFlag {
		req.CopyNum = &builder.copyNum

	}
	if builder.originalCopyFlag {
		req.OriginalCopy = &builder.originalCopy

	}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type ExtractCurrency struct {
	CurrencyName *string `json:"currency_name,omitempty"` // 币种名称

	CurrencyText *string `json:"currency_text,omitempty"` // 币种符号
}

type ExtractCurrencyBuilder struct {
	currencyName     string // 币种名称
	currencyNameFlag bool

	currencyText     string // 币种符号
	currencyTextFlag bool
}

func NewExtractCurrencyBuilder() *ExtractCurrencyBuilder {
	builder := &ExtractCurrencyBuilder{}
	return builder
}

// 币种名称
//
// 示例值：CNY
func (builder *ExtractCurrencyBuilder) CurrencyName(currencyName string) *ExtractCurrencyBuilder {
	builder.currencyName = currencyName
	builder.currencyNameFlag = true
	return builder
}

// 币种符号
//
// 示例值：¥
func (builder *ExtractCurrencyBuilder) CurrencyText(currencyText string) *ExtractCurrencyBuilder {
	builder.currencyText = currencyText
	builder.currencyTextFlag = true
	return builder
}

func (builder *ExtractCurrencyBuilder) Build() *ExtractCurrency {
	req := &ExtractCurrency{}
	if builder.currencyNameFlag {
		req.CurrencyName = &builder.currencyName

	}
	if builder.currencyTextFlag {
		req.CurrencyText = &builder.currencyText

	}
	return req
}

type ExtractPrice struct {
	ContractPrice *float64 `json:"contract_price,omitempty"` // 交易金额

	ContractPriceOriginal *string `json:"contract_price_original,omitempty"` // 从原文中抽取的交易金额

	Text *string `json:"text,omitempty"` // 原文中描述交易金额的文字
}

type ExtractPriceBuilder struct {
	contractPrice     float64 // 交易金额
	contractPriceFlag bool

	contractPriceOriginal     string // 从原文中抽取的交易金额
	contractPriceOriginalFlag bool

	text     string // 原文中描述交易金额的文字
	textFlag bool
}

func NewExtractPriceBuilder() *ExtractPriceBuilder {
	builder := &ExtractPriceBuilder{}
	return builder
}

// 交易金额
//
// 示例值：200000
func (builder *ExtractPriceBuilder) ContractPrice(contractPrice float64) *ExtractPriceBuilder {
	builder.contractPrice = contractPrice
	builder.contractPriceFlag = true
	return builder
}

// 从原文中抽取的交易金额
//
// 示例值："200000"
func (builder *ExtractPriceBuilder) ContractPriceOriginal(contractPriceOriginal string) *ExtractPriceBuilder {
	builder.contractPriceOriginal = contractPriceOriginal
	builder.contractPriceOriginalFlag = true
	return builder
}

// 原文中描述交易金额的文字
//
// 示例值：本合同项下总金额共计￥200000（贰拾万元整）
func (builder *ExtractPriceBuilder) Text(text string) *ExtractPriceBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *ExtractPriceBuilder) Build() *ExtractPrice {
	req := &ExtractPrice{}
	if builder.contractPriceFlag {
		req.ContractPrice = &builder.contractPrice

	}
	if builder.contractPriceOriginalFlag {
		req.ContractPriceOriginal = &builder.contractPriceOriginal

	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type ExtractTerm struct {
	InitialTime *string `json:"initial_time,omitempty"` // 合同持续时长

	InitialUnit *string `json:"initial_unit,omitempty"` // 持续时长单位
}

type ExtractTermBuilder struct {
	initialTime     string // 合同持续时长
	initialTimeFlag bool

	initialUnit     string // 持续时长单位
	initialUnitFlag bool
}

func NewExtractTermBuilder() *ExtractTermBuilder {
	builder := &ExtractTermBuilder{}
	return builder
}

// 合同持续时长
//
// 示例值：2
func (builder *ExtractTermBuilder) InitialTime(initialTime string) *ExtractTermBuilder {
	builder.initialTime = initialTime
	builder.initialTimeFlag = true
	return builder
}

// 持续时长单位
//
// 示例值：年
func (builder *ExtractTermBuilder) InitialUnit(initialUnit string) *ExtractTermBuilder {
	builder.initialUnit = initialUnit
	builder.initialUnitFlag = true
	return builder
}

func (builder *ExtractTermBuilder) Build() *ExtractTerm {
	req := &ExtractTerm{}
	if builder.initialTimeFlag {
		req.InitialTime = &builder.initialTime

	}
	if builder.initialUnitFlag {
		req.InitialUnit = &builder.initialUnit

	}
	return req
}

type ExtractTime struct {
	TimeStart *string `json:"time_start,omitempty"` // 开始时间

	TimeEnd *string `json:"time_end,omitempty"` // 结束时间

	OriginalTimeStart *string `json:"original_time_start,omitempty"` // 原文中抽取出的开始时间

	OriginalTimeEnd *string `json:"original_time_end,omitempty"` // 原文中抽取出的结束时间

	TextStart *string `json:"text_start,omitempty"` // 原文中关于开始时间的描述

	TextEnd *string `json:"text_end,omitempty"` // 原文中关于结束时间的描述

	InitialTerm *ExtractTerm `json:"initial_term,omitempty"` // 合同持续时长

	TextInitialTerm *string `json:"text_initial_term,omitempty"` // 原文中关于持续时间的描述
}

type ExtractTimeBuilder struct {
	timeStart     string // 开始时间
	timeStartFlag bool

	timeEnd     string // 结束时间
	timeEndFlag bool

	originalTimeStart     string // 原文中抽取出的开始时间
	originalTimeStartFlag bool

	originalTimeEnd     string // 原文中抽取出的结束时间
	originalTimeEndFlag bool

	textStart     string // 原文中关于开始时间的描述
	textStartFlag bool

	textEnd     string // 原文中关于结束时间的描述
	textEndFlag bool

	initialTerm     *ExtractTerm // 合同持续时长
	initialTermFlag bool

	textInitialTerm     string // 原文中关于持续时间的描述
	textInitialTermFlag bool
}

func NewExtractTimeBuilder() *ExtractTimeBuilder {
	builder := &ExtractTimeBuilder{}
	return builder
}

// 开始时间
//
// 示例值：2020-07-01
func (builder *ExtractTimeBuilder) TimeStart(timeStart string) *ExtractTimeBuilder {
	builder.timeStart = timeStart
	builder.timeStartFlag = true
	return builder
}

// 结束时间
//
// 示例值：2022-06-30
func (builder *ExtractTimeBuilder) TimeEnd(timeEnd string) *ExtractTimeBuilder {
	builder.timeEnd = timeEnd
	builder.timeEndFlag = true
	return builder
}

// 原文中抽取出的开始时间
//
// 示例值：2020年07月1日
func (builder *ExtractTimeBuilder) OriginalTimeStart(originalTimeStart string) *ExtractTimeBuilder {
	builder.originalTimeStart = originalTimeStart
	builder.originalTimeStartFlag = true
	return builder
}

// 原文中抽取出的结束时间
//
// 示例值：2022年6月30日
func (builder *ExtractTimeBuilder) OriginalTimeEnd(originalTimeEnd string) *ExtractTimeBuilder {
	builder.originalTimeEnd = originalTimeEnd
	builder.originalTimeEndFlag = true
	return builder
}

// 原文中关于开始时间的描述
//
// 示例值：本协议自有效期自【2020】年【07】月【1】日至【2022】年【6】月【30】日，有效期2年。
func (builder *ExtractTimeBuilder) TextStart(textStart string) *ExtractTimeBuilder {
	builder.textStart = textStart
	builder.textStartFlag = true
	return builder
}

// 原文中关于结束时间的描述
//
// 示例值：本协议自有效期自【2020】年【07】月【1】日至【2022】年【6】月【30】日，有效期2年。
func (builder *ExtractTimeBuilder) TextEnd(textEnd string) *ExtractTimeBuilder {
	builder.textEnd = textEnd
	builder.textEndFlag = true
	return builder
}

// 合同持续时长
//
// 示例值：
func (builder *ExtractTimeBuilder) InitialTerm(initialTerm *ExtractTerm) *ExtractTimeBuilder {
	builder.initialTerm = initialTerm
	builder.initialTermFlag = true
	return builder
}

// 原文中关于持续时间的描述
//
// 示例值：2年
func (builder *ExtractTimeBuilder) TextInitialTerm(textInitialTerm string) *ExtractTimeBuilder {
	builder.textInitialTerm = textInitialTerm
	builder.textInitialTermFlag = true
	return builder
}

func (builder *ExtractTimeBuilder) Build() *ExtractTime {
	req := &ExtractTime{}
	if builder.timeStartFlag {
		req.TimeStart = &builder.timeStart

	}
	if builder.timeEndFlag {
		req.TimeEnd = &builder.timeEnd

	}
	if builder.originalTimeStartFlag {
		req.OriginalTimeStart = &builder.originalTimeStart

	}
	if builder.originalTimeEndFlag {
		req.OriginalTimeEnd = &builder.originalTimeEnd

	}
	if builder.textStartFlag {
		req.TextStart = &builder.textStart

	}
	if builder.textEndFlag {
		req.TextEnd = &builder.textEnd

	}
	if builder.initialTermFlag {
		req.InitialTerm = builder.initialTerm
	}
	if builder.textInitialTermFlag {
		req.TextInitialTerm = &builder.textInitialTerm

	}
	return req
}

type FileDetail struct {
	Token *string `json:"token,omitempty"` // 飞书云文档内部对文件的标记

	Name *string `json:"name,omitempty"` // 文件名

	Links []string `json:"links,omitempty"` // 临时下载链接 （24小时内部链接）
}

type FileDetailBuilder struct {
	token     string // 飞书云文档内部对文件的标记
	tokenFlag bool

	name     string // 文件名
	nameFlag bool

	links     []string // 临时下载链接 （24小时内部链接）
	linksFlag bool
}

func NewFileDetailBuilder() *FileDetailBuilder {
	builder := &FileDetailBuilder{}
	return builder
}

// 飞书云文档内部对文件的标记
//
// 示例值：xxx
func (builder *FileDetailBuilder) Token(token string) *FileDetailBuilder {
	builder.token = token
	builder.tokenFlag = true
	return builder
}

// 文件名
//
// 示例值：文件
func (builder *FileDetailBuilder) Name(name string) *FileDetailBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 临时下载链接 （24小时内部链接）
//
// 示例值：
func (builder *FileDetailBuilder) Links(links []string) *FileDetailBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

func (builder *FileDetailBuilder) Build() *FileDetail {
	req := &FileDetail{}
	if builder.tokenFlag {
		req.Token = &builder.token

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	return req
}

type FoodManageEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type FoodManageEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewFoodManageEntityBuilder() *FoodManageEntityBuilder {
	builder := &FoodManageEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：issuer
func (builder *FoodManageEntityBuilder) Type(type_ string) *FoodManageEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *FoodManageEntityBuilder) Value(value string) *FoodManageEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FoodManageEntityBuilder) Build() *FoodManageEntity {
	req := &FoodManageEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FoodManageLicense struct {
	Entities []*FoodManageEntity `json:"entities,omitempty"` // 识别出的实体列表
}

type FoodManageLicenseBuilder struct {
	entities     []*FoodManageEntity // 识别出的实体列表
	entitiesFlag bool
}

func NewFoodManageLicenseBuilder() *FoodManageLicenseBuilder {
	builder := &FoodManageLicenseBuilder{}
	return builder
}

// 识别出的实体列表
//
// 示例值：
func (builder *FoodManageLicenseBuilder) Entities(entities []*FoodManageEntity) *FoodManageLicenseBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *FoodManageLicenseBuilder) Build() *FoodManageLicense {
	req := &FoodManageLicense{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type FoodProduceEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type FoodProduceEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewFoodProduceEntityBuilder() *FoodProduceEntityBuilder {
	builder := &FoodProduceEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：issuer
func (builder *FoodProduceEntityBuilder) Type(type_ string) *FoodProduceEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *FoodProduceEntityBuilder) Value(value string) *FoodProduceEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FoodProduceEntityBuilder) Build() *FoodProduceEntity {
	req := &FoodProduceEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FoodProduceLicense struct {
	Entities []*FoodProduceEntity `json:"entities,omitempty"` // 识别出的实体列表
}

type FoodProduceLicenseBuilder struct {
	entities     []*FoodProduceEntity // 识别出的实体列表
	entitiesFlag bool
}

func NewFoodProduceLicenseBuilder() *FoodProduceLicenseBuilder {
	builder := &FoodProduceLicenseBuilder{}
	return builder
}

// 识别出的实体列表
//
// 示例值：
func (builder *FoodProduceLicenseBuilder) Entities(entities []*FoodProduceEntity) *FoodProduceLicenseBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *FoodProduceLicenseBuilder) Build() *FoodProduceLicense {
	req := &FoodProduceLicense{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type HealthCertificate struct {
	Entities []*HealthCertificateEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type HealthCertificateBuilder struct {
	entities     []*HealthCertificateEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewHealthCertificateBuilder() *HealthCertificateBuilder {
	builder := &HealthCertificateBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *HealthCertificateBuilder) Entities(entities []*HealthCertificateEntity) *HealthCertificateBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *HealthCertificateBuilder) Build() *HealthCertificate {
	req := &HealthCertificate{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type HealthCertificateEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type HealthCertificateEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewHealthCertificateEntityBuilder() *HealthCertificateEntityBuilder {
	builder := &HealthCertificateEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：id_number
func (builder *HealthCertificateEntityBuilder) Type(type_ string) *HealthCertificateEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *HealthCertificateEntityBuilder) Value(value string) *HealthCertificateEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *HealthCertificateEntityBuilder) Build() *HealthCertificateEntity {
	req := &HealthCertificateEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type HkmMainlandTravelPermit struct {
	Entities []*HkmMainlandTravelPermitEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type HkmMainlandTravelPermitBuilder struct {
	entities     []*HkmMainlandTravelPermitEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewHkmMainlandTravelPermitBuilder() *HkmMainlandTravelPermitBuilder {
	builder := &HkmMainlandTravelPermitBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *HkmMainlandTravelPermitBuilder) Entities(entities []*HkmMainlandTravelPermitEntity) *HkmMainlandTravelPermitBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *HkmMainlandTravelPermitBuilder) Build() *HkmMainlandTravelPermit {
	req := &HkmMainlandTravelPermit{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type HkmMainlandTravelPermitEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type HkmMainlandTravelPermitEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewHkmMainlandTravelPermitEntityBuilder() *HkmMainlandTravelPermitEntityBuilder {
	builder := &HkmMainlandTravelPermitEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：full_name_cn
func (builder *HkmMainlandTravelPermitEntityBuilder) Type(type_ string) *HkmMainlandTravelPermitEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *HkmMainlandTravelPermitEntityBuilder) Value(value string) *HkmMainlandTravelPermitEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *HkmMainlandTravelPermitEntityBuilder) Build() *HkmMainlandTravelPermitEntity {
	req := &HkmMainlandTravelPermitEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type IdCard struct {
	Entities []*IdEntity `json:"entities,omitempty"` // 识别的实体列表

	Side *int `json:"side,omitempty"` // 正反面，1为身份证-姓名页，0为身份证-国徽页

	Conners []int `json:"conners,omitempty"` // 四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]

	FaceConners []int `json:"face_conners,omitempty"` // 人像四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]
}

type IdCardBuilder struct {
	entities     []*IdEntity // 识别的实体列表
	entitiesFlag bool

	side     int // 正反面，1为身份证-姓名页，0为身份证-国徽页
	sideFlag bool

	conners     []int // 四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]
	connersFlag bool

	faceConners     []int // 人像四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]
	faceConnersFlag bool
}

func NewIdCardBuilder() *IdCardBuilder {
	builder := &IdCardBuilder{}
	return builder
}

// 识别的实体列表
//
// 示例值：
func (builder *IdCardBuilder) Entities(entities []*IdEntity) *IdCardBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

// 正反面，1为身份证-姓名页，0为身份证-国徽页
//
// 示例值：0
func (builder *IdCardBuilder) Side(side int) *IdCardBuilder {
	builder.side = side
	builder.sideFlag = true
	return builder
}

// 四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]
//
// 示例值：
func (builder *IdCardBuilder) Conners(conners []int) *IdCardBuilder {
	builder.conners = conners
	builder.connersFlag = true
	return builder
}

// 人像四角坐标[x0,y0,x1,y1,x2,y2,x3,y3]
//
// 示例值：
func (builder *IdCardBuilder) FaceConners(faceConners []int) *IdCardBuilder {
	builder.faceConners = faceConners
	builder.faceConnersFlag = true
	return builder
}

func (builder *IdCardBuilder) Build() *IdCard {
	req := &IdCard{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	if builder.sideFlag {
		req.Side = &builder.side

	}
	if builder.connersFlag {
		req.Conners = builder.conners
	}
	if builder.faceConnersFlag {
		req.FaceConners = builder.faceConners
	}
	return req
}

type IdEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type IdEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewIdEntityBuilder() *IdEntityBuilder {
	builder := &IdEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：identity_name
func (builder *IdEntityBuilder) Type(type_ string) *IdEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *IdEntityBuilder) Value(value string) *IdEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *IdEntityBuilder) Build() *IdEntity {
	req := &IdEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type ImageDetail struct {
	Base64 *string `json:"base64,omitempty"` // 图片完整内容base64字符串

	Caption *string `json:"caption,omitempty"` // 图片描述，目前为当前图片的前一段和后一段\n拼接

	Links []string `json:"links,omitempty"` // 图片url

	Token *string `json:"token,omitempty"` // 飞书云文档内部对图片的标记
}

type ImageDetailBuilder struct {
	base64     string // 图片完整内容base64字符串
	base64Flag bool

	caption     string // 图片描述，目前为当前图片的前一段和后一段\n拼接
	captionFlag bool

	links     []string // 图片url
	linksFlag bool

	token     string // 飞书云文档内部对图片的标记
	tokenFlag bool
}

func NewImageDetailBuilder() *ImageDetailBuilder {
	builder := &ImageDetailBuilder{}
	return builder
}

// 图片完整内容base64字符串
//
// 示例值：MTEx
func (builder *ImageDetailBuilder) Base64(base64 string) *ImageDetailBuilder {
	builder.base64 = base64
	builder.base64Flag = true
	return builder
}

// 图片描述，目前为当前图片的前一段和后一段\n拼接
//
// 示例值：这是一个示例
func (builder *ImageDetailBuilder) Caption(caption string) *ImageDetailBuilder {
	builder.caption = caption
	builder.captionFlag = true
	return builder
}

// 图片url
//
// 示例值：
func (builder *ImageDetailBuilder) Links(links []string) *ImageDetailBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 飞书云文档内部对图片的标记
//
// 示例值：DkHObJB33orSVixjfEab3ZMDcre
func (builder *ImageDetailBuilder) Token(token string) *ImageDetailBuilder {
	builder.token = token
	builder.tokenFlag = true
	return builder
}

func (builder *ImageDetailBuilder) Build() *ImageDetail {
	req := &ImageDetail{}
	if builder.base64Flag {
		req.Base64 = &builder.base64

	}
	if builder.captionFlag {
		req.Caption = &builder.caption

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.tokenFlag {
		req.Token = &builder.token

	}
	return req
}

type Kie struct {
	Kies []*KieEntity `json:"kies,omitempty"` // 目标信息识别结果
}

type KieBuilder struct {
	kies     []*KieEntity // 目标信息识别结果
	kiesFlag bool
}

func NewKieBuilder() *KieBuilder {
	builder := &KieBuilder{}
	return builder
}

// 目标信息识别结果
//
// 示例值：
func (builder *KieBuilder) Kies(kies []*KieEntity) *KieBuilder {
	builder.kies = kies
	builder.kiesFlag = true
	return builder
}

func (builder *KieBuilder) Build() *Kie {
	req := &Kie{}
	if builder.kiesFlag {
		req.Kies = builder.kies
	}
	return req
}

type KieEntity struct {
	Key *string `json:"key,omitempty"` // 识别信息的key

	Value *string `json:"value,omitempty"` // 识别信息的值
}

type KieEntityBuilder struct {
	key     string // 识别信息的key
	keyFlag bool

	value     string // 识别信息的值
	valueFlag bool
}

func NewKieEntityBuilder() *KieEntityBuilder {
	builder := &KieEntityBuilder{}
	return builder
}

// 识别信息的key
//
// 示例值：取样地点
func (builder *KieEntityBuilder) Key(key string) *KieEntityBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 识别信息的值
//
// 示例值：库房
func (builder *KieEntityBuilder) Value(value string) *KieEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *KieEntityBuilder) Build() *KieEntity {
	req := &KieEntity{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type KvEntity struct {
	Type *string `json:"type,omitempty"` // 识别的实体类型

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type KvEntityBuilder struct {
	type_    string // 识别的实体类型
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewKvEntityBuilder() *KvEntityBuilder {
	builder := &KvEntityBuilder{}
	return builder
}

// 识别的实体类型
//
// 示例值：entry_name
func (builder *KvEntityBuilder) Type(type_ string) *KvEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：餐饮服务
func (builder *KvEntityBuilder) Value(value string) *KvEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *KvEntityBuilder) Build() *KvEntity {
	req := &KvEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type LlmConfig struct {
	Model *string `json:"model,omitempty"` // 模型名称

	Messages []*LlmMessage `json:"messages,omitempty"` // 消息

	MaxTokens *int `json:"max_tokens,omitempty"` // 默认1024，最多生成多少个tokens

	MessageType *string `json:"message_type,omitempty"` // 消息类型

	N *int `json:"n,omitempty"` // 默认1，每个query返回多少个预测结果

	Temperature *float64 `json:"temperature,omitempty"` // 默认0，越大模型结果越发散，如果为0默认每次取概率最高的作为next token。

	PresencePenalty *float64 `json:"presence_penalty,omitempty"` // 默认0，>0惩罚模型输出已经在输出中出现过的token

	FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` // 默认0，>0惩罚模型输出同样的token，输出次数越多惩罚越大
}

type LlmConfigBuilder struct {
	model     string // 模型名称
	modelFlag bool

	messages     []*LlmMessage // 消息
	messagesFlag bool

	maxTokens     int // 默认1024，最多生成多少个tokens
	maxTokensFlag bool

	messageType     string // 消息类型
	messageTypeFlag bool

	n     int // 默认1，每个query返回多少个预测结果
	nFlag bool

	temperature     float64 // 默认0，越大模型结果越发散，如果为0默认每次取概率最高的作为next token。
	temperatureFlag bool

	presencePenalty     float64 // 默认0，>0惩罚模型输出已经在输出中出现过的token
	presencePenaltyFlag bool

	frequencyPenalty     float64 // 默认0，>0惩罚模型输出同样的token，输出次数越多惩罚越大
	frequencyPenaltyFlag bool
}

func NewLlmConfigBuilder() *LlmConfigBuilder {
	builder := &LlmConfigBuilder{}
	return builder
}

// 模型名称
//
// 示例值：miniCPM
func (builder *LlmConfigBuilder) Model(model string) *LlmConfigBuilder {
	builder.model = model
	builder.modelFlag = true
	return builder
}

// 消息
//
// 示例值：
func (builder *LlmConfigBuilder) Messages(messages []*LlmMessage) *LlmConfigBuilder {
	builder.messages = messages
	builder.messagesFlag = true
	return builder
}

// 默认1024，最多生成多少个tokens
//
// 示例值：1
func (builder *LlmConfigBuilder) MaxTokens(maxTokens int) *LlmConfigBuilder {
	builder.maxTokens = maxTokens
	builder.maxTokensFlag = true
	return builder
}

// 消息类型
//
// 示例值：single-round
func (builder *LlmConfigBuilder) MessageType(messageType string) *LlmConfigBuilder {
	builder.messageType = messageType
	builder.messageTypeFlag = true
	return builder
}

// 默认1，每个query返回多少个预测结果
//
// 示例值：1
func (builder *LlmConfigBuilder) N(n int) *LlmConfigBuilder {
	builder.n = n
	builder.nFlag = true
	return builder
}

// 默认0，越大模型结果越发散，如果为0默认每次取概率最高的作为next token。
//
// 示例值：0.0
func (builder *LlmConfigBuilder) Temperature(temperature float64) *LlmConfigBuilder {
	builder.temperature = temperature
	builder.temperatureFlag = true
	return builder
}

// 默认0，>0惩罚模型输出已经在输出中出现过的token
//
// 示例值：0.0
func (builder *LlmConfigBuilder) PresencePenalty(presencePenalty float64) *LlmConfigBuilder {
	builder.presencePenalty = presencePenalty
	builder.presencePenaltyFlag = true
	return builder
}

// 默认0，>0惩罚模型输出同样的token，输出次数越多惩罚越大
//
// 示例值：0.0
func (builder *LlmConfigBuilder) FrequencyPenalty(frequencyPenalty float64) *LlmConfigBuilder {
	builder.frequencyPenalty = frequencyPenalty
	builder.frequencyPenaltyFlag = true
	return builder
}

func (builder *LlmConfigBuilder) Build() *LlmConfig {
	req := &LlmConfig{}
	if builder.modelFlag {
		req.Model = &builder.model

	}
	if builder.messagesFlag {
		req.Messages = builder.messages
	}
	if builder.maxTokensFlag {
		req.MaxTokens = &builder.maxTokens

	}
	if builder.messageTypeFlag {
		req.MessageType = &builder.messageType

	}
	if builder.nFlag {
		req.N = &builder.n

	}
	if builder.temperatureFlag {
		req.Temperature = &builder.temperature

	}
	if builder.presencePenaltyFlag {
		req.PresencePenalty = &builder.presencePenalty

	}
	if builder.frequencyPenaltyFlag {
		req.FrequencyPenalty = &builder.frequencyPenalty

	}
	return req
}

type LlmContent struct {
	Type *string `json:"type,omitempty"` // 内容类型：text, image_zip

	Content *string `json:"content,omitempty"` // 内容：text类型就是对应的输入文本， image_zip是文件的相对路径，文件需要以zip格式输入
}

type LlmContentBuilder struct {
	type_    string // 内容类型：text, image_zip
	typeFlag bool

	content     string // 内容：text类型就是对应的输入文本， image_zip是文件的相对路径，文件需要以zip格式输入
	contentFlag bool
}

func NewLlmContentBuilder() *LlmContentBuilder {
	builder := &LlmContentBuilder{}
	return builder
}

// 内容类型：text, image_zip
//
// 示例值：text
func (builder *LlmContentBuilder) Type(type_ string) *LlmContentBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 内容：text类型就是对应的输入文本， image_zip是文件的相对路径，文件需要以zip格式输入
//
// 示例值：输入图片按顺序描述了一件什么事情
func (builder *LlmContentBuilder) Content(content string) *LlmContentBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

func (builder *LlmContentBuilder) Build() *LlmContent {
	req := &LlmContent{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	return req
}

type LlmDetail struct {
	QueryId *int `json:"query_id,omitempty"` // query在原始输入batch中的序号，从0开始

	Usage *LlmUsage `json:"usage,omitempty"` // 统计输入和输出的token个数

	FinishReason *string `json:"finish_reason,omitempty"` // 表明模型停止生成的原因，如'length', 'stop'
}

type LlmDetailBuilder struct {
	queryId     int // query在原始输入batch中的序号，从0开始
	queryIdFlag bool

	usage     *LlmUsage // 统计输入和输出的token个数
	usageFlag bool

	finishReason     string // 表明模型停止生成的原因，如'length', 'stop'
	finishReasonFlag bool
}

func NewLlmDetailBuilder() *LlmDetailBuilder {
	builder := &LlmDetailBuilder{}
	return builder
}

// query在原始输入batch中的序号，从0开始
//
// 示例值：0
func (builder *LlmDetailBuilder) QueryId(queryId int) *LlmDetailBuilder {
	builder.queryId = queryId
	builder.queryIdFlag = true
	return builder
}

// 统计输入和输出的token个数
//
// 示例值：
func (builder *LlmDetailBuilder) Usage(usage *LlmUsage) *LlmDetailBuilder {
	builder.usage = usage
	builder.usageFlag = true
	return builder
}

// 表明模型停止生成的原因，如'length', 'stop'
//
// 示例值：stop
func (builder *LlmDetailBuilder) FinishReason(finishReason string) *LlmDetailBuilder {
	builder.finishReason = finishReason
	builder.finishReasonFlag = true
	return builder
}

func (builder *LlmDetailBuilder) Build() *LlmDetail {
	req := &LlmDetail{}
	if builder.queryIdFlag {
		req.QueryId = &builder.queryId

	}
	if builder.usageFlag {
		req.Usage = builder.usage
	}
	if builder.finishReasonFlag {
		req.FinishReason = &builder.finishReason

	}
	return req
}

type LlmMessage struct {
	Role *string `json:"role,omitempty"` // 角色名

	Contents []*LlmContent `json:"contents,omitempty"` // 内容信息，如果同时输入多张图片和多段文本，默认将所有图片置于开头，取第一段文本作为输入的prompt；如果是图片，目前1个query (dict)最多输入3张图片，每张图片大小不超过3000*3000
}

type LlmMessageBuilder struct {
	role     string // 角色名
	roleFlag bool

	contents     []*LlmContent // 内容信息，如果同时输入多张图片和多段文本，默认将所有图片置于开头，取第一段文本作为输入的prompt；如果是图片，目前1个query (dict)最多输入3张图片，每张图片大小不超过3000*3000
	contentsFlag bool
}

func NewLlmMessageBuilder() *LlmMessageBuilder {
	builder := &LlmMessageBuilder{}
	return builder
}

// 角色名
//
// 示例值：user
func (builder *LlmMessageBuilder) Role(role string) *LlmMessageBuilder {
	builder.role = role
	builder.roleFlag = true
	return builder
}

// 内容信息，如果同时输入多张图片和多段文本，默认将所有图片置于开头，取第一段文本作为输入的prompt；如果是图片，目前1个query (dict)最多输入3张图片，每张图片大小不超过3000*3000
//
// 示例值：
func (builder *LlmMessageBuilder) Contents(contents []*LlmContent) *LlmMessageBuilder {
	builder.contents = contents
	builder.contentsFlag = true
	return builder
}

func (builder *LlmMessageBuilder) Build() *LlmMessage {
	req := &LlmMessage{}
	if builder.roleFlag {
		req.Role = &builder.role

	}
	if builder.contentsFlag {
		req.Contents = builder.contents
	}
	return req
}

type LlmUsage struct {
	PromptTokens *int `json:"prompt_tokens,omitempty"` // 当前输入token的个数

	CompletionTokens *int `json:"completion_tokens,omitempty"` // 当前输出token的个数

	TotalTokens *int `json:"total_tokens,omitempty"` // 输入+输出token的总个数
}

type LlmUsageBuilder struct {
	promptTokens     int // 当前输入token的个数
	promptTokensFlag bool

	completionTokens     int // 当前输出token的个数
	completionTokensFlag bool

	totalTokens     int // 输入+输出token的总个数
	totalTokensFlag bool
}

func NewLlmUsageBuilder() *LlmUsageBuilder {
	builder := &LlmUsageBuilder{}
	return builder
}

// 当前输入token的个数
//
// 示例值：226
func (builder *LlmUsageBuilder) PromptTokens(promptTokens int) *LlmUsageBuilder {
	builder.promptTokens = promptTokens
	builder.promptTokensFlag = true
	return builder
}

// 当前输出token的个数
//
// 示例值：115
func (builder *LlmUsageBuilder) CompletionTokens(completionTokens int) *LlmUsageBuilder {
	builder.completionTokens = completionTokens
	builder.completionTokensFlag = true
	return builder
}

// 输入+输出token的总个数
//
// 示例值：341
func (builder *LlmUsageBuilder) TotalTokens(totalTokens int) *LlmUsageBuilder {
	builder.totalTokens = totalTokens
	builder.totalTokensFlag = true
	return builder
}

func (builder *LlmUsageBuilder) Build() *LlmUsage {
	req := &LlmUsage{}
	if builder.promptTokensFlag {
		req.PromptTokens = &builder.promptTokens

	}
	if builder.completionTokensFlag {
		req.CompletionTokens = &builder.completionTokens

	}
	if builder.totalTokensFlag {
		req.TotalTokens = &builder.totalTokens

	}
	return req
}

type RecognizedEntities struct {
	Entities []*RecognizedEntity `json:"entities,omitempty"` // 识别的实体列表
}

type RecognizedEntitiesBuilder struct {
	entities     []*RecognizedEntity // 识别的实体列表
	entitiesFlag bool
}

func NewRecognizedEntitiesBuilder() *RecognizedEntitiesBuilder {
	builder := &RecognizedEntitiesBuilder{}
	return builder
}

// 识别的实体列表
//
// 示例值：
func (builder *RecognizedEntitiesBuilder) Entities(entities []*RecognizedEntity) *RecognizedEntitiesBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *RecognizedEntitiesBuilder) Build() *RecognizedEntities {
	req := &RecognizedEntities{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type RecognizedEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type RecognizedEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewRecognizedEntityBuilder() *RecognizedEntityBuilder {
	builder := &RecognizedEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：contact_names
func (builder *RecognizedEntityBuilder) Type(type_ string) *RecognizedEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *RecognizedEntityBuilder) Value(value string) *RecognizedEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *RecognizedEntityBuilder) Build() *RecognizedEntity {
	req := &RecognizedEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type Resume 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 []*ResumeEducation `json:"educations,omitempty"` // 教育经历

	Careers []*ResumeCareer `json:"careers,omitempty"` // 职业经历

	Projects []*ResumeProject `json:"projects,omitempty"` // 项目经历

	WorkYear *int `json:"work_year,omitempty"` // 工作年限，为空表示工作年限未知，数字单位为年，整数

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日，格式YYYY-MM-DD

	Gender *int `json:"gender,omitempty"` // 性别

	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 []*ResumeLanguage `json:"languages,omitempty"` // 语言

	Awards []*ResumeAward `json:"awards,omitempty"` // 获奖

	Certificates []*ResumeCertificate `json:"certificates,omitempty"` // 证书

	Competitions []*ResumeCompetition `json:"competitions,omitempty"` // 竞赛

	SelfEvaluation *string `json:"self_evaluation,omitempty"` // 自我评价

	Urls []string `json:"urls,omitempty"` // 链接列表

	SocialLinks []string `json:"social_links,omitempty"` // 社交链接
}

type ResumeBuilder struct {
	fileMd5     string // 文件标识ID，依据文件内容自动生成
	fileMd5Flag bool

	content     string // 文本内容，当接口返回成功时，该字段才存在
	contentFlag bool

	newContent     string // 经过排序后的文本内容，当接口返回成功时，该字段才存在
	newContentFlag bool

	name     string // 名称
	nameFlag bool

	email     string // 邮箱
	emailFlag bool

	mobile     string // 手机号码
	mobileFlag bool

	mobileIsVirtual     bool // 手机号码是否虚拟号码
	mobileIsVirtualFlag bool

	countryCode     string // 手机号码国家编码
	countryCodeFlag bool

	educations     []*ResumeEducation // 教育经历
	educationsFlag bool

	careers     []*ResumeCareer // 职业经历
	careersFlag bool

	projects     []*ResumeProject // 项目经历
	projectsFlag bool

	workYear     int // 工作年限，为空表示工作年限未知，数字单位为年，整数
	workYearFlag bool

	dateOfBirth     string // 生日，格式YYYY-MM-DD
	dateOfBirthFlag bool

	gender     int // 性别
	genderFlag bool

	willingPositions     []string // 希望获得的职位列表
	willingPositionsFlag bool

	currentLocation     string // 当前工作地点(城市)
	currentLocationFlag bool

	willingLocations     []string // 希望工作地点列表
	willingLocationsFlag bool

	homeLocation     string // 家乡(城市)
	homeLocationFlag bool

	languages     []*ResumeLanguage // 语言
	languagesFlag bool

	awards     []*ResumeAward // 获奖
	awardsFlag bool

	certificates     []*ResumeCertificate // 证书
	certificatesFlag bool

	competitions     []*ResumeCompetition // 竞赛
	competitionsFlag bool

	selfEvaluation     string // 自我评价
	selfEvaluationFlag bool

	urls     []string // 链接列表
	urlsFlag bool

	socialLinks     []string // 社交链接
	socialLinksFlag bool
}

func NewResumeBuilder() *ResumeBuilder {
	builder := &ResumeBuilder{}
	return builder
}

// 文件标识ID，依据文件内容自动生成
//
// 示例值：825c59042dxxxxx3ff90b45xxxxx88
func (builder *ResumeBuilder) FileMd5(fileMd5 string) *ResumeBuilder {
	builder.fileMd5 = fileMd5
	builder.fileMd5Flag = true
	return builder
}

// 文本内容，当接口返回成功时，该字段才存在
//
// 示例值：XX负责行政人事管理和日常事务...
func (builder *ResumeBuilder) Content(content string) *ResumeBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 经过排序后的文本内容，当接口返回成功时，该字段才存在
//
// 示例值：XX负责行政人事管理和日常事务...
func (builder *ResumeBuilder) NewContent(newContent string) *ResumeBuilder {
	builder.newContent = newContent
	builder.newContentFlag = true
	return builder
}

// 名称
//
// 示例值：张三
func (builder *ResumeBuilder) Name(name string) *ResumeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 邮箱
//
// 示例值：zhangsan.1111@bytedance.com
func (builder *ResumeBuilder) Email(email string) *ResumeBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 手机号码
//
// 示例值：13600000000
func (builder *ResumeBuilder) Mobile(mobile string) *ResumeBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

// 手机号码是否虚拟号码
//
// 示例值：false
func (builder *ResumeBuilder) MobileIsVirtual(mobileIsVirtual bool) *ResumeBuilder {
	builder.mobileIsVirtual = mobileIsVirtual
	builder.mobileIsVirtualFlag = true
	return builder
}

// 手机号码国家编码
//
// 示例值：86
func (builder *ResumeBuilder) CountryCode(countryCode string) *ResumeBuilder {
	builder.countryCode = countryCode
	builder.countryCodeFlag = true
	return builder
}

// 教育经历
//
// 示例值：
func (builder *ResumeBuilder) Educations(educations []*ResumeEducation) *ResumeBuilder {
	builder.educations = educations
	builder.educationsFlag = true
	return builder
}

// 职业经历
//
// 示例值：
func (builder *ResumeBuilder) Careers(careers []*ResumeCareer) *ResumeBuilder {
	builder.careers = careers
	builder.careersFlag = true
	return builder
}

// 项目经历
//
// 示例值：
func (builder *ResumeBuilder) Projects(projects []*ResumeProject) *ResumeBuilder {
	builder.projects = projects
	builder.projectsFlag = true
	return builder
}

// 工作年限，为空表示工作年限未知，数字单位为年，整数
//
// 示例值：5
func (builder *ResumeBuilder) WorkYear(workYear int) *ResumeBuilder {
	builder.workYear = workYear
	builder.workYearFlag = true
	return builder
}

// 生日，格式YYYY-MM-DD
//
// 示例值：1995-01-01
func (builder *ResumeBuilder) DateOfBirth(dateOfBirth string) *ResumeBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 性别
//
// 示例值：1
func (builder *ResumeBuilder) Gender(gender int) *ResumeBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 希望获得的职位列表
//
// 示例值：xxx岗位
func (builder *ResumeBuilder) WillingPositions(willingPositions []string) *ResumeBuilder {
	builder.willingPositions = willingPositions
	builder.willingPositionsFlag = true
	return builder
}

// 当前工作地点(城市)
//
// 示例值：上海
func (builder *ResumeBuilder) CurrentLocation(currentLocation string) *ResumeBuilder {
	builder.currentLocation = currentLocation
	builder.currentLocationFlag = true
	return builder
}

// 希望工作地点列表
//
// 示例值：
func (builder *ResumeBuilder) WillingLocations(willingLocations []string) *ResumeBuilder {
	builder.willingLocations = willingLocations
	builder.willingLocationsFlag = true
	return builder
}

// 家乡(城市)
//
// 示例值：上海
func (builder *ResumeBuilder) HomeLocation(homeLocation string) *ResumeBuilder {
	builder.homeLocation = homeLocation
	builder.homeLocationFlag = true
	return builder
}

// 语言
//
// 示例值：
func (builder *ResumeBuilder) Languages(languages []*ResumeLanguage) *ResumeBuilder {
	builder.languages = languages
	builder.languagesFlag = true
	return builder
}

// 获奖
//
// 示例值：
func (builder *ResumeBuilder) Awards(awards []*ResumeAward) *ResumeBuilder {
	builder.awards = awards
	builder.awardsFlag = true
	return builder
}

// 证书
//
// 示例值：
func (builder *ResumeBuilder) Certificates(certificates []*ResumeCertificate) *ResumeBuilder {
	builder.certificates = certificates
	builder.certificatesFlag = true
	return builder
}

// 竞赛
//
// 示例值：
func (builder *ResumeBuilder) Competitions(competitions []*ResumeCompetition) *ResumeBuilder {
	builder.competitions = competitions
	builder.competitionsFlag = true
	return builder
}

// 自我评价
//
// 示例值：我是一个...
func (builder *ResumeBuilder) SelfEvaluation(selfEvaluation string) *ResumeBuilder {
	builder.selfEvaluation = selfEvaluation
	builder.selfEvaluationFlag = true
	return builder
}

// 链接列表
//
// 示例值：
func (builder *ResumeBuilder) Urls(urls []string) *ResumeBuilder {
	builder.urls = urls
	builder.urlsFlag = true
	return builder
}

// 社交链接
//
// 示例值：
func (builder *ResumeBuilder) SocialLinks(socialLinks []string) *ResumeBuilder {
	builder.socialLinks = socialLinks
	builder.socialLinksFlag = true
	return builder
}

func (builder *ResumeBuilder) Build() *Resume {
	req := &Resume{}
	if builder.fileMd5Flag {
		req.FileMd5 = &builder.fileMd5

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.newContentFlag {
		req.NewContent = &builder.newContent

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	if builder.mobileIsVirtualFlag {
		req.MobileIsVirtual = &builder.mobileIsVirtual

	}
	if builder.countryCodeFlag {
		req.CountryCode = &builder.countryCode

	}
	if builder.educationsFlag {
		req.Educations = builder.educations
	}
	if builder.careersFlag {
		req.Careers = builder.careers
	}
	if builder.projectsFlag {
		req.Projects = builder.projects
	}
	if builder.workYearFlag {
		req.WorkYear = &builder.workYear

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.genderFlag {
		req.Gender = &builder.gender

	}
	if builder.willingPositionsFlag {
		req.WillingPositions = builder.willingPositions
	}
	if builder.currentLocationFlag {
		req.CurrentLocation = &builder.currentLocation

	}
	if builder.willingLocationsFlag {
		req.WillingLocations = builder.willingLocations
	}
	if builder.homeLocationFlag {
		req.HomeLocation = &builder.homeLocation

	}
	if builder.languagesFlag {
		req.Languages = builder.languages
	}
	if builder.awardsFlag {
		req.Awards = builder.awards
	}
	if builder.certificatesFlag {
		req.Certificates = builder.certificates
	}
	if builder.competitionsFlag {
		req.Competitions = builder.competitions
	}
	if builder.selfEvaluationFlag {
		req.SelfEvaluation = &builder.selfEvaluation

	}
	if builder.urlsFlag {
		req.Urls = builder.urls
	}
	if builder.socialLinksFlag {
		req.SocialLinks = builder.socialLinks
	}
	return req
}

type ResumeAward struct {
	Award *string `json:"award,omitempty"` // 奖项

	Date *string `json:"date,omitempty"` // 获奖时间，格式：YYYY

	Description *string `json:"description,omitempty"` // 描述
}

type ResumeAwardBuilder struct {
	award     string // 奖项
	awardFlag bool

	date     string // 获奖时间，格式：YYYY
	dateFlag bool

	description     string // 描述
	descriptionFlag bool
}

func NewResumeAwardBuilder() *ResumeAwardBuilder {
	builder := &ResumeAwardBuilder{}
	return builder
}

// 奖项
//
// 示例值：XXX大赛奖项
func (builder *ResumeAwardBuilder) Award(award string) *ResumeAwardBuilder {
	builder.award = award
	builder.awardFlag = true
	return builder
}

// 获奖时间，格式：YYYY
//
// 示例值：2015
func (builder *ResumeAwardBuilder) Date(date string) *ResumeAwardBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 描述
//
// 示例值：曾获XXX大赛奖项...
func (builder *ResumeAwardBuilder) Description(description string) *ResumeAwardBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *ResumeAwardBuilder) Build() *ResumeAward {
	req := &ResumeAward{}
	if builder.awardFlag {
		req.Award = &builder.award

	}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type ResumeCareer 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 *int `json:"type,omitempty"` // 工作类型

	TypeStr *string `json:"type_str,omitempty"` // 工作类型——'实习'、'全职'

	JobDescription *string `json:"job_description,omitempty"` // 工作描述
}

type ResumeCareerBuilder struct {
	company     string // 公司名称
	companyFlag bool

	startDate     string // 开始时间,格式：YYYY-MM-DD
	startDateFlag bool

	startTime     string // 始时间,格式：YYYY-MM-DD,跟start_date值一样
	startTimeFlag bool

	endDate     string // 结束时间,格式：YYYY-MM-DD
	endDateFlag bool

	endTime     string // 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值为其他时，end_date==end_time
	endTimeFlag bool

	title     string // 职位
	titleFlag bool

	type_    int // 工作类型
	typeFlag bool

	typeStr     string // 工作类型——'实习'、'全职'
	typeStrFlag bool

	jobDescription     string // 工作描述
	jobDescriptionFlag bool
}

func NewResumeCareerBuilder() *ResumeCareerBuilder {
	builder := &ResumeCareerBuilder{}
	return builder
}

// 公司名称
//
// 示例值：XX公司
func (builder *ResumeCareerBuilder) Company(company string) *ResumeCareerBuilder {
	builder.company = company
	builder.companyFlag = true
	return builder
}

// 开始时间,格式：YYYY-MM-DD
//
// 示例值：2022-01-03
func (builder *ResumeCareerBuilder) StartDate(startDate string) *ResumeCareerBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 始时间,格式：YYYY-MM-DD,跟start_date值一样
//
// 示例值：2022-01-03
func (builder *ResumeCareerBuilder) StartTime(startTime string) *ResumeCareerBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD
//
// 示例值：2023-01-03
func (builder *ResumeCareerBuilder) EndDate(endDate string) *ResumeCareerBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值为其他时，end_date==end_time
//
// 示例值：2023-01-03
func (builder *ResumeCareerBuilder) EndTime(endTime string) *ResumeCareerBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 职位
//
// 示例值：XXX工程师
func (builder *ResumeCareerBuilder) Title(title string) *ResumeCareerBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 工作类型
//
// 示例值：2
func (builder *ResumeCareerBuilder) Type(type_ int) *ResumeCareerBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 工作类型——'实习'、'全职'
//
// 示例值：全职
func (builder *ResumeCareerBuilder) TypeStr(typeStr string) *ResumeCareerBuilder {
	builder.typeStr = typeStr
	builder.typeStrFlag = true
	return builder
}

// 工作描述
//
// 示例值：负责XXX开发...
func (builder *ResumeCareerBuilder) JobDescription(jobDescription string) *ResumeCareerBuilder {
	builder.jobDescription = jobDescription
	builder.jobDescriptionFlag = true
	return builder
}

func (builder *ResumeCareerBuilder) Build() *ResumeCareer {
	req := &ResumeCareer{}
	if builder.companyFlag {
		req.Company = &builder.company

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.typeStrFlag {
		req.TypeStr = &builder.typeStr

	}
	if builder.jobDescriptionFlag {
		req.JobDescription = &builder.jobDescription

	}
	return req
}

type ResumeCertificate struct {
	Name *string `json:"name,omitempty"` // 证书名称

	Desc *string `json:"desc,omitempty"` // 描述
}

type ResumeCertificateBuilder struct {
	name     string // 证书名称
	nameFlag bool

	desc     string // 描述
	descFlag bool
}

func NewResumeCertificateBuilder() *ResumeCertificateBuilder {
	builder := &ResumeCertificateBuilder{}
	return builder
}

// 证书名称
//
// 示例值：XXX证书
func (builder *ResumeCertificateBuilder) Name(name string) *ResumeCertificateBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：曾获得XXX证书...
func (builder *ResumeCertificateBuilder) Desc(desc string) *ResumeCertificateBuilder {
	builder.desc = desc
	builder.descFlag = true
	return builder
}

func (builder *ResumeCertificateBuilder) Build() *ResumeCertificate {
	req := &ResumeCertificate{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.descFlag {
		req.Desc = &builder.desc

	}
	return req
}

type ResumeCompetition struct {
	Name *string `json:"name,omitempty"` // 竞赛名称

	Desc *string `json:"desc,omitempty"` // 描述
}

type ResumeCompetitionBuilder struct {
	name     string // 竞赛名称
	nameFlag bool

	desc     string // 描述
	descFlag bool
}

func NewResumeCompetitionBuilder() *ResumeCompetitionBuilder {
	builder := &ResumeCompetitionBuilder{}
	return builder
}

// 竞赛名称
//
// 示例值：XXX竞赛
func (builder *ResumeCompetitionBuilder) Name(name string) *ResumeCompetitionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：曾参加XXX竞赛...
func (builder *ResumeCompetitionBuilder) Desc(desc string) *ResumeCompetitionBuilder {
	builder.desc = desc
	builder.descFlag = true
	return builder
}

func (builder *ResumeCompetitionBuilder) Build() *ResumeCompetition {
	req := &ResumeCompetition{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.descFlag {
		req.Desc = &builder.desc

	}
	return req
}

type ResumeEducation struct {
	School *string `json:"school,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

	Major *string `json:"major,omitempty"` // 专业

	Degree *string `json:"degree,omitempty"` // 学历——小学、初中、中职、高中、专科、本科、硕士、博士、其他

	Qualification *int `json:"qualification,omitempty"` // 学历对应ID
}

type ResumeEducationBuilder struct {
	school     string // 学校名称
	schoolFlag bool

	startDate     string // 开始时间,格式：YYYY-MM-DD
	startDateFlag bool

	startTime     string // 开始时间,格式：YYYY-MM-DD,跟start_date值一样
	startTimeFlag bool

	endDate     string // 结束时间,格式：YYYY-MM-DD
	endDateFlag bool

	endTime     string // 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值为其他时，end_date==end_time
	endTimeFlag bool

	major     string // 专业
	majorFlag bool

	degree     string // 学历——小学、初中、中职、高中、专科、本科、硕士、博士、其他
	degreeFlag bool

	qualification     int // 学历对应ID
	qualificationFlag bool
}

func NewResumeEducationBuilder() *ResumeEducationBuilder {
	builder := &ResumeEducationBuilder{}
	return builder
}

// 学校名称
//
// 示例值：A大学
func (builder *ResumeEducationBuilder) School(school string) *ResumeEducationBuilder {
	builder.school = school
	builder.schoolFlag = true
	return builder
}

// 开始时间,格式：YYYY-MM-DD
//
// 示例值：2020-01-03
func (builder *ResumeEducationBuilder) StartDate(startDate string) *ResumeEducationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 开始时间,格式：YYYY-MM-DD,跟start_date值一样
//
// 示例值：2020-01-03
func (builder *ResumeEducationBuilder) StartTime(startTime string) *ResumeEducationBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD
//
// 示例值：2021-01-03
func (builder *ResumeEducationBuilder) EndDate(endDate string) *ResumeEducationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值为其他时，end_date==end_time
//
// 示例值：至今
func (builder *ResumeEducationBuilder) EndTime(endTime string) *ResumeEducationBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 专业
//
// 示例值：XX工程
func (builder *ResumeEducationBuilder) Major(major string) *ResumeEducationBuilder {
	builder.major = major
	builder.majorFlag = true
	return builder
}

// 学历——小学、初中、中职、高中、专科、本科、硕士、博士、其他
//
// 示例值：本科
func (builder *ResumeEducationBuilder) Degree(degree string) *ResumeEducationBuilder {
	builder.degree = degree
	builder.degreeFlag = true
	return builder
}

// 学历对应ID
//
// 示例值：6
func (builder *ResumeEducationBuilder) Qualification(qualification int) *ResumeEducationBuilder {
	builder.qualification = qualification
	builder.qualificationFlag = true
	return builder
}

func (builder *ResumeEducationBuilder) Build() *ResumeEducation {
	req := &ResumeEducation{}
	if builder.schoolFlag {
		req.School = &builder.school

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.majorFlag {
		req.Major = &builder.major

	}
	if builder.degreeFlag {
		req.Degree = &builder.degree

	}
	if builder.qualificationFlag {
		req.Qualification = &builder.qualification

	}
	return req
}

type ResumeLanguage struct {
	Level *int `json:"level,omitempty"` // 语言等级

	Description *string `json:"description,omitempty"` // 语言描述
}

type ResumeLanguageBuilder struct {
	level     int // 语言等级
	levelFlag bool

	description     string // 语言描述
	descriptionFlag bool
}

func NewResumeLanguageBuilder() *ResumeLanguageBuilder {
	builder := &ResumeLanguageBuilder{}
	return builder
}

// 语言等级
//
// 示例值：6
func (builder *ResumeLanguageBuilder) Level(level int) *ResumeLanguageBuilder {
	builder.level = level
	builder.levelFlag = true
	return builder
}

// 语言描述
//
// 示例值：英语
func (builder *ResumeLanguageBuilder) Description(description string) *ResumeLanguageBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *ResumeLanguageBuilder) Build() *ResumeLanguage {
	req := &ResumeLanguage{}
	if builder.levelFlag {
		req.Level = &builder.level

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type ResumeProject 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"` // 项目描述
}

type ResumeProjectBuilder struct {
	name     string // 项目名称
	nameFlag bool

	title     string // 项目岗位
	titleFlag bool

	startDate     string // 开始时间,格式：YYYY-MM-DD
	startDateFlag bool

	startTime     string // 开始时间,格式：YYYY-MM-DD,跟start_date值一样
	startTimeFlag bool

	endDate     string // 结束时间,格式：YYYY-MM-DD
	endDateFlag bool

	endTime     string // 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值
	endTimeFlag bool

	description     string // 项目描述
	descriptionFlag bool
}

func NewResumeProjectBuilder() *ResumeProjectBuilder {
	builder := &ResumeProjectBuilder{}
	return builder
}

// 项目名称
//
// 示例值：XX项目
func (builder *ResumeProjectBuilder) Name(name string) *ResumeProjectBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 项目岗位
//
// 示例值：客户端研发
func (builder *ResumeProjectBuilder) Title(title string) *ResumeProjectBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 开始时间,格式：YYYY-MM-DD
//
// 示例值：2023-01-03
func (builder *ResumeProjectBuilder) StartDate(startDate string) *ResumeProjectBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 开始时间,格式：YYYY-MM-DD,跟start_date值一样
//
// 示例值：2023-01-03
func (builder *ResumeProjectBuilder) StartTime(startTime string) *ResumeProjectBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD
//
// 示例值：2023-01-04
func (builder *ResumeProjectBuilder) EndDate(endDate string) *ResumeProjectBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 结束时间,格式：YYYY-MM-DD 或 “至今”，当值为“至今”时，end_date=="",值
//
// 示例值：2023-01-04
func (builder *ResumeProjectBuilder) EndTime(endTime string) *ResumeProjectBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 项目描述
//
// 示例值：XXX项目是一个...
func (builder *ResumeProjectBuilder) Description(description string) *ResumeProjectBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *ResumeProjectBuilder) Build() *ResumeProject {
	req := &ResumeProject{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type TableImg struct {
	Type *string `json:"type,omitempty"` // 图片返回的结果是base64还是url

	Base64 *string `json:"base64,omitempty"` // 图片的base64

	Url *string `json:"url,omitempty"` // 图片链接
}

type TableImgBuilder struct {
	type_    string // 图片返回的结果是base64还是url
	typeFlag bool

	base64     string // 图片的base64
	base64Flag bool

	url     string // 图片链接
	urlFlag bool
}

func NewTableImgBuilder() *TableImgBuilder {
	builder := &TableImgBuilder{}
	return builder
}

// 图片返回的结果是base64还是url
//
// 示例值：base64
func (builder *TableImgBuilder) Type(type_ string) *TableImgBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 图片的base64
//
// 示例值：data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=
func (builder *TableImgBuilder) Base64(base64 string) *TableImgBuilder {
	builder.base64 = base64
	builder.base64Flag = true
	return builder
}

// 图片链接
//
// 示例值：https://picsum.photos/400/300
func (builder *TableImgBuilder) Url(url string) *TableImgBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

func (builder *TableImgBuilder) Build() *TableImg {
	req := &TableImg{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.base64Flag {
		req.Base64 = &builder.base64

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	return req
}

type TaxiEnitity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type TaxiEnitityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewTaxiEnitityBuilder() *TaxiEnitityBuilder {
	builder := &TaxiEnitityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：car_number
func (builder *TaxiEnitityBuilder) Type(type_ string) *TaxiEnitityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：BDK6231
func (builder *TaxiEnitityBuilder) Value(value string) *TaxiEnitityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *TaxiEnitityBuilder) Build() *TaxiEnitity {
	req := &TaxiEnitity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type TaxiEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type TaxiEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewTaxiEntityBuilder() *TaxiEntityBuilder {
	builder := &TaxiEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：car_number
func (builder *TaxiEntityBuilder) Type(type_ string) *TaxiEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：BDK6231
func (builder *TaxiEntityBuilder) Value(value string) *TaxiEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *TaxiEntityBuilder) Build() *TaxiEntity {
	req := &TaxiEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type TaxiInvoice struct {
	Entities []*TaxiEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type TaxiInvoiceBuilder struct {
	entities     []*TaxiEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewTaxiInvoiceBuilder() *TaxiInvoiceBuilder {
	builder := &TaxiInvoiceBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *TaxiInvoiceBuilder) Entities(entities []*TaxiEntity) *TaxiInvoiceBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *TaxiInvoiceBuilder) Build() *TaxiInvoice {
	req := &TaxiInvoice{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type TrainEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type TrainEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewTrainEntityBuilder() *TrainEntityBuilder {
	builder := &TrainEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：end_station
func (builder *TrainEntityBuilder) Type(type_ string) *TrainEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：长沙南
func (builder *TrainEntityBuilder) Value(value string) *TrainEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *TrainEntityBuilder) Build() *TrainEntity {
	req := &TrainEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type TrainInvoice struct {
	Entities []*TrainEntity `json:"entities,omitempty"` // 识别出的实体列表
}

type TrainInvoiceBuilder struct {
	entities     []*TrainEntity // 识别出的实体列表
	entitiesFlag bool
}

func NewTrainInvoiceBuilder() *TrainInvoiceBuilder {
	builder := &TrainInvoiceBuilder{}
	return builder
}

// 识别出的实体列表
//
// 示例值：
func (builder *TrainInvoiceBuilder) Entities(entities []*TrainEntity) *TrainInvoiceBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *TrainInvoiceBuilder) Build() *TrainInvoice {
	req := &TrainInvoice{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type TwMainlandTravelPermit struct {
	Entities []*TwMainlandTravelPermitEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type TwMainlandTravelPermitBuilder struct {
	entities     []*TwMainlandTravelPermitEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewTwMainlandTravelPermitBuilder() *TwMainlandTravelPermitBuilder {
	builder := &TwMainlandTravelPermitBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *TwMainlandTravelPermitBuilder) Entities(entities []*TwMainlandTravelPermitEntity) *TwMainlandTravelPermitBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *TwMainlandTravelPermitBuilder) Build() *TwMainlandTravelPermit {
	req := &TwMainlandTravelPermit{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type TwMainlandTravelPermitEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type TwMainlandTravelPermitEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewTwMainlandTravelPermitEntityBuilder() *TwMainlandTravelPermitEntityBuilder {
	builder := &TwMainlandTravelPermitEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：full_name_cn
func (builder *TwMainlandTravelPermitEntityBuilder) Type(type_ string) *TwMainlandTravelPermitEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：张三
func (builder *TwMainlandTravelPermitEntityBuilder) Value(value string) *TwMainlandTravelPermitEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *TwMainlandTravelPermitEntityBuilder) Build() *TwMainlandTravelPermitEntity {
	req := &TwMainlandTravelPermitEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type VatEntity struct {
	Type *string `json:"type,omitempty"` // 识别的实体类型

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息

	Items [][]*KvEntity `json:"items,omitempty"` // 识别出的票据详细信息
}

type VatEntityBuilder struct {
	type_    string // 识别的实体类型
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool

	items     [][]*KvEntity // 识别出的票据详细信息
	itemsFlag bool
}

func NewVatEntityBuilder() *VatEntityBuilder {
	builder := &VatEntityBuilder{}
	return builder
}

// 识别的实体类型
//
// 示例值：buyer_name
func (builder *VatEntityBuilder) Type(type_ string) *VatEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：发呆公司
func (builder *VatEntityBuilder) Value(value string) *VatEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 识别出的票据详细信息
//
// 示例值：
func (builder *VatEntityBuilder) Items(items [][]*KvEntity) *VatEntityBuilder {
	builder.items = items
	builder.itemsFlag = true
	return builder
}

func (builder *VatEntityBuilder) Build() *VatEntity {
	req := &VatEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.itemsFlag {
		req.Items = builder.items
	}
	return req
}

type VatInvoice struct {
	Entities []*VatEntity `json:"entities,omitempty"` // 识别出的实体列表
}

type VatInvoiceBuilder struct {
	entities     []*VatEntity // 识别出的实体列表
	entitiesFlag bool
}

func NewVatInvoiceBuilder() *VatInvoiceBuilder {
	builder := &VatInvoiceBuilder{}
	return builder
}

// 识别出的实体列表
//
// 示例值：
func (builder *VatInvoiceBuilder) Entities(entities []*VatEntity) *VatInvoiceBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *VatInvoiceBuilder) Build() *VatInvoice {
	req := &VatInvoice{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type VehicleEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type VehicleEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewVehicleEntityBuilder() *VehicleEntityBuilder {
	builder := &VehicleEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：vehicle_type
func (builder *VehicleEntityBuilder) Type(type_ string) *VehicleEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：小型普通客车
func (builder *VehicleEntityBuilder) Value(value string) *VehicleEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *VehicleEntityBuilder) Build() *VehicleEntity {
	req := &VehicleEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type VehicleInvoice struct {
	Entities []*VehicleInvoiceEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type VehicleInvoiceBuilder struct {
	entities     []*VehicleInvoiceEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewVehicleInvoiceBuilder() *VehicleInvoiceBuilder {
	builder := &VehicleInvoiceBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *VehicleInvoiceBuilder) Entities(entities []*VehicleInvoiceEntity) *VehicleInvoiceBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *VehicleInvoiceBuilder) Build() *VehicleInvoice {
	req := &VehicleInvoice{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type VehicleInvoiceEntity struct {
	Type *string `json:"type,omitempty"` // 识别的字段种类

	Value *string `json:"value,omitempty"` // 识别出字段的文本信息
}

type VehicleInvoiceEntityBuilder struct {
	type_    string // 识别的字段种类
	typeFlag bool

	value     string // 识别出字段的文本信息
	valueFlag bool
}

func NewVehicleInvoiceEntityBuilder() *VehicleInvoiceEntityBuilder {
	builder := &VehicleInvoiceEntityBuilder{}
	return builder
}

// 识别的字段种类
//
// 示例值：SalerName
func (builder *VehicleInvoiceEntityBuilder) Type(type_ string) *VehicleInvoiceEntityBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 识别出字段的文本信息
//
// 示例值：xxxx公司
func (builder *VehicleInvoiceEntityBuilder) Value(value string) *VehicleInvoiceEntityBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *VehicleInvoiceEntityBuilder) Build() *VehicleInvoiceEntity {
	req := &VehicleInvoiceEntity{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type VehicleLicense struct {
	Entities []*VehicleEntity `json:"entities,omitempty"` // 识别出的实体类型
}

type VehicleLicenseBuilder struct {
	entities     []*VehicleEntity // 识别出的实体类型
	entitiesFlag bool
}

func NewVehicleLicenseBuilder() *VehicleLicenseBuilder {
	builder := &VehicleLicenseBuilder{}
	return builder
}

// 识别出的实体类型
//
// 示例值：
func (builder *VehicleLicenseBuilder) Entities(entities []*VehicleEntity) *VehicleLicenseBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *VehicleLicenseBuilder) Build() *VehicleLicense {
	req := &VehicleLicense{}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type RecognizeBankCardReqBodyBuilder struct {
	file     io.Reader // 识别的银行卡源文件
	fileFlag bool
}

func NewRecognizeBankCardReqBodyBuilder() *RecognizeBankCardReqBodyBuilder {
	builder := &RecognizeBankCardReqBodyBuilder{}
	return builder
}

// 识别的银行卡源文件
//
//示例值：
func (builder *RecognizeBankCardReqBodyBuilder) File(file io.Reader) *RecognizeBankCardReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeBankCardReqBodyBuilder) Build() *RecognizeBankCardReqBody {
	req := &RecognizeBankCardReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeBankCardPathReqBodyBuilder struct {
	filePath     string // 识别的银行卡源文件
	filePathFlag bool
}

func NewRecognizeBankCardPathReqBodyBuilder() *RecognizeBankCardPathReqBodyBuilder {
	builder := &RecognizeBankCardPathReqBodyBuilder{}
	return builder
}

// 识别的银行卡源文件
//
// 示例值：
func (builder *RecognizeBankCardPathReqBodyBuilder) FilePath(filePath string) *RecognizeBankCardPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeBankCardPathReqBodyBuilder) Build() (*RecognizeBankCardReqBody, error) {
	req := &RecognizeBankCardReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeBankCardReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeBankCardReqBody
}

func NewRecognizeBankCardReqBuilder() *RecognizeBankCardReqBuilder {
	builder := &RecognizeBankCardReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeBankCardReqBuilder) Body(body *RecognizeBankCardReqBody) *RecognizeBankCardReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeBankCardReqBuilder) Build() *RecognizeBankCardReq {
	req := &RecognizeBankCardReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeBankCardReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的银行卡源文件
}

type RecognizeBankCardReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeBankCardReqBody `body:""`
}

type RecognizeBankCardRespData struct {
	BankCard *BankCard `json:"bank_card,omitempty"` // 银行卡信息
}

type RecognizeBankCardResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeBankCardRespData `json:"data"` // 业务数据
}

func (resp *RecognizeBankCardResp) Success() bool {
	return resp.Code == 0
}

type RecognizeBusinessCardReqBodyBuilder struct {
	file     io.Reader // 识别名片的源文件（支持 JPG / PNG / PDF）
	fileFlag bool
}

func NewRecognizeBusinessCardReqBodyBuilder() *RecognizeBusinessCardReqBodyBuilder {
	builder := &RecognizeBusinessCardReqBodyBuilder{}
	return builder
}

// 识别名片的源文件（支持 JPG / PNG / PDF）
//
//示例值：
func (builder *RecognizeBusinessCardReqBodyBuilder) File(file io.Reader) *RecognizeBusinessCardReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeBusinessCardReqBodyBuilder) Build() *RecognizeBusinessCardReqBody {
	req := &RecognizeBusinessCardReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeBusinessCardPathReqBodyBuilder struct {
	filePath     string // 识别名片的源文件（支持 JPG / PNG / PDF）
	filePathFlag bool
}

func NewRecognizeBusinessCardPathReqBodyBuilder() *RecognizeBusinessCardPathReqBodyBuilder {
	builder := &RecognizeBusinessCardPathReqBodyBuilder{}
	return builder
}

// 识别名片的源文件（支持 JPG / PNG / PDF）
//
// 示例值：
func (builder *RecognizeBusinessCardPathReqBodyBuilder) FilePath(filePath string) *RecognizeBusinessCardPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeBusinessCardPathReqBodyBuilder) Build() (*RecognizeBusinessCardReqBody, error) {
	req := &RecognizeBusinessCardReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeBusinessCardReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeBusinessCardReqBody
}

func NewRecognizeBusinessCardReqBuilder() *RecognizeBusinessCardReqBuilder {
	builder := &RecognizeBusinessCardReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeBusinessCardReqBuilder) Body(body *RecognizeBusinessCardReqBody) *RecognizeBusinessCardReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeBusinessCardReqBuilder) Build() *RecognizeBusinessCardReq {
	req := &RecognizeBusinessCardReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeBusinessCardReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别名片的源文件（支持 JPG / PNG / PDF）
}

type RecognizeBusinessCardReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeBusinessCardReqBody `body:""`
}

type RecognizeBusinessCardRespData struct {
	BusinessCards []*RecognizedEntities `json:"business_cards,omitempty"` // 名片信息
}

type RecognizeBusinessCardResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeBusinessCardRespData `json:"data"` // 业务数据
}

func (resp *RecognizeBusinessCardResp) Success() bool {
	return resp.Code == 0
}

type RecognizeBusinessLicenseReqBodyBuilder struct {
	file     io.Reader // 识别的营业执照源文件
	fileFlag bool
}

func NewRecognizeBusinessLicenseReqBodyBuilder() *RecognizeBusinessLicenseReqBodyBuilder {
	builder := &RecognizeBusinessLicenseReqBodyBuilder{}
	return builder
}

// 识别的营业执照源文件
//
//示例值：
func (builder *RecognizeBusinessLicenseReqBodyBuilder) File(file io.Reader) *RecognizeBusinessLicenseReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeBusinessLicenseReqBodyBuilder) Build() *RecognizeBusinessLicenseReqBody {
	req := &RecognizeBusinessLicenseReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeBusinessLicensePathReqBodyBuilder struct {
	filePath     string // 识别的营业执照源文件
	filePathFlag bool
}

func NewRecognizeBusinessLicensePathReqBodyBuilder() *RecognizeBusinessLicensePathReqBodyBuilder {
	builder := &RecognizeBusinessLicensePathReqBodyBuilder{}
	return builder
}

// 识别的营业执照源文件
//
// 示例值：
func (builder *RecognizeBusinessLicensePathReqBodyBuilder) FilePath(filePath string) *RecognizeBusinessLicensePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeBusinessLicensePathReqBodyBuilder) Build() (*RecognizeBusinessLicenseReqBody, error) {
	req := &RecognizeBusinessLicenseReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeBusinessLicenseReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeBusinessLicenseReqBody
}

func NewRecognizeBusinessLicenseReqBuilder() *RecognizeBusinessLicenseReqBuilder {
	builder := &RecognizeBusinessLicenseReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeBusinessLicenseReqBuilder) Body(body *RecognizeBusinessLicenseReqBody) *RecognizeBusinessLicenseReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeBusinessLicenseReqBuilder) Build() *RecognizeBusinessLicenseReq {
	req := &RecognizeBusinessLicenseReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeBusinessLicenseReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的营业执照源文件
}

type RecognizeBusinessLicenseReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeBusinessLicenseReqBody `body:""`
}

type RecognizeBusinessLicenseRespData struct {
	BusinessLicense *BusinessLicense `json:"business_license,omitempty"` // 营业执照信息
}

type RecognizeBusinessLicenseResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeBusinessLicenseRespData `json:"data"` // 业务数据
}

func (resp *RecognizeBusinessLicenseResp) Success() bool {
	return resp.Code == 0
}

type RecognizeChinesePassportReqBodyBuilder struct {
	file     io.Reader // 识别的中国护照源文件
	fileFlag bool
}

func NewRecognizeChinesePassportReqBodyBuilder() *RecognizeChinesePassportReqBodyBuilder {
	builder := &RecognizeChinesePassportReqBodyBuilder{}
	return builder
}

// 识别的中国护照源文件
//
//示例值：
func (builder *RecognizeChinesePassportReqBodyBuilder) File(file io.Reader) *RecognizeChinesePassportReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeChinesePassportReqBodyBuilder) Build() *RecognizeChinesePassportReqBody {
	req := &RecognizeChinesePassportReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeChinesePassportPathReqBodyBuilder struct {
	filePath     string // 识别的中国护照源文件
	filePathFlag bool
}

func NewRecognizeChinesePassportPathReqBodyBuilder() *RecognizeChinesePassportPathReqBodyBuilder {
	builder := &RecognizeChinesePassportPathReqBodyBuilder{}
	return builder
}

// 识别的中国护照源文件
//
// 示例值：
func (builder *RecognizeChinesePassportPathReqBodyBuilder) FilePath(filePath string) *RecognizeChinesePassportPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeChinesePassportPathReqBodyBuilder) Build() (*RecognizeChinesePassportReqBody, error) {
	req := &RecognizeChinesePassportReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeChinesePassportReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeChinesePassportReqBody
}

func NewRecognizeChinesePassportReqBuilder() *RecognizeChinesePassportReqBuilder {
	builder := &RecognizeChinesePassportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeChinesePassportReqBuilder) Body(body *RecognizeChinesePassportReqBody) *RecognizeChinesePassportReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeChinesePassportReqBuilder) Build() *RecognizeChinesePassportReq {
	req := &RecognizeChinesePassportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeChinesePassportReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的中国护照源文件
}

type RecognizeChinesePassportReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeChinesePassportReqBody `body:""`
}

type RecognizeChinesePassportRespData struct {
	ChinesePassport *ChinesePassport `json:"chinese_passport,omitempty"` // 中国护照信息
}

type RecognizeChinesePassportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeChinesePassportRespData `json:"data"` // 业务数据
}

func (resp *RecognizeChinesePassportResp) Success() bool {
	return resp.Code == 0
}

type FieldExtractionContractReqBodyBuilder struct {
	file     io.Reader // 合同字段解析的源文件，当前只支持pdf, doc, docx三种类型的文件
	fileFlag bool

	pdfPageLimit     int // pdf页数限制，太长会导致latency增加，最大允许100页
	pdfPageLimitFlag bool

	ocrMode     string // ocr 参数，当前支持force, pdf, unused三种格式
	ocrModeFlag bool
}

func NewFieldExtractionContractReqBodyBuilder() *FieldExtractionContractReqBodyBuilder {
	builder := &FieldExtractionContractReqBodyBuilder{}
	return builder
}

// 合同字段解析的源文件，当前只支持pdf, doc, docx三种类型的文件
//
//示例值：
func (builder *FieldExtractionContractReqBodyBuilder) File(file io.Reader) *FieldExtractionContractReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

// pdf页数限制，太长会导致latency增加，最大允许100页
//
//示例值：15
func (builder *FieldExtractionContractReqBodyBuilder) PdfPageLimit(pdfPageLimit int) *FieldExtractionContractReqBodyBuilder {
	builder.pdfPageLimit = pdfPageLimit
	builder.pdfPageLimitFlag = true
	return builder
}

// ocr 参数，当前支持force, pdf, unused三种格式
//
//示例值：auto
func (builder *FieldExtractionContractReqBodyBuilder) OcrMode(ocrMode string) *FieldExtractionContractReqBodyBuilder {
	builder.ocrMode = ocrMode
	builder.ocrModeFlag = true
	return builder
}

func (builder *FieldExtractionContractReqBodyBuilder) Build() *FieldExtractionContractReqBody {
	req := &FieldExtractionContractReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	if builder.pdfPageLimitFlag {
		req.PdfPageLimit = &builder.pdfPageLimit
	}
	if builder.ocrModeFlag {
		req.OcrMode = &builder.ocrMode
	}
	return req
}

type FieldExtractionContractPathReqBodyBuilder struct {
	filePath         string // 合同字段解析的源文件，当前只支持pdf, doc, docx三种类型的文件
	filePathFlag     bool
	pdfPageLimit     int
	pdfPageLimitFlag bool
	ocrMode          string
	ocrModeFlag      bool
}

func NewFieldExtractionContractPathReqBodyBuilder() *FieldExtractionContractPathReqBodyBuilder {
	builder := &FieldExtractionContractPathReqBodyBuilder{}
	return builder
}

// 合同字段解析的源文件，当前只支持pdf, doc, docx三种类型的文件
//
// 示例值：
func (builder *FieldExtractionContractPathReqBodyBuilder) FilePath(filePath string) *FieldExtractionContractPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

// pdf页数限制，太长会导致latency增加，最大允许100页
//
// 示例值：15
func (builder *FieldExtractionContractPathReqBodyBuilder) PdfPageLimit(pdfPageLimit int) *FieldExtractionContractPathReqBodyBuilder {
	builder.pdfPageLimit = pdfPageLimit
	builder.pdfPageLimitFlag = true
	return builder
}

// ocr 参数，当前支持force, pdf, unused三种格式
//
// 示例值：auto
func (builder *FieldExtractionContractPathReqBodyBuilder) OcrMode(ocrMode string) *FieldExtractionContractPathReqBodyBuilder {
	builder.ocrMode = ocrMode
	builder.ocrModeFlag = true
	return builder
}

func (builder *FieldExtractionContractPathReqBodyBuilder) Build() (*FieldExtractionContractReqBody, error) {
	req := &FieldExtractionContractReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	if builder.pdfPageLimitFlag {
		req.PdfPageLimit = &builder.pdfPageLimit
	}
	if builder.ocrModeFlag {
		req.OcrMode = &builder.ocrMode
	}
	return req, nil
}

type FieldExtractionContractReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *FieldExtractionContractReqBody
}

func NewFieldExtractionContractReqBuilder() *FieldExtractionContractReqBuilder {
	builder := &FieldExtractionContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *FieldExtractionContractReqBuilder) Body(body *FieldExtractionContractReqBody) *FieldExtractionContractReqBuilder {
	builder.body = body
	return builder
}

func (builder *FieldExtractionContractReqBuilder) Build() *FieldExtractionContractReq {
	req := &FieldExtractionContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type FieldExtractionContractReqBody struct {
	File io.Reader `json:"file,omitempty"` // 合同字段解析的源文件，当前只支持pdf, doc, docx三种类型的文件

	PdfPageLimit *int `json:"pdf_page_limit,omitempty"` // pdf页数限制，太长会导致latency增加，最大允许100页

	OcrMode *string `json:"ocr_mode,omitempty"` // ocr 参数，当前支持force, pdf, unused三种格式
}

type FieldExtractionContractReq struct {
	apiReq *larkcore.ApiReq
	Body   *FieldExtractionContractReqBody `body:""`
}

type FieldExtractionContractRespData struct {
	FileId *string `json:"file_id,omitempty"` // 文件的唯一id

	Price *ExtractPrice `json:"price,omitempty"` // 总交易金额

	Time *ExtractTime `json:"time,omitempty"` // 期限相关信息，包括开始日期、结束日期、有效时长

	Copy *ExtractCopy `json:"copy,omitempty"` // 盖章份数

	Currency *ExtractCurrency `json:"currency,omitempty"` // 币种

	Header *string `json:"header,omitempty"` // 合同标题

	BodyInfo []*BodyInfo `json:"body_info,omitempty"` // 主体信息

	BankInfo []*BankInfo `json:"bank_info,omitempty"` // 银行信息
}

type FieldExtractionContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *FieldExtractionContractRespData `json:"data"` // 业务数据
}

func (resp *FieldExtractionContractResp) Success() bool {
	return resp.Code == 0
}

type RecognizeDrivingLicenseReqBodyBuilder struct {
	file     io.Reader // 识别的驾驶证源文件
	fileFlag bool
}

func NewRecognizeDrivingLicenseReqBodyBuilder() *RecognizeDrivingLicenseReqBodyBuilder {
	builder := &RecognizeDrivingLicenseReqBodyBuilder{}
	return builder
}

// 识别的驾驶证源文件
//
//示例值：
func (builder *RecognizeDrivingLicenseReqBodyBuilder) File(file io.Reader) *RecognizeDrivingLicenseReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeDrivingLicenseReqBodyBuilder) Build() *RecognizeDrivingLicenseReqBody {
	req := &RecognizeDrivingLicenseReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeDrivingLicensePathReqBodyBuilder struct {
	filePath     string // 识别的驾驶证源文件
	filePathFlag bool
}

func NewRecognizeDrivingLicensePathReqBodyBuilder() *RecognizeDrivingLicensePathReqBodyBuilder {
	builder := &RecognizeDrivingLicensePathReqBodyBuilder{}
	return builder
}

// 识别的驾驶证源文件
//
// 示例值：
func (builder *RecognizeDrivingLicensePathReqBodyBuilder) FilePath(filePath string) *RecognizeDrivingLicensePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeDrivingLicensePathReqBodyBuilder) Build() (*RecognizeDrivingLicenseReqBody, error) {
	req := &RecognizeDrivingLicenseReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeDrivingLicenseReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeDrivingLicenseReqBody
}

func NewRecognizeDrivingLicenseReqBuilder() *RecognizeDrivingLicenseReqBuilder {
	builder := &RecognizeDrivingLicenseReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeDrivingLicenseReqBuilder) Body(body *RecognizeDrivingLicenseReqBody) *RecognizeDrivingLicenseReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeDrivingLicenseReqBuilder) Build() *RecognizeDrivingLicenseReq {
	req := &RecognizeDrivingLicenseReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeDrivingLicenseReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的驾驶证源文件
}

type RecognizeDrivingLicenseReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeDrivingLicenseReqBody `body:""`
}

type RecognizeDrivingLicenseRespData struct {
	DrivingLicense *DrvingLicense `json:"driving_license,omitempty"` // 驾驶证信息
}

type RecognizeDrivingLicenseResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeDrivingLicenseRespData `json:"data"` // 业务数据
}

func (resp *RecognizeDrivingLicenseResp) Success() bool {
	return resp.Code == 0
}

type RecognizeFoodManageLicenseReqBodyBuilder struct {
	file     io.Reader // 识别的食品经营许可证源文件
	fileFlag bool
}

func NewRecognizeFoodManageLicenseReqBodyBuilder() *RecognizeFoodManageLicenseReqBodyBuilder {
	builder := &RecognizeFoodManageLicenseReqBodyBuilder{}
	return builder
}

// 识别的食品经营许可证源文件
//
//示例值：
func (builder *RecognizeFoodManageLicenseReqBodyBuilder) File(file io.Reader) *RecognizeFoodManageLicenseReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeFoodManageLicenseReqBodyBuilder) Build() *RecognizeFoodManageLicenseReqBody {
	req := &RecognizeFoodManageLicenseReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeFoodManageLicensePathReqBodyBuilder struct {
	filePath     string // 识别的食品经营许可证源文件
	filePathFlag bool
}

func NewRecognizeFoodManageLicensePathReqBodyBuilder() *RecognizeFoodManageLicensePathReqBodyBuilder {
	builder := &RecognizeFoodManageLicensePathReqBodyBuilder{}
	return builder
}

// 识别的食品经营许可证源文件
//
// 示例值：
func (builder *RecognizeFoodManageLicensePathReqBodyBuilder) FilePath(filePath string) *RecognizeFoodManageLicensePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeFoodManageLicensePathReqBodyBuilder) Build() (*RecognizeFoodManageLicenseReqBody, error) {
	req := &RecognizeFoodManageLicenseReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeFoodManageLicenseReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeFoodManageLicenseReqBody
}

func NewRecognizeFoodManageLicenseReqBuilder() *RecognizeFoodManageLicenseReqBuilder {
	builder := &RecognizeFoodManageLicenseReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeFoodManageLicenseReqBuilder) Body(body *RecognizeFoodManageLicenseReqBody) *RecognizeFoodManageLicenseReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeFoodManageLicenseReqBuilder) Build() *RecognizeFoodManageLicenseReq {
	req := &RecognizeFoodManageLicenseReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeFoodManageLicenseReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的食品经营许可证源文件
}

type RecognizeFoodManageLicenseReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeFoodManageLicenseReqBody `body:""`
}

type RecognizeFoodManageLicenseRespData struct {
	FoodManageLicense *FoodManageLicense `json:"food_manage_license,omitempty"` // 食品经营许可证信息
}

type RecognizeFoodManageLicenseResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeFoodManageLicenseRespData `json:"data"` // 业务数据
}

func (resp *RecognizeFoodManageLicenseResp) Success() bool {
	return resp.Code == 0
}

type RecognizeFoodProduceLicenseReqBodyBuilder struct {
	file     io.Reader // 识别的食品生产许可证源文件
	fileFlag bool
}

func NewRecognizeFoodProduceLicenseReqBodyBuilder() *RecognizeFoodProduceLicenseReqBodyBuilder {
	builder := &RecognizeFoodProduceLicenseReqBodyBuilder{}
	return builder
}

// 识别的食品生产许可证源文件
//
//示例值：
func (builder *RecognizeFoodProduceLicenseReqBodyBuilder) File(file io.Reader) *RecognizeFoodProduceLicenseReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeFoodProduceLicenseReqBodyBuilder) Build() *RecognizeFoodProduceLicenseReqBody {
	req := &RecognizeFoodProduceLicenseReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeFoodProduceLicensePathReqBodyBuilder struct {
	filePath     string // 识别的食品生产许可证源文件
	filePathFlag bool
}

func NewRecognizeFoodProduceLicensePathReqBodyBuilder() *RecognizeFoodProduceLicensePathReqBodyBuilder {
	builder := &RecognizeFoodProduceLicensePathReqBodyBuilder{}
	return builder
}

// 识别的食品生产许可证源文件
//
// 示例值：
func (builder *RecognizeFoodProduceLicensePathReqBodyBuilder) FilePath(filePath string) *RecognizeFoodProduceLicensePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeFoodProduceLicensePathReqBodyBuilder) Build() (*RecognizeFoodProduceLicenseReqBody, error) {
	req := &RecognizeFoodProduceLicenseReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeFoodProduceLicenseReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeFoodProduceLicenseReqBody
}

func NewRecognizeFoodProduceLicenseReqBuilder() *RecognizeFoodProduceLicenseReqBuilder {
	builder := &RecognizeFoodProduceLicenseReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeFoodProduceLicenseReqBuilder) Body(body *RecognizeFoodProduceLicenseReqBody) *RecognizeFoodProduceLicenseReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeFoodProduceLicenseReqBuilder) Build() *RecognizeFoodProduceLicenseReq {
	req := &RecognizeFoodProduceLicenseReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeFoodProduceLicenseReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的食品生产许可证源文件
}

type RecognizeFoodProduceLicenseReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeFoodProduceLicenseReqBody `body:""`
}

type RecognizeFoodProduceLicenseRespData struct {
	FoodProduceLicense *FoodProduceLicense `json:"food_produce_license,omitempty"` // 食品生产许可证信息
}

type RecognizeFoodProduceLicenseResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeFoodProduceLicenseRespData `json:"data"` // 业务数据
}

func (resp *RecognizeFoodProduceLicenseResp) Success() bool {
	return resp.Code == 0
}

type RecognizeHealthCertificateReqBodyBuilder struct {
	file     io.Reader // 识别的健康证源文件
	fileFlag bool
}

func NewRecognizeHealthCertificateReqBodyBuilder() *RecognizeHealthCertificateReqBodyBuilder {
	builder := &RecognizeHealthCertificateReqBodyBuilder{}
	return builder
}

// 识别的健康证源文件
//
//示例值：
func (builder *RecognizeHealthCertificateReqBodyBuilder) File(file io.Reader) *RecognizeHealthCertificateReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeHealthCertificateReqBodyBuilder) Build() *RecognizeHealthCertificateReqBody {
	req := &RecognizeHealthCertificateReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeHealthCertificatePathReqBodyBuilder struct {
	filePath     string // 识别的健康证源文件
	filePathFlag bool
}

func NewRecognizeHealthCertificatePathReqBodyBuilder() *RecognizeHealthCertificatePathReqBodyBuilder {
	builder := &RecognizeHealthCertificatePathReqBodyBuilder{}
	return builder
}

// 识别的健康证源文件
//
// 示例值：
func (builder *RecognizeHealthCertificatePathReqBodyBuilder) FilePath(filePath string) *RecognizeHealthCertificatePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeHealthCertificatePathReqBodyBuilder) Build() (*RecognizeHealthCertificateReqBody, error) {
	req := &RecognizeHealthCertificateReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeHealthCertificateReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeHealthCertificateReqBody
}

func NewRecognizeHealthCertificateReqBuilder() *RecognizeHealthCertificateReqBuilder {
	builder := &RecognizeHealthCertificateReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeHealthCertificateReqBuilder) Body(body *RecognizeHealthCertificateReqBody) *RecognizeHealthCertificateReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeHealthCertificateReqBuilder) Build() *RecognizeHealthCertificateReq {
	req := &RecognizeHealthCertificateReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeHealthCertificateReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的健康证源文件
}

type RecognizeHealthCertificateReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeHealthCertificateReqBody `body:""`
}

type RecognizeHealthCertificateRespData struct {
	HealthCertificate *HealthCertificate `json:"health_certificate,omitempty"` // 健康证信息
}

type RecognizeHealthCertificateResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeHealthCertificateRespData `json:"data"` // 业务数据
}

func (resp *RecognizeHealthCertificateResp) Success() bool {
	return resp.Code == 0
}

type RecognizeHkmMainlandTravelPermitReqBodyBuilder struct {
	file     io.Reader // 识别的港澳居民来往内地通行证源文件
	fileFlag bool
}

func NewRecognizeHkmMainlandTravelPermitReqBodyBuilder() *RecognizeHkmMainlandTravelPermitReqBodyBuilder {
	builder := &RecognizeHkmMainlandTravelPermitReqBodyBuilder{}
	return builder
}

// 识别的港澳居民来往内地通行证源文件
//
//示例值：
func (builder *RecognizeHkmMainlandTravelPermitReqBodyBuilder) File(file io.Reader) *RecognizeHkmMainlandTravelPermitReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeHkmMainlandTravelPermitReqBodyBuilder) Build() *RecognizeHkmMainlandTravelPermitReqBody {
	req := &RecognizeHkmMainlandTravelPermitReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeHkmMainlandTravelPermitPathReqBodyBuilder struct {
	filePath     string // 识别的港澳居民来往内地通行证源文件
	filePathFlag bool
}

func NewRecognizeHkmMainlandTravelPermitPathReqBodyBuilder() *RecognizeHkmMainlandTravelPermitPathReqBodyBuilder {
	builder := &RecognizeHkmMainlandTravelPermitPathReqBodyBuilder{}
	return builder
}

// 识别的港澳居民来往内地通行证源文件
//
// 示例值：
func (builder *RecognizeHkmMainlandTravelPermitPathReqBodyBuilder) FilePath(filePath string) *RecognizeHkmMainlandTravelPermitPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeHkmMainlandTravelPermitPathReqBodyBuilder) Build() (*RecognizeHkmMainlandTravelPermitReqBody, error) {
	req := &RecognizeHkmMainlandTravelPermitReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeHkmMainlandTravelPermitReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeHkmMainlandTravelPermitReqBody
}

func NewRecognizeHkmMainlandTravelPermitReqBuilder() *RecognizeHkmMainlandTravelPermitReqBuilder {
	builder := &RecognizeHkmMainlandTravelPermitReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeHkmMainlandTravelPermitReqBuilder) Body(body *RecognizeHkmMainlandTravelPermitReqBody) *RecognizeHkmMainlandTravelPermitReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeHkmMainlandTravelPermitReqBuilder) Build() *RecognizeHkmMainlandTravelPermitReq {
	req := &RecognizeHkmMainlandTravelPermitReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeHkmMainlandTravelPermitReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的港澳居民来往内地通行证源文件
}

type RecognizeHkmMainlandTravelPermitReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeHkmMainlandTravelPermitReqBody `body:""`
}

type RecognizeHkmMainlandTravelPermitRespData struct {
	HkmMainlandTravelPermit *HkmMainlandTravelPermit `json:"hkm_mainland_travel_permit,omitempty"` // 港澳居民来往内地通行证信息
}

type RecognizeHkmMainlandTravelPermitResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeHkmMainlandTravelPermitRespData `json:"data"` // 业务数据
}

func (resp *RecognizeHkmMainlandTravelPermitResp) Success() bool {
	return resp.Code == 0
}

type RecognizeIdCardReqBodyBuilder struct {
	file     io.Reader // 识别身份证的源文件
	fileFlag bool
}

func NewRecognizeIdCardReqBodyBuilder() *RecognizeIdCardReqBodyBuilder {
	builder := &RecognizeIdCardReqBodyBuilder{}
	return builder
}

// 识别身份证的源文件
//
//示例值：
func (builder *RecognizeIdCardReqBodyBuilder) File(file io.Reader) *RecognizeIdCardReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeIdCardReqBodyBuilder) Build() *RecognizeIdCardReqBody {
	req := &RecognizeIdCardReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeIdCardPathReqBodyBuilder struct {
	filePath     string // 识别身份证的源文件
	filePathFlag bool
}

func NewRecognizeIdCardPathReqBodyBuilder() *RecognizeIdCardPathReqBodyBuilder {
	builder := &RecognizeIdCardPathReqBodyBuilder{}
	return builder
}

// 识别身份证的源文件
//
// 示例值：
func (builder *RecognizeIdCardPathReqBodyBuilder) FilePath(filePath string) *RecognizeIdCardPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeIdCardPathReqBodyBuilder) Build() (*RecognizeIdCardReqBody, error) {
	req := &RecognizeIdCardReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeIdCardReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeIdCardReqBody
}

func NewRecognizeIdCardReqBuilder() *RecognizeIdCardReqBuilder {
	builder := &RecognizeIdCardReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeIdCardReqBuilder) Body(body *RecognizeIdCardReqBody) *RecognizeIdCardReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeIdCardReqBuilder) Build() *RecognizeIdCardReq {
	req := &RecognizeIdCardReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeIdCardReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别身份证的源文件
}

type RecognizeIdCardReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeIdCardReqBody `body:""`
}

type RecognizeIdCardRespData struct {
	IdCard *IdCard `json:"id_card,omitempty"` // 身份证信息
}

type RecognizeIdCardResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeIdCardRespData `json:"data"` // 业务数据
}

func (resp *RecognizeIdCardResp) Success() bool {
	return resp.Code == 0
}

type ParseResumeReqBodyBuilder struct {
	file     io.Reader // 简历文件，支持 PDF / DOCX / PNG / JPG
	fileFlag bool
}

func NewParseResumeReqBodyBuilder() *ParseResumeReqBodyBuilder {
	builder := &ParseResumeReqBodyBuilder{}
	return builder
}

// 简历文件，支持 PDF / DOCX / PNG / JPG
//
//示例值：
func (builder *ParseResumeReqBodyBuilder) File(file io.Reader) *ParseResumeReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *ParseResumeReqBodyBuilder) Build() *ParseResumeReqBody {
	req := &ParseResumeReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type ParseResumePathReqBodyBuilder struct {
	filePath     string // 简历文件，支持 PDF / DOCX / PNG / JPG
	filePathFlag bool
}

func NewParseResumePathReqBodyBuilder() *ParseResumePathReqBodyBuilder {
	builder := &ParseResumePathReqBodyBuilder{}
	return builder
}

// 简历文件，支持 PDF / DOCX / PNG / JPG
//
// 示例值：
func (builder *ParseResumePathReqBodyBuilder) FilePath(filePath string) *ParseResumePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *ParseResumePathReqBodyBuilder) Build() (*ParseResumeReqBody, error) {
	req := &ParseResumeReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type ParseResumeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ParseResumeReqBody
}

func NewParseResumeReqBuilder() *ParseResumeReqBuilder {
	builder := &ParseResumeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *ParseResumeReqBuilder) Body(body *ParseResumeReqBody) *ParseResumeReqBuilder {
	builder.body = body
	return builder
}

func (builder *ParseResumeReqBuilder) Build() *ParseResumeReq {
	req := &ParseResumeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ParseResumeReqBody struct {
	File io.Reader `json:"file,omitempty"` // 简历文件，支持 PDF / DOCX / PNG / JPG
}

type ParseResumeReq struct {
	apiReq *larkcore.ApiReq
	Body   *ParseResumeReqBody `body:""`
}

type ParseResumeRespData struct {
	Resumes []*Resume `json:"resumes,omitempty"` // 简历信息
}

type ParseResumeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ParseResumeRespData `json:"data"` // 业务数据
}

func (resp *ParseResumeResp) Success() bool {
	return resp.Code == 0
}

type RecognizeTaxiInvoiceReqBodyBuilder struct {
	file     io.Reader // 识别的出租车票源文件
	fileFlag bool
}

func NewRecognizeTaxiInvoiceReqBodyBuilder() *RecognizeTaxiInvoiceReqBodyBuilder {
	builder := &RecognizeTaxiInvoiceReqBodyBuilder{}
	return builder
}

// 识别的出租车票源文件
//
//示例值：
func (builder *RecognizeTaxiInvoiceReqBodyBuilder) File(file io.Reader) *RecognizeTaxiInvoiceReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeTaxiInvoiceReqBodyBuilder) Build() *RecognizeTaxiInvoiceReqBody {
	req := &RecognizeTaxiInvoiceReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeTaxiInvoicePathReqBodyBuilder struct {
	filePath     string // 识别的出租车票源文件
	filePathFlag bool
}

func NewRecognizeTaxiInvoicePathReqBodyBuilder() *RecognizeTaxiInvoicePathReqBodyBuilder {
	builder := &RecognizeTaxiInvoicePathReqBodyBuilder{}
	return builder
}

// 识别的出租车票源文件
//
// 示例值：
func (builder *RecognizeTaxiInvoicePathReqBodyBuilder) FilePath(filePath string) *RecognizeTaxiInvoicePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeTaxiInvoicePathReqBodyBuilder) Build() (*RecognizeTaxiInvoiceReqBody, error) {
	req := &RecognizeTaxiInvoiceReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeTaxiInvoiceReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeTaxiInvoiceReqBody
}

func NewRecognizeTaxiInvoiceReqBuilder() *RecognizeTaxiInvoiceReqBuilder {
	builder := &RecognizeTaxiInvoiceReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeTaxiInvoiceReqBuilder) Body(body *RecognizeTaxiInvoiceReqBody) *RecognizeTaxiInvoiceReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeTaxiInvoiceReqBuilder) Build() *RecognizeTaxiInvoiceReq {
	req := &RecognizeTaxiInvoiceReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeTaxiInvoiceReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的出租车票源文件
}

type RecognizeTaxiInvoiceReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeTaxiInvoiceReqBody `body:""`
}

type RecognizeTaxiInvoiceRespData struct {
	TaxiInvoices []*TaxiInvoice `json:"taxi_invoices,omitempty"` // 出租车票信息
}

type RecognizeTaxiInvoiceResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeTaxiInvoiceRespData `json:"data"` // 业务数据
}

func (resp *RecognizeTaxiInvoiceResp) Success() bool {
	return resp.Code == 0
}

type RecognizeTrainInvoiceReqBodyBuilder struct {
	file     io.Reader // 识别的火车票源文件
	fileFlag bool
}

func NewRecognizeTrainInvoiceReqBodyBuilder() *RecognizeTrainInvoiceReqBodyBuilder {
	builder := &RecognizeTrainInvoiceReqBodyBuilder{}
	return builder
}

// 识别的火车票源文件
//
//示例值：
func (builder *RecognizeTrainInvoiceReqBodyBuilder) File(file io.Reader) *RecognizeTrainInvoiceReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeTrainInvoiceReqBodyBuilder) Build() *RecognizeTrainInvoiceReqBody {
	req := &RecognizeTrainInvoiceReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeTrainInvoicePathReqBodyBuilder struct {
	filePath     string // 识别的火车票源文件
	filePathFlag bool
}

func NewRecognizeTrainInvoicePathReqBodyBuilder() *RecognizeTrainInvoicePathReqBodyBuilder {
	builder := &RecognizeTrainInvoicePathReqBodyBuilder{}
	return builder
}

// 识别的火车票源文件
//
// 示例值：
func (builder *RecognizeTrainInvoicePathReqBodyBuilder) FilePath(filePath string) *RecognizeTrainInvoicePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeTrainInvoicePathReqBodyBuilder) Build() (*RecognizeTrainInvoiceReqBody, error) {
	req := &RecognizeTrainInvoiceReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeTrainInvoiceReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeTrainInvoiceReqBody
}

func NewRecognizeTrainInvoiceReqBuilder() *RecognizeTrainInvoiceReqBuilder {
	builder := &RecognizeTrainInvoiceReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeTrainInvoiceReqBuilder) Body(body *RecognizeTrainInvoiceReqBody) *RecognizeTrainInvoiceReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeTrainInvoiceReqBuilder) Build() *RecognizeTrainInvoiceReq {
	req := &RecognizeTrainInvoiceReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeTrainInvoiceReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的火车票源文件
}

type RecognizeTrainInvoiceReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeTrainInvoiceReqBody `body:""`
}

type RecognizeTrainInvoiceRespData struct {
	TrainInvoices []*TrainInvoice `json:"train_invoices,omitempty"` // 火车票信息
}

type RecognizeTrainInvoiceResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeTrainInvoiceRespData `json:"data"` // 业务数据
}

func (resp *RecognizeTrainInvoiceResp) Success() bool {
	return resp.Code == 0
}

type RecognizeTwMainlandTravelPermitReqBodyBuilder struct {
	file     io.Reader // 识别的台湾居民来往大陆通行证源文件
	fileFlag bool
}

func NewRecognizeTwMainlandTravelPermitReqBodyBuilder() *RecognizeTwMainlandTravelPermitReqBodyBuilder {
	builder := &RecognizeTwMainlandTravelPermitReqBodyBuilder{}
	return builder
}

// 识别的台湾居民来往大陆通行证源文件
//
//示例值：
func (builder *RecognizeTwMainlandTravelPermitReqBodyBuilder) File(file io.Reader) *RecognizeTwMainlandTravelPermitReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeTwMainlandTravelPermitReqBodyBuilder) Build() *RecognizeTwMainlandTravelPermitReqBody {
	req := &RecognizeTwMainlandTravelPermitReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeTwMainlandTravelPermitPathReqBodyBuilder struct {
	filePath     string // 识别的台湾居民来往大陆通行证源文件
	filePathFlag bool
}

func NewRecognizeTwMainlandTravelPermitPathReqBodyBuilder() *RecognizeTwMainlandTravelPermitPathReqBodyBuilder {
	builder := &RecognizeTwMainlandTravelPermitPathReqBodyBuilder{}
	return builder
}

// 识别的台湾居民来往大陆通行证源文件
//
// 示例值：
func (builder *RecognizeTwMainlandTravelPermitPathReqBodyBuilder) FilePath(filePath string) *RecognizeTwMainlandTravelPermitPathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeTwMainlandTravelPermitPathReqBodyBuilder) Build() (*RecognizeTwMainlandTravelPermitReqBody, error) {
	req := &RecognizeTwMainlandTravelPermitReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeTwMainlandTravelPermitReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeTwMainlandTravelPermitReqBody
}

func NewRecognizeTwMainlandTravelPermitReqBuilder() *RecognizeTwMainlandTravelPermitReqBuilder {
	builder := &RecognizeTwMainlandTravelPermitReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeTwMainlandTravelPermitReqBuilder) Body(body *RecognizeTwMainlandTravelPermitReqBody) *RecognizeTwMainlandTravelPermitReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeTwMainlandTravelPermitReqBuilder) Build() *RecognizeTwMainlandTravelPermitReq {
	req := &RecognizeTwMainlandTravelPermitReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeTwMainlandTravelPermitReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的台湾居民来往大陆通行证源文件
}

type RecognizeTwMainlandTravelPermitReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeTwMainlandTravelPermitReqBody `body:""`
}

type RecognizeTwMainlandTravelPermitRespData struct {
	TwMainlandTravelPermit *TwMainlandTravelPermit `json:"tw_mainland_travel_permit,omitempty"` // 台湾居民来往大陆通行证信息
}

type RecognizeTwMainlandTravelPermitResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeTwMainlandTravelPermitRespData `json:"data"` // 业务数据
}

func (resp *RecognizeTwMainlandTravelPermitResp) Success() bool {
	return resp.Code == 0
}

type RecognizeVatInvoiceReqBodyBuilder struct {
	file     io.Reader // 识别的增值税发票文件
	fileFlag bool
}

func NewRecognizeVatInvoiceReqBodyBuilder() *RecognizeVatInvoiceReqBodyBuilder {
	builder := &RecognizeVatInvoiceReqBodyBuilder{}
	return builder
}

// 识别的增值税发票文件
//
//示例值：
func (builder *RecognizeVatInvoiceReqBodyBuilder) File(file io.Reader) *RecognizeVatInvoiceReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeVatInvoiceReqBodyBuilder) Build() *RecognizeVatInvoiceReqBody {
	req := &RecognizeVatInvoiceReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeVatInvoicePathReqBodyBuilder struct {
	filePath     string // 识别的增值税发票文件
	filePathFlag bool
}

func NewRecognizeVatInvoicePathReqBodyBuilder() *RecognizeVatInvoicePathReqBodyBuilder {
	builder := &RecognizeVatInvoicePathReqBodyBuilder{}
	return builder
}

// 识别的增值税发票文件
//
// 示例值：
func (builder *RecognizeVatInvoicePathReqBodyBuilder) FilePath(filePath string) *RecognizeVatInvoicePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeVatInvoicePathReqBodyBuilder) Build() (*RecognizeVatInvoiceReqBody, error) {
	req := &RecognizeVatInvoiceReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeVatInvoiceReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeVatInvoiceReqBody
}

func NewRecognizeVatInvoiceReqBuilder() *RecognizeVatInvoiceReqBuilder {
	builder := &RecognizeVatInvoiceReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeVatInvoiceReqBuilder) Body(body *RecognizeVatInvoiceReqBody) *RecognizeVatInvoiceReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeVatInvoiceReqBuilder) Build() *RecognizeVatInvoiceReq {
	req := &RecognizeVatInvoiceReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeVatInvoiceReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的增值税发票文件
}

type RecognizeVatInvoiceReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeVatInvoiceReqBody `body:""`
}

type RecognizeVatInvoiceRespData struct {
	VatInvoices []*VatInvoice `json:"vat_invoices,omitempty"` // 增值税发票信息
}

type RecognizeVatInvoiceResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeVatInvoiceRespData `json:"data"` // 业务数据
}

func (resp *RecognizeVatInvoiceResp) Success() bool {
	return resp.Code == 0
}

type RecognizeVehicleInvoiceReqBodyBuilder struct {
	file     io.Reader // 识别的机动车发票源文件
	fileFlag bool
}

func NewRecognizeVehicleInvoiceReqBodyBuilder() *RecognizeVehicleInvoiceReqBodyBuilder {
	builder := &RecognizeVehicleInvoiceReqBodyBuilder{}
	return builder
}

// 识别的机动车发票源文件
//
//示例值：
func (builder *RecognizeVehicleInvoiceReqBodyBuilder) File(file io.Reader) *RecognizeVehicleInvoiceReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeVehicleInvoiceReqBodyBuilder) Build() *RecognizeVehicleInvoiceReqBody {
	req := &RecognizeVehicleInvoiceReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeVehicleInvoicePathReqBodyBuilder struct {
	filePath     string // 识别的机动车发票源文件
	filePathFlag bool
}

func NewRecognizeVehicleInvoicePathReqBodyBuilder() *RecognizeVehicleInvoicePathReqBodyBuilder {
	builder := &RecognizeVehicleInvoicePathReqBodyBuilder{}
	return builder
}

// 识别的机动车发票源文件
//
// 示例值：
func (builder *RecognizeVehicleInvoicePathReqBodyBuilder) FilePath(filePath string) *RecognizeVehicleInvoicePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeVehicleInvoicePathReqBodyBuilder) Build() (*RecognizeVehicleInvoiceReqBody, error) {
	req := &RecognizeVehicleInvoiceReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeVehicleInvoiceReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeVehicleInvoiceReqBody
}

func NewRecognizeVehicleInvoiceReqBuilder() *RecognizeVehicleInvoiceReqBuilder {
	builder := &RecognizeVehicleInvoiceReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeVehicleInvoiceReqBuilder) Body(body *RecognizeVehicleInvoiceReqBody) *RecognizeVehicleInvoiceReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeVehicleInvoiceReqBuilder) Build() *RecognizeVehicleInvoiceReq {
	req := &RecognizeVehicleInvoiceReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeVehicleInvoiceReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的机动车发票源文件
}

type RecognizeVehicleInvoiceReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeVehicleInvoiceReqBody `body:""`
}

type RecognizeVehicleInvoiceRespData struct {
	VehicleInvoice *VehicleInvoice `json:"vehicle_invoice,omitempty"` // 机动车发票信息
}

type RecognizeVehicleInvoiceResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeVehicleInvoiceRespData `json:"data"` // 业务数据
}

func (resp *RecognizeVehicleInvoiceResp) Success() bool {
	return resp.Code == 0
}

type RecognizeVehicleLicenseReqBodyBuilder struct {
	file     io.Reader // 识别的行驶证源文件
	fileFlag bool
}

func NewRecognizeVehicleLicenseReqBodyBuilder() *RecognizeVehicleLicenseReqBodyBuilder {
	builder := &RecognizeVehicleLicenseReqBodyBuilder{}
	return builder
}

// 识别的行驶证源文件
//
//示例值：
func (builder *RecognizeVehicleLicenseReqBodyBuilder) File(file io.Reader) *RecognizeVehicleLicenseReqBodyBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

func (builder *RecognizeVehicleLicenseReqBodyBuilder) Build() *RecognizeVehicleLicenseReqBody {
	req := &RecognizeVehicleLicenseReqBody{}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type RecognizeVehicleLicensePathReqBodyBuilder struct {
	filePath     string // 识别的行驶证源文件
	filePathFlag bool
}

func NewRecognizeVehicleLicensePathReqBodyBuilder() *RecognizeVehicleLicensePathReqBodyBuilder {
	builder := &RecognizeVehicleLicensePathReqBodyBuilder{}
	return builder
}

// 识别的行驶证源文件
//
// 示例值：
func (builder *RecognizeVehicleLicensePathReqBodyBuilder) FilePath(filePath string) *RecognizeVehicleLicensePathReqBodyBuilder {
	builder.filePath = filePath
	builder.filePathFlag = true
	return builder
}

func (builder *RecognizeVehicleLicensePathReqBodyBuilder) Build() (*RecognizeVehicleLicenseReqBody, error) {
	req := &RecognizeVehicleLicenseReqBody{}
	if builder.filePathFlag {
		data, err := larkcore.File2Bytes(builder.filePath)
		if err != nil {
			return nil, err
		}
		req.File = bytes.NewBuffer(data)
	}
	return req, nil
}

type RecognizeVehicleLicenseReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RecognizeVehicleLicenseReqBody
}

func NewRecognizeVehicleLicenseReqBuilder() *RecognizeVehicleLicenseReqBuilder {
	builder := &RecognizeVehicleLicenseReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RecognizeVehicleLicenseReqBuilder) Body(body *RecognizeVehicleLicenseReqBody) *RecognizeVehicleLicenseReqBuilder {
	builder.body = body
	return builder
}

func (builder *RecognizeVehicleLicenseReqBuilder) Build() *RecognizeVehicleLicenseReq {
	req := &RecognizeVehicleLicenseReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RecognizeVehicleLicenseReqBody struct {
	File io.Reader `json:"file,omitempty"` // 识别的行驶证源文件
}

type RecognizeVehicleLicenseReq struct {
	apiReq *larkcore.ApiReq
	Body   *RecognizeVehicleLicenseReqBody `body:""`
}

type RecognizeVehicleLicenseRespData struct {
	VehicleLicense *VehicleLicense `json:"vehicle_license,omitempty"` // 行驶证信息
}

type RecognizeVehicleLicenseResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RecognizeVehicleLicenseRespData `json:"data"` // 业务数据
}

func (resp *RecognizeVehicleLicenseResp) Success() bool {
	return resp.Code == 0
}
