feat(ai): 图片模式接入 file-list 参考素材上传(issue 14)
上游「AI 创意助手」开始节点有 file-list 变量 user_files(最多 5 个,允许
image/video/document/audio),但 web 端图片模式此前完全没有附件入口 —— 发送键左侧
那两个图标按钮没有绑定任何事件,是纯装饰。
- 聊天页图片模式新增「参考素材」区:添加附件(隐藏 input[type=file])、已选列表可
逐个移除、上限 5 个(对齐上游 max_length),按 MIME/扩展名判定
image/video/audio/document,发送时组装 file-list 契约
{transfer_method:"local_file", type, upload_file_id, url:""};上传中禁止发送
- uploadAiFile(file, app?) 支持应用代号;gxmu/creativeAssistant 表单页改传
creativeAssistant —— 该页用同一个接口上传却不指定应用,附件必然报
Invalid upload file(既有缺陷,本次一并修掉)
- CreativeAssistantUploadFile.upload_file_id 由 number 改为 string | number:
它实际是 Dify /files/upload 返回的 uuid 字符串,原声明与实现不符
- formatCreativeResult 清洗 video_message / photo_message:剥离 thinking 思维链、
丢弃 {"cover_prompt":…,"width":…} 中间产物 JSON,不再把上游 LLM 的原始输出
当正文展示(截图实测过:气泡里出现整段英文思考过程或裸 JSON)
- 删除发送键左侧两个无事件的装饰性图标按钮(.icon-btn 样式仍被消息操作按钮使用,保留)
This commit is contained in:
@@ -10,10 +10,18 @@ import type {
|
||||
|
||||
/**
|
||||
* AI文件上传
|
||||
*
|
||||
* @param app 应用代号(后端按代号选择 Dify 应用凭证)。
|
||||
* Dify 的 /files/upload 是**按应用鉴权**的:文件只能被上传时所用应用的工作流引用,
|
||||
* 换个应用引用同一个 upload_file_id 会报 `Invalid upload file`。
|
||||
* 所以喂给创意助手 file-list 变量的附件,必须用 app='creativeAssistant' 上传。
|
||||
*/
|
||||
export async function uploadAiFile(file: File) {
|
||||
export async function uploadAiFile(file: File, app?: string) {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
if (app) {
|
||||
formData.append('app', app);
|
||||
}
|
||||
const res = await request.post<ApiResult<FileRecord>>(
|
||||
MODULES_API_URL + '/ai/file/upload',
|
||||
formData
|
||||
|
||||
@@ -3,7 +3,13 @@ import type { FileRecord } from '@/api/system/file/model';
|
||||
export interface CreativeAssistantUploadFile {
|
||||
transfer_method: 'local_file';
|
||||
type: 'image' | 'document' | 'audio' | 'video';
|
||||
upload_file_id?: number;
|
||||
/**
|
||||
* Dify /files/upload 返回的文件 id。
|
||||
*
|
||||
* 注意它是 **uuid 字符串**(不是本地 FileRecord 的自增 id);原先声明为 number,
|
||||
* 与实际不符 —— 而且 Dify 按应用鉴权该 id,必须用同一应用的凭证上传才有效。
|
||||
*/
|
||||
upload_file_id?: string | number;
|
||||
url: string;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user