来源:docs/PLATFORM_GAPS_FROM_TEMPLATES.md 第 3 + 第 28 条(P0,合并)。
实证发现自 contracts / compliance / procurement / helpdesk 4 个模板。
本 issue 把缺陷 #3(单文件字段无上传 UI)与 #28(附件 / 附件列表)合并处理:两者是同一组件能力的两个 step(单文件 → 多文件 + 拖拽 + 缩略图)。
现象
file 字段类型存在于 spec 里,但没有端到端可用的上传 UI:表单 / 详情页里看不到「上传」按钮。
- 没有「附件列表 / 多文件」字段类型:合同附件、整改证据、报销发票、客户截图全部无落地。
- 即使勉强通过 API 上传到 storage,UI 也无法预览、下载、删除。
复现
# contracts 模板 contracts_contract 对象上加:
{ name: 'signed_pdf', type: 'file' }
# pnpm dev 后打开记录详情页 — 字段呈现为空白或被吞掉,没有上传控件
当前 workaround
contracts 在 README 里写「附件请通过外部链接(OneDrive / Notion)记录 URL」。
compliance 把证据材料降级成 textarea,让用户贴链接。
helpdesk 直接不实现客户截图。
均不符合企业级体验。
业务覆盖矩阵
| 场景 |
文件数 |
类型 |
备注 |
| 合同签署 PDF |
1-3 |
pdf |
主合同 + 附录 |
| 整改证据 |
多 |
image / pdf / docx |
多次补充 |
| 报销凭证 |
多 |
image / pdf |
拍照为主 |
| 客服截图 |
0-N |
image |
高频 |
| KB 文章配图 |
N |
image |
富文本内嵌 |
| 工单附件 |
0-N |
任意 |
含日志 zip |
建议范围
M1:file 单文件字段端到端
- spec:
file 字段在 form / detail / list 都有渲染:拖拽 / 选择 / 进度 / 替换 / 下载 / 删除
- storage 后端:用现成
StorageServicePlugin,先 local fs,扩展点支持 S3 / OSS
- 显示:列表小 chip(含文件名 + size),详情大卡片(含预览 thumbnail)
M2:attachment_list 字段类型(多文件)
- spec 新增字段类型
attachment_list,子项是 { file, name, mime, size, uploadedBy, uploadedAt, caption? }
- UI:拖拽多文件 / 排序 / 单独删除 / 内联预览
M3:与 message composer 集成
M4:访问控制
- 通过 sharing 规则继承父记录权限
- 短时签名 URL 防止越权直链
验收
关联
现象
file字段类型存在于 spec 里,但没有端到端可用的上传 UI:表单 / 详情页里看不到「上传」按钮。复现
当前 workaround
contracts在 README 里写「附件请通过外部链接(OneDrive / Notion)记录 URL」。compliance把证据材料降级成 textarea,让用户贴链接。helpdesk直接不实现客户截图。均不符合企业级体验。
业务覆盖矩阵
建议范围
M1:
file单文件字段端到端file字段在 form / detail / list 都有渲染:拖拽 / 选择 / 进度 / 替换 / 下载 / 删除StorageServicePlugin,先 local fs,扩展点支持 S3 / OSSM2:
attachment_list字段类型(多文件)attachment_list,子项是{ file, name, mime, size, uploadedBy, uploadedAt, caption? }M3:与 message composer 集成
M4:访问控制
验收
file字段在表单 / 详情 / 列表都可用attachment_list字段在 spec + UI 全栈打通helpdesk模板:message 上挂 attachment_list,客服可上传截图 + 客户能看到contracts:signed_pdf 单文件字段,可上传、预览、下载compliance:证据 attachment_list,外审 portal 只读访问关联
StorageServicePlugin