ADR-007:教学附件检测与受保护存储¶
Date: 2026-11-04 Status: Accepted,依据用户批准教学提案及持续实施授权;不声称另有评审人。
Context¶
教师配置的材料包含正文、PDF、Office、图片、文本、源码与Notebook。通用类型识别应复用成熟库,不自研解析器。
Decision¶
采用 Apache Tika Core 3.2.3 仅作 MIME 检测,不引入文档解析包;其 Apache-2.0 许可与现有应用兼容。版本与使用依据为 官方入门及检测说明,本轮访问2026-11-04。DOCX进一步用JDK ZIP目录核对必要条目、不解压;Notebook用现有Jackson校验JSON结构;文本使用JDK严格UTF-8解码。类型检测不是恶意内容扫描,不能宣称附件无害。
在首期单机、小文件上限20MiB、每份最多5个的约束下,复用PostgreSQL受保护bytea存储和事务,避免文件与报告提交跨系统原子性问题。数据库由infra现有命名卷持久化。总量按任务和学生限制,未引用上传需删除或替换后可清理;文件标识不提供公开URL。
所有下载重新检查当前成员/负责人和报告引用,强制attachment、application/octet-stream与nosniff,不内嵌预览或执行。用户侧下载材料视为不可信文件。不新增扫描服务或对象存储;若需要无害化或大文件另评审。
Alternatives¶
公开Web目录无法统一撤权;本地文件加元数据涉及事务孤儿与额外卷;对象存储增加当前不必要依赖。数据库仅在当前明确上限内采用,不作为无限文件服务。
Consequences¶
数据库备份包含材料,读写内存受单文件及请求上限约束。无在线批注、解压、Office执行或Notebook执行。检测失败拒绝接收。批改和提交引用不可变文件,草稿中的未提交文件仅本人可读。
Reverts¶
若容量需要迁移存储,新建ADR并提供事务迁移与授权回归,不改变公开API语义。