Files
platforms/docs/项目文档_气站合同附件上传_v1.0.md
2026-08-18 21:52:00 +08:00

72 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目文档:气站合同附件上传 v1.0
## 1. 项目概述
- 项目:物联网智能瓶阀平台气站管理端。
- 本次功能:在气站管理端 5175 的配送合同新建、草稿编辑和详情页接入与平台总后台 5173 一致的受控 PDF 附件交互。
- 技术栈Vue 3、TypeScript、Arco Design、Gin、GORM。
- 运行环境:前端 `http://localhost:5175`,后端 `/heqi/gas/v1`
附件继续复用 `gasorder_contract.file_uri` 保存服务端受控地址。浏览器只接收附件元数据和签名收据,不读取或提交内部存储路径。
## 2. 目录结构说明
```text
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。
- 自动化浏览器没有气站登录态,本次未对真实受保护合同执行上传或读取;完整交互仍需使用测试气站账号验收。