[Feature] 聊天附件上传支持更多文件类型(xlsx/docx 等办公文档),失败时给出明确原因提示 #11

Closed
opened 2026-10-23 09:32:10 +08:00 by chenjieping · 3 comments

问题描述

在桌面端聊天窗口上传 .xlsx 附件时上传失败,界面仅显示一个警告图标的附件卡片(文件名截断显示),没有任何失败原因说明,也没有告知支持的文件类型范围。

复现步骤

  1. 打开 octopus 桌面端会话,点击附件上传(或拖拽)
  2. 选择一个 .xlsx 文件(约 16KB,普通测试用例表格)
  3. 附件卡片显示警告图标,上传失败

实际结果

  • 上传失败,无任何文字提示说明原因
  • 用户无从得知:是类型不支持?文件过大?还是其他限制

期望结果

  1. 类型支持:聊天附件支持常见办公文档类型,至少包括 .xlsx / .xls / .docx / .csv / .pptx
  2. 失败提示:不支持的类型在上传时明确提示"不支持的文件类型 xxx,当前支持:…",而不是只显示警告图标
  3. 建议(可选):对结构化文档(xlsx/docx),若能解析为文本/表格内容传给模型(类似本地文件读取的效果),比仅当作附件展示价值更大

影响说明

.xlsx/.docx 是日常协作高频格式(测试用例、需求文档等)。当前 workaround 是转 CSV 或直接给 Agent 本地文件路径(Agent 可正常解析),但对不了解 workaround 的用户是硬阻塞。

环境信息

  • 版本:octopus-release 最新版(2026-10)
  • 平台:macOS 桌面端
## 问题描述 在桌面端聊天窗口上传 `.xlsx` 附件时上传失败,界面仅显示一个警告图标的附件卡片(文件名截断显示),没有任何失败原因说明,也没有告知支持的文件类型范围。 ## 复现步骤 1. 打开 octopus 桌面端会话,点击附件上传(或拖拽) 2. 选择一个 `.xlsx` 文件(约 16KB,普通测试用例表格) 3. 附件卡片显示警告图标,上传失败 ## 实际结果 - 上传失败,无任何文字提示说明原因 - 用户无从得知:是类型不支持?文件过大?还是其他限制 ## 期望结果 1. **类型支持**:聊天附件支持常见办公文档类型,至少包括 `.xlsx` / `.xls` / `.docx` / `.csv` / `.pptx` 2. **失败提示**:不支持的类型在上传时明确提示"不支持的文件类型 xxx,当前支持:…",而不是只显示警告图标 3. **建议(可选)**:对结构化文档(xlsx/docx),若能解析为文本/表格内容传给模型(类似本地文件读取的效果),比仅当作附件展示价值更大 ## 影响说明 `.xlsx`/`.docx` 是日常协作高频格式(测试用例、需求文档等)。当前 workaround 是转 CSV 或直接给 Agent 本地文件路径(Agent 可正常解析),但对不了解 workaround 的用户是硬阻塞。 ## 环境信息 - 版本:octopus-release 最新版(2026-10) - 平台:macOS 桌面端
fourbroad self-assigned this 2026-10-24 20:35:57 +08:00
Owner

