// Package lingo 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 larklingo

import (
	"io"

	"io/ioutil"

	"fmt"

	"context"
	"errors"

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

const (
	UserIdTypeUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeUpdateDraftUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeUpdateDraftUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeUpdateDraftOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeCreateEntityUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeCreateEntityUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeCreateEntityOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeGetEntityUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeGetEntityUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeGetEntityOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeListEntityUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeListEntityUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeListEntityOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeSearchEntityUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeSearchEntityUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeSearchEntityOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UserIdTypeUpdateEntityUserId  = "user_id"  // 以user_id来识别用户
	UserIdTypeUpdateEntityUnionId = "union_id" // 以union_id来识别用户
	UserIdTypeUpdateEntityOpenId  = "open_id"  // 以open_id来识别用户
)

type Abbreviation struct {
	Id *string `json:"id,omitempty"` // 相关其他词条 id
}

type AbbreviationBuilder struct {
	id     string // 相关其他词条 id
	idFlag bool
}

func NewAbbreviationBuilder() *AbbreviationBuilder {
	builder := &AbbreviationBuilder{}
	return builder
}

// 相关其他词条 id
//
// 示例值：enterprise_51587960
func (builder *AbbreviationBuilder) Id(id string) *AbbreviationBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

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

	}
	return req
}

type AigcConfig struct {
	NeedReview *bool `json:"need_review,omitempty"` // 是否需要人工审核

	RepoId *string `json:"repo_id,omitempty"` // 词库ID
}

type AigcConfigBuilder struct {
	needReview     bool // 是否需要人工审核
	needReviewFlag bool

	repoId     string // 词库ID
	repoIdFlag bool
}

func NewAigcConfigBuilder() *AigcConfigBuilder {
	builder := &AigcConfigBuilder{}
	return builder
}

// 是否需要人工审核
//
// 示例值：false
func (builder *AigcConfigBuilder) NeedReview(needReview bool) *AigcConfigBuilder {
	builder.needReview = needReview
	builder.needReviewFlag = true
	return builder
}

// 词库ID
//
// 示例值：7203646336854390000
func (builder *AigcConfigBuilder) RepoId(repoId string) *AigcConfigBuilder {
	builder.repoId = repoId
	builder.repoIdFlag = true
	return builder
}

func (builder *AigcConfigBuilder) Build() *AigcConfig {
	req := &AigcConfig{}
	if builder.needReviewFlag {
		req.NeedReview = &builder.needReview

	}
	if builder.repoIdFlag {
		req.RepoId = &builder.repoId

	}
	return req
}

type BaikeImage struct {
	Token *string `json:"token,omitempty"` // 通过文件接口上传后的图片 token
}

type BaikeImageBuilder struct {
	token     string // 通过文件接口上传后的图片 token
	tokenFlag bool
}

func NewBaikeImageBuilder() *BaikeImageBuilder {
	builder := &BaikeImageBuilder{}
	return builder
}

// 通过文件接口上传后的图片 token
//
// 示例值：
func (builder *BaikeImageBuilder) Token(token string) *BaikeImageBuilder {
	builder.token = token
	builder.tokenFlag = true
	return builder
}

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

	}
	return req
}

type Classification struct {
	Id *string `json:"id,omitempty"` // 唯一分类 ID

	Name *string `json:"name,omitempty"` // 分类名称

	FatherId *string `json:"father_id,omitempty"` // 父级分类的 ID

	I18nNames []*I18nClsName `json:"i18n_names,omitempty"` // 国际化分类名
}

type ClassificationBuilder struct {
	id     string // 唯一分类 ID
	idFlag bool

	name     string // 分类名称
	nameFlag bool

	fatherId     string // 父级分类的 ID
	fatherIdFlag bool

	i18nNames     []*I18nClsName // 国际化分类名
	i18nNamesFlag bool
}

func NewClassificationBuilder() *ClassificationBuilder {
	builder := &ClassificationBuilder{}
	return builder
}

// 唯一分类 ID
//
// 示例值：7049606926702837761
func (builder *ClassificationBuilder) Id(id string) *ClassificationBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 分类名称
//
// 示例值：行业术语
func (builder *ClassificationBuilder) Name(name string) *ClassificationBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 父级分类的 ID
//
// 示例值：7049606926702837777
func (builder *ClassificationBuilder) FatherId(fatherId string) *ClassificationBuilder {
	builder.fatherId = fatherId
	builder.fatherIdFlag = true
	return builder
}

// 国际化分类名
//
// 示例值：
func (builder *ClassificationBuilder) I18nNames(i18nNames []*I18nClsName) *ClassificationBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

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

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

	}
	if builder.fatherIdFlag {
		req.FatherId = &builder.fatherId

	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	return req
}

type ClassificationFilter struct {
	Include []string `json:"include,omitempty"` // 需要获取的分类

	Exclude []string `json:"exclude,omitempty"` // 需要排除的分类
}

type ClassificationFilterBuilder struct {
	include     []string // 需要获取的分类
	includeFlag bool

	exclude     []string // 需要排除的分类
	excludeFlag bool
}

func NewClassificationFilterBuilder() *ClassificationFilterBuilder {
	builder := &ClassificationFilterBuilder{}
	return builder
}

// 需要获取的分类
//
// 示例值：
func (builder *ClassificationFilterBuilder) Include(include []string) *ClassificationFilterBuilder {
	builder.include = include
	builder.includeFlag = true
	return builder
}

// 需要排除的分类
//
// 示例值：
func (builder *ClassificationFilterBuilder) Exclude(exclude []string) *ClassificationFilterBuilder {
	builder.exclude = exclude
	builder.excludeFlag = true
	return builder
}

func (builder *ClassificationFilterBuilder) Build() *ClassificationFilter {
	req := &ClassificationFilter{}
	if builder.includeFlag {
		req.Include = builder.include
	}
	if builder.excludeFlag {
		req.Exclude = builder.exclude
	}
	return req
}

type CorrectError struct {
	Type *int `json:"type,omitempty"` //

	Total *int `json:"total,omitempty"` // 该类型错误在请求时间周期内的累计数量

	CorrectPairs []*CorrectPair `json:"correct_pairs,omitempty"` // 该类型错误在周期内具体的纠错对
}

type CorrectErrorBuilder struct {
	type_    int //
	typeFlag bool

	total     int // 该类型错误在请求时间周期内的累计数量
	totalFlag bool

	correctPairs     []*CorrectPair // 该类型错误在周期内具体的纠错对
	correctPairsFlag bool
}

func NewCorrectErrorBuilder() *CorrectErrorBuilder {
	builder := &CorrectErrorBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *CorrectErrorBuilder) Type(type_ int) *CorrectErrorBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 该类型错误在请求时间周期内的累计数量
//
// 示例值：
func (builder *CorrectErrorBuilder) Total(total int) *CorrectErrorBuilder {
	builder.total = total
	builder.totalFlag = true
	return builder
}

// 该类型错误在周期内具体的纠错对
//
// 示例值：
func (builder *CorrectErrorBuilder) CorrectPairs(correctPairs []*CorrectPair) *CorrectErrorBuilder {
	builder.correctPairs = correctPairs
	builder.correctPairsFlag = true
	return builder
}

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

	}
	if builder.totalFlag {
		req.Total = &builder.total

	}
	if builder.correctPairsFlag {
		req.CorrectPairs = builder.correctPairs
	}
	return req
}

type CorrectInfo struct {
	CorrectTotal *int `json:"correct_total,omitempty"` // 用户英文纠错数总数

	EachdayCorrect []int `json:"eachday_correct,omitempty"` // 时间区间内每一天纠错数

	GrammarError *CorrectError `json:"grammar_error,omitempty"` // 语法错误相关统计信息

	SpellError *CorrectError `json:"spell_error,omitempty"` // 拼写错误相关统计信息

	NounError *CorrectError `json:"noun_error,omitempty"` // 单复数错误相关统计信息

	VerbTenseError *CorrectError `json:"verb_tense_error,omitempty"` // 时态错误相关统计信息
}

type CorrectInfoBuilder struct {
	correctTotal     int // 用户英文纠错数总数
	correctTotalFlag bool

	eachdayCorrect     []int // 时间区间内每一天纠错数
	eachdayCorrectFlag bool

	grammarError     *CorrectError // 语法错误相关统计信息
	grammarErrorFlag bool

	spellError     *CorrectError // 拼写错误相关统计信息
	spellErrorFlag bool

	nounError     *CorrectError // 单复数错误相关统计信息
	nounErrorFlag bool

	verbTenseError     *CorrectError // 时态错误相关统计信息
	verbTenseErrorFlag bool
}

func NewCorrectInfoBuilder() *CorrectInfoBuilder {
	builder := &CorrectInfoBuilder{}
	return builder
}

// 用户英文纠错数总数
//
// 示例值：
func (builder *CorrectInfoBuilder) CorrectTotal(correctTotal int) *CorrectInfoBuilder {
	builder.correctTotal = correctTotal
	builder.correctTotalFlag = true
	return builder
}

// 时间区间内每一天纠错数
//
// 示例值：
func (builder *CorrectInfoBuilder) EachdayCorrect(eachdayCorrect []int) *CorrectInfoBuilder {
	builder.eachdayCorrect = eachdayCorrect
	builder.eachdayCorrectFlag = true
	return builder
}

// 语法错误相关统计信息
//
// 示例值：
func (builder *CorrectInfoBuilder) GrammarError(grammarError *CorrectError) *CorrectInfoBuilder {
	builder.grammarError = grammarError
	builder.grammarErrorFlag = true
	return builder
}

// 拼写错误相关统计信息
//
// 示例值：
func (builder *CorrectInfoBuilder) SpellError(spellError *CorrectError) *CorrectInfoBuilder {
	builder.spellError = spellError
	builder.spellErrorFlag = true
	return builder
}

// 单复数错误相关统计信息
//
// 示例值：
func (builder *CorrectInfoBuilder) NounError(nounError *CorrectError) *CorrectInfoBuilder {
	builder.nounError = nounError
	builder.nounErrorFlag = true
	return builder
}

// 时态错误相关统计信息
//
// 示例值：
func (builder *CorrectInfoBuilder) VerbTenseError(verbTenseError *CorrectError) *CorrectInfoBuilder {
	builder.verbTenseError = verbTenseError
	builder.verbTenseErrorFlag = true
	return builder
}

func (builder *CorrectInfoBuilder) Build() *CorrectInfo {
	req := &CorrectInfo{}
	if builder.correctTotalFlag {
		req.CorrectTotal = &builder.correctTotal

	}
	if builder.eachdayCorrectFlag {
		req.EachdayCorrect = builder.eachdayCorrect
	}
	if builder.grammarErrorFlag {
		req.GrammarError = builder.grammarError
	}
	if builder.spellErrorFlag {
		req.SpellError = builder.spellError
	}
	if builder.nounErrorFlag {
		req.NounError = builder.nounError
	}
	if builder.verbTenseErrorFlag {
		req.VerbTenseError = builder.verbTenseError
	}
	return req
}

type CorrectPair struct {
	SourceText *string `json:"source_text,omitempty"` // 被纠错的原词

	TargetText *string `json:"target_text,omitempty"` // 纠错建议替换的新词

	Total *int `json:"total,omitempty"` // 纠错对在周期内出现的次数
}

type CorrectPairBuilder struct {
	sourceText     string // 被纠错的原词
	sourceTextFlag bool

	targetText     string // 纠错建议替换的新词
	targetTextFlag bool

	total     int // 纠错对在周期内出现的次数
	totalFlag bool
}

func NewCorrectPairBuilder() *CorrectPairBuilder {
	builder := &CorrectPairBuilder{}
	return builder
}

// 被纠错的原词
//
// 示例值：
func (builder *CorrectPairBuilder) SourceText(sourceText string) *CorrectPairBuilder {
	builder.sourceText = sourceText
	builder.sourceTextFlag = true
	return builder
}

// 纠错建议替换的新词
//
// 示例值：
func (builder *CorrectPairBuilder) TargetText(targetText string) *CorrectPairBuilder {
	builder.targetText = targetText
	builder.targetTextFlag = true
	return builder
}

// 纠错对在周期内出现的次数
//
// 示例值：
func (builder *CorrectPairBuilder) Total(total int) *CorrectPairBuilder {
	builder.total = total
	builder.totalFlag = true
	return builder
}

