You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

app_models.go 3.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package schsdk
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/types"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. "gitlink.org.cn/cloudream/common/utils/serder"
  6. )
  7. const (
  8. Role = "role"
  9. RoleServer = "server"
  10. RoleClient = "client"
  11. )
  12. type AppInstanceID int64
  13. type ClientID string
  14. type AppSetInfo struct {
  15. Apps []AppInfo `json:"apps"`
  16. }
  17. type AppInfo interface {
  18. GetLocalJobID() string
  19. GetAppInstanceID() int64
  20. }
  21. var AppInfoTypeUnion = types.NewTypeUnion[AppInfo](
  22. (*FederatedLearningAppInfo)(nil),
  23. (*SceneAPIAppInfo)(nil),
  24. (*OtherAppInfo)(nil),
  25. )
  26. var _ = serder.UseTypeUnionInternallyTagged(&AppInfoTypeUnion, "type")
  27. type AppInfoBase struct {
  28. LocalJobID string `json:"localJobID"`
  29. AppInstanceID int64 `json:"appInstanceID"` // 应用实例ID
  30. }
  31. func (i *AppInfoBase) GetLocalJobID() string {
  32. return i.LocalJobID
  33. }
  34. func (i *AppInfoBase) GetAppInstanceID() int64 {
  35. return i.AppInstanceID
  36. }
  37. // FederatedLearningAppInfo 云际联邦学习应用信息
  38. type FederatedLearningAppInfo struct {
  39. serder.Metadata `union:"federatedLearning"`
  40. AppInfoBase
  41. Type string `json:"type"`
  42. AppInstanceID AppInstanceID `json:"appInstanceID"`
  43. Name string `json:"name"`
  44. Description string `json:"description"`
  45. ClientCount int `json:"clientCount"` //参与者人数
  46. ServerJobInfo AIJobInfo `json:"serverJobInfo"` //服务端作业信息
  47. ClientJobInfo AIJobInfo `json:"clientJobInfo"` //客户端作业信息
  48. Role string `json:"role"` //角色,server/client
  49. IsDataReturn bool `json:"isDataReturn"` //是否需要数据回源
  50. DatasetBindID cdssdk.ObjectID `json:"datasetBindID"` //数据集绑定ID
  51. ClientIDs []ClientID `json:"clientIDs"` //参与者ID列表
  52. JoinedCount int64 `json:"joinedCount"` //已经参与的人数
  53. //用于回显数据
  54. ClientDatasets []interface{} `json:"clientDatasets"` //数据集列表
  55. ServerDataDistribute interface{} `json:"serverDataDistribute"` //server数据分发信息
  56. ClientDataDistribute interface{} `json:"clientDataDistribute"` //client数据分发信息
  57. }
  58. // SceneAPIAppInfo 场景化API聚合
  59. type SceneAPIAppInfo struct {
  60. serder.Metadata `union:"SceneAPI"`
  61. AppInfoBase
  62. Type string `json:"type"`
  63. Name string `json:"name"`
  64. Description string `json:"description"`
  65. Info SceneAPIInfo `json:"info"`
  66. }
  67. type SceneAPIInfo interface{}
  68. var SceneAPIInfoTypeUnion = types.NewTypeUnion[SceneAPIInfo](
  69. (*BindingAPIInfo)(nil),
  70. )
  71. var _ = serder.UseTypeUnionInternallyTagged(&SceneAPIInfoTypeUnion, "type")
  72. type SceneAPIInfoBase struct{}
  73. type BindingAPIInfo struct {
  74. serder.Metadata `union:"binding"`
  75. SceneAPIInfoBase
  76. Type string `json:"type"`
  77. UserID cdssdk.UserID `json:"userID"`
  78. LocalPath string `json:"localPath"`
  79. ObjectIDs []cdssdk.ObjectID `json:"objectIDs"`
  80. BindingInfo DataBinding `json:"bindingInfo"`
  81. }
  82. type OtherAppInfo struct {
  83. serder.Metadata `union:"other"`
  84. AppInfoBase
  85. Type string `json:"type"`
  86. Name string `json:"name"`
  87. Description string `json:"description"`
  88. }