claim — session octopus-cli · branch workflow/session/issue-11-attachment-file-types · account fourbroad (atomic claim via script/claim.sh, #3327)

**claim** — session `octopus-cli` · branch `workflow/session/issue-11-attachment-file-types` · account `fourbroad` (atomic claim via script/claim.sh, #3327)
Owner

进展回链:已在主仓开出 PR — Octopus/octopus#6435(分支 workflow/session/issue-11-attachment-file-types,2 commits)。

分诊说明:您报告的 .xlsx 上传失败源于滞后的 release 构建——xlsx/xls/docx/csv 支持已于 2026-10-21 合入主线(#6295-#6297),更新构建后即可用。本 PR 补齐主线上真实存在的缺口:

  1. .pptx 端到端支持(此前被明确拒绝):客户端接受 + 服务端白名单与容器嗅探(fail-closed 防伪造)+ 解析为文本传给模型(officeparser,5s 超时/100k 字符截断)+ 演示文稿类型标签(18 语言)
  2. 上传失败原因可见(本工单核心痛点):失败附件卡现在直接显示服务器返回的具体原因(如 MIME type "x" is not allowed. Allowed: …,含支持类型清单),不再只有警告图标;完整错误保留在 tooltip
  3. 修复评审发现的回读缺陷:已存储的 pptx 附件下载时 Content-Type 错误(octet-stream → presentationml)

验证:服务端 102 测试 / 前端 535 测试全过,typecheck+lint 零告警;9 维度代码评审 2 轮收敛(0 BLOCKER)。

说明:.ppt(旧版二进制格式)暂不支持(解析库限制,工单仅要求 pptx);宏文档(docm/xlsm/xlsb)维持安全拒绝。

**进展回链**:已在主仓开出 PR — https://eightarms.net/Octopus/octopus/pulls/6435(分支 `workflow/session/issue-11-attachment-file-types`,2 commits)。 **分诊说明**:您报告的 `.xlsx` 上传失败源于滞后的 release 构建——xlsx/xls/docx/csv 支持已于 2026-10-21 合入主线(#6295-#6297),更新构建后即可用。本 PR 补齐主线上真实存在的缺口: 1. `.pptx` 端到端支持(此前被明确拒绝):客户端接受 + 服务端白名单与容器嗅探(fail-closed 防伪造)+ 解析为文本传给模型(officeparser,5s 超时/100k 字符截断)+ 演示文稿类型标签(18 语言) 2. **上传失败原因可见**(本工单核心痛点):失败附件卡现在直接显示服务器返回的具体原因(如 `MIME type "x" is not allowed. Allowed: …`,含支持类型清单),不再只有警告图标;完整错误保留在 tooltip 3. 修复评审发现的回读缺陷:已存储的 pptx 附件下载时 Content-Type 错误(octet-stream → presentationml) 验证:服务端 102 测试 / 前端 535 测试全过,typecheck+lint 零告警;9 维度代码评审 2 轮收敛(0 BLOCKER)。 说明:`.ppt`(旧版二进制格式)暂不支持(解析库限制,工单仅要求 pptx);宏文档(docm/xlsm/xlsb)维持安全拒绝。
Owner

已合并 ✅ — Octopus/octopus#6435(merge commit bdf8609d6,已入 main)。

合并前完成的附加修复:

  • main 合入的 source-assert-gate(#4693)要求新增源码断言标注 contract-assert —— 已为 10 处标记
  • storybook 的 @/context/prompt mock 缺 isPresentationMime 导出导致 check 构建失败 —— 已补齐并本地构建验证

交付内容(同前述评论):pptx 端到端支持 + 上传失败原因可见 + 回读 Content-Type 修复。CI required 检查(changes + check)最终 head afd1b7d 全绿后合并。下个 release 构建发布后,更新桌面端即可生效。

**已合并** ✅ — https://eightarms.net/Octopus/octopus/pulls/6435(merge commit `bdf8609d6`,已入 main)。 合并前完成的附加修复: - main 合入的 source-assert-gate(#4693)要求新增源码断言标注 `contract-assert` —— 已为 10 处标记 - storybook 的 `@/context/prompt` mock 缺 `isPresentationMime` 导出导致 check 构建失败 —— 已补齐并本地构建验证 交付内容(同前述评论):pptx 端到端支持 + 上传失败原因可见 + 回读 Content-Type 修复。CI required 检查(changes + check)最终 head `afd1b7d` 全绿后合并。下个 release 构建发布后,更新桌面端即可生效。
Sign in to join this conversation.
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Octopus/octopus-release#11