func (builder *CorrectPairBuilder) Build() *CorrectPair {
	req := &CorrectPair{}
	if builder.sourceTextFlag {
		req.SourceText = &builder.sourceText

	}
	if builder.targetTextFlag {
		req.TargetText = &builder.targetText

	}
	if builder.totalFlag {
		req.Total = &builder.total

	}
	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 DisplayStatus struct {
	AllowHighlight *bool `json:"allow_highlight,omitempty"` // 是否允许在 IM 和 Doc 等场景进行高亮提示

	AllowSearch *bool `json:"allow_search,omitempty"` // 是否允许在飞书中被搜索到
}

type DisplayStatusBuilder struct {
	allowHighlight     bool // 是否允许在 IM 和 Doc 等场景进行高亮提示
	allowHighlightFlag bool

	allowSearch     bool // 是否允许在飞书中被搜索到
	allowSearchFlag bool
}

func NewDisplayStatusBuilder() *DisplayStatusBuilder {
	builder := &DisplayStatusBuilder{}
	return builder
}

// 是否允许在 IM 和 Doc 等场景进行高亮提示
//
// 示例值：true
func (builder *DisplayStatusBuilder) AllowHighlight(allowHighlight bool) *DisplayStatusBuilder {
	builder.allowHighlight = allowHighlight
	builder.allowHighlightFlag = true
	return builder
}

// 是否允许在飞书中被搜索到
//
// 示例值：true
func (builder *DisplayStatusBuilder) AllowSearch(allowSearch bool) *DisplayStatusBuilder {
	builder.allowSearch = allowSearch
	builder.allowSearchFlag = true
	return builder
}

func (builder *DisplayStatusBuilder) Build() *DisplayStatus {
	req := &DisplayStatus{}
	if builder.allowHighlightFlag {
		req.AllowHighlight = &builder.allowHighlight

	}
	if builder.allowSearchFlag {
		req.AllowSearch = &builder.allowSearch

	}
	return req
}

type DocBullet struct {
	Text *string `json:"text,omitempty"` // 文本内容
}

type DocBulletBuilder struct {
	text     string // 文本内容
	textFlag bool
}

func NewDocBulletBuilder() *DocBulletBuilder {
	builder := &DocBulletBuilder{}
	return builder
}

// 文本内容
//
// 示例值：无序列表文本
func (builder *DocBulletBuilder) Text(text string) *DocBulletBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *DocBulletBuilder) Build() *DocBullet {
	req := &DocBullet{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type DocCode struct {
	Text *string `json:"text,omitempty"` // 代码文本内容
}

type DocCodeBuilder struct {
	text     string // 代码文本内容
	textFlag bool
}

func NewDocCodeBuilder() *DocCodeBuilder {
	builder := &DocCodeBuilder{}
	return builder
}

// 代码文本内容
//
// 示例值：int a = 10;
func (builder *DocCodeBuilder) Text(text string) *DocCodeBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *DocCodeBuilder) Build() *DocCode {
	req := &DocCode{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type DocContainer struct {
}

type DocContainerBuilder struct {
}

func NewDocContainerBuilder() *DocContainerBuilder {
	builder := &DocContainerBuilder{}
	return builder
}

func (builder *DocContainerBuilder) Build() *DocContainer {
	req := &DocContainer{}
	return req
}

type DocContent struct {
	Id *string `json:"id,omitempty"` // 节点ID

	Children []string `json:"children,omitempty"` // 子节点

	ContentType *int `json:"content_type,omitempty"` // 内容类型

	Text *DocText `json:"text,omitempty"` // 纯文本

	Heading *DocHeading `json:"heading,omitempty"` // 标题

	Bullet *DocBullet `json:"bullet,omitempty"` // 无序列表

	Ordered *DocRodered `json:"ordered,omitempty"` // 有序列表

	Code *DocCode `json:"code,omitempty"` // 代码块

	Link *DocLink `json:"link,omitempty"` // 链接

	Image *DocImage `json:"image,omitempty"` // 图片

	User *DocUser `json:"user,omitempty"` // 用户

	Divider *DocDivider `json:"divider,omitempty"` // 分割线

	Container *DocContainer `json:"container,omitempty"` // 容器
}

type DocContentBuilder struct {
	id     string // 节点ID
	idFlag bool

	children     []string // 子节点
	childrenFlag bool

	contentType     int // 内容类型
	contentTypeFlag bool

	text     *DocText // 纯文本
	textFlag bool

	heading     *DocHeading // 标题
	headingFlag bool

	bullet     *DocBullet // 无序列表
	bulletFlag bool

	ordered     *DocRodered // 有序列表
	orderedFlag bool

	code     *DocCode // 代码块
	codeFlag bool

	link     *DocLink // 链接
	linkFlag bool

	image     *DocImage // 图片
	imageFlag bool

	user     *DocUser // 用户
	userFlag bool

	divider     *DocDivider // 分割线
	dividerFlag bool

	container     *DocContainer // 容器
	containerFlag bool
}

func NewDocContentBuilder() *DocContentBuilder {
	builder := &DocContentBuilder{}
	return builder
}

// 节点ID
//
// 示例值：xxxxx
func (builder *DocContentBuilder) Id(id string) *DocContentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 子节点
//
// 示例值：
func (builder *DocContentBuilder) Children(children []string) *DocContentBuilder {
	builder.children = children
	builder.childrenFlag = true
	return builder
}

// 内容类型
//
// 示例值：1
func (builder *DocContentBuilder) ContentType(contentType int) *DocContentBuilder {
	builder.contentType = contentType
	builder.contentTypeFlag = true
	return builder
}

// 纯文本
//
// 示例值：
func (builder *DocContentBuilder) Text(text *DocText) *DocContentBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 标题
//
// 示例值：
func (builder *DocContentBuilder) Heading(heading *DocHeading) *DocContentBuilder {
	builder.heading = heading
	builder.headingFlag = true
	return builder
}

// 无序列表
//
// 示例值：
func (builder *DocContentBuilder) Bullet(bullet *DocBullet) *DocContentBuilder {
	builder.bullet = bullet
	builder.bulletFlag = true
	return builder
}

// 有序列表
//
// 示例值：
func (builder *DocContentBuilder) Ordered(ordered *DocRodered) *DocContentBuilder {
	builder.ordered = ordered
	builder.orderedFlag = true
	return builder
}

// 代码块
//
// 示例值：
func (builder *DocContentBuilder) Code(code *DocCode) *DocContentBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 链接
//
// 示例值：
func (builder *DocContentBuilder) Link(link *DocLink) *DocContentBuilder {
	builder.link = link
	builder.linkFlag = true
	return builder
}

// 图片
//
// 示例值：
func (builder *DocContentBuilder) Image(image *DocImage) *DocContentBuilder {
	builder.image = image
	builder.imageFlag = true
	return builder
}

// 用户
//
// 示例值：
func (builder *DocContentBuilder) User(user *DocUser) *DocContentBuilder {
	builder.user = user
	builder.userFlag = true
	return builder
}

// 分割线
//
// 示例值：
func (builder *DocContentBuilder) Divider(divider *DocDivider) *DocContentBuilder {
	builder.divider = divider
	builder.dividerFlag = true
	return builder
}

// 容器
//
// 示例值：
func (builder *DocContentBuilder) Container(container *DocContainer) *DocContentBuilder {
	builder.container = container
	builder.containerFlag = true
	return builder
}

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

	}
	if builder.childrenFlag {
		req.Children = builder.children
	}
	if builder.contentTypeFlag {
		req.ContentType = &builder.contentType

	}
	if builder.textFlag {
		req.Text = builder.text
	}
	if builder.headingFlag {
		req.Heading = builder.heading
	}
	if builder.bulletFlag {
		req.Bullet = builder.bullet
	}
	if builder.orderedFlag {
		req.Ordered = builder.ordered
	}
	if builder.codeFlag {
		req.Code = builder.code
	}
	if builder.linkFlag {
		req.Link = builder.link
	}
	if builder.imageFlag {
		req.Image = builder.image
	}
	if builder.userFlag {
		req.User = builder.user
	}
	if builder.dividerFlag {
		req.Divider = builder.divider
	}
	if builder.containerFlag {
		req.Container = builder.container
	}
	return req
}

type DocData struct {
	DocToken *string `json:"doc_token,omitempty"` // 文档token

	CreatedAt *string `json:"created_at,omitempty"` // 文档创建时间

	UpdatedAt *string `json:"updated_at,omitempty"` // 文档最后更新时间

	DocContents []*DocContent `json:"doc_contents,omitempty"` // 文档数据

	RootContentId *string `json:"root_content_id,omitempty"` // 根节点ID
}

type DocDataBuilder struct {
	docToken     string // 文档token
	docTokenFlag bool

	createdAt     string // 文档创建时间
	createdAtFlag bool

	updatedAt     string // 文档最后更新时间
	updatedAtFlag bool

	docContents     []*DocContent // 文档数据
	docContentsFlag bool

	rootContentId     string // 根节点ID
	rootContentIdFlag bool
}

func NewDocDataBuilder() *DocDataBuilder {
	builder := &DocDataBuilder{}
	return builder
}

// 文档token
//
// 示例值：docxxxxxxxxx
func (builder *DocDataBuilder) DocToken(docToken string) *DocDataBuilder {
	builder.docToken = docToken
	builder.docTokenFlag = true
	return builder
}

// 文档创建时间
//
// 示例值：1692242106
func (builder *DocDataBuilder) CreatedAt(createdAt string) *DocDataBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 文档最后更新时间
//
// 示例值：1692242106
func (builder *DocDataBuilder) UpdatedAt(updatedAt string) *DocDataBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 文档数据
//
// 示例值：
func (builder *DocDataBuilder) DocContents(docContents []*DocContent) *DocDataBuilder {
	builder.docContents = docContents
	builder.docContentsFlag = true
	return builder
}

// 根节点ID
//
// 示例值：blockxxxx
func (builder *DocDataBuilder) RootContentId(rootContentId string) *DocDataBuilder {
	builder.rootContentId = rootContentId
	builder.rootContentIdFlag = true
	return builder
}

func (builder *DocDataBuilder) Build() *DocData {
	req := &DocData{}
	if builder.docTokenFlag {
		req.DocToken = &builder.docToken

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.docContentsFlag {
		req.DocContents = builder.docContents
	}
	if builder.rootContentIdFlag {
		req.RootContentId = &builder.rootContentId

	}
	return req
}

type DocDivider struct {
}

type DocDividerBuilder struct {
}

func NewDocDividerBuilder() *DocDividerBuilder {
	builder := &DocDividerBuilder{}
	return builder
}

func (builder *DocDividerBuilder) Build() *DocDivider {
	req := &DocDivider{}
	return req
}

type DocHeading struct {
	Text *string `json:"text,omitempty"` // 标题文本内容

	HeadingLevel *int `json:"heading_level,omitempty"` // 标题等级
}

type DocHeadingBuilder struct {
	text     string // 标题文本内容
	textFlag bool

	headingLevel     int // 标题等级
	headingLevelFlag bool
}

func NewDocHeadingBuilder() *DocHeadingBuilder {
	builder := &DocHeadingBuilder{}
	return builder
}

// 标题文本内容
//
// 示例值：这是一段标题内容
func (builder *DocHeadingBuilder) Text(text string) *DocHeadingBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 标题等级
//
// 示例值：1
func (builder *DocHeadingBuilder) HeadingLevel(headingLevel int) *DocHeadingBuilder {
	builder.headingLevel = headingLevel
	builder.headingLevelFlag = true
	return builder
}

func (builder *DocHeadingBuilder) Build() *DocHeading {
	req := &DocHeading{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.headingLevelFlag {
		req.HeadingLevel = &builder.headingLevel

	}
	return req
}

type DocImage struct {
	ImageKey *string `json:"image_key,omitempty"` // 图片key
}

type DocImageBuilder struct {
	imageKey     string // 图片key
	imageKeyFlag bool
}

func NewDocImageBuilder() *DocImageBuilder {
	builder := &DocImageBuilder{}
	return builder
}

// 图片key
//
// 示例值：v2_xxxxxxxxxxxx
func (builder *DocImageBuilder) ImageKey(imageKey string) *DocImageBuilder {
	builder.imageKey = imageKey
	builder.imageKeyFlag = true
	return builder
}

func (builder *DocImageBuilder) Build() *DocImage {
	req := &DocImage{}
	if builder.imageKeyFlag {
		req.ImageKey = &builder.imageKey

	}
	return req
}

type DocLink struct {
	Title *string `json:"title,omitempty"` // 链接标题

	Url *string `json:"url,omitempty"` // 链接URL
}

type DocLinkBuilder struct {
	title     string // 链接标题
	titleFlag bool

	url     string // 链接URL
	urlFlag bool
}

func NewDocLinkBuilder() *DocLinkBuilder {
	builder := &DocLinkBuilder{}
	return builder
}

// 链接标题
//
// 示例值：百度
func (builder *DocLinkBuilder) Title(title string) *DocLinkBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 链接URL
//
// 示例值：https://www.baidu.com
func (builder *DocLinkBuilder) Url(url string) *DocLinkBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

func (builder *DocLinkBuilder) Build() *DocLink {
	req := &DocLink{}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	return req
}

type DocRodered struct {
	Text *string `json:"text,omitempty"` // 文本内容
}

type DocRoderedBuilder struct {
	text     string // 文本内容
	textFlag bool
}

func NewDocRoderedBuilder() *DocRoderedBuilder {
	builder := &DocRoderedBuilder{}
	return builder
}

// 文本内容
//
// 示例值：有序列表文本
func (builder *DocRoderedBuilder) Text(text string) *DocRoderedBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *DocRoderedBuilder) Build() *DocRodered {
	req := &DocRodered{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type DocText struct {
	Text *string `json:"text,omitempty"` // 纯文本内容
}

type DocTextBuilder struct {
	text     string // 纯文本内容
	textFlag bool
}

func NewDocTextBuilder() *DocTextBuilder {
	builder := &DocTextBuilder{}
	return builder
}

// 纯文本内容
//
// 示例值：这是一段纯文本内容
func (builder *DocTextBuilder) Text(text string) *DocTextBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *DocTextBuilder) Build() *DocText {
	req := &DocText{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	return req
}

type DocUser struct {
	UserId *string `json:"user_id,omitempty"` // 用户ID
}

type DocUserBuilder struct {
	userId     string // 用户ID
	userIdFlag bool
}

func NewDocUserBuilder() *DocUserBuilder {
	builder := &DocUserBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_xxxxxxx
func (builder *DocUserBuilder) UserId(userId string) *DocUserBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

func (builder *DocUserBuilder) Build() *DocUser {
	req := &DocUser{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	return req
}

type Draft struct {
	DraftId *string `json:"draft_id,omitempty"` // 草稿 Id

	Entity *Entity `json:"entity,omitempty"` // 实体词
}

type DraftBuilder struct {
	draftId     string // 草稿 Id
	draftIdFlag bool

	entity     *Entity // 实体词
	entityFlag bool
}

func NewDraftBuilder() *DraftBuilder {
	builder := &DraftBuilder{}
	return builder
}

// 草稿 Id
//
// 示例值：42322
func (builder *DraftBuilder) DraftId(draftId string) *DraftBuilder {
	builder.draftId = draftId
	builder.draftIdFlag = true
	return builder
}

// 实体词
//
// 示例值：
func (builder *DraftBuilder) Entity(entity *Entity) *DraftBuilder {
	builder.entity = entity
	builder.entityFlag = true
	return builder
}

func (builder *DraftBuilder) Build() *Draft {
	req := &Draft{}
	if builder.draftIdFlag {
		req.DraftId = &builder.draftId

	}
	if builder.entityFlag {
		req.Entity = builder.entity
	}
	return req
}

type Entity struct {
	Id *string `json:"id,omitempty"` // 实体词 Id

	MainKeys []*Term `json:"main_keys,omitempty"` // 词条名

	FullNames []*Term `json:"full_names,omitempty"` // 全称

	Aliases []*Term `json:"aliases,omitempty"` // 别名

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

	Creator *string `json:"creator,omitempty"` // 创建者

	CreateTime *string `json:"create_time,omitempty"` // 词条创建时间（秒级时间戳）

	Updater *string `json:"updater,omitempty"` // 最近一次更新者

	UpdateTime *string `json:"update_time,omitempty"` // 最近一次更新词条时间（秒级时间戳）

	RelatedMeta *RelatedMeta `json:"related_meta,omitempty"` // 相关数据

	Statistics *Statistics `json:"statistics,omitempty"` // 统计数据

	OuterInfo *OuterInfo `json:"outer_info,omitempty"` // 外部 id 关联数据

	RichText *string `json:"rich_text,omitempty"` // 富文本格式（当填写富文本内容时，description字段将会失效可不填写），支持的格式参考[企业百科指南](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/baike-v1/overview)中的释义部分

	Source *int `json:"source,omitempty"` // 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建

	I18nDescs []*I18nEntryDesc `json:"i18n_descs,omitempty"` // 国际化的词条释义
}

type EntityBuilder struct {
	id     string // 实体词 Id
	idFlag bool

	mainKeys     []*Term // 词条名
	mainKeysFlag bool

	fullNames     []*Term // 全称
	fullNamesFlag bool

	aliases     []*Term // 别名
	aliasesFlag bool

	description     string // 详情描述
	descriptionFlag bool

	creator     string // 创建者
	creatorFlag bool

	createTime     string // 词条创建时间（秒级时间戳）
	createTimeFlag bool

	updater     string // 最近一次更新者
	updaterFlag bool

	updateTime     string // 最近一次更新词条时间（秒级时间戳）
	updateTimeFlag bool

	relatedMeta     *RelatedMeta // 相关数据
	relatedMetaFlag bool

	statistics     *Statistics // 统计数据
	statisticsFlag bool

	outerInfo     *OuterInfo // 外部 id 关联数据
	outerInfoFlag bool

	richText     string // 富文本格式（当填写富文本内容时，description字段将会失效可不填写），支持的格式参考[企业百科指南](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/baike-v1/overview)中的释义部分
	richTextFlag bool

	source     int // 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建
	sourceFlag bool

	i18nDescs     []*I18nEntryDesc // 国际化的词条释义
	i18nDescsFlag bool
}

func NewEntityBuilder() *EntityBuilder {
	builder := &EntityBuilder{}
	return builder
}

// 实体词 Id
//
// 示例值：enterprise_40217521
func (builder *EntityBuilder) Id(id string) *EntityBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 词条名
//
// 示例值：
func (builder *EntityBuilder) MainKeys(mainKeys []*Term) *EntityBuilder {
	builder.mainKeys = mainKeys
	builder.mainKeysFlag = true
	return builder
}

// 全称
//
// 示例值：
func (builder *EntityBuilder) FullNames(fullNames []*Term) *EntityBuilder {
	builder.fullNames = fullNames
	builder.fullNamesFlag = true
	return builder
}

// 别名
//
// 示例值：
func (builder *EntityBuilder) Aliases(aliases []*Term) *EntityBuilder {
	builder.aliases = aliases
	builder.aliasesFlag = true
	return builder
}

// 详情描述
//
// 示例值：企业百科是飞书提供的一款知识管理工具，通过企业百科可以帮助企业将分散的知识信息进行聚合，并通过UGC的方式，促进企业知识的保鲜和流通
func (builder *EntityBuilder) Description(description string) *EntityBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 创建者
//
// 示例值：ou_30b07b63089ea46518789914dac63d36
func (builder *EntityBuilder) Creator(creator string) *EntityBuilder {
	builder.creator = creator
	builder.creatorFlag = true
	return builder
}

// 词条创建时间（秒级时间戳）
//
// 示例值：1649318125
func (builder *EntityBuilder) CreateTime(createTime string) *EntityBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 最近一次更新者
//
// 示例值：ou_30b07b63089ea46518789914dac63d36
func (builder *EntityBuilder) Updater(updater string) *EntityBuilder {
	builder.updater = updater
	builder.updaterFlag = true
	return builder
}

// 最近一次更新词条时间（秒级时间戳）
//
// 示例值：1649318125
func (builder *EntityBuilder) UpdateTime(updateTime string) *EntityBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 相关数据
//
// 示例值：
func (builder *EntityBuilder) RelatedMeta(relatedMeta *RelatedMeta) *EntityBuilder {
	builder.relatedMeta = relatedMeta
	builder.relatedMetaFlag = true
	return builder
}

// 统计数据
//
// 示例值：
func (builder *EntityBuilder) Statistics(statistics *Statistics) *EntityBuilder {
	builder.statistics = statistics
	builder.statisticsFlag = true
	return builder
}

// 外部 id 关联数据
//
// 示例值：
func (builder *EntityBuilder) OuterInfo(outerInfo *OuterInfo) *EntityBuilder {
	builder.outerInfo = outerInfo
	builder.outerInfoFlag = true
	return builder
}

// 富文本格式（当填写富文本内容时，description字段将会失效可不填写），支持的格式参考[企业百科指南](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/baike-v1/overview)中的释义部分
//
// 示例值：&lt;b&gt;加粗&lt;/b&gt;&lt;i&gt;斜体&lt;/i&gt;&lt;p&gt;&lt;a href="https://feishu.cn"&gt;l链接&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;企业百科是飞书提供的一款知识管理工具，通过企业百科可以帮助企业将分散的知识信息进行聚合，并通过UGC的方式，促进企业知识的保鲜和流通&lt;/span&gt;&lt;/p&gt;
func (builder *EntityBuilder) RichText(richText string) *EntityBuilder {
	builder.richText = richText
	builder.richTextFlag = true
	return builder
}

// 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建
//
// 示例值：1
func (builder *EntityBuilder) Source(source int) *EntityBuilder {
	builder.source = source
	builder.sourceFlag = true
	return builder
}

// 国际化的词条释义
//
// 示例值：
func (builder *EntityBuilder) I18nDescs(i18nDescs []*I18nEntryDesc) *EntityBuilder {
	builder.i18nDescs = i18nDescs
	builder.i18nDescsFlag = true
	return builder
}

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

	}
	if builder.mainKeysFlag {
		req.MainKeys = builder.mainKeys
	}
	if builder.fullNamesFlag {
		req.FullNames = builder.fullNames
	}
	if builder.aliasesFlag {
		req.Aliases = builder.aliases
	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.creatorFlag {
		req.Creator = &builder.creator

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updaterFlag {
		req.Updater = &builder.updater

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.relatedMetaFlag {
		req.RelatedMeta = builder.relatedMeta
	}
	if builder.statisticsFlag {
		req.Statistics = builder.statistics
	}
	if builder.outerInfoFlag {
		req.OuterInfo = builder.outerInfo
	}
	if builder.richTextFlag {
		req.RichText = &builder.richText

	}
	if builder.sourceFlag {
		req.Source = &builder.source

	}
	if builder.i18nDescsFlag {
		req.I18nDescs = builder.i18nDescs
	}
	return req
}

type EntityCardData struct {
	Card *string `json:"card,omitempty"` // 根据请求的渲染类型进行渲染后的词条卡片数据

	Id *string `json:"id,omitempty"` // 卡片对应词条的id

	Key *string `json:"key,omitempty"` // 用户点击的高亮词条

	CardType *int `json:"card_type,omitempty"` // 词条卡片类型

	TemplateName *string `json:"template_name,omitempty"` // 卡片模版名
}

type EntityCardDataBuilder struct {
	card     string // 根据请求的渲染类型进行渲染后的词条卡片数据
	cardFlag bool

	id     string // 卡片对应词条的id
	idFlag bool

	key     string // 用户点击的高亮词条
	keyFlag bool

	cardType     int // 词条卡片类型
	cardTypeFlag bool

	templateName     string // 卡片模版名
	templateNameFlag bool
}

func NewEntityCardDataBuilder() *EntityCardDataBuilder {
	builder := &EntityCardDataBuilder{}
	return builder
}

// 根据请求的渲染类型进行渲染后的词条卡片数据
//
// 示例值：<view className="aslcard-baike-ultra-card larkw-aslCard-layout-flex aslcard-baike-container-outer without-copyperm-dom"   style='flex-direction: column; width: 100%; box-sizing: border-box; height: 100%; max-height: inherit; max-width: inherit;position: relative;'>   <style id="baike-card-external-ultra">	 .aslcard-baike-container-outer {	   min-width: 320px;	 }	  .abbreviation-cardItem_insearch .aslcard-baike-container-outer {	   min-width: 100%;	 }	  .larkw-aslCard-card-container .larkw-aslCard-element-abbrnav-bar {	   padding-top: 12px;	 }	  .larkw-aslCard-baikeCard .larkw-aslCard-showInLark {	   display: none;	 }	  .larkw-aslCard-baikeCard-inLark .larkw-aslCard-showInLark {	   display: block;	 }	  .larkw-aslCard-baikeCard-inLark .larkw-aslCard-footer-ignoreBtn {	   display: none;	 }	  .list-item-avatar {	   margin-right: 8px;	   flex-shrink: 0;	   overflow: hidden;	   border-radius: 8px;	 }	  .list-item-avatar-bg {	   background-color: @primary-pri-100;	 }	  .list-item-title {	   overflow: hidden;	   text-overflow: ellipsis;	   white-space: nowrap;	   color: @text-title;	 }	  .list-item-title.larkw-aslCard-text-link-button {	   margin-left: -2px;	 }	  .larkw-aslCard-text-link-button {	   padding: 0 4px;	   transition: none;	   border-radius: 6px;	 }	  .larkw-aslCard-text-link-button:hover {	   color: @text-link-normal;	 }	  .larkw-aslCard-text-link-button:active {	   color: @text-link-pressed;	 }	  .larkw-aslCard-baike-header {}	  .larkw-aslCard-baikeCard-actions-icon .universe-icon {	   font-size: 16px;	 }	  .baikeSectionHeader {	   width: 100%;	   box-sizing: border-box;	   padding-left: 16px;	 }	  .baikeSectionHeaderInner {	   padding: 8px 0;	   flex-shrink: 0;	   font-size: 12px;	   margin-right: 4px;	   line-height: 20px;	   color: @text-caption;	 }	  .larkw-aslCard-ig .larkw-aslCard-element-abbrnav-bar {	   padding: 18px 0 10px 0;	   margin-left: -4px;	 }	  .abbreviation-cardItem_insearch .larkw-aslCard-showInLarkSearch {	   display: block;	 }	  .abbreviation-cardItem_insearch .larkw-aslCard-hideInLarkSearch {	   display: none;	 }	  .abbreviation-cardItem_insearch .larkw-aslCard-icon-mask.larkw-aslCard-baikeCard-actions-icon:not(:last-child),	 .abbreviation-cardItem_insearch .larkw-aslCard-icon-mask:not(:last-child) {	   display: none;	 }	  .baike-card-link-item .larkw-aslCard-element-image-fallback,	 .baike-card-link-item .larkw-aslCard-element-plImage-placeholder {	   background-color: @primary-pri-100;	 }	  .baike-card-link-item-default {	   display: flex;	   justify-content: center;	   align-items: center;	   background-color: @primary-pri-100;		color: @text-link-normal;	 }	  .larkw-aslCard-text-link-ig:hover {	   color: @text-link-hover;	 }	  .larkw-aslCard-text-link-ig:active {	   color: @text-link-pressed;	 }	  .larkw-aslCard-abbrClassify-tag .ud__tag__content {	   max-width: 100px;	   overflow: hidden;	   text-overflow: ellipsis;	   white-space: nowrap;	 }	  .larkw-aslCard-layout-block.larkw-abbreviation-content {	   padding: 0;	   box-sizing: inherit;	 }	  .larkw-abbreviation-content {	   border-radius: 10px;	 }	  .list-item-avatar-user .ud__avatar {	   height: 24px !important;	   width: 24px !important;	 }	  .lux-ellipsis-line {	   overflow: hidden;	   text-overflow: ellipsis;	   white-space: nowrap;	   min-width: 50px;	 }	  .ud__menu-normal-item-title-content.ud__menu-normal-item-title-content-text-overflow {	   white-space: nowrap;	   overflow: hidden;	   text-overflow: ellipsis;	 }	  .asl-section-description .larkw-aslCard-element-text {	   white-space: pre-wrap;	   word-break: break-word;	 }	  .abbreviation-cardItem_insearch .larkw-aslCard-element-image-set .image-cell {	   width: 9.18vw;	   height: 9.18vw;	 }	  .larkw-aslCard-element-rich-text .larkw-aslCard-element-link,	  .larkw-aslCard-element-rich-text .larkw-aslCard-element-richlink {	   margin: 0px !important;	   padding: 3px 2px;	   display: inline;	 }	  .larkw-aslCard-element-rich-text .larkw-aslCard-element-abbreviation {	   display: inline;	   cursor: pointer;	   line-height: 20px;	   position: relative;	   border-bottom-style: solid;	   border-width: 1px;	   border-image-slice: 1;	   border-image-source: repeating-linear-gradient(90deg, @N650 0, @N650 1px, transparent 0, transparent 3px);	 }	 .larkw-aslCard-element-rich-text .larkw-aslCard-element-abbreviation:hover,	 .larkw-aslCard-element-rich-text .larkw-aslCard-element-abbreviation:active {	   border-bottom-color: @B500;	 }	  .larkw-aslCard-element-rich-text .larkw-aslCard-element-abbreviation:hover {	   color: @B500;	   border-image-source: repeating-linear-gradient(90deg, @B500 0, @B500 1px, transparent 0, transparent 3px);	 }	  .larkw-aslCard-element-at {	   color: @text-link-normal !important;	 }	  .main-key-content {	   width: fit-content;	   padding-bottom: 4px;	 }	  .main-key-tooltip {	   cursor: pointer;	 }	  .main-key-tooltip:hover {	   .larkw-aslCard-element-text {		 color: @text-link-hover !important;	   }	 }	  .larkw-aslCard-baikecard-feedback .panel {	   display: flex;	   flex-wrap: wrap;	   grid-template-columns: unset;	   grid-template-rows: unset;		.capsule {		 min-width: 183px;		  .capsule-text {		   overflow: hidden;		   text-overflow: ellipsis;		 }	   }	 }   </style>	<style id="aslcard_theme_ultra">	 .ai-popup-portal .ai-popup-wrapper {	   border: none;	   overflow: inherit;	   box-shadow: @shadow-s4-down;	 }	  .larkw-aslCard-util-bg-ultra {	   background-repeat: no-repeat;	   background-position: 0 0;	   background-size: 100% 143px;	 }	  .larkw-aslCard-card-theme-LIGHT .larkw-aslCard-util-bg-ultra {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/lm-min-ultra.png?time=202209222)	 }	  .larkw-aslCard-card-theme-DARK .larkw-aslCard-util-bg-ultra {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/dm-min-ultra.png?time=202209222)	 }	  .aslcard-ellipsis {	   overflow: hidden;	   text-overflow: ellipsis;	   white-space: nowrap;	 }	  .aslcard-baike-section-ultra {	   padding: 6px 0px;	 }	  .asl-baikeultra-section-title {	   font-weight: 500;	   font-size: 12px;		line-height: 22px;	   display: flex;	   align-items: center;	   padding: 4px 20px;	   color: @text-title;		.section-subTitle {		 color: @text-caption;		 font-weight: 400;		 padding-left: 2px;	   }	 }	  .asl-baikeultra-list-item {	   padding: 6px 20px;	   display: flex;	   align-items: center;		.item-tag-md {		 margin-left: 4px;	   }	 }	  .aslcard-baike-btn {	   display: flex;	   align-items: center;	   justify-content: center;	   border-radius: 6px;	   cursor: pointer;	 }	  .aslcard-baike-btn:hover {	   background-color: @fill-hover;	 }	  .aslcard-baike-btn-extra-small {	   height: 24px;	   padding: 0 2px;	 }	  .aslcard-baike-btn-logo {}	  .aslcard-baike-category-item {	   margin: 4px 8px 4px 0px;	   position: relative;	   cursor: pointer;	   line-height: 20px;	   display: flex;		.category-tag-icon {		 position: absolute;		 right: 6px;		 display: flex;		 color: @udtoken-tag-text-blue;	   }		.aslcard-baike-tag-md {		 font-size: 12px;		 font-weight: 400;		 color: @udtoken-tag-text-blue;		 background-color: @udtoken-tag-bg-blue;		 cursor: pointer;		 padding-right: 17px;	   }	 }	  .aslcard-baike-category-item: hover {	   .aslcard-baike-tag-md {		 background-color: @udtoken-tag-bg-blue-hover;	   }	 }	  .aslcard-baike-btn-bg-primary {	   cursor: pointer;	   background-color: @primary-pri-50;	 }	  .aslcard-baike-btn-bg-primary:hover {	   background-color: @primary-pri-100;	 }	  .aslcard-baike-btn-bg-primary:active {	   background-color: @primary-pri-200;	 }	  .aslcard-baike-divider {	   height: 1px;	   background-color: @line-divider-default;	   transform: scaleY(0.5);	 }	  .aslcard-baike-navbar {	   user-select: none;	   box-sizing: border-box;	   background-color: @bg-float;	   border-radius: 10px 10px 0 0;	   position: absolute;	   width: 100%;	   z-index: 3;	   overflow: hidden;	   height: 56px;	   opacity: 0;	   pointer-events: none;	 }	  .aslcard-baike-navbar-content {	   width: 100%;	   height: 22px;	   display: flex;	   align-items: center;	   border-radius: 10px 10px 0 0;	   overflow: hidden;	 }	  .aslcard-baike-navbar-noback {	   box-sizing: border-box;	   padding: 0px 20px;	   height: 22px;	 }	  .aslcard-baike-navbar-withback {	   justify-content: center;	   display: none;	 }	  .larkw-aslCard-baikeCard-scrolled .aslcard-baike-navbar {	   opacity: 1;	   pointer-events: auto;	   padding-top: 21px;	   transition: opacity 0.15s;	 }	  .aslcard-baike-navbar-goback-btn {	   display: none;	   position: absolute;	   top: 20px;	   left: 16px;	   z-index: 3;	 }	  .aslcard-baike-nav-placeloader {	   display: none;	   height: 28px;	   width: 100%;	 }	  .larkw-aslCard-baikeCard-withgoback .aslcard-baike-navbar-goback-btn {	   display: flex;	 }	  .larkw-aslCard-baikeCard-withgoback .aslcard-baike-navbar-noback {	   display: none;	 }	  .larkw-aslCard-baikeCard-withgoback.larkw-aslCard-baikeCard-scrolled .aslcard-baike-navbar-withback {	   display: flex;	 }	  .larkw-aslCard-baikeCard-withgoback .aslcard-baike-nav-placeloader {	   display: block;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-list {	   max-height: 150px;	   overflow: hidden auto;	   margin-left: -8px;	   margin-right: -8px;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item-content {	   overflow: hidden;	   text-overflow: ellipsis;	   display: -webkit-box;	   -webkit-line-clamp: 2;	   -webkit-box-orient: vertical;	 }	  .abbreviation-cardItem_insearch {	   border-radius: 8px;	 }	  .abbreviation-cardItem_insearch .larkw-aslCard-card-theme-LIGHT .larkw-aslCard-util-bg-ultra,	 .abbreviation-cardItem_insearch .larkw-aslCard-card-theme-DARK .larkw-aslCard-util-bg-ultra {	   background-image: none;	 }	  .larkw-aslCard-element-userlistV2 {	   margin-left: -4px;	 }	  .aslcard-baike-logo-btn-img {	   display: flex;	   transition: background-image 0.15s;	 }	  .aslcard-baike-logo-btn-img-placeholder {	   opacity: 0;	 }	  .aslcard-baike-logo-btn {	   color: @icon-n3;			  .repo_name {		 color: @text-placeholder;		 font-size: 12px;		 padding-left: 0px;		 overflow: hidden;		 text-overflow: ellipsis;		 white-space: nowrap;		 font-weight: 600;	   }	 }	  .aslcard-baike-logo-btn:hover {	   color: @icon-n2;		.repo_name {		 color: @text-title;	   }	 }	  .aslcard-baike-logo-btn .aslcard-baike-logo-btn-img {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/baike-logo-gray-lm_zh-CN_v2.svg);	 }	  .aslcard-baike-logo-btn:hover .aslcard-baike-logo-btn-img {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/baike-logo-colorful-lm_zh-CN_v2.svg);	 }	  .larkw-aslCard-card-theme-DARK .aslcard-baike-logo-btn .aslcard-baike-logo-btn-img {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/baike-logo-gray-dm_zh-CN_v2.svg);	 }	  .larkw-aslCard-card-theme-DARK .aslcard-baike-logo-btn:hover .aslcard-baike-logo-btn-img {	   background-image: url(https://lf-cdn-tos.bytescm.com/obj/static/asl-card/baike-logo-colorful-dm_zh-CN_v2.svg);	 }	  .larkw-aslCard-element-userlistV2-content .aslcard-barike-ultra-useritem:not(:last-child) {	   margin-right: 4px;	 }	  .larkw-aslCard-element-userlistV2-hint .username {	   overflow: hidden;	   text-overflow: ellipsis;	   white-space: nowrap;	   max-width: 144px;	 }	  .aslcard-baike-ultra-card .larkw-aslCard-footer-dislike-button .universe-icon.larkw-aslCard-footer-like-icon {	   color: @icon-n3;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-list {	   padding-bottom: 4px;	   max-height: 144px;	   overflow: hidden overlay;	   margin-left: -5px;	   margin-right: -5px;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item {	   line-height: 18px;	   padding: 7px 5px 7px 18px;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item-active {	   color: @text-title;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item-visited {	   color: @text-title;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item:before {	   content: "";	   position: absolute;	   top: 13px;	   border-radius: 50%;	   left: 5px;	   width: 6px;	   height: 6px;	   background-color: @icon-disabled;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item-active:before {	   background-color: @B500;	 }	  .larkw-aslCard-element-abbrmultidesc div.abbrmultidesc-item {	   padding: 7px 5px 7px 18px;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item .abbrmultidesc-item-content {	   padding: 0;	 }	  .larkw-aslCard-element-abbrmultidesc .abbrmultidesc-item-pinItem {	   margin-right: -5px;	 }	  .abbrmultidesc-list::-webkit-scrollbar-thumb:hover {	   background-color: transparent !important;	 }	  .-container {	   display: block;	 }	  .aslCard-baikeCard-alias-wrapper {	   margin-top: 2px;	   .aslCard-baikeCard-alias {		 color: @text-caption;		 font-size: 14px;		 line-height: 22px;	   }	 }	  .ellipsis-two-line {	   overflow: hidden;	   text-overflow: ellipsis;	   display: -webkit-box;	   -webkit-line-clamp: 2;	   -webkit-box-orient: vertical;	 }	  .ellipsis-one-line {	   overflow: hidden;	   text-overflow: ellipsis;	   display: -webkit-box;	   -webkit-line-clamp: 1;	   -webkit-box-orient: vertical;	 }		  .larkw-aslCard-element-abbrmultidescv2 .abbrmultidescv2-list-wrapper {	   user-select: none;	   max-height: 128px;	 }	  .larkw-aslCard-element-abbrmultidescv2 .abbrmultidescv2-list-unexpanded {	   max-height: 0px !important;	 }		  .abbrmultidescv2-list.aslcard-baikecard-scrollarea::-webkit-scrollbar {	   display: none;	 }	  .larkw-aslCard-section-title {	   display: flex;	   justify-content: space-between;	   border-radius: 6px;	   padding-right: -4px;		.title-right-btn {		 margin-right: -4px;		 display: flex;		 flex-direction: row;		 align-items: center;		 cursor: pointer;		 color: @text-caption;		 font-size: 12px;		 font-weight: 400;		 height: 20px;		 line-height: 20px;		 padding: 0px 4px;		 border-radius: 6px;	   }		.title-right-btn.related-docs-title {		   display: none;	   }		.title-right-btn: hover{		  background-color:  @fill-hover;	   }	 }	  .larkw-aslCard-recommend-docs-entry-show {	   .larkw-aslCard-section-title {		 .title-right-btn.related-docs-title {		   display: flex;		 }	   }	 }	   .larkw-aslCard-folder-container-normal-button {	   padding: 4px 0px 4px 16px;		.folder-option {		 padding: 0px 4px;	   }	 }	  .larkw-aslCard-folder-container-link-button {	   right: 0px;	 }		  .aslcard-baike-showEntry-section {	   margin-left: 12px !important;	   margin-right: 12px !important;		.aslcard-baike-relatedWords-showEntry:hover {		 background-color: @bg-float-overlay;;		 cursor: pointer;	   }		.asl-baikeultra-section-title {		 padding:4px 8px;	   }		.larkw-aslCard-layout-block {		 padding:0px 8px;		  .larkw-aslCard-folder-container-normal-button {			padding-left: 0px;		 }	   }		.larkw-aslCard-folder-container-normal-button {		 padding-left: 8px;	   }	 }	  .larkw-aslCard-relatedWord-block {		 width: 100%;		 margin-bottom: 2px;				  .larkw-aslCard-relatedWord-block-title {		   color: @text-caption;		   font-size: 12px;		   line-height: 20px;		   display: flex;		   align-items: center;		   margin-bottom: 4px;		 }		  .larkw-aslCard-relatedWord-block-content{		   display: flex;		   flex-wrap: wrap;		 }	 }	  .larkw-aslCard-relatedWord-block:last-child {		 padding-bottom: 0px;	 }	  .like-kit {	   display: flex;	   flex-direction: row;	 }	  .larkw-aslCard-scrollbar::-webkit-scrollbar {	   display: none;	 }	  .abbrmultidescv2-item-active .abbrmultidescv2-item-pinItem {	   opacity: 1 !important;	 }	  .aslcard-baike-fotter-icon {	   width: 24px;	   height: 24px;	   border-radius: 8px;	   cursor: pointer;	   align-items:center;		justify-content: center;	   display: flex;	   color: @icon-n3;	   margin-left: 4px;	 }	  .aslcard-baike-fotter-icon:hover {	   background-color: @udtoken-btn-text-bg-neutral-hover;;	 }	</style>	<style id="aslcard_qa">	 .aslcard-baike-relatedQASection {		 .show-one-line {		   height:		  }		  .relatedQA-page-entry: hover {			background-color:  @fill-hover;		 }		  .larkw-aslCard-QA-item {		   display: flex;		   flex-direction: row;		   padding: 6px 8px;		   border-radius: 6px;		   cursor: pointer;			.QA_content {			 width: 100%;						  .larkw-aslCard-element-rich-text {			   white-space: nowrap;			   overflow: hidden;			   text-overflow: ellipsis;			   display: inline-block;			   width: calc(100% - 34px);			   height: 22px;			   pointer: cursor;				span {				 white-space: nowrap;			   }			 }			  .Q_content,			 .A_content {			   height: 22px;			   line-height:22px;			   align-items: center;			   display: flex;			   flex-direction: row;			   padding: 1px 0px;				.QA_icon {				 width: 20px;				 height: 20px;				 line-height: 20px;				 text-align: center;				 border-radius: 6px;				 margin-right:10px;				 font-size: 12px;			   }				.Q_icon {				 background-color: @primary-pri-100;				 color: @primary-pri-500;			   }				.A_icon {				 background-color: @function-warning-100;				 color: @function-warning-600;			   }			 }			  .no_answer {			   font-size: 14px;			   line-height: 20px;			   color: @text-caption;			   display: flex;			   align-items: center;				.to_answer {				 font-size: 14px;			   }			 }		 }	   }		   .larkw-aslCard-QA-item: hover {		   background-color:  @fill-hover;		 }	 }	 .to_answer {	   color: @text-link-normal;	   border-radius: 6px;	   padding: 0px 4px;	   font-size: 12px;	   line-height: 20px;	   height: 20px;	   cursor: pointer;	 }	  .to_answer:hover {	   color: @text-link-normal;	   background-color: @fill-active;	 }	  .to_answer:active {	   color: @text-link-pressed;	   background-color: @fill-active;	 }	  .to-answer-related-users,	 .to-answer-contributors {	   display: flex;	   flex-direction: row;	   font-size: 12px;	   line-height: 20px;	   color: @text-caption;	   cursor: pointer;	   width: fit-content;	   flex-wrap: wrap;	 }	</style>	<style id="aslcard-related-words">	 .larkw-aslCard-relatedWords-wrapper {	   padding: 0px 16px;	   .larkw-aslCard-relatedWords-calssfication-item {		 padding:4px 4px 0px 4px !important;		 .title {		   margin-bottom: 4px;		   height: auto;			.title-text {			 margin-bottom: 0px;			 flex: 1;		   }		 }		 .abbreviation-item {		   margin: 0px 6px 6px 0px;		 }	   }		.larkw-aslCard-folder-container-normal-button {		 padding-left: 0px !important;	   }	 }   </style>	<style id="abbrmulti-desc-v2">	 .larkw-aslCard-element-abbrmultidescv2 {	   .abbrmultidescv2-header-topline {		 margin: 2px 0px;	   }		.abbrmultidescv2-header {		 padding: 4px 0px;	   }		.abbrmultidescv2-item-content {		  padding: 4px 0px;	   }	 }	  .aslcard-baike-divider {	   margin: 4px 0px;	 }   </style>	<view className="aslcard-baike-navbar">	 <view className="aslcard-baike-navbar-content aslcard-baike-navbar-noback" style="width: calc(100% - 64px);">	   <text-highlight className="ellipsis-one-line" style="font-weight: 500;font-size: 14px;"  text="Ai"  highlightTerms='[]'/>	 </view>	 <view className="aslcard-baike-navbar-content aslcard-baike-navbar-withback">	   <text style="font-weight: 500;font-size: 14px; max-width: 120px;" className="aslcard-ellipsis">Ai</text>	 </view>	 <view className="aslcard-baike-divider" style="position: absolute;bottom: 0;width: 100%;"></view>   </view>   <view className="aslcard-baike-navbar-goback-btn">	 <tooltip title="返回">	   <view className="larkw-aslCard-icon-mask" style="color: @icon-n1;" bind='{"onClick": {		 "callbacks": [		   {			 "funcName": "back",			 "params":{}		   }		 ]}	   }'>		 <image>		   <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">			 <path			   d="M12.2197 1.71967C12.5126 2.01256 12.5126 2.48744 12.2197 2.78033L6 9L12.2197 15.2197C12.5126 15.5126 12.5126 15.9874 12.2197 16.2803C11.9268 16.5732 11.4519 16.5732 11.159 16.2803L4.93934 10.0607C4.35355 9.47487 4.35355 8.52513 4.93934 7.93934L11.159 1.71967C11.4519 1.42678 11.9268 1.42678 12.2197 1.71967Z"			   fill="currentColor" />		   </svg>		  </image>	   </view>	 </tooltip>   </view>   <view style="position: absolute;top: 20px;right: 16px;z-index: 3;">	 <abbr-action-v2 data-tootip-more-title="更多">		 <action shareModelTitle="分享到会话" showOut="true" type="share" text="分享" url="https://ai.feishu-boe.cn/lingo/detail/7233732879589572628?open_source&#x3D;im_share_card" tooltip=""		   className="abbr_share_icon" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="" type="abbr_home" text="查看词条详情" url="https://ai.feishu-boe.cn/lingo/detail/7233732879589572628?open_source&#x3D;card_entity_home" tooltip=""		   className="abbr_detail_home_icon" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="false" type="edit" text="编辑词条" url="https://ai.feishu-boe.cn/lingo/editor?locale&#x3D;zh-CN&amp;abbrId&#x3D;enterprise_7233732879589572628&amp;query&#x3D;Ai&amp;open_source&#x3D;card_entity_editor" tooltip=""		   className="" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="" type="ignore" text="关闭词条下划线" url="" tooltip=""		   className="" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="" type="divider" text="" url="" tooltip=""		   className="" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="" type="create" text="创建词条" url="https://ai.feishu-boe.cn/lingo/editor?action&#x3D;create&amp;abbrId&#x3D;enterprise_7233732879589572628&amp;locale&#x3D;zh-CN&amp;open_source&#x3D;card_entity_create" tooltip=""		   className="" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />		 <action shareModelTitle="" showOut="" type="home" text="前往词典首页" url="https://baikeredirect.feishu.cn/drive/lingo?locale&#x3D;zh-CN&amp;open_source&#x3D;card_web_tab" tooltip=""		   className="" subscribed=""		   text-unsubscribe="取消订阅"		   data-tooltip-subscribed-text="订阅后，将会通过订阅号推送词条下的新增文档"		   data-tooltip-not-subscribed-text="取消订阅后，将不会再收到相关推送"		   data-toast-subscribe="订阅成功，将会通过订阅号推送词条下的新增文档"		   data-toast-unsubscribe="取消订阅后，将不会再收到相关推送"		   data-ignore-success-toast="已关闭词条下划线提示"		  />	 </abbr-action-v2>   </view>   <view	 className="larkw-aslCard-layout-block baike_navbar_scrollbar_trigger larkw-abbreviation-content larkw-aslCard-scrollbar larkw-aslCard-scrollbar-hover"	 style="max-height: inherit; max-width: inherit; overflow: hidden overlay;word-break: normal;"	 canUseContributors="true">	 <view className="larkw-aslCard-util-bg-ultra" id="larkw-aslCard-body-enterprise_7233732879589572628">	   <view className="larkw-aslCard-layout-block larkw-aslCard-baike-header"		 style='padding:24px 20px 0; position: relative;'>		 <view className="aslcard-baike-nav-placeloader" />			<view			  className="larkw-aslCard-layout-block main-key-content"			  style="position: relative;width: 100%;"			>			 <view className="larkw-aslCard-layout-inlineBlock" style='position: absolute; top: 0; right: 0;'>			 </view>			 <tooltip				title="进入词条详情页"				style="max-width:calc(100% - 64px);width:fit-content;"				className="main-key-tooltip"			   bind='{"onClick":{				 "callbacks":[{"funcName":"openURL","params":{"url":"https://ai.feishu-boe.cn/lingo/detail/7233732879589572628?open_source&#x3D;card_entity_home"}}],				 "events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"entity_name"}}]			   }}'			 >				 <text-highlight locale="zh-CN" style="color: @text-title;font-size: 18px;font-weight: 500;line-height: 26px;margin-right: 8px;"  text="Ai"  highlightTerms='[]'/>			 </tooltip>		   </view>			<view className="larkw-aslCard-layout-flex" style="align-items: center;">			 <user-list data-text-hint="贡献" version="v2" maxCountShow="2">				 <user userId="7215104701929357331" avatarKey="v2_98f36e28-20f7-4f32-889c-b926df7eb22j" tooltip="张晓阳"				   className="aslcard-barike-ultra-useritem" userName="张晓阳" size="24" style="">				 </user>			   <user-rest				 style="margin-right: 8px;height: 24px;width: 24px;display: flex;align-items: center;justify-content: center;border-radius: 50%;background-color: #EFF0F1;color: @text-caption;cursor: pointer;margin-right: 0;margin-bottom: 0;">			   </user-rest>			 </user-list>			 <image style="margin: 0px 2px 0px 6px">			  <svg width="2" height="10" viewBox="0 0 2 10" fill="none" xmlns="http://www.w3.org/2000/svg">				 <path d="M1 0V10" stroke="#BBBFC4"/>			   </svg>			 </image>			 <view			   className="to_answer"			   id="user-list-right-node"			   bind='{"onClick":{			   "callbacks":[{"funcName":"openURL","params":{"url":"https://ai.feishu-boe.cn/lingo/detail/7233732879589572628?anchor&#x3D;qaComment&amp;addQuestion&#x3D;true&amp;open_source&#x3D;ask_contributor"}}],			   "events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"ask_contributor"}}]			   }}'>			   <text>提问</text>			 </view>		   </view>		 </view>		<view className="larkw-aslCard-layout-block aslcard-baike-section-ultra" style="padding-top: 0px;">		 <view className="larkw-aslCard-layout-block asl-section-description" style="padding:4px 20px;">			 <text-highlight			   bind='{				 "onUnFold": {"events":[{				   "eventName":"event_track_v2",				   "params":{"click":"function","function_type":"description_unfold"}				 }]}			   }'			   locale="zh-CN"				maxHeight="setMaxHeightVal folderSwitcher.canDescriptionFolder 66"				style="white-space: pre-wrap;word-break: break-word;"				text="人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器，该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。"				 highlightTerms='[&quot;&amp;#10&quot;]'			 />		 </view>	   </view>		 <async-template		 hidden="false"		 templateName="recommend_docs"		 templateId="recommendRelatedDoc"		 serviceName="getRelatedResource"		 params='{"entryIds":["enterprise_7233732879589572628"],"resourceTypes":[1],"enterFrom":""}'	   />		  <view className="larkw-aslCard-layout-block larkw-aslCard-hideInLarkSearch larkw-aslCard-showInLark">		  <view className="larkw-aslCard-layout-flex"		   style='padding: 10px 20px;font-size: 12px;line-height: 20px;color: @text-caption;margin-bottom:14px;'>		   <view style="display: flex;align-items: center;">			 <text>找不到想要的信息？</text>			 <view className="larkw-aslCard-layout-inlineBlock larkw-aslCard-text-link-button"			   style="color: @text-link-normal;" bind='{"onClick":{		 "callbacks":[{"funcName":"openLarkSearch","params":{"query":"Ai"}}],		 "events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"search","abbr_id":"enterprise_7233732879589572628"}}]		 }}'>			   搜索更多			 </view>		   </view>		 </view>	   </view>		  <view style="display: none;" role="for-debug"		 data-canShowSuperAdminBanner=""		 data-superAdminBannerHref=""		 data-canShowNormalUserBanner="false"		 data-normalUserBannerHref=""		 data-IsUserSuperAdmin="nodata"		 data-IsTenantActivated="nodata" />	 </view>   </view>	<view className="aslcard-baike-footer">	 <view className="aslcard-baike-divider" style="margin: 0 20px;">	 </view>	 <view	   style="display: flex;align-items: center;justify-content: space-between;height: 46px;padding: 0 16px;flex-shrink: 0;">	   <view className="aslcard-baike-logo-btn-container larkw-aslCard-layout-flex" style="max-width: calc(100% - 84px);">		 <tooltip title="前往词典首页，探索更多词条" style="width: 100%">		   <view className="aslcard-baike-btn aslcard-baike-btn-extra-small aslcard-baike-logo-btn"			 url="https://baikeredirect.feishu.cn/drive/lingo?locale&#x3D;zh-CN&amp;from&#x3D;logo&amp;abbrId&#x3D;enterprise_7233732879589572628&amp;page&#x3D;category&amp;repo_id&#x3D;1&amp;open_source&#x3D;card_web_logo"			 bind='{"onClick":{"events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"encyclopedia_logo","target":"asl_abbr_paltform_view","abbr_id":"enterprise_7233732879589572628"}}]}}'>			 <view className="aslcard-baike-logo-btn-img" style="width: 21px; height: 17px;">			   <image url="https://lf-cdn-tos.bytescm.com/obj/static/asl-card/baike-logo-gray-lm_zh-CN_v2.svg"				 className="aslcard-baike-logo-btn-img-placeholder"></image>			 </view>			 <text className="repo_name">企业词库</text>			 <image>			   <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">				 <path				   d="M4.65292 2.64645C4.45765 2.84171 4.45765 3.15829 4.65292 3.35355L7.79936 6.5L4.65292 9.64645C4.45765 9.84171 4.45765 10.1583 4.65292 10.3536C4.84818 10.5488 5.16476 10.5488 5.36002 10.3536L8.86002 6.85355C8.95379 6.75979 9.00647 6.63261 9.00647 6.5C9.00647 6.36739 8.95379 6.24021 8.86002 6.14645L5.36002 2.64645C5.16476 2.45118 4.84818 2.45118 4.65292 2.64645Z"				   fill="currentColor" />			   </svg>			 </image>		   </view>		 </tooltip>	   </view>		<view className="like-kit">		 <like-kit like-count='0' data-text-ignore-btn="关闭词条提示"		   dislike-count='0' like="" dislike=""		   data-text-feedback-title="反馈给贡献者"		   data-text-feedback-success="反馈提交成功"		   show-like="true"			show-dislike="false"		 ></like-kit>		 <tooltip title="我要反馈" className="aslcard-baike-fotter-icon">		   <view  bind='{"onClick":{		   "callbacks":[{"funcName":"openFeedback","params":{"title":"词条反馈"}}],		   "events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"feedback_logo"}}]		   }}' style="height: 16px;">			 <image >			   <svg width="14" height="16" viewBox="0 0 14 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">				 <path d="M10.6667 1.99984H1.33333V13.9998H4.66667V15.3332H1.33333C0.596954 15.3332 0 14.7362 0 13.9998V1.99984C0 1.26346 0.596954 0.666504 1.33333 0.666504H10.6667C11.403 0.666504 12 1.26346 12 1.99984V7.33317H10.6667V1.99984Z" fill="currentColor"/>				 <path d="M3.33333 4.6665C2.96514 4.6665 2.66667 4.96498 2.66667 5.33317C2.66667 5.70136 2.96514 5.99984 3.33333 5.99984H8.66667C9.03486 5.99984 9.33333 5.70136 9.33333 5.33317C9.33333 4.96498 9.03486 4.6665 8.66667 4.6665H3.33333Z" fill="currentColor"/>				 <path d="M2.66667 8.33317C2.66667 7.96498 2.96514 7.6665 3.33333 7.6665H6C6.36819 7.6665 6.66667 7.96498 6.66667 8.33317C6.66667 8.70136 6.36819 8.99984 6 8.99984H3.33333C2.96514 8.99984 2.66667 8.70136 2.66667 8.33317Z" fill="currentColor"/>				 <path d="M11.5523 8.69999C11.9428 8.30946 12.576 8.30946 12.9665 8.69999C13.357 9.09051 13.357 9.72367 12.9665 10.1142L12.2594 10.8213L10.8452 9.40709L11.5523 8.69999Z" fill="currentColor"/>				 <path d="M10.1381 10.1142L11.5523 11.5284L8.23093 14.8498C8.09164 14.9891 7.91229 15.0813 7.71798 15.1136L6.45737 15.3233C6.42136 15.3292 6.38467 15.3175 6.35885 15.2917C6.33271 15.2655 6.32099 15.2282 6.32749 15.1918L6.55128 13.9372C6.58465 13.7501 6.6746 13.5777 6.80901 13.4433L10.1381 10.1142Z" fill="currentColor"/>			   </svg>			 </image>		   </view>		 </tooltip>		   <tooltip title="相关讨论" className="aslcard-baike-fotter-icon">			 <view  bind='{"onClick":{		   "callbacks":[{"funcName":"openURL","params":{"url":"https://ai.feishu-boe.cn/lingo/detail/7233732879589572628?anchor&#x3D;qaComment&amp;open_source&#x3D;answers_logo"}}],		   "events":[{"eventName":"event_track_v2","params":{"click":"function","function_type":"answers_logo"}}]		   }}' style="height: 16px;">			   <image >				 <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">				 <path d="M3.66675 8.66634H2.00008V2.66634H10.6667V8.66634H6.33059L3.66675 10.8333V8.66634ZM6.66675 9.99968H10.6667C11.4031 9.99968 12.0001 9.40272 12.0001 8.66634V2.66634C12.0001 1.92996 11.4031 1.33301 10.6667 1.33301H2.00008C1.2637 1.33301 0.666748 1.92996 0.666748 2.66634V8.66634C0.666748 9.40272 1.2637 9.99968 2.00008 9.99968H2.33341V11.9495C2.33341 12.4539 2.87199 12.7756 3.31615 12.5365L6.66675 9.99968ZM8.99726 12.6667H5.34274L7.0094 11.3333H9.33341L12.0001 13.5V11.333H14.0001V5.99967H13.3334V4.66634H14.0001C14.7365 4.66634 15.3334 5.2633 15.3334 5.99967V11.333C15.3334 12.0694 14.7365 12.6663 14.0001 12.6663H13.3334V14.6162C13.3334 15.1206 12.7948 15.4423 12.3507 15.2031L8.99726 12.6667Z" fill="currentColor"/>				 </svg>			   </image>			 </view>		   </tooltip>	   </view>	 </view>   </view>	<abbr-data-carrier id="abbr-data-carry-id" data-report-card-view='[{"result_type":"success"}]'></abbr-data-carrier>   <guide	   data-options='{"key":"Lingo_card_share","style":{"zIndex":100,"width":"max-content"},"conf":[{"content":"词典支持分享词条啦！","target":".larkw-aslCard-moreactions-wrapper .abbr_share_icon","direction":"bottom","align":"center","distance":4,"clickBlankToDisappear":true,"autoFinishMs":5000}],"extraDaInfo":{"abbr_id":"enterprise_7233732879589572628","onboarding_type":"bubble","onboarding_sub_type":"entity_share"}}' >   </guide>   <guide		data-options='{"key":"Lingo_doc_homograph","style":{"zIndex":100,"width":"max-content"},"conf":[{"content":"点击置顶，在当前文档优先展示该释义","target":".abbrmultidescv2-item-pinItem .larkw-aslCard-icon-mask","direction":"top","align":"center","distance":4,"clickBlankToDisappear":true,"autoFinishMs":5000}],"extraDaInfo":{"abbr_id":"enterprise_7233732879589572628","onboarding_type":"bubble","onboarding_sub_type":"entity_pin"}}' >   </guide> </view>
func (builder *EntityCardDataBuilder) Card(card string) *EntityCardDataBuilder {
	builder.card = card
	builder.cardFlag = true
	return builder
}

// 卡片对应词条的id
//
// 示例值：enterprise_7233732879589572628
func (builder *EntityCardDataBuilder) Id(id string) *EntityCardDataBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户点击的高亮词条
//
// 示例值：Ai
func (builder *EntityCardDataBuilder) Key(key string) *EntityCardDataBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 词条卡片类型
//
// 示例值：
func (builder *EntityCardDataBuilder) CardType(cardType int) *EntityCardDataBuilder {
	builder.cardType = cardType
	builder.cardTypeFlag = true
	return builder
}

// 卡片模版名
//
// 示例值：abbreviation-ultra
func (builder *EntityCardDataBuilder) TemplateName(templateName string) *EntityCardDataBuilder {
	builder.templateName = templateName
	builder.templateNameFlag = true
	return builder
}

func (builder *EntityCardDataBuilder) Build() *EntityCardData {
	req := &EntityCardData{}
	if builder.cardFlag {
		req.Card = &builder.card

	}
	if builder.idFlag {
		req.Id = &builder.id

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

	}
	if builder.cardTypeFlag {
		req.CardType = &builder.cardType

	}
	if builder.templateNameFlag {
		req.TemplateName = &builder.templateName

	}
	return req
}

type EntityWord struct {
	Name *string `json:"name,omitempty"` // 抽取出的词条名

	Aliases []string `json:"aliases,omitempty"` // 词条可能的推荐别名
}

type EntityWordBuilder struct {
	name     string // 抽取出的词条名
	nameFlag bool

	aliases     []string // 词条可能的推荐别名
	aliasesFlag bool
}

func NewEntityWordBuilder() *EntityWordBuilder {
	builder := &EntityWordBuilder{}
	return builder
}

// 抽取出的词条名
//
// 示例值：
func (builder *EntityWordBuilder) Name(name string) *EntityWordBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 词条可能的推荐别名
//
// 示例值：
func (builder *EntityWordBuilder) Aliases(aliases []string) *EntityWordBuilder {
	builder.aliases = aliases
	builder.aliasesFlag = true
	return builder
}

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

	}
	if builder.aliasesFlag {
		req.Aliases = builder.aliases
	}
	return req
}

type File struct {
	Name *string `json:"name,omitempty"` // 文件名称，当前仅支持上传图片且图片格式为以下六种：icon、bmp、gif、png、jpeg、webp

	File io.Reader `json:"file,omitempty"` // 二进制文件内容，高宽像素在 320-4096 像素之间，大小在 3KB-10MB 的图片
}

type FileBuilder struct {
	name     string // 文件名称，当前仅支持上传图片且图片格式为以下六种：icon、bmp、gif、png、jpeg、webp
	nameFlag bool

	file     io.Reader // 二进制文件内容，高宽像素在 320-4096 像素之间，大小在 3KB-10MB 的图片
	fileFlag bool
}

func NewFileBuilder() *FileBuilder {
	builder := &FileBuilder{}
	return builder
}

// 文件名称，当前仅支持上传图片且图片格式为以下六种：icon、bmp、gif、png、jpeg、webp
//
// 示例值：示例图片.png
func (builder *FileBuilder) Name(name string) *FileBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 二进制文件内容，高宽像素在 320-4096 像素之间，大小在 3KB-10MB 的图片
//
// 示例值：
func (builder *FileBuilder) File(file io.Reader) *FileBuilder {
	builder.file = file
	builder.fileFlag = true
	return builder
}

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

	}
	if builder.fileFlag {
		req.File = builder.file
	}
	return req
}

type I18nClsName struct {
	Language *int `json:"language,omitempty"` // 语言类型

	Name *string `json:"name,omitempty"` // 分类名
}

type I18nClsNameBuilder struct {
	language     int // 语言类型
	languageFlag bool

	name     string // 分类名
	nameFlag bool
}

func NewI18nClsNameBuilder() *I18nClsNameBuilder {
	builder := &I18nClsNameBuilder{}
	return builder
}

// 语言类型
//
// 示例值：1
func (builder *I18nClsNameBuilder) Language(language int) *I18nClsNameBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 分类名
//
// 示例值：词典分类
func (builder *I18nClsNameBuilder) Name(name string) *I18nClsNameBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

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

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

	}
	return req
}

type I18nEntryDesc struct {
	Language *int `json:"language,omitempty"` // 语言类型

	Description *string `json:"description,omitempty"` // 纯文本释义

	RichText *string `json:"rich_text,omitempty"` // 富文本描述
}

type I18nEntryDescBuilder struct {
	language     int // 语言类型
	languageFlag bool

	description     string // 纯文本释义
	descriptionFlag bool

	richText     string // 富文本描述
	richTextFlag bool
}

func NewI18nEntryDescBuilder() *I18nEntryDescBuilder {
	builder := &I18nEntryDescBuilder{}
	return builder
}

// 语言类型
//
// 示例值：1
func (builder *I18nEntryDescBuilder) Language(language int) *I18nEntryDescBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 纯文本释义
//
// 示例值：词典是飞书提供的一款知识管理工具，通过飞书词典可以帮助企业将分散的知识信息进行聚合，并通过UGC的方式，促进企业知识的保鲜和流通
func (builder *I18nEntryDescBuilder) Description(description string) *I18nEntryDescBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 富文本描述
//
// 示例值：<p><span>词典是飞书提供的一款知识管理工具，通过飞书词典可以帮助企业将分散的知识信息进行聚合，并通过UGC的方式，促进企业知识的保鲜和流通</span></p>
func (builder *I18nEntryDescBuilder) RichText(richText string) *I18nEntryDescBuilder {
	builder.richText = richText
	builder.richTextFlag = true
	return builder
}

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

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

	}
	if builder.richTextFlag {
		req.RichText = &builder.richText

	}
	return req
}

