# 操作日志:配送点合同附件管理 操作时间:2026-08-22 操作类型:扩展、修改 影响模块:配送合同列表、独立记录页、配送域附件接口、项目文档 ## 操作前状态 配送合同列表直接展示 `/uploads/contracts/...`,新建和编辑页允许手填 `file_uri`;配送域没有附件上传、清理和鉴权读取路由。合同列表 API 也会返回内部附件路径。 ## 具体操作 1. 在配送域增加上传、临时清理和正式附件读取包装,并在读取前校验当前配送点合同归属。 2. 复用平台合同附件的 10 MiB PDF 校验、30 分钟签名收据、并发版本和安全响应头。 3. 配送合同列表经过统一敏感字段保护,删除 `file_uri`,增加 `has_attachment`。 4. 5176 新增 PDF 选择、拖拽、替换、确认移除、预览、下载和失败清理流程。 5. 新版前端保存时主动删除 `file_uri`,仅提交签名收据和附件版本。 6. 更新独立资源项目文档,纠正与原始敏感数据保护要求冲突的文本 URI 边界。 ## 行为变化 - 变更前:页面和网络响应暴露内部存储路径,管理员可手填任意 URI。 - 变更后:列表只显示附件状态和鉴权入口;详情可预览、下载;草稿可上传、替换和移除;非草稿只读。 - 兼容性:数据库字段、合同 CRUD 路径和后端旧 `file_uri` 输入保持兼容,5176 不再使用旧输入。 ## 验证结果 - `go test ./internal/logic/common ./internal/logic/delivery ./internal/logic/platform/gasorder ./internal/routers ./cmd/cli`:通过。 - `npm.cmd run type:check`:通过。 - `npm.cmd run resource-pages:check`:通过,详情 17、新建 9、编辑 5,并覆盖附件三条路由和前端签名收据编排。 - `npm.cmd run contract:check`、`npm.cmd run profile:check`:通过。 - `npm.cmd run build`:通过,2639 个模块完成生产构建。 - 后端已重建并监听 `12426`;浏览器会话当前停留在登录页,登录后的视觉回归待补。 ## 风险评估 - 临时上传成功但合同保存失败:前端调用签名清理接口,服务端仍有有效期兜底。 - 历史附件缺失或格式异常:详情显示需重传,启用操作继续由服务端拒绝。 - 并发编辑附件:附件版本与旧 URI 双重条件防止覆盖他人变更。 - 5173 列表响应的同类潜在泄露未在本次扩大处理,已登记为后续安全债务。