160 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Thrift
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Thrift
		
	
	
	
namespace go resource.common
 | 
						||
 | 
						||
enum ResType{
 | 
						||
    Plugin    = 1,
 | 
						||
    Workflow  = 2,
 | 
						||
    Imageflow = 3,
 | 
						||
    Knowledge = 4,
 | 
						||
    UI        = 5,
 | 
						||
    Prompt    = 6,
 | 
						||
    Database = 7,
 | 
						||
    Variable = 8,
 | 
						||
    Voice = 9,
 | 
						||
}
 | 
						||
 | 
						||
enum PublishStatus {
 | 
						||
    UnPublished = 1, // 未发布
 | 
						||
    Published   = 2, // 已发布
 | 
						||
}
 | 
						||
 | 
						||
enum ActionKey{
 | 
						||
    Copy         = 1, // 复制
 | 
						||
    Delete       = 2, // 删除
 | 
						||
    EnableSwitch = 3, // 启用/禁用
 | 
						||
    Edit         = 4, // 编辑
 | 
						||
    SwitchToFuncflow = 8, // 切换成funcflow
 | 
						||
    SwitchToChatflow = 9, // 切换成chatflow
 | 
						||
    CrossSpaceCopy = 10, // 跨空间复制
 | 
						||
}
 | 
						||
 | 
						||
enum ProjectResourceActionKey{
 | 
						||
    Rename    = 1,        //重命名
 | 
						||
    Copy  = 2,        //创建副本/复制到当前项目
 | 
						||
    CopyToLibrary = 3,   //复制到资源库
 | 
						||
    MoveToLibrary = 4,   //移动到资源库
 | 
						||
    Delete  = 5,        //删除
 | 
						||
    Enable = 6,   //启用
 | 
						||
    Disable = 7,   //禁用
 | 
						||
    SwitchToFuncflow = 8, // 切换成funcflow
 | 
						||
    SwitchToChatflow = 9, // 切换成chatflow
 | 
						||
    UpdateDesc = 10, // 修改描述
 | 
						||
}
 | 
						||
 | 
						||
enum ProjectResourceGroupType{
 | 
						||
    Workflow    = 1,
 | 
						||
    Plugin  = 2,
 | 
						||
    Data = 3,
 | 
						||
}
 | 
						||
 | 
						||
enum ResourceCopyScene {
 | 
						||
    CopyProjectResource    = 1,        //复制项目内的资源,浅拷贝
 | 
						||
    CopyResourceToLibrary    = 2,        //复制项目资源到Library,复制后要发布
 | 
						||
    MoveResourceToLibrary    = 3,        //移动项目资源到Library,复制后要发布,后置要删除项目资源
 | 
						||
    CopyResourceFromLibrary    = 4,        //复制Library资源到项目
 | 
						||
    CopyProject    = 5,                 //复制项目,连带资源要复制。复制当前草稿。
 | 
						||
    PublishProject    = 6,              //项目发布到渠道,连带资源需要发布(含商店)。以当前草稿发布。
 | 
						||
    CopyProjectTemplate    = 7,        // 复制项目模板。
 | 
						||
    PublishProjectTemplate    = 8,        // 项目发布到模板,以项目的指定版本发布成临时模板。
 | 
						||
    LaunchTemplate    = 9,        // 模板审核通过,上架,根据临时模板复制正式模板。
 | 
						||
    ArchiveProject = 10,        //    草稿版本存档
 | 
						||
    RollbackProject = 11,        // 线上版本加载到草稿,草稿版本加载到草稿
 | 
						||
    CrossSpaceCopy    = 12,        // 单个资源跨空间复制
 | 
						||
    CrossSpaceCopyProject = 13,        // 项目跨空间复制
 | 
						||
}
 | 
						||
 | 
						||
// Library资源操作
 | 
						||
struct ResourceAction{
 | 
						||
    // 一个操作对应一个唯一的key,key由资源侧约束
 | 
						||
    1: required ActionKey Key    (go.tag = "json:\"key\"", agw.key = "key")      ,
 | 
						||
    //ture=可以操作该Action,false=置灰
 | 
						||
    2: required bool      Enable (go.tag = "json:\"enable\"", agw.key = "enable"),
 | 
						||
}
 | 
						||
 | 
						||
// 前端用
 | 
						||