type MatchInfo struct {
	EntityId *string `json:"entity_id,omitempty"` // 实体词 id

	Type *int `json:"type,omitempty"` // 匹配中的字段
}

type MatchInfoBuilder struct {
	entityId     string // 实体词 id
	entityIdFlag bool

	type_    int // 匹配中的字段
	typeFlag bool
}

func NewMatchInfoBuilder() *MatchInfoBuilder {
	builder := &MatchInfoBuilder{}
	return builder
}

// 实体词 id
//
// 示例值：enterprise_34809584
func (builder *MatchInfoBuilder) EntityId(entityId string) *MatchInfoBuilder {
	builder.entityId = entityId
	builder.entityIdFlag = true
	return builder
}

// 匹配中的字段
//
// 示例值：0
func (builder *MatchInfoBuilder) Type(type_ int) *MatchInfoBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

func (builder *MatchInfoBuilder) Build() *MatchInfo {
	req := &MatchInfo{}
	if builder.entityIdFlag {
		req.EntityId = &builder.entityId

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

	}
	return req
}

type OuterInfo struct {
	Provider *string `json:"provider,omitempty"` // 数据提供方（不能包含中横线 "-"）

	OuterId *string `json:"outer_id,omitempty"` // 唯一标识，可用来和其他平台的内容进行绑定。需保证和百科词条唯一对应（不能包含中横线 "-"）
}

