企业微信二次开发中的文件系统设计:媒体资源、临时文件与业务附件
企业微信二次开发中,文件能力经常被当作附属功能处理。比如上传图片、下载视频、发送文件、获取语音、处理临时素材、大文件转存等。但在真实业务里,文件系统往往会成为消息、工单、外部群、素材库和审计系统之间的重要连接层。
客户发来的截图可能是工单证据,员工发送的文档可能是客户资料,外部群里的海报可能属于运营素材,语音消息可能需要转成文本后进入问题识别。文件不能只作为消息字段存在,而应该被当成独立资源管理。
一、文件资源要独立建模
文件资源表应独立于消息表、工单表和素材表。消息、工单、素材任务只是引用文件资源。
文件资源通常需要记录:
文件名
文件类型
媒体类型
文件大小
来源渠道
来源消息
所属企业
所属账号
存储位置
下载状态
上传状态
有效期
校验信息
创建时间
访问权限等级
这样设计可以让同一个文件被多个业务对象引用,也方便后续做归档、清理和权限控制。
二、临时文件和长期文件要分开
企业微信相关文件可能分为临时文件和长期文件。
临时文件用于一次消息发送、短期下载、转存中间过程。长期文件用于工单附件、客户资料、素材版本、审计记录等。
这两类文件的保存策略不同。临时文件可以定期清理,长期文件需要归档和权限控制。不能把所有文件都永久保存,也不能把所有文件都短期清理。
文件进入系统时,应根据业务场景判断用途。客户问题截图如果关联工单,就可能变成长期附件;普通群聊图片如果没有业务关联,可以按周期归档或清理。
三、文件处理必须异步化
文件下载、上传、转存、大文件处理都可能耗时较长。文件任务不适合在消息回调或用户请求中同步完成。
文件任务应有明确状态:
待下载
下载中
下载成功
下载失败
待上传
上传中
上传成功
上传失败
文件过期
需人工处理
失败原因也要记录清楚。比如远端文件过期、网络失败、存储失败、格式不支持、文件过大、权限不足。
有了状态,系统才能重试和补偿。
四、文件与消息的关系
文件通常通过消息进入系统。消息表中可以保存文件资源 ID,而不是直接保存文件全部信息。
这样,当消息进入工单、客户档案或素材库时,可以复用同一个文件资源。
如果文件下载失败,消息仍然可以入库,只是文件资源处于失败状态。后续可以重新下载或标记为不可用。
五、文件与工单的关系
在客户服务场景中,文件经常作为工单附件。客户发的截图、日志、凭证、视频,都可能用于问题定位。
但系统不应该把所有客户文件都自动变成工单附件。更好的方式是生成候选附件,由人工确认或根据规则关联已有工单。
如果客户当前有未关闭工单,新的截图可以自动关联为补充材料。如果没有工单,则可以进入候选区。
六、素材库与版本
一些文件会被重复使用,比如活动海报、产品说明、售后指引、操作文档。这类文件适合进入素材库。
素材必须有版本。某个素材用于历史群发任务后,即使后续素材更新,历史任务仍应引用旧版本。否则复盘时无法还原当时发送内容。
素材删除也不应物理删除历史引用,而应停用或归档。
七、文件权限
文件权限比文本消息更敏感。文件可能包含合同、付款凭证、客户截图、内部文档、日志等内容。
系统可以区分预览权限和下载权限。普通员工只能查看自己负责范围内文件,主管查看团队范围,管理员处理异常和归档。
导出和下载操作应记录审计日志。
八、总结
企业微信二次开发中的文件系统,不是简单上传下载,而是媒体资源管理。它需要独立建模、异步处理、业务关联、保存周期、版本管理和权限审计。
文件能力一旦设计清楚,消息、工单、外部群、素材库和客户档案之间的数据链路会稳定很多。否则文件会成为系统中最难追踪的一类数据。
