52 lines
3.1 KiB
Markdown
52 lines
3.1 KiB
Markdown
# 操作日志:气站合同附件上传
|
||
|
||
操作时间:2026-08-18 21:43:42
|
||
操作类型:扩展
|
||
影响模块:气站管理端 5175、气站 API 合同附件路由、气站需求文档
|
||
|
||
## 操作前状态
|
||
|
||
- 5175 配送合同表单把 `file_uri` 渲染为“附件地址”文本输入框。
|
||
- 气站前端已存在从 5173 复制的附件控件和状态逻辑,但标准记录页未接线,附件客户端默认地址仍误指向平台主管 `/heqi/platform/v1`。
|
||
- 后端只有平台主管附件专用路由;气站合同创建和更新虽复用平台业务逻辑,但没有气站鉴权域的上传、清理与预览入口。
|
||
|
||
## 具体操作
|
||
|
||
1. 将气站合同字段声明为 `contract-file`,在标准记录页接入选择、拖拽、预览、替换、移除、失败清理和未保存提示。
|
||
2. 将气站附件客户端默认 API 前缀修正为 `/heqi/gas/v1`。
|
||
3. 在气站 API 新增上传、临时清理和预览路由;上传与清理验证当前气站账号,预览额外校验合同归属。
|
||
4. 新增气站附件路由回归测试,并同步气站需求和项目维护文档。
|
||
|
||
## 操作后状态
|
||
|
||
- 5175 合同新建和草稿编辑页显示单 PDF 上传控件,不再允许手填内部附件地址。
|
||
- 合同详情页可通过鉴权 Blob 预览附件;旧地址不可用时提示重新上传。
|
||
- 气站 JWT 只访问气站域附件接口,跨气站合同在下载前被归属校验拦截。
|
||
- 5173 平台总后台、合同数据库结构和公共合同接口保持兼容。
|
||
|
||
## 代码变更
|
||
|
||
- `backend/api/internal/logic/gas/gasorder.go`:新增 `UploadGasorderContractAttachment`、`CleanupGasorderContractAttachment`、`ServeGasorderContractAttachment`。
|
||
- `backend/api/internal/routers/gas_business.go`:新增 3 条合同附件路由。
|
||
- `backend/api/internal/routers/gas_test.go`:新增 `TestGasContractAttachmentRoutes`。
|
||
- `frontend/gas_admin/src/api/contract-attachment.ts`:改用气站 API 前缀。
|
||
- `frontend/gas_admin/src/api/resources.ts`:合同附件改为专用文件字段。
|
||
- `frontend/gas_admin/src/views/resource/ResourceRecordPage.vue`:接入完整附件页面流程。
|
||
|
||
## 验证结果
|
||
|
||
- `go test ./...`:通过。
|
||
- `go vet ./...`:通过。
|
||
- `go build ./cmd/main/main.go`:通过。
|
||
- `pnpm type:check`:通过。
|
||
- `pnpm contract:check`:通过,20 个资源。
|
||
- `pnpm build`:通过。
|
||
- `pnpm lint`:命令成功,报告 190 条仓库既有警告;本次改动未产生 lint 错误。
|
||
- 浏览器只读检查:5175 服务和登录页正常、控制台无错误;因自动化会话没有气站登录态,未提交账号或读取受保护合同。
|
||
|
||
## 风险评估
|
||
|
||
- 风险:上传和绑定仍复用平台主管包中的既有实现,操作人名称在气站账号场景可能为空,但操作人 identity、合同 identity、动作和结果仍会记录。
|
||
- 缓解:气站路由受独立 JWT 中间件保护,入口验证有效气站账号,下载执行合同归属校验;签名收据继续绑定操作人 identity 并限制有效期。
|
||
- 后续人工边界验收:合法 PDF、非 PDF、空文件、超过 10 MiB、重复保存、编辑替换、移除、跨气站合同和旧地址不可用。
|