struct ResourceInfo{
 | 
						||
    1 : optional i64                  ResID               (agw.js_conv="str", agw.key = "res_id", api.js_conv="true", api.body="res_id")         , // 资源id
 | 
						||
    2 : optional ResType              ResType             (go.tag = "json:\"res_type\"", agw.key = "res_type")                        , // 资源类型
 | 
						||
// 资源子类型,由资源实现方定义。
 | 
						||
// Plugin:1-Http; 2-App; 6-Local;Knowledge:0-text; 1-table; 2-image;UI:1-Card
 | 
						||
    3 : optional i32                  ResSubType          (go.tag = "json:\"res_sub_type\"", agw.key = "res_sub_type")                ,
 | 
						||
    4 : optional string               Name                (go.tag = "json:\"name\"", agw.key = "name")                                , // 资源名称
 | 
						||
    5 : optional string               Desc                (go.tag = "json:\"desc\"", agw.key = "desc")                                , // 资源描述
 | 
						||
    6 : optional string               Icon                (go.tag = "json:\"icon\"", agw.key = "icon")                                , // 资源Icon,完整url
 | 
						||
    7 : optional i64                  CreatorID           (agw.js_conv="str", agw.key = "creator_id", api.js_conv="true", api.body="creator_id") , // 资源创建者
 | 
						||
    8 : optional string               CreatorAvatar       (go.tag = "json:\"creator_avatar\"", agw.key = "creator_avatar")            , // 资源创建者
 | 
						||
    9 : optional string               CreatorName         (go.tag = "json:\"creator_name\"", agw.key = "creator_name")                , // 资源创建者
 | 
						||
    10: optional string               UserName            (go.tag = "json:\"user_name\"", agw.key = "user_name")                      , // 资源创建者
 | 
						||
    11: optional PublishStatus        PublishStatus       (go.tag = "json:\"publish_status\"", agw.key = "publish_status")            , // 资源发布状态,1-未发布,2-已发布
 | 
						||
    12: optional i32                  BizResStatus        (go.tag = "json:\"biz_res_status\"", agw.key = "biz_res_status")            , // 资源状态,各类型资源自身定义
 | 
						||
    13: optional bool                 CollaborationEnable (go.tag = "json:\"collaboration_enable\"", agw.key = "collaboration_enable"), // 是否开启多人编辑
 | 
						||
    14: optional i64                  EditTime            (agw.key = "edit_time", api.js_conv="true", api.body="edit_time")                      , // 最近编辑时间, unix秒级时间戳
 | 
						||
    15: optional i64                  SpaceID             (agw.js_conv="str", agw.key = "space_id", api.js_conv="true", api.body="space_id")     , // 资源所属空间ID
 | 
						||
    16: optional map<string,string>   BizExtend           (go.tag = "json:\"biz_extend\"", agw.key = "biz_extend")                    , // 业务携带的扩展信息,以res_type区分,每个res_type定义的schema和含义不一样,使用前需要判断res_type
 | 
						||
    17: optional list<ResourceAction> Actions             (go.tag = "json:\"actions\"", agw.key = "actions")                          , // 不同类型的不同操作按钮,由资源实现方和前端约定。返回则展示,要隐藏某个按钮,则不要返回;
 | 
						||
    18: optional bool                 DetailDisable       (go.tag = "json:\"detail_disable\"", agw.key = "detail_disable")            , // 是否禁止进详情页
 | 
						||
    19: optional bool                 DelFlag             (go.tag = "json:\"del_flag\"", agw.key = "del_flag")                        , // [数据延迟优化]删除标识符,true-已删除-前端隐藏该item,false-正常
 | 
						||
}
 | 
						||
 | 
						||
struct ProjectResourceAction{
 | 
						||
    // 一个操作对应一个唯一的key,key由资源侧约束
 | 
						||
    1 : required ProjectResourceActionKey Key (go.tag = "json:\"key\"", agw.key = "key"),
 | 
						||
    //ture=可以操作该Action,false=置灰
 | 
						||
    2 : required bool Enable (go.tag = "json:\"enable\"", agw.key = "enable"),
 | 
						||
    // enable=false时,提示文案。后端返回Starling Key,注意放在同一个space下。
 | 
						||
    3: optional string Hint (go.tag = "json:\"hint\"", agw.key = "hint"),
 | 
						||
}
 | 
						||
 | 
						||