type OuterInfoBuilder struct {
	provider     string // 数据提供方（不能包含中横线 "-"）
	providerFlag bool

	outerId     string // 唯一标识，可用来和其他平台的内容进行绑定。需保证和百科词条唯一对应（不能包含中横线 "-"）
	outerIdFlag bool
}

func NewOuterInfoBuilder() *OuterInfoBuilder {
	builder := &OuterInfoBuilder{}
	return builder
}

// 数据提供方（不能包含中横线 "-"）
//
// 示例值：星云
func (builder *OuterInfoBuilder) Provider(provider string) *OuterInfoBuilder {
	builder.provider = provider
	builder.providerFlag = true
	return builder
}

// 唯一标识，可用来和其他平台的内容进行绑定。需保证和百科词条唯一对应（不能包含中横线 "-"）
//
// 示例值：12345abc
func (builder *OuterInfoBuilder) OuterId(outerId string) *OuterInfoBuilder {
	builder.outerId = outerId
	builder.outerIdFlag = true
	return builder
}

func (builder *OuterInfoBuilder) Build() *OuterInfo {
	req := &OuterInfo{}
	if builder.providerFlag {
		req.Provider = &builder.provider

	}
	if builder.outerIdFlag {
		req.OuterId = &builder.outerId

	}
	return req
}

