feat: 同步知识库与工作台相关改动
This commit is contained in:
@@ -35,6 +35,8 @@ func Init(dbPath string) (*gorm.DB, error) {
|
||||
&model.Product{},
|
||||
&model.Course{},
|
||||
&model.MediaFile{},
|
||||
&model.KnowledgeSpace{},
|
||||
&model.KnowledgeFAQ{},
|
||||
&model.KnowledgeChunk{},
|
||||
&model.Question{},
|
||||
&model.ExamPaper{},
|
||||
@@ -53,6 +55,9 @@ func Init(dbPath string) (*gorm.DB, error) {
|
||||
&model.Notification{},
|
||||
&model.StudyNote{},
|
||||
&model.Specialist{},
|
||||
&model.WorkerTask{},
|
||||
&model.WorkerArtifact{},
|
||||
&model.WorkerRun{},
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"eaisalestrain/backend/internal/auth"
|
||||
"eaisalestrain/backend/internal/config"
|
||||
@@ -633,7 +635,40 @@ func ensureMediaLink(src, dst string) error {
|
||||
if err := os.MkdirAll(filepath.Dir(dst), 0o755); err != nil {
|
||||
return err
|
||||
}
|
||||
return os.Symlink(absSrc, dst)
|
||||
if err := os.Symlink(absSrc, dst); err == nil {
|
||||
return nil
|
||||
} else if shouldCopySeedMedia(err) {
|
||||
return copySeedMedia(absSrc, dst)
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func shouldCopySeedMedia(err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
// Windows 普通终端默认没有创建符号链接权限,开发环境回退为复制文件即可。
|
||||
return runtime.GOOS == "windows" || strings.Contains(strings.ToLower(err.Error()), "privilege")
|
||||
}
|
||||
|
||||
func copySeedMedia(src, dst string) error {
|
||||
in, err := os.Open(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer in.Close()
|
||||
|
||||
out, err := os.Create(dst)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
if _, err := io.Copy(out, in); err != nil {
|
||||
return err
|
||||
}
|
||||
return out.Close()
|
||||
}
|
||||
|
||||
func firstExistingPath(paths ...string) string {
|
||||
|
||||
Reference in New Issue
Block a user