Commit Graph

2 Commits

Author SHA1 Message Date
weicw-dshsa 23a7f001cc fix(ai): 创意生成工作流失败时不再把原始报文吐给用户
Dify 以 workflow_finished + data.status=failed + outputs={} 收场时,后端只搬运
字段、从不读 status,把一个失败结果包成 success 下发,且把整包报文塞进 raw;
前端 formatCreativeResult 取不到业务字段就落到 text || stringifyUnknown(payload),
整段原始 JSON(含 workflow_id / task_id / req_id 与上游错误栈)进了聊天气泡。

- 新增 workflowStatus / isWorkflowFailed:失败时只回 status + 可读 answer,
  不下发 outputs / raw,不携带上游错误文本
- executeCreativeAssistant 的 workflow_finished 分支先判失败,命中则直接返回,
  不再用流式片段或 taskId 覆盖失败文案
- 失败报文顶层 answer 是 workflow_run_id(UUID),故失败文案用固定字符串,
  不取自 answer
- 新增 AiCreativeFailureResultTest:13 个用例,样本为 issue 原文的真实失败报文

Refs: .scratch/ai-assistant/issues/01-creative-assistant-raw-json-bubble.md
2026-09-24 03:44:08 +08:00
weicw-dshsa 8c994d9ed2 Dify 配置外置并切至内网实例
接口地址与各应用 API Key 原先硬编码在 AiController 与
KnowledgeBaseController 中,换环境要改代码、密钥还会散落在多处。
新增 DifyProperties 统一收敛到 dify 配置节点,并补上文档中缺失的
两个应用与知识库管理接口。

- 新增 DifyProperties,外置 base-url / 8 个应用 Key / 知识库密钥,
  默认值保持公网实例,本地开发不受影响
- 生产 profile 覆盖为内网 10.100.158.15,含全部 8 个应用 Key 与
  两个知识库的独立密钥
- 新增申报书生成、智能文档处理两个工作流接口(含文件上传版本),
  接入既有的 WebSocket 流式推送与停止机制
- KnowledgeBaseController 补齐知识库增删改查、文档管理与索引进度,
  并对文档状态动作加白名单,避免路径参数被任意拼接
- 修正 AI 内容创作的 number 变量名:Dify 侧为 Number,
  变量名大小写敏感,此前一直发送小写导致该功能缺参
- 生产下显式覆盖公网知识库 ID 的密钥:YAML 的 map 按键合并而非整体
  替换,不覆盖会残留指向公网实例的死密钥

工作流变量名取自内网实例实测(probe-dify.sh),其中申报书生成与
文档处理两组变量与公网命名习惯不一致,故以配置映射承载,改名只需
改 yml 而非改代码。

新增 18 项测试,覆盖配置绑定、profile 覆盖完整性(逐项断言 8 个
Key 均已覆盖且不残留公网 Key)与入参到 Dify inputs 的映射。
2026-09-21 19:46:49 +08:00