type Phrase struct {
	Name *string `json:"name,omitempty"` // 文本中切分出的百科词条名称

	EntityIds []string `json:"entity_ids,omitempty"` // 实体词 id 列表

	Span *Span `json:"span,omitempty"` // 实体词所在位置
}

type PhraseBuilder struct {
	name     string // 文本中切分出的百科词条名称
	nameFlag bool

	entityIds     []string // 实体词 id 列表
	entityIdsFlag bool

	span     *Span // 实体词所在位置
	spanFlag bool
}

func NewPhraseBuilder() *PhraseBuilder {
	builder := &PhraseBuilder{}
	return builder
}

// 文本中切分出的百科词条名称
//
// 示例值：企业百科
func (builder *PhraseBuilder) Name(name string) *PhraseBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 实体词 id 列表
//
// 示例值：
func (builder *PhraseBuilder) EntityIds(entityIds []string) *PhraseBuilder {
	builder.entityIds = entityIds
	builder.entityIdsFlag = true
	return builder
}

// 实体词所在位置
//
// 示例值：
func (builder *PhraseBuilder) Span(span *Span) *PhraseBuilder {
	builder.span = span
	builder.spanFlag = true
	return builder
}

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

	}
	if builder.entityIdsFlag {
		req.EntityIds = builder.entityIds
	}
	if builder.spanFlag {
		req.Span = builder.span
	}
	return req
}

