diff --git a/pages/assistant/chat-service.js b/pages/assistant/chat-service.js
index ef5598f..5f5e95f 100644
--- a/pages/assistant/chat-service.js
+++ b/pages/assistant/chat-service.js
@@ -434,6 +434,58 @@ export function activityOutlineGen(data) {
})
}
+/**
+ * AI 文件上传(喂给 Dify 开始节点的 file-list 变量)。
+ *
+ * @param {object} file `uni.chooseImage` / `uni.chooseMessageFile` 拿到的临时文件(需有 `path`)
+ * @param {string} [app] 应用代号(后端按代号选择 Dify 应用凭证)
+ *
+ * `app` 不是可选项而是**硬约束**:Dify 的 `/files/upload` 按应用鉴权,
+ * 文件只能被「上传时所用应用」的工作流引用,换个应用引用同一个 `upload_file_id`
+ * 会直接报 `Invalid upload file`(issue 14 实测:chat Key 上传 → 0.2s 失败,
+ * creativeAssistant Key 上传 → succeeded)。
+ *
+ * 后端 `/ai/file/upload` 不传 `app` 时保持旧行为(`type` 为空 → chat 凭证),
+ * 所以喂给创意助手 file-list 的附件**必须**传 `app: 'creativeAssistant'`。
+ */
+export function uploadAiFile(file, app) {
+ const token = getToken()
+ const formData = {
+ tenantId: DEFAULT_TENANT_ID
+ }
+ 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 || '上传失败'))
+ }
+ })
+ })
+}
+
export function buildWebSocketUrl(userId) {
const url = String(API_BASE_URL || '')
if (/^https?:\/\//.test(url)) {
diff --git a/pages/assistant/index.vue b/pages/assistant/index.vue
index e37ba1f..32489bb 100644
--- a/pages/assistant/index.vue
+++ b/pages/assistant/index.vue
@@ -22,7 +22,7 @@
- AI 助手
+ {{ assistantTitle }}
{{ activeChatTitle }} · {{ userName }}
@@ -49,9 +49,9 @@
- 你好,我是 AI 团委助手
+ 你好,我是 {{ assistantTitle }}
- 你可以直接提问团务流程问题,我会通过实时消息回复。
+ {{ assistantHint }}
@@ -112,6 +112,54 @@
{{ item.label }}
+
+ 文体
+ {{ item.label }}
+ 字数
+ {{ item.label }}
+
+
+
+ 图片比例
+ {{ item.label }}
+
+
+
+ 参考素材
+ {{ uploadingFiles ? '上传中...' : '添加附件' }}
+
+ 最多 {{ IMAGE_FILE_LIMIT }} 个,支持图片 / 视频 / 音频 / 文档
+
+
+
+ {{ item.name }}
+ 移除
+
+
+
+