3.6 KiB
3.6 KiB
项目文档:气站合同附件上传 v1.0
1. 项目概述
- 项目:物联网智能瓶阀平台气站管理端。
- 本次功能:在气站管理端 5175 的配送合同新建、草稿编辑和详情页接入与平台总后台 5173 一致的受控 PDF 附件交互。
- 技术栈:Vue 3、TypeScript、Arco Design、Gin、GORM。
- 运行环境:前端
http://localhost:5175,后端/heqi/gas/v1。
附件继续复用 gasorder_contract.file_uri 保存服务端受控地址。浏览器只接收附件元数据和签名收据,不读取或提交内部存储路径。
2. 目录结构说明
platforms/
├── frontend/gas_admin/src/
│ ├── api/
│ │ ├── contract-attachment.ts # 气站域附件上传、清理和预览客户端
│ │ └── resources.ts # 将合同附件声明为专用文件字段
│ └── views/resource/
│ ├── ContractAttachmentField.vue # PDF 选择、拖拽、预览和移除控件
│ ├── use-contract-attachment.ts # 上传收据、并发版本和失败清理状态
│ └── ResourceRecordPage.vue # 标准记录页附件流程编排
├── backend/api/internal/
│ ├── logic/gas/gasorder.go # 气站范围包装与合同归属校验
│ └── routers/
│ ├── gas_business.go # 气站合同附件路由
│ └── gas_test.go # 路由回归测试
└── docs/
└── 06-气站管理系统需求.md # 气站附件需求和验收口径
3. 核心文件说明
frontend/gas_admin/src/views/resource/ResourceRecordPage.vue
- 新建和编辑页向字段组件传入合同附件状态。
- 保存前上传本地 PDF,并把签名收据加入合同载荷。
- 保存失败时清理临时文件;详情页显示附件可用状态和鉴权预览入口。
- 未保存附件变化纳入离开页面确认。
backend/api/internal/logic/gas/gasorder.go
- 上传和清理入口先验证当前登录账号仍关联有效气站。
- 下载入口额外校验合同属于当前气站,再复用现有受控 PDF 输出逻辑。
- 合同创建和更新继续复用既有绑定、并发版本和旧文件清理事务。
frontend/gas_admin/src/api/contract-attachment.ts
- API 默认前缀改为
/heqi/gas/v1,不再误用平台主管接口。 - 上传仅接受 PDF,预览返回 Blob,不暴露
file_uri。
4. 变更记录
- 将气站合同
file_uri字段由普通文本输入改为“合同附件”专用控件。 - 新增气站域上传、临时清理和鉴权预览路由。
- 补齐新建、草稿编辑、详情预览、替换、移除和失败回滚流程。
- 新增气站附件路由回归测试并同步需求验收项。
- 未新增数据库表、字段或依赖,平台总后台 5173 行为保持不变。
5. 维护指南
- 调整大小或文件类型时,前端预检与后端真实内容校验必须同步,后端校验始终是安全边界。
- 新增其他业务端附件能力时,应先做该业务端的数据范围校验,再复用受控存储能力,不得直接开放平台路由。
- 修改气站路由后运行后端路由测试;修改表单后运行类型检查、契约检查和生产构建。
- 人工验收至少覆盖:合法 PDF、新建保存、编辑替换、移除、无效类型、超限文件、跨气站下载和旧地址不可用提示。
6. 已知限制
- 当前仅支持单个 PDF,最大 10 MiB。
- 自动化浏览器没有气站登录态,本次未对真实受保护合同执行上传或读取;完整交互仍需使用测试气站账号验收。