type Referer struct {
	Id *string `json:"id,omitempty"` // 数据 id

	Title *string `json:"title,omitempty"` // 标题

	Url *string `json:"url,omitempty"` // 链接地址
}

type RefererBuilder struct {
	id     string // 数据 id
	idFlag bool

	title     string // 标题
	titleFlag bool

	url     string // 链接地址
	urlFlag bool
}

func NewRefererBuilder() *RefererBuilder {
	builder := &RefererBuilder{}
	return builder
}

// 数据 id
//
// 示例值：7dab8a3d3cdcc9da365777c7ad535d62
func (builder *RefererBuilder) Id(id string) *RefererBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 标题
//
// 示例值：飞书官网
func (builder *RefererBuilder) Title(title string) *RefererBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 链接地址
//
// 示例值：https://www.feishu.cn/hc/zh-CN
func (builder *RefererBuilder) Url(url string) *RefererBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

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

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

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	return req
}

type RelatedMeta struct {
	Users []*Referer `json:"users,omitempty"` // 关联用户信息

	Chats []*Referer `json:"chats,omitempty"` // 关联群组信息

	Docs []*Referer `json:"docs,omitempty"` // 关联文档信息

	Oncalls []*Referer `json:"oncalls,omitempty"` // 关联值班者信息

	Links []*Referer `json:"links,omitempty"` // 关联链接信息

	Abbreviations []*Abbreviation `json:"abbreviations,omitempty"` // 相关词条信息

	Classifications []*Classification `json:"classifications,omitempty"` // 所属分类信息（不支持传入一级分类。词条不可同时属于同一个一级分类下的多个二级分类，一级分类下的二级分类互斥）

	Images []*BaikeImage `json:"images,omitempty"` // 上传的相关图片
}

type RelatedMetaBuilder struct {
	users     []*Referer // 关联用户信息
	usersFlag bool

	chats     []*Referer // 关联群组信息
	chatsFlag bool

	docs     []*Referer // 关联文档信息
	docsFlag bool

	oncalls     []*Referer // 关联值班者信息
	oncallsFlag bool

	links     []*Referer // 关联链接信息
	linksFlag bool

	abbreviations     []*Abbreviation // 相关词条信息
	abbreviationsFlag bool

	classifications     []*Classification // 所属分类信息（不支持传入一级分类。词条不可同时属于同一个一级分类下的多个二级分类，一级分类下的二级分类互斥）
	classificationsFlag bool

	images     []*BaikeImage // 上传的相关图片
	imagesFlag bool
}

func NewRelatedMetaBuilder() *RelatedMetaBuilder {
	builder := &RelatedMetaBuilder{}
	return builder
}

// 关联用户信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Users(users []*Referer) *RelatedMetaBuilder {
	builder.users = users
	builder.usersFlag = true
	return builder
}

// 关联群组信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Chats(chats []*Referer) *RelatedMetaBuilder {
	builder.chats = chats
	builder.chatsFlag = true
	return builder
}

// 关联文档信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Docs(docs []*Referer) *RelatedMetaBuilder {
	builder.docs = docs
	builder.docsFlag = true
	return builder
}

// 关联值班者信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Oncalls(oncalls []*Referer) *RelatedMetaBuilder {
	builder.oncalls = oncalls
	builder.oncallsFlag = true
	return builder
}

// 关联链接信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Links(links []*Referer) *RelatedMetaBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 相关词条信息
//
// 示例值：
func (builder *RelatedMetaBuilder) Abbreviations(abbreviations []*Abbreviation) *RelatedMetaBuilder {
	builder.abbreviations = abbreviations
	builder.abbreviationsFlag = true
	return builder
}

// 所属分类信息（不支持传入一级分类。词条不可同时属于同一个一级分类下的多个二级分类，一级分类下的二级分类互斥）
//
// 示例值：
func (builder *RelatedMetaBuilder) Classifications(classifications []*Classification) *RelatedMetaBuilder {
	builder.classifications = classifications
	builder.classificationsFlag = true
	return builder
}

// 上传的相关图片
//
// 示例值：
func (builder *RelatedMetaBuilder) Images(images []*BaikeImage) *RelatedMetaBuilder {
	builder.images = images
	builder.imagesFlag = true
	return builder
}

func (builder *RelatedMetaBuilder) Build() *RelatedMeta {
	req := &RelatedMeta{}
	if builder.usersFlag {
		req.Users = builder.users
	}
	if builder.chatsFlag {
		req.Chats = builder.chats
	}
	if builder.docsFlag {
		req.Docs = builder.docs
	}
	if builder.oncallsFlag {
		req.Oncalls = builder.oncalls
	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.abbreviationsFlag {
		req.Abbreviations = builder.abbreviations
	}
	if builder.classificationsFlag {
		req.Classifications = builder.classifications
	}
	if builder.imagesFlag {
		req.Images = builder.images
	}
	return req
}

type Repo struct {
	Id *string `json:"id,omitempty"` // 词库 id

	Name *string `json:"name,omitempty"` // 词库名
}

type RepoBuilder struct {
	id     string // 词库 id
	idFlag bool

	name     string // 词库名
	nameFlag bool
}

func NewRepoBuilder() *RepoBuilder {
	builder := &RepoBuilder{}
	return builder
}

// 词库 id
//
// 示例值：7152790921053274113
func (builder *RepoBuilder) Id(id string) *RepoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 词库名
//
// 示例值：企业词库
func (builder *RepoBuilder) Name(name string) *RepoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

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

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

	}
	return req
}

type Span struct {
	Start *int `json:"start,omitempty"` // 偏移量开始位置，从 0 开始计数（编码格式采用 utf-8）

	End *int `json:"end,omitempty"` // 偏移量结束位置，从 0 开始计数（编码格式采用 utf-8）
}

type SpanBuilder struct {
	start     int // 偏移量开始位置，从 0 开始计数（编码格式采用 utf-8）
	startFlag bool

	end     int // 偏移量结束位置，从 0 开始计数（编码格式采用 utf-8）
	endFlag bool
}

func NewSpanBuilder() *SpanBuilder {
	builder := &SpanBuilder{}
	return builder
}

// 偏移量开始位置，从 0 开始计数（编码格式采用 utf-8）
//
// 示例值：0
func (builder *SpanBuilder) Start(start int) *SpanBuilder {
	builder.start = start
	builder.startFlag = true
	return builder
}

// 偏移量结束位置，从 0 开始计数（编码格式采用 utf-8）
//
// 示例值：4
func (builder *SpanBuilder) End(end int) *SpanBuilder {
	builder.end = end
	builder.endFlag = true
	return builder
}

func (builder *SpanBuilder) Build() *Span {
	req := &Span{}
	if builder.startFlag {
		req.Start = &builder.start

	}
	if builder.endFlag {
		req.End = &builder.end

	}
	return req
}

type StatisticalReport struct {
	DateInterval *int `json:"date_interval,omitempty"` // 请求时间区间

	WordInfo *WordInfo `json:"word_info,omitempty"` // 词汇量相关数据

	CorrectInfo *CorrectInfo `json:"correct_info,omitempty"` // 纠错相关数据

	UpdateDate *string `json:"update_date,omitempty"` // 天维度的时间戳，用于确认数据最近一次更新时间
}

type StatisticalReportBuilder struct {
	dateInterval     int // 请求时间区间
	dateIntervalFlag bool

	wordInfo     *WordInfo // 词汇量相关数据
	wordInfoFlag bool

	correctInfo     *CorrectInfo // 纠错相关数据
	correctInfoFlag bool

	updateDate     string // 天维度的时间戳，用于确认数据最近一次更新时间
	updateDateFlag bool
}

func NewStatisticalReportBuilder() *StatisticalReportBuilder {
	builder := &StatisticalReportBuilder{}
	return builder
}

// 请求时间区间
//
// 示例值：请求时间区间
func (builder *StatisticalReportBuilder) DateInterval(dateInterval int) *StatisticalReportBuilder {
	builder.dateInterval = dateInterval
	builder.dateIntervalFlag = true
	return builder
}

// 词汇量相关数据
//
// 示例值：
func (builder *StatisticalReportBuilder) WordInfo(wordInfo *WordInfo) *StatisticalReportBuilder {
	builder.wordInfo = wordInfo
	builder.wordInfoFlag = true
	return builder
}

// 纠错相关数据
//
// 示例值：
func (builder *StatisticalReportBuilder) CorrectInfo(correctInfo *CorrectInfo) *StatisticalReportBuilder {
	builder.correctInfo = correctInfo
	builder.correctInfoFlag = true
	return builder
}

// 天维度的时间戳，用于确认数据最近一次更新时间
//
// 示例值：“20221101”
func (builder *StatisticalReportBuilder) UpdateDate(updateDate string) *StatisticalReportBuilder {
	builder.updateDate = updateDate
	builder.updateDateFlag = true
	return builder
}

func (builder *StatisticalReportBuilder) Build() *StatisticalReport {
	req := &StatisticalReport{}
	if builder.dateIntervalFlag {
		req.DateInterval = &builder.dateInterval

	}
	if builder.wordInfoFlag {
		req.WordInfo = builder.wordInfo
	}
	if builder.correctInfoFlag {
		req.CorrectInfo = builder.correctInfo
	}
	if builder.updateDateFlag {
		req.UpdateDate = &builder.updateDate

	}
	return req
}

type Statistics struct {
	LikeCount *int `json:"like_count,omitempty"` // 点赞数量

	DislikeCount *int `json:"dislike_count,omitempty"` // 点踩数量
}

type StatisticsBuilder struct {
	likeCount     int // 点赞数量
	likeCountFlag bool

	dislikeCount     int // 点踩数量
	dislikeCountFlag bool
}

func NewStatisticsBuilder() *StatisticsBuilder {
	builder := &StatisticsBuilder{}
	return builder
}

// 点赞数量
//
// 示例值：55
func (builder *StatisticsBuilder) LikeCount(likeCount int) *StatisticsBuilder {
	builder.likeCount = likeCount
	builder.likeCountFlag = true
	return builder
}

// 点踩数量
//
// 示例值：3
func (builder *StatisticsBuilder) DislikeCount(dislikeCount int) *StatisticsBuilder {
	builder.dislikeCount = dislikeCount
	builder.dislikeCountFlag = true
	return builder
}

func (builder *StatisticsBuilder) Build() *Statistics {
	req := &Statistics{}
	if builder.likeCountFlag {
		req.LikeCount = &builder.likeCount

	}
	if builder.dislikeCountFlag {
		req.DislikeCount = &builder.dislikeCount

	}
	return req
}

type Term struct {
	Key *string `json:"key,omitempty"` // 名称

	DisplayStatus *DisplayStatus `json:"display_status,omitempty"` // 展示状态
}

type TermBuilder struct {
	key     string // 名称
	keyFlag bool

	displayStatus     *DisplayStatus // 展示状态
	displayStatusFlag bool
}

func NewTermBuilder() *TermBuilder {
	builder := &TermBuilder{}
	return builder
}

// 名称
//
// 示例值：企业百科
func (builder *TermBuilder) Key(key string) *TermBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 展示状态
//
// 示例值：
func (builder *TermBuilder) DisplayStatus(displayStatus *DisplayStatus) *TermBuilder {
	builder.displayStatus = displayStatus
	builder.displayStatusFlag = true
	return builder
}

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

	}
	if builder.displayStatusFlag {
		req.DisplayStatus = builder.displayStatus
	}
	return req
}

type WordInfo struct {
	InputTotal *int `json:"input_total,omitempty"` // 用户输入的总词汇量

	DedupInputTotal *int `json:"dedup_input_total,omitempty"` // 用户输入的去重后的总词汇量

	EachdayInput []int `json:"eachday_input,omitempty"` // 时间区间内每一天发送的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推

	EachdayDedupInput []int `json:"eachday_dedup_input,omitempty"` // 时间区间内每一天发送的归一化去重后的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推

	SendMessageTotal *int `json:"send_message_total,omitempty"` // 发送的消息总数

	SendEnMessageTotal *int `json:"send_en_message_total,omitempty"` // 发送的英语消息总数

	ReceiveMessageTotal *int `json:"receive_message_total,omitempty"` // 接收消息的数量

	ReceiveEnMessageTotal *int `json:"receive_en_message_total,omitempty"` // 接收英文消息的数量

	HistoryWordsTotal *int `json:"history_words_total,omitempty"` // 历史总计英语词数（包含新增）

	NewWordsTotal *int `json:"new_words_total,omitempty"` // 新增英语词数

	EachdaySendEnMessage []int `json:"eachday_send_en_message,omitempty"` // 时间区间内每一天发送的英语消息数

	EachdaySendMessage []int `json:"eachday_send_message,omitempty"` // 时间区间内每一天发送的消息数

	EachdayReceiveEnMessage []int `json:"eachday_receive_en_message,omitempty"` // 时间区间内每一天接收的英文消息数

	EachdayReceiveMessage []int `json:"eachday_receive_message,omitempty"` // 时间区间内每一天接收的英文消息数

	SendEngMessageRateRingGrowth *float64 `json:"send_eng_message_rate_ring_growth,omitempty"` // 发送消息占比环比增长变化

	SendEngWordsRingGrowth *int `json:"send_eng_words_ring_growth,omitempty"` // 发送英文单词数环比增长变化
}

