添加公众号助手
This commit is contained in:
@@ -58,6 +58,8 @@ func Init(dbPath string) (*gorm.DB, error) {
|
||||
&model.WorkerTask{},
|
||||
&model.WorkerArtifact{},
|
||||
&model.WorkerRun{},
|
||||
&model.OfficialAccountArticle{},
|
||||
&model.OfficialAccountHotspot{},
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"eaisalestrain/backend/internal/auth"
|
||||
"eaisalestrain/backend/internal/config"
|
||||
@@ -381,6 +381,30 @@ func seedSpecialists() error {
|
||||
State: "active",
|
||||
SortOrder: 40,
|
||||
},
|
||||
{
|
||||
Key: "wechat-official-account",
|
||||
Label: "公众号助手",
|
||||
Tier: "generic",
|
||||
WorkerType: "dw",
|
||||
Route: "/apps/wechat-official-account",
|
||||
Summary: "热点选题、标题、提纲、正文四步创作工作流",
|
||||
WorkStatus: "4 个节点可执行",
|
||||
RiskLabel: "0 个异常",
|
||||
Color: "#2563eb",
|
||||
Stage: "正文创作",
|
||||
Progress: 0,
|
||||
MarketTag: "已安装",
|
||||
Version: "v1.0",
|
||||
ConnectorScope: "连接知识库 / 公众号工作区上下文",
|
||||
PermissionScope: "文章任务创建、步骤执行、草稿保存、人工确认",
|
||||
ResourceBindings: "公众号工作流、知识库、事项运行记录、文章草稿",
|
||||
InfoSources: "选题关键词、目标受众、文章目标、风格要求",
|
||||
BaseSkills: "推荐热点选题、标题生成、提纲生成、正文创作",
|
||||
AIAssistance: "按步骤生成中间结果,并展示进度与可追溯输出",
|
||||
GeneratedSkills: "公众号选题建议、标题建议、文章提纲、正文草稿",
|
||||
State: "active",
|
||||
SortOrder: 45,
|
||||
},
|
||||
{
|
||||
Key: "contract-review",
|
||||
Label: "合同审查专员",
|
||||
@@ -635,40 +659,40 @@ func ensureMediaLink(src, dst string) error {
|
||||
if err := os.MkdirAll(filepath.Dir(dst), 0o755); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Symlink(absSrc, dst); err == nil {
|
||||
return nil
|
||||
} else if shouldCopySeedMedia(err) {
|
||||
return copySeedMedia(absSrc, dst)
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
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")
|
||||
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()
|
||||
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()
|
||||
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()
|
||||
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