s_dataset.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package schema
  2. import "time"
  3. // Dataset Dataset对象
  4. type Dataset struct {
  5. RecordID string `json:"record_id"` // 记录id
  6. OrgId string `json:"org_id"` // 归属组织id(共享知识库可为空)
  7. OrgName string `json:"org_name"` // 归属组织名称
  8. Name string `json:"name"` // 名称
  9. Type int `json:"type"` // 1 公共/共享 2 企业 3 个人
  10. Status bool `json:"status"` // 状态
  11. FileCount int `json:"file_count"` // 文件数量
  12. Files DatasetFiles `json:"files"` // 文件列表
  13. RagDataId string `json:"rag_data_id"` // ragFlow知识库id
  14. CreatorId string `json:"creator_id"` // 创建人id
  15. CreatorName string `json:"creator_name"` // 创建人名称
  16. CreatedAt time.Time `json:"created_at"` // 创建时间
  17. Sequence int `json:"sequence"` // 排序值
  18. }
  19. // DatasetQueryParam 查询条件
  20. type DatasetQueryParam struct {
  21. OrgId string
  22. LikeName string
  23. RecordIds []string
  24. Type int // 0 表示不按类型筛选
  25. Types []int // 按多种类型筛选
  26. }
  27. // DatasetQueryOptions Dataset对象查询可选参数项
  28. type DatasetQueryOptions struct {
  29. PageParam *PaginationParam // 分页参数
  30. }
  31. type Datasets []*Dataset
  32. // DatasetQueryResult Dataset对象查询结果
  33. type DatasetQueryResult struct {
  34. Data Datasets
  35. PageResult *PaginationResult
  36. }
  37. func (a Datasets) ToRecordIds() []string {
  38. recordIds := make([]string, len(a))
  39. for k, v := range a {
  40. recordIds[k] = v.RecordID
  41. }
  42. return recordIds
  43. }
  44. func (a Datasets) ToRagDataIds() []string {
  45. Ids := make([]string, len(a))
  46. for k, v := range a {
  47. Ids[k] = v.RagDataId
  48. }
  49. return Ids
  50. }
  51. func (a Datasets) ToOrgIds() []string {
  52. Ids := make([]string, len(a))
  53. for k, v := range a {
  54. Ids[k] = v.OrgId
  55. }
  56. return Ids
  57. }
  58. // FillCreator 填充创建者信息
  59. func (a Datasets) FillCreator(users Users) {
  60. for _, o := range a {
  61. for _, u := range users {
  62. if o.CreatorId == u.RecordID {
  63. o.CreatorName = u.RealName
  64. continue
  65. }
  66. }
  67. }
  68. }
  69. // ToMap
  70. func (a Datasets) ToMap() map[string]*Dataset {
  71. m := make(map[string]*Dataset)
  72. for _, item := range a {
  73. m[item.RecordID] = item
  74. }
  75. return m
  76. }
  77. // AvailableDatasets 可用知识库(按 type 分桶)
  78. // 业务场景:
  79. // - 新建企业:查询全部公共/共享知识库(PublicDatasets)
  80. // - 为企业新增管理员/员工:查询该企业可访问的全部知识库
  81. // (被分配的共享 PublicDatasets + 企业自建 OrgDatasets)
  82. type AvailableDatasets struct {
  83. PublicDatasets Datasets `json:"public_datasets"` // 公共/共享(type=1)
  84. OrgDatasets Datasets `json:"org_datasets"` // 企业自建(type=2)
  85. }