// Package dto - 话术DTO // 功能:话术的增删改查、绑定/解绑客服账号的请求响应结构体 package dto import ( "customer-server/model/entity" "gitea.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" ) // AddSpeechcraftReq 添加话术 type AddSpeechcraftReq struct { g.Meta `path:"/add" method:"post" tags:"话术管理" summary:"添加话术" dc:"创建新的客服话术模板"` // 路由: POST /speechcraft/add Tag string `json:"tag" v:"required"` // 标签 Content string `json:"content" v:"required"` // 内容 Direction string `json:"direction"` // 咨询方向(气血、减肥、护肤等) AccountName string `json:"accountName,omitempty"` // 客服账号名称(可选,用于绕过gateway时查询tenantId) TenantId interface{} `json:"tenantId,omitempty"` // 租户ID(可选,不传则使用默认值1) // 状态机字段 Stage int `json:"stage"` // 触发阶段(0=初始) Status string `json:"status"` // 触发行为(click/keyword/空=任意) Keywords []string `json:"keywords"` // 触发关键字(空=任意) NextStage int `json:"nextStage"` // 下一阶段(-1=结束) Platform string `json:"platform"` // 平台(xiaohongshu) } type AddSpeechcraftRes struct { Id string `json:"id"` } // UpdateSpeechcraftReq 更新话术 type UpdateSpeechcraftReq struct { g.Meta `path:"/update" method:"post" tags:"话术管理" summary:"更新话术" dc:"更新话术模板内容"` // 路由: POST /speechcraft/update Id string `json:"id" v:"required"` // ID Tag string `json:"tag"` // 标签 Content string `json:"content"` // 内容 // 状态机字段 Stage *int `json:"stage"` // 触发阶段 Status *string `json:"status"` // 触发行为 Keywords []string `json:"keywords"` // 触发关键字 NextStage *int `json:"nextStage"` // 下一阶段 Platform *string `json:"platform"` // 平台 } // DeleteSpeechcraftReq 删除话术 type DeleteSpeechcraftReq struct { g.Meta `path:"/delete" method:"post" tags:"话术管理" summary:"删除话术" dc:"删除指定话术模板"` // 路由: POST /speechcraft/delete Id string `json:"id" v:"required"` // ID } // GetSpeechcraftReq 获取单个话术 type GetSpeechcraftReq struct { g.Meta `path:"/one" method:"get" tags:"话术管理" summary:"获取话术详情" dc:"根据ID获取单个话术模板"` // 路由: GET /speechcraft/one Id string `json:"id" v:"required"` // ID } // ListSpeechcraftReq 获取话术列表 type ListSpeechcraftReq struct { g.Meta `path:"/list" method:"get" tags:"话术管理" summary:"获取话术列表" dc:"分页查询话术模板,支持按标签、内容筛选"` // 路由: GET /speechcraft/list beans.Page Tag string `json:"tag"` // 筛选:标签 Content string `json:"content"` // 筛选:内容 Stage *int `json:"stage"` // 筛选:阶段 Platform string `json:"platform"` // 筛选:平台 } type ListSpeechcraftRes struct { List []*entity.Speechcraft `json:"list"` Total int `json:"total"` } // BindSpeechcraftReq 绑定话术到客服账号请求 type BindSpeechcraftReq struct { g.Meta `path:"/bind" method:"post" tags:"话术管理" summary:"绑定话术" dc:"将话术绑定到客服账号"` SpeechcraftId string `json:"speechcraftId" v:"required#话术ID不能为空"` AccountNames []string `json:"accountNames" v:"required#客服账号名称列表不能为空"` } // BindSpeechcraftRes 绑定话术响应 type BindSpeechcraftRes struct { SuccessCount int `json:"successCount"` // 成功绑定数量 AlreadyBound []string `json:"alreadyBound"` // 已绑定的客服账号ID NotFound []string `json:"notFound"` // 不存在的客服账号ID Message string `json:"message"` // 提示信息 } // UnbindSpeechcraftReq 解绑话术请求 type UnbindSpeechcraftReq struct { g.Meta `path:"/unbind" method:"post" tags:"话术管理" summary:"解绑话术" dc:"将话术从客服账号解绑"` SpeechcraftId string `json:"speechcraftId" v:"required#话术ID不能为空"` AccountName string `json:"accountName" v:"required#客服账号名称不能为空"` } // UnbindSpeechcraftRes 解绑话术响应 type UnbindSpeechcraftRes struct { Success bool `json:"success"` Message string `json:"message"` }