feat(canvas): 画布工作区 - 整合侧栏与风格预设并修复提示词回填

选择性整合 #547,保留主分支节点与工具条设计。新增默认折叠的节点、资产、任务和历史面板,风格与预设保留在节点内,移除重复入口。

补齐工具权限、提示词解析、资源引用保护及数据库迁移,修复提示词清空和连续编辑后的生成配置同步。

验证:前端全量 1925 项测试、构建、类型检查及 lint 通过;后端 go test ./... 通过。真实模型、PostgreSQL 实库与登录态页面验收仍待进行。

Refs #547

Co-authored-by: bensharp <bensharp@qq.com>
This commit is contained in:
ddCatandbensharp committed 2026-09-20 16:40:08 +08:00
1 parent be5f2733b6
commit e93bf3ca39
66 files changed
+6127 -97

No files matched your search

+18
View File
@@ -44,6 +44,24 @@ func (s *Service) CreateTask(userID string, req CreateTaskRequest) (*model.Task,
if err != nil {
return nil, err
}
// Fail admission before queueing or charging; the worker validates again in
// case a tool is deleted or its visibility changes while queued.
toolMode, _ := normalizedInput["mode"].(string)
if toolMode == "" {
if strings.HasPrefix(taskType, "video_") || taskType == "canvas_video" {
toolMode = "video"
} else if taskType == "canvas_image" {
toolMode = "image"
}
}
if _, err := s.ResolveToolMentionTokens(userID, toolMode, prompt); err != nil {
return nil, err
}
if inputPrompt, ok := normalizedInput["prompt"].(string); ok && inputPrompt != prompt {
if _, err := s.ResolveToolMentionTokens(userID, toolMode, inputPrompt); err != nil {
return nil, err
}
}
var routed *RoutedModel
logicalModelID := strings.TrimSpace(req.LogicalModelID)