type WordInfoBuilder struct {
	inputTotal     int // 用户输入的总词汇量
	inputTotalFlag bool

	dedupInputTotal     int // 用户输入的去重后的总词汇量
	dedupInputTotalFlag bool

	eachdayInput     []int // 时间区间内每一天发送的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推
	eachdayInputFlag bool

	eachdayDedupInput     []int // 时间区间内每一天发送的归一化去重后的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推
	eachdayDedupInputFlag bool

	sendMessageTotal     int // 发送的消息总数
	sendMessageTotalFlag bool

	sendEnMessageTotal     int // 发送的英语消息总数
	sendEnMessageTotalFlag bool

	receiveMessageTotal     int // 接收消息的数量
	receiveMessageTotalFlag bool

	receiveEnMessageTotal     int // 接收英文消息的数量
	receiveEnMessageTotalFlag bool

	historyWordsTotal     int // 历史总计英语词数（包含新增）
	historyWordsTotalFlag bool

	newWordsTotal     int // 新增英语词数
	newWordsTotalFlag bool

	eachdaySendEnMessage     []int // 时间区间内每一天发送的英语消息数
	eachdaySendEnMessageFlag bool

	eachdaySendMessage     []int // 时间区间内每一天发送的消息数
	eachdaySendMessageFlag bool

	eachdayReceiveEnMessage     []int // 时间区间内每一天接收的英文消息数
	eachdayReceiveEnMessageFlag bool

	eachdayReceiveMessage     []int // 时间区间内每一天接收的英文消息数
	eachdayReceiveMessageFlag bool

	sendEngMessageRateRingGrowth     float64 // 发送消息占比环比增长变化
	sendEngMessageRateRingGrowthFlag bool

	sendEngWordsRingGrowth     int // 发送英文单词数环比增长变化
	sendEngWordsRingGrowthFlag bool
}

func NewWordInfoBuilder() *WordInfoBuilder {
	builder := &WordInfoBuilder{}
	return builder
}

// 用户输入的总词汇量
//
// 示例值：100
func (builder *WordInfoBuilder) InputTotal(inputTotal int) *WordInfoBuilder {
	builder.inputTotal = inputTotal
	builder.inputTotalFlag = true
	return builder
}

// 用户输入的去重后的总词汇量
//
// 示例值：50
func (builder *WordInfoBuilder) DedupInputTotal(dedupInputTotal int) *WordInfoBuilder {
	builder.dedupInputTotal = dedupInputTotal
	builder.dedupInputTotalFlag = true
	return builder
}

// 时间区间内每一天发送的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推
//
// 示例值：
func (builder *WordInfoBuilder) EachdayInput(eachdayInput []int) *WordInfoBuilder {
	builder.eachdayInput = eachdayInput
	builder.eachdayInputFlag = true
	return builder
}

// 时间区间内每一天发送的归一化去重后的英文词数，时间是由远到近。以七天数据为例：下标6为昨天，下标5位前天以此类推
//
// 示例值：
func (builder *WordInfoBuilder) EachdayDedupInput(eachdayDedupInput []int) *WordInfoBuilder {
	builder.eachdayDedupInput = eachdayDedupInput
	builder.eachdayDedupInputFlag = true
	return builder
}

// 发送的消息总数
//
// 示例值：200
func (builder *WordInfoBuilder) SendMessageTotal(sendMessageTotal int) *WordInfoBuilder {
	builder.sendMessageTotal = sendMessageTotal
	builder.sendMessageTotalFlag = true
	return builder
}

// 发送的英语消息总数
//
// 示例值：150
func (builder *WordInfoBuilder) SendEnMessageTotal(sendEnMessageTotal int) *WordInfoBuilder {
	builder.sendEnMessageTotal = sendEnMessageTotal
	builder.sendEnMessageTotalFlag = true
	return builder
}

// 接收消息的数量
//
// 示例值：500
func (builder *WordInfoBuilder) ReceiveMessageTotal(receiveMessageTotal int) *WordInfoBuilder {
	builder.receiveMessageTotal = receiveMessageTotal
	builder.receiveMessageTotalFlag = true
	return builder
}

// 接收英文消息的数量
//
// 示例值：100
func (builder *WordInfoBuilder) ReceiveEnMessageTotal(receiveEnMessageTotal int) *WordInfoBuilder {
	builder.receiveEnMessageTotal = receiveEnMessageTotal
	builder.receiveEnMessageTotalFlag = true
	return builder
}

// 历史总计英语词数（包含新增）
//
// 示例值：300
func (builder *WordInfoBuilder) HistoryWordsTotal(historyWordsTotal int) *WordInfoBuilder {
	builder.historyWordsTotal = historyWordsTotal
	builder.historyWordsTotalFlag = true
	return builder
}

// 新增英语词数
//
// 示例值：20
func (builder *WordInfoBuilder) NewWordsTotal(newWordsTotal int) *WordInfoBuilder {
	builder.newWordsTotal = newWordsTotal
	builder.newWordsTotalFlag = true
	return builder
}

// 时间区间内每一天发送的英语消息数
//
// 示例值：
func (builder *WordInfoBuilder) EachdaySendEnMessage(eachdaySendEnMessage []int) *WordInfoBuilder {
	builder.eachdaySendEnMessage = eachdaySendEnMessage
	builder.eachdaySendEnMessageFlag = true
	return builder
}

// 时间区间内每一天发送的消息数
//
// 示例值：
func (builder *WordInfoBuilder) EachdaySendMessage(eachdaySendMessage []int) *WordInfoBuilder {
	builder.eachdaySendMessage = eachdaySendMessage
	builder.eachdaySendMessageFlag = true
	return builder
}

// 时间区间内每一天接收的英文消息数
//
// 示例值：
func (builder *WordInfoBuilder) EachdayReceiveEnMessage(eachdayReceiveEnMessage []int) *WordInfoBuilder {
	builder.eachdayReceiveEnMessage = eachdayReceiveEnMessage
	builder.eachdayReceiveEnMessageFlag = true
	return builder
}

// 时间区间内每一天接收的英文消息数
//
// 示例值：
func (builder *WordInfoBuilder) EachdayReceiveMessage(eachdayReceiveMessage []int) *WordInfoBuilder {
	builder.eachdayReceiveMessage = eachdayReceiveMessage
	builder.eachdayReceiveMessageFlag = true
	return builder
}

// 发送消息占比环比增长变化
//
// 示例值：2.1
func (builder *WordInfoBuilder) SendEngMessageRateRingGrowth(sendEngMessageRateRingGrowth float64) *WordInfoBuilder {
	builder.sendEngMessageRateRingGrowth = sendEngMessageRateRingGrowth
	builder.sendEngMessageRateRingGrowthFlag = true
	return builder
}

// 发送英文单词数环比增长变化
//
// 示例值：9
func (builder *WordInfoBuilder) SendEngWordsRingGrowth(sendEngWordsRingGrowth int) *WordInfoBuilder {
	builder.sendEngWordsRingGrowth = sendEngWordsRingGrowth
	builder.sendEngWordsRingGrowthFlag = true
	return builder
}

func (builder *WordInfoBuilder) Build() *WordInfo {
	req := &WordInfo{}
	if builder.inputTotalFlag {
		req.InputTotal = &builder.inputTotal

	}
	if builder.dedupInputTotalFlag {
		req.DedupInputTotal = &builder.dedupInputTotal

	}
	if builder.eachdayInputFlag {
		req.EachdayInput = builder.eachdayInput
	}
	if builder.eachdayDedupInputFlag {
		req.EachdayDedupInput = builder.eachdayDedupInput
	}
	if builder.sendMessageTotalFlag {
		req.SendMessageTotal = &builder.sendMessageTotal

	}
	if builder.sendEnMessageTotalFlag {
		req.SendEnMessageTotal = &builder.sendEnMessageTotal

	}
	if builder.receiveMessageTotalFlag {
		req.ReceiveMessageTotal = &builder.receiveMessageTotal

	}
	if builder.receiveEnMessageTotalFlag {
		req.ReceiveEnMessageTotal = &builder.receiveEnMessageTotal

	}
	if builder.historyWordsTotalFlag {
		req.HistoryWordsTotal = &builder.historyWordsTotal

	}
	if builder.newWordsTotalFlag {
		req.NewWordsTotal = &builder.newWordsTotal

	}
	if builder.eachdaySendEnMessageFlag {
		req.EachdaySendEnMessage = builder.eachdaySendEnMessage
	}
	if builder.eachdaySendMessageFlag {
		req.EachdaySendMessage = builder.eachdaySendMessage
	}
	if builder.eachdayReceiveEnMessageFlag {
		req.EachdayReceiveEnMessage = builder.eachdayReceiveEnMessage
	}
	if builder.eachdayReceiveMessageFlag {
		req.EachdayReceiveMessage = builder.eachdayReceiveMessage
	}
	if builder.sendEngMessageRateRingGrowthFlag {
		req.SendEngMessageRateRingGrowth = &builder.sendEngMessageRateRingGrowth

	}
	if builder.sendEngWordsRingGrowthFlag {
		req.SendEngWordsRingGrowth = &builder.sendEngWordsRingGrowth

	}
	return req
}

type ListClassificationReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListClassificationReqBuilder() *ListClassificationReqBuilder {
	builder := &ListClassificationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListClassificationReqBuilder) Limit(limit int) *ListClassificationReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：20
func (builder *ListClassificationReqBuilder) PageSize(pageSize int) *ListClassificationReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：408ecac018b2e3518db37275e812aad7bb8ad3e755fc886f322ac6c430ba
func (builder *ListClassificationReqBuilder) PageToken(pageToken string) *ListClassificationReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 词库ID
//
// 示例值：7202510112396640276
func (builder *ListClassificationReqBuilder) RepoId(repoId string) *ListClassificationReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

func (builder *ListClassificationReqBuilder) Build() *ListClassificationReq {
	req := &ListClassificationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListClassificationReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListClassificationRespData struct {
	Items []*Classification `json:"items,omitempty"` // 分类list

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当还有下一页时会返回新的 page_token，否则 page_token 为空

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type ListClassificationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListClassificationRespData `json:"data"` // 业务数据
}

func (resp *ListClassificationResp) Success() bool {
	return resp.Code == 0
}

type CreateDraftReqBuilder struct {
	apiReq *larkcore.ApiReq
	entity *Entity
}

func NewCreateDraftReqBuilder() *CreateDraftReqBuilder {
	builder := &CreateDraftReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 词库ID
//
// 示例值：7202510112396640276
func (builder *CreateDraftReqBuilder) RepoId(repoId string) *CreateDraftReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *CreateDraftReqBuilder) UserIdType(userIdType string) *CreateDraftReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateDraftReqBuilder) Entity(entity *Entity) *CreateDraftReqBuilder {
	builder.entity = entity
	return builder
}

func (builder *CreateDraftReqBuilder) Build() *CreateDraftReq {
	req := &CreateDraftReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.entity
	return req
}

type CreateDraftReq struct {
	apiReq *larkcore.ApiReq
	Entity *Entity `body:""`
}

type CreateDraftRespData struct {
	Draft *Draft `json:"draft,omitempty"` //
}

type CreateDraftResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateDraftRespData `json:"data"` // 业务数据
}

func (resp *CreateDraftResp) Success() bool {
	return resp.Code == 0
}

type UpdateDraftReqBuilder struct {
	apiReq *larkcore.ApiReq
	entity *Entity
}

func NewUpdateDraftReqBuilder() *UpdateDraftReqBuilder {
	builder := &UpdateDraftReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 草稿ID
//
// 示例值：7241543272228814852
func (builder *UpdateDraftReqBuilder) DraftId(draftId string) *UpdateDraftReqBuilder {
	builder.apiReq.PathParams.Set("draft_id", fmt.Sprint(draftId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *UpdateDraftReqBuilder) UserIdType(userIdType string) *UpdateDraftReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateDraftReqBuilder) Entity(entity *Entity) *UpdateDraftReqBuilder {
	builder.entity = entity
	return builder
}

func (builder *UpdateDraftReqBuilder) Build() *UpdateDraftReq {
	req := &UpdateDraftReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.entity
	return req
}

type UpdateDraftReq struct {
	apiReq *larkcore.ApiReq
	Entity *Entity `body:""`
}

type UpdateDraftRespData struct {
	Draft *Draft `json:"draft,omitempty"` //
}

type UpdateDraftResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UpdateDraftRespData `json:"data"` // 业务数据
}

func (resp *UpdateDraftResp) Success() bool {
	return resp.Code == 0
}

type CreateEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	entity *Entity
}

func NewCreateEntityReqBuilder() *CreateEntityReqBuilder {
	builder := &CreateEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 词库 ID
//
// 示例值：7152790921053274113
func (builder *CreateEntityReqBuilder) RepoId(repoId string) *CreateEntityReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *CreateEntityReqBuilder) UserIdType(userIdType string) *CreateEntityReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateEntityReqBuilder) Entity(entity *Entity) *CreateEntityReqBuilder {
	builder.entity = entity
	return builder
}

func (builder *CreateEntityReqBuilder) Build() *CreateEntityReq {
	req := &CreateEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.entity
	return req
}

type CreateEntityReq struct {
	apiReq *larkcore.ApiReq
	Entity *Entity `body:""`
}

type CreateEntityRespData struct {
	Entity *Entity `json:"entity,omitempty"` //
}

type CreateEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEntityRespData `json:"data"` // 业务数据
}

func (resp *CreateEntityResp) Success() bool {
	return resp.Code == 0
}

type DeleteEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteEntityReqBuilder() *DeleteEntityReqBuilder {
	builder := &DeleteEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 词条 id
//
// 示例值：enterprise_43742132363
func (builder *DeleteEntityReqBuilder) EntityId(entityId string) *DeleteEntityReqBuilder {
	builder.apiReq.PathParams.Set("entity_id", fmt.Sprint(entityId))
	return builder
}

// 数据提供方（使用时需要将路径中的词条 ID 固定为：enterprise_0，且提供 provider 和 outer_id）
//
// 示例值：星云
func (builder *DeleteEntityReqBuilder) Provider(provider string) *DeleteEntityReqBuilder {
	builder.apiReq.QueryParams.Set("provider", fmt.Sprint(provider))
	return builder
}

// 外部唯一 id（使用时需要将路径中的词条 ID 固定为：enterprise_0，且提供 provider 和 outer_id）
//
// 示例值：123aaa
func (builder *DeleteEntityReqBuilder) OuterId(outerId string) *DeleteEntityReqBuilder {
	builder.apiReq.QueryParams.Set("outer_id", fmt.Sprint(outerId))
	return builder
}

func (builder *DeleteEntityReqBuilder) Build() *DeleteEntityReq {
	req := &DeleteEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type DeleteEntityReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteEntityResp) Success() bool {
	return resp.Code == 0
}

type GetEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetEntityReqBuilder() *GetEntityReqBuilder {
	builder := &GetEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 实体词 id
//
// 示例值：enterprise_0
func (builder *GetEntityReqBuilder) EntityId(entityId string) *GetEntityReqBuilder {
	builder.apiReq.PathParams.Set("entity_id", fmt.Sprint(entityId))
	return builder
}

// 数据提供方（使用时需要将路径中的实体词 ID 固定为：enterprise_0，且提供 provider 和 outer_id）
//
// 示例值：星云
func (builder *GetEntityReqBuilder) Provider(provider string) *GetEntityReqBuilder {
	builder.apiReq.QueryParams.Set("provider", fmt.Sprint(provider))
	return builder
}

// 外部唯一 id（使用时需要将路径中的实体词 ID 固定为：enterprise_0，且提供 provider 和 outer_id）
//
// 示例值：123aaa
func (builder *GetEntityReqBuilder) OuterId(outerId string) *GetEntityReqBuilder {
	builder.apiReq.QueryParams.Set("outer_id", fmt.Sprint(outerId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetEntityReqBuilder) UserIdType(userIdType string) *GetEntityReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetEntityReqBuilder) Build() *GetEntityReq {
	req := &GetEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetEntityReq struct {
	apiReq *larkcore.ApiReq
}

type GetEntityRespData struct {
	Entity *Entity `json:"entity,omitempty"` // 实体词
}

type GetEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetEntityRespData `json:"data"` // 业务数据
}

func (resp *GetEntityResp) Success() bool {
	return resp.Code == 0
}

type HighlightEntityReqBodyBuilder struct {
	text     string // 需要被识别实体词内容的一句话（不要超过1000字）
	textFlag bool
}

func NewHighlightEntityReqBodyBuilder() *HighlightEntityReqBodyBuilder {
	builder := &HighlightEntityReqBodyBuilder{}
	return builder
}

// 需要被识别实体词内容的一句话（不要超过1000字）
//
//示例值：企业百科是飞书提供的一款知识管理工具
func (builder *HighlightEntityReqBodyBuilder) Text(text string) *HighlightEntityReqBodyBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *HighlightEntityReqBodyBuilder) Build() *HighlightEntityReqBody {
	req := &HighlightEntityReqBody{}
	if builder.textFlag {
		req.Text = &builder.text
	}
	return req
}

type HighlightEntityPathReqBodyBuilder struct {
	text     string
	textFlag bool
}

func NewHighlightEntityPathReqBodyBuilder() *HighlightEntityPathReqBodyBuilder {
	builder := &HighlightEntityPathReqBodyBuilder{}
	return builder
}

// 需要被识别实体词内容的一句话（不要超过1000字）
//
// 示例值：企业百科是飞书提供的一款知识管理工具
func (builder *HighlightEntityPathReqBodyBuilder) Text(text string) *HighlightEntityPathReqBodyBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

func (builder *HighlightEntityPathReqBodyBuilder) Build() (*HighlightEntityReqBody, error) {
	req := &HighlightEntityReqBody{}
	if builder.textFlag {
		req.Text = &builder.text
	}
	return req, nil
}

type HighlightEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *HighlightEntityReqBody
}

func NewHighlightEntityReqBuilder() *HighlightEntityReqBuilder {
	builder := &HighlightEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *HighlightEntityReqBuilder) Body(body *HighlightEntityReqBody) *HighlightEntityReqBuilder {
	builder.body = body
	return builder
}

func (builder *HighlightEntityReqBuilder) Build() *HighlightEntityReq {
	req := &HighlightEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type HighlightEntityReqBody struct {
	Text *string `json:"text,omitempty"` // 需要被识别实体词内容的一句话（不要超过1000字）
}

type HighlightEntityReq struct {
	apiReq *larkcore.ApiReq
	Body   *HighlightEntityReqBody `body:""`
}

type HighlightEntityRespData struct {
	Phrases []*Phrase `json:"phrases,omitempty"` // 返回识别到的实体词信息
}

type HighlightEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *HighlightEntityRespData `json:"data"` // 业务数据
}

func (resp *HighlightEntityResp) Success() bool {
	return resp.Code == 0
}

type ListEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListEntityReqBuilder() *ListEntityReqBuilder {
	builder := &ListEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListEntityReqBuilder) Limit(limit int) *ListEntityReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：20
func (builder *ListEntityReqBuilder) PageSize(pageSize int) *ListEntityReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：408ecac018b2e3518db37275e812aad7bb8ad3e755fc886f322ac6c430ba
func (builder *ListEntityReqBuilder) PageToken(pageToken string) *ListEntityReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 数据提供方【可用来过滤数据】
//
// 示例值：星云
func (builder *ListEntityReqBuilder) Provider(provider string) *ListEntityReqBuilder {
	builder.apiReq.QueryParams.Set("provider", fmt.Sprint(provider))
	return builder
}

// 词库 id
//
// 示例值：7152790921053274113
func (builder *ListEntityReqBuilder) RepoId(repoId string) *ListEntityReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *ListEntityReqBuilder) UserIdType(userIdType string) *ListEntityReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ListEntityReqBuilder) Build() *ListEntityReq {
	req := &ListEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListEntityReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListEntityRespData struct {
	Entities []*Entity `json:"entities,omitempty"` // 词条列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当还有下一页时会返回新的 page_token，否则 page_token 为空

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type ListEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListEntityRespData `json:"data"` // 业务数据
}

func (resp *ListEntityResp) Success() bool {
	return resp.Code == 0
}

type MatchEntityReqBodyBuilder struct {
	word     string // 实体词主关键词、全称、别名全匹配
	wordFlag bool
}

func NewMatchEntityReqBodyBuilder() *MatchEntityReqBodyBuilder {
	builder := &MatchEntityReqBodyBuilder{}
	return builder
}

// 实体词主关键词、全称、别名全匹配
//
//示例值：企业百科
func (builder *MatchEntityReqBodyBuilder) Word(word string) *MatchEntityReqBodyBuilder {
	builder.word = word
	builder.wordFlag = true
	return builder
}

func (builder *MatchEntityReqBodyBuilder) Build() *MatchEntityReqBody {
	req := &MatchEntityReqBody{}
	if builder.wordFlag {
		req.Word = &builder.word
	}
	return req
}

type MatchEntityPathReqBodyBuilder struct {
	word     string
	wordFlag bool
}

func NewMatchEntityPathReqBodyBuilder() *MatchEntityPathReqBodyBuilder {
	builder := &MatchEntityPathReqBodyBuilder{}
	return builder
}

// 实体词主关键词、全称、别名全匹配
//
// 示例值：企业百科
func (builder *MatchEntityPathReqBodyBuilder) Word(word string) *MatchEntityPathReqBodyBuilder {
	builder.word = word
	builder.wordFlag = true
	return builder
}

func (builder *MatchEntityPathReqBodyBuilder) Build() (*MatchEntityReqBody, error) {
	req := &MatchEntityReqBody{}
	if builder.wordFlag {
		req.Word = &builder.word
	}
	return req, nil
}

type MatchEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *MatchEntityReqBody
}

func NewMatchEntityReqBuilder() *MatchEntityReqBuilder {
	builder := &MatchEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 词库ID
//
// 示例值：7202510112396640276
func (builder *MatchEntityReqBuilder) RepoId(repoId string) *MatchEntityReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

//
func (builder *MatchEntityReqBuilder) Body(body *MatchEntityReqBody) *MatchEntityReqBuilder {
	builder.body = body
	return builder
}

func (builder *MatchEntityReqBuilder) Build() *MatchEntityReq {
	req := &MatchEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type MatchEntityReqBody struct {
	Word *string `json:"word,omitempty"` // 实体词主关键词、全称、别名全匹配
}

type MatchEntityReq struct {
	apiReq *larkcore.ApiReq
	Body   *MatchEntityReqBody `body:""`
}

type MatchEntityRespData struct {
	Results []*MatchInfo `json:"results,omitempty"` // 匹配结果
}

type MatchEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *MatchEntityRespData `json:"data"` // 业务数据
}

func (resp *MatchEntityResp) Success() bool {
	return resp.Code == 0
}

type SearchEntityReqBodyBuilder struct {
	query     string // 搜索关键词
	queryFlag bool

	classificationFilter     *ClassificationFilter // 分类筛选
	classificationFilterFlag bool

	sources     []int // 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建
	sourcesFlag bool

	creators     []string // 创建者
	creatorsFlag bool
}

func NewSearchEntityReqBodyBuilder() *SearchEntityReqBodyBuilder {
	builder := &SearchEntityReqBodyBuilder{}
	return builder
}

// 搜索关键词
//
//示例值：飞书词典
func (builder *SearchEntityReqBodyBuilder) Query(query string) *SearchEntityReqBodyBuilder {
	builder.query = query
	builder.queryFlag = true
	return builder
}

// 分类筛选
//
//示例值：
func (builder *SearchEntityReqBodyBuilder) ClassificationFilter(classificationFilter *ClassificationFilter) *SearchEntityReqBodyBuilder {
	builder.classificationFilter = classificationFilter
	builder.classificationFilterFlag = true
	return builder
}

// 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建
//
//示例值：
func (builder *SearchEntityReqBodyBuilder) Sources(sources []int) *SearchEntityReqBodyBuilder {
	builder.sources = sources
	builder.sourcesFlag = true
	return builder
}

// 创建者
//
//示例值：ou_30b07b63089ea46518789914dac63d36
func (builder *SearchEntityReqBodyBuilder) Creators(creators []string) *SearchEntityReqBodyBuilder {
	builder.creators = creators
	builder.creatorsFlag = true
	return builder
}

func (builder *SearchEntityReqBodyBuilder) Build() *SearchEntityReqBody {
	req := &SearchEntityReqBody{}
	if builder.queryFlag {
		req.Query = &builder.query
	}
	if builder.classificationFilterFlag {
		req.ClassificationFilter = builder.classificationFilter
	}
	if builder.sourcesFlag {
		req.Sources = builder.sources
	}
	if builder.creatorsFlag {
		req.Creators = builder.creators
	}
	return req
}

type SearchEntityPathReqBodyBuilder struct {
	query                    string
	queryFlag                bool
	classificationFilter     *ClassificationFilter
	classificationFilterFlag bool
	sources                  []int
	sourcesFlag              bool
	creators                 []string
	creatorsFlag             bool
}

func NewSearchEntityPathReqBodyBuilder() *SearchEntityPathReqBodyBuilder {
	builder := &SearchEntityPathReqBodyBuilder{}
	return builder
}

// 搜索关键词
//
// 示例值：飞书词典
func (builder *SearchEntityPathReqBodyBuilder) Query(query string) *SearchEntityPathReqBodyBuilder {
	builder.query = query
	builder.queryFlag = true
	return builder
}

// 分类筛选
//
// 示例值：
func (builder *SearchEntityPathReqBodyBuilder) ClassificationFilter(classificationFilter *ClassificationFilter) *SearchEntityPathReqBodyBuilder {
	builder.classificationFilter = classificationFilter
	builder.classificationFilterFlag = true
	return builder
}

// 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建
//
// 示例值：
func (builder *SearchEntityPathReqBodyBuilder) Sources(sources []int) *SearchEntityPathReqBodyBuilder {
	builder.sources = sources
	builder.sourcesFlag = true
	return builder
}

// 创建者
//
// 示例值：ou_30b07b63089ea46518789914dac63d36
func (builder *SearchEntityPathReqBodyBuilder) Creators(creators []string) *SearchEntityPathReqBodyBuilder {
	builder.creators = creators
	builder.creatorsFlag = true
	return builder
}

func (builder *SearchEntityPathReqBodyBuilder) Build() (*SearchEntityReqBody, error) {
	req := &SearchEntityReqBody{}
	if builder.queryFlag {
		req.Query = &builder.query
	}
	if builder.classificationFilterFlag {
		req.ClassificationFilter = builder.classificationFilter
	}
	if builder.sourcesFlag {
		req.Sources = builder.sources
	}
	if builder.creatorsFlag {
		req.Creators = builder.creators
	}
	return req, nil
}

type SearchEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchEntityReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchEntityReqBuilder() *SearchEntityReqBuilder {
	builder := &SearchEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchEntityReqBuilder) Limit(limit int) *SearchEntityReqBuilder {
	builder.limit = limit
	return builder
}

// 每页返回的词条量
//
// 示例值：20
func (builder *SearchEntityReqBuilder) PageSize(pageSize int) *SearchEntityReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：b152fa6e6f62a291019a04c3a93f365f8ac641910506ff15ff4cad6534e087cb4ed8fa2c
func (builder *SearchEntityReqBuilder) PageToken(pageToken string) *SearchEntityReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 词库ID
//
// 示例值：7202510112396640276
func (builder *SearchEntityReqBuilder) RepoId(repoId string) *SearchEntityReqBuilder {
	builder.apiReq.QueryParams.Set("repo_id", fmt.Sprint(repoId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *SearchEntityReqBuilder) UserIdType(userIdType string) *SearchEntityReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *SearchEntityReqBuilder) Body(body *SearchEntityReqBody) *SearchEntityReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchEntityReqBuilder) Build() *SearchEntityReq {
	req := &SearchEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchEntityReqBody struct {
	Query *string `json:"query,omitempty"` // 搜索关键词

	ClassificationFilter *ClassificationFilter `json:"classification_filter,omitempty"` // 分类筛选

	Sources []int `json:"sources,omitempty"` // 词条的创建来源，1：用户主动创建，2：批量导入，3：官方词，4：OpenAPI 创建

	Creators []string `json:"creators,omitempty"` // 创建者
}

type SearchEntityReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchEntityReqBody `body:""`
	Limit  int                  // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchEntityRespData struct {
	Entities []*Entity `json:"entities,omitempty"` // 数据数组

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当还有下一页时会返回新的 page_token，否则 page_token 为空

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchEntityRespData `json:"data"` // 业务数据
}

func (resp *SearchEntityResp) Success() bool {
	return resp.Code == 0
}

type UpdateEntityReqBuilder struct {
	apiReq *larkcore.ApiReq
	entity *Entity
}

func NewUpdateEntityReqBuilder() *UpdateEntityReqBuilder {
	builder := &UpdateEntityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 词条 ID
//
// 示例值：enterprise_40217521
func (builder *UpdateEntityReqBuilder) EntityId(entityId string) *UpdateEntityReqBuilder {
	builder.apiReq.PathParams.Set("entity_id", fmt.Sprint(entityId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *UpdateEntityReqBuilder) UserIdType(userIdType string) *UpdateEntityReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateEntityReqBuilder) Entity(entity *Entity) *UpdateEntityReqBuilder {
	builder.entity = entity
	return builder
}

func (builder *UpdateEntityReqBuilder) Build() *UpdateEntityReq {
	req := &UpdateEntityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.entity
	return req
}

type UpdateEntityReq struct {
	apiReq *larkcore.ApiReq
	Entity *Entity `body:""`
}

type UpdateEntityRespData struct {
	Entity *Entity `json:"entity,omitempty"` //
}

type UpdateEntityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UpdateEntityRespData `json:"data"` // 业务数据
}

func (resp *UpdateEntityResp) Success() bool {
	return resp.Code == 0
}

type DownloadFileReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDownloadFileReqBuilder() *DownloadFileReqBuilder {
	builder := &DownloadFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要下载的文件 token
//
// 示例值：
func (builder *DownloadFileReqBuilder) FileToken(fileToken string) *DownloadFileReqBuilder {
	builder.apiReq.PathParams.Set("file_token", fmt.Sprint(fileToken))
	return builder
}

func (builder *DownloadFileReqBuilder) Build() *DownloadFileReq {
	req := &DownloadFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DownloadFileReq struct {
	apiReq *larkcore.ApiReq
}

type DownloadFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	File     io.Reader `json:"-"`
	FileName string    `json:"-"`
}

func (resp *DownloadFileResp) Success() bool {
	return resp.Code == 0
}

func (resp *DownloadFileResp) WriteFile(fileName string) error {
	bs, err := ioutil.ReadAll(resp.File)
	if err != nil {
		return err
	}

	err = ioutil.WriteFile(fileName, bs, 0666)
	if err != nil {
		return err
	}
	return nil
}

type UploadFileReqBuilder struct {
	apiReq *larkcore.ApiReq
	file   *File
}

func NewUploadFileReqBuilder() *UploadFileReqBuilder {
	builder := &UploadFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *UploadFileReqBuilder) File(file *File) *UploadFileReqBuilder {
	builder.file = file
	return builder
}

func (builder *UploadFileReqBuilder) Build() *UploadFileReq {
	req := &UploadFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.file
	return req
}

type UploadFileReq struct {
	apiReq *larkcore.ApiReq
	File   *File `body:""`
}

type UploadFileRespData struct {
	FileToken *string `json:"file_token,omitempty"` // 文件 token
}

type UploadFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UploadFileRespData `json:"data"` // 业务数据
}

func (resp *UploadFileResp) Success() bool {
	return resp.Code == 0
}

type ListRepoRespData struct {
	Items []*Repo `json:"items,omitempty"` // 词库列表
}

type ListRepoResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListRepoRespData `json:"data"` // 业务数据
}

func (resp *ListRepoResp) Success() bool {
	return resp.Code == 0
}

type ListClassificationIterator struct {
	nextPageToken *string
	items         []*Classification
	index         int
	limit         int
	ctx           context.Context
	req           *ListClassificationReq
	listFunc      func(ctx context.Context, req *ListClassificationReq, options ...larkcore.RequestOptionFunc) (*ListClassificationResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListClassificationIterator) Next() (bool, *Classification, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListClassificationIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListEntityIterator struct {
	nextPageToken *string
	items         []*Entity
	index         int
	limit         int
	ctx           context.Context
	req           *ListEntityReq
	listFunc      func(ctx context.Context, req *ListEntityReq, options ...larkcore.RequestOptionFunc) (*ListEntityResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListEntityIterator) Next() (bool, *Entity, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Entities) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Entities
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListEntityIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchEntityIterator struct {
	nextPageToken *string
	items         []*Entity
	index         int
	limit         int
	ctx           context.Context
	req           *SearchEntityReq
	listFunc      func(ctx context.Context, req *SearchEntityReq, options ...larkcore.RequestOptionFunc) (*SearchEntityResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchEntityIterator) Next() (bool, *Entity, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Entities) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Entities
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchEntityIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