// 实现方提供展示信息
 | 
						||
struct ProjectResourceInfo{
 | 
						||
    // 资源id
 | 
						||
    1 : i64    ResID (api.js_conv="true", api.body="res_id", agw.js_conv="str", agw.key = "res_id")
 | 
						||
     // 资源名称
 | 
						||
    2 : string Name  (go.tag = "json:\"name\"", agw.key = "name")
 | 
						||
    // 不同类型的不同操作按钮,由资源实现方和前端约定。返回则展示,要隐藏某个按钮,则不要返回;
 | 
						||
    3 : list<ProjectResourceAction> Actions  (go.tag = "json:\"actions\"", agw.key = "actions"),
 | 
						||
    // 该用户是否对资源只读
 | 
						||
//    4: bool ReadOnly (go.tag = "json:\"read_only\"", agw.key = "read_only")
 | 
						||
    // 资源类型
 | 
						||
    5 : ResType ResType (go.tag = "json:\"res_type\"", agw.key = "res_type")     ,
 | 
						||
    // 资源子类型,由资源实现方定义。Plugin:1-Http; 2-App; 6-Local;Knowledge:0-text; 1-table; 2-image;UI:1-Card
 | 
						||
    6 : optional i32    ResSubType (go.tag = "json:\"res_sub_type\"", agw.key = "res_sub_type")      ,
 | 
						||
     // 业务携带的扩展信息,以res_type区分,每个res_type定义的schema和含义不一样,使用前需要判断res_type
 | 
						||
    7 : optional map<string, string> BizExtend (go.tag = "json:\"biz_extend\"", agw.key = "biz_extend"),
 | 
						||
    // 资源状态,各类型资源自身定义。前端与各资源方约定。
 | 
						||
    8 : optional i32   BizResStatus (go.tag = "json:\"biz_res_status\"", agw.key = "biz_res_status")      ,
 | 
						||
    // 当前资源的编辑态版本
 | 
						||
    9 : optional string VersionStr(go.tag = "json:\"version_str\"", agw.key = "version_str")
 | 
						||
}
 | 
						||
 | 
						||
struct ProjectResourceGroup{
 | 
						||
    1 : ProjectResourceGroupType GroupType (go.tag = "json:\"group_type\"", agw.key = "group_type")     ,  // 资源分组
 | 
						||
    2 : optional list<ProjectResourceInfo> ResourceList (go.tag = "json:\"resource_list\"", agw.key = "resource_list"),
 | 
						||
}
 | 
						||
 | 
						||
struct ResourceCopyFailedReason {
 | 
						||
    1 : i64 ResID (agw.js_conv="str", agw.key = "res_id", api.js_conv="true", api.body="res_id")
 | 
						||
    2 : ResType ResType (go.tag = "json:\"res_type\"", agw.key = "res_type")
 | 
						||
    3 : string ResName (go.tag = "json:\"res_name\"", agw.key = "res_name")
 | 
						||
    4 : string Reason (go.tag = "json:\"reason\"", agw.key = "reason")
 | 
						||
    // 废弃
 | 
						||
    5 : optional i64 PublishVersion(go.tag = "json:\"publish_version\"", agw.key = "publish_version")
 | 
						||
    // 资源的当前版本,为nil或空字符串都看作是最新版本。项目发布版本或Library发布版本。
 | 
						||
    6 : optional string PublishVersionStr(go.tag = "json:\"publish_version_str\"", agw.key = "publish_version_str")
 | 
						||
}
 | 
						||
 | 
						||
enum TaskStatus{
 | 
						||
    Successed = 1
 | 
						||
    Processing = 2
 | 
						||
    Failed = 3
 | 
						||
    Canceled = 4
 | 
						||
}
 | 
						||
 | 
						||
struct ResourceCopyTaskDetail{
 | 
						||
    1: string task_id
 | 
						||
    2: TaskStatus status // 任务状态
 | 
						||
    3 : i64 res_id  (agw.js_conv="str", api.js_conv="true") // 复制后的资源id
 | 
						||
    4 : ResType res_type
 | 
						||
    5 : ResourceCopyScene scene,
 | 
						||
    6: optional string res_name, // 复制前的资源名称
 | 
						||
}
 |