import { API_BASE_URL, apiRequest, getToken } from '../assistant/chat-service' export function creativeAssistant(data) { return apiRequest({ url: `${API_BASE_URL}/ai/creativeAssistant`, method: 'POST', data, withTenant: true, timeout: 600000 }) } /** * AI 文件上传(喂给 Dify 开始节点的 file-list 变量)。 * * @param {object} file `uni.chooseMessageFile` 拿到的临时文件(需有 `path`) * @param {string} [app] 应用代号(后端按代号选择 Dify 应用凭证) * * `app` 不是可选项而是**硬约束**:Dify 的 `/files/upload` 按应用鉴权, * 文件只能被「上传时所用应用」的工作流引用。不传 `app` 时后端走旧逻辑 * (`type` 为空 → chat 凭证),本页附件必然报 `Invalid upload file`(issue 14 实测)。 */ export function uploadAiFile(file, app) { const token = getToken() const formData = { tenantId: '10049' } if (app) { formData.app = app } return new Promise((resolve, reject) => { uni.uploadFile({ url: `${API_BASE_URL}/ai/file/upload`, filePath: file.path, name: 'file', header: token ? { Authorization: token } : {}, formData, success: (response) => { try { const result = JSON.parse(response.data || '{}') if (result.code === 0 && result.data) { resolve(result.data) return } reject(new Error(result.message || '上传失败')) } catch (error) { reject(new Error('上传响应解析失败')) } }, fail: (error) => { reject(new Error(error.errMsg || '上传失败')) } }) }) }