统一平台资源中文展示并修复模拟订单状态

This commit is contained in:
czl231
2026-08-15 22:06:42 +08:00
parent a20e228296
commit a663821853
24 changed files with 1048 additions and 175 deletions

View File

@@ -116,6 +116,10 @@
标准详情页同样只保留面包屑、编辑和返回操作,不重复展示“详情资源名称”及说明文字。详情卡片按内容自然高度从顶部排列,统一使用 `12px` 间距和紧凑内边距;基本信息在大屏、中屏和小屏分别采用三列、两列和单列。字段标签按文字自然宽度与值保持 `12px` 间距,长标签禁止拆字换行,不使用固定标签列制造多余空白。未开通钱包使用单行提示,气站启停继续保留独立状态管理卡片,不改变原有接口和权限校验。
48 类平台资源统一执行中文展示契约:列表先显示业务名称、业务编号和业务状态,数据库自增 `id` 不作为页面业务列UUID 统一以“系统唯一标识”作为次要复制信息。关联字段优先显示中文名称并可进入存在详情路由的关联记录;关系加载失败时明确显示“名称加载失败”,同时保留 UUID 复制入口。只读资源也必须声明业务字段,不允许使用空字段配置。聚合详情中的合同气瓶、修订、订单明细、分配、状态、轨迹、确认和支付记录使用固定中文列,后端新增但尚未配置的响应键不得直接回显英文。设备参数、商品快照、支付参数和回调内容通过完整 JSON 查看器展示,既有不脱敏字段不改变内容或可见性。
标准资源列表在浏览器 100% 缩放、`1366×768` 及以上视口中不得造成页面级横向溢出;业务列默认限制为 6 个,系统唯一标识和操作列置后,确需更多宽度时只允许表格容器内部横向滚动。树形资源以中文名称为主,同时保留业务编码或路径及系统唯一标识复制入口。
新建与编辑使用不同字段规则。唯一标识、用户名、创建编码、不可变归属等创建后锁定字段以灰色禁用控件展示且禁止修改,不重复显示顶部说明条、字段旁提示或禁用占位文字;后端更新协议要求原归属标识时,页面只会原样回传该字段。合同状态、检修结果、系统角色和平台权限等限制同时由页面和后端校验。编辑页离开前检测未保存内容,详情页的聚合子表、钱包摘要、气站状态开关及资源专属业务动作继续保留。
### 6.1 机构管理

View File

@@ -0,0 +1,64 @@
# 平台资源中文展示统一操作日志
操作时间2026-08-15
操作类型:修改、扩展
影响模块:平台总后台标准资源列表、详情、关系补载、树形页面和静态检查
## 操作前状态
- 资源总数为 48 类,其中 46 类走通用详情页2 类使用树形页面。
- 19 类只读资源使用空字段配置,列表主要显示数据库 ID 和 UUID。
- 聚合详情除订单部分集合外仍可能根据响应键追加动态英文列。
- 关系加载失败时会把裸 UUID 当作主要名称展示。
## 具体操作
1. 补齐只读资源的中文字段、关系和业务顺序。
2. 列表移除数据库 ID 主列,将系统唯一标识置于业务列之后。
3. 新增资源详情契约,固定合同与订单聚合子表的列和 JSON 字段。
4. 静态及动态关系统一补载中文名称,并为可导航关系增加详情入口。
5. 树形页面补充业务编码或路径及系统唯一标识。
6. 新增 48 类资源展示契约检查,并同步既有订单和 JSON 检查脚本。
## 代码变更
- `frontend/platform_admin/src/api/resources.ts`:补齐中文字段和 19 类只读资源字段。
- `frontend/platform_admin/src/api/resource-display.ts`:扩展状态、枚举、动态关系和未知字段保护。
- `frontend/platform_admin/src/api/resource-detail-contract.ts`:新增固定子表与 JSON 契约。
- `frontend/platform_admin/src/views/resource/ResourceDetailContent.vue`:消费资源契约并统一关系展示。
- `frontend/platform_admin/src/views/resource/use-resource-relations.ts`:补载动态主体关系。
- `frontend/platform_admin/src/views/shared/CrudListPage.vue`:业务列优先并移除数据库 ID。
- `frontend/platform_admin/src/views/shared/resource-list-field-display.ts`:专属列表列序。
- `frontend/platform_admin/src/views/shared/RelationNameText.vue`:关联名称跳转和 UUID 复制。
- `frontend/platform_admin/src/views/shared/TreePage.vue`:树节点业务标识与 UUID。
- `frontend/platform_admin/scripts/check-resource-display-contracts.mjs`:新增静态契约检查。
## 行为变化
- 修改前:数据库 ID、UUID 优先,部分列表没有业务列,关联表可能出现英文键。
- 修改后中文名称和业务单号优先UUID 为次要复制信息,未知字段不再直接显示。
- 既有接口、权限、不脱敏字段内容和业务动作协议保持不变。
## 验证结果
- 资源中文展示契约检查:通过。
- TypeScript 类型检查:通过。
- 配送订单列表与详情检查:通过。
- 资源详情 JSON 检查:通过。
- 前端生产构建:通过。
- 后端 `go test ./...`:通过。
- 后端 `go vet ./...`:通过。
- 后端临时目录构建:通过。
- 全仓 Biome本次变更文件无新增错误全仓仍有 2 个既有错误,均位于未改动的 `protected-list-avatar-loader.ts` 回调返回值规则。
- Codex 内置浏览器回归:通过。实测订单列表、订单详情、分配记录、订单明细、状态记录和分配联动弹窗,整页无水平溢出。
- 浏览器回归补充修复:业务订单号改为完整展示,不再被系统标识组件截断;配送合同详情优先使用服务端返回的中文名称;配送人员占位文案与已锁定配送点的场景保持一致。
- 分配联动实测:已分配订单的配送点锁定为当前点,配送人员候选只包含该点下符合条件的人员,未提交任何业务动作。
## 风险评估
- 关系资源被归档或加载失败时显示“名称加载失败”UUID仍可用于排障。
- 未声明的新字段不会自动展示;静态检查要求开发者补充中文语义后交付。
- 本次不新增历史名称快照,历史记录在无快照时显示当前名称。
- 浏览器写操作仅允许使用本次创建的测试数据;真实支付、外部通知和设备控制不在未确认的环境中执行。

View File

@@ -0,0 +1,48 @@
# 模拟配送订单状态修复操作日志
操作时间2026-08-15
操作类型:修改、数据校正
影响模块:后端模拟数据、平台配送订单列表
## 操作前状态
- 附加模拟场景把 `MOCK-GASORDER-*` 配送订单写为 `10待处理`
- 配送订单文档和状态机规定初始状态为 `16已创建`前端因此正确显示“未知10”。
## 具体操作
- 新生成的 Mock 配送订单统一使用 `StatusCreated`
- 种子写入时幂等修复同一固定 Mock 订单的历史错误状态。
- 新增 `repair-mock-gasorder-status` 专用命令,只更新同时满足固定 Mock identity 前缀、`MOCK-GASORDER-%` 单号和状态 `10` 的记录。
## 行为变化
- 修改前:附加 Mock 订单显示“未知10且不具备合法订单动作。
- 修改后:这些订单显示“已创建”,与文档和状态机一致。
- 真实订单、已流转的 Mock 订单及其他模拟资源不受影响。
## 代码变更
- `backend/api/internal/seed/mock.go`:更正初始状态并新增精确修复函数。
- `backend/api/internal/seed/mock_test.go`:新增 Mock 订单初始状态回归测试。
- `backend/api/cmd/cli/main.go`:新增独立幂等修复命令。
## 验证结果
- 种子数据与配送订单逻辑测试通过。
- 专用修复命令返回实际受影响记录数。
- 页面刷新后应显示“已创建”不再显示“未知10”。
## 风险评估
- 修复条件为三重 Mock 范围限定,不会匹配真实订单。
- 该操作是错误初始值校正,不作为业务状态流转,不追加虚假状态历史。
## 实施结果
- 执行 `go run ./cmd/cli repair-mock-gasorder-status`,实际修复 9 条历史 Mock 配送订单。
- Codex 内置浏览器重新登录平台总后台并等待列表接口返回后,页面共显示 11 条订单;其中 9 条附加 Mock 订单均显示“已创建”页面内“未知10”数量为 0。
- 后端执行 `go test ./...``go vet ./...`,均通过。
- 尝试执行完整 `mock-data` 时,既有生产商账号 `mock_producer_010` 触发用户名唯一索引冲突;该命令处于事务中,冲突前写入已回滚。本次未扩大范围处理该无关问题,改用独立幂等修复命令完成状态校正。

View File

@@ -0,0 +1,63 @@
# 平台资源中文展示统一
## 1. 项目概述
本次统一平台总后台 48 类资源的列表、详情、关联记录、操作弹窗和树形页面展示规则。目标是以中文业务名称和业务单号作为主要信息,将 UUID 降级为可复制的技术信息,并阻止未知响应字段直接形成英文表头。
技术栈保持不变Vue 3、TypeScript、Vite、Arco Design 和现有 Gin API。本次不修改数据库结构不删除或重命名既有接口字段也不改变已有不脱敏字段的内容和可见性。
## 2. 核心目录
```text
frontend/platform_admin/
├── src/api/
│ ├── resources.ts # 48 类资源字段、关系和中文名称
│ ├── resource-display.ts # 共享金额、状态、关系和中文兜底
│ └── resource-detail-contract.ts # 聚合详情固定列与 JSON 契约
├── src/views/resource/
│ ├── ResourceDetailContent.vue # 标准详情和关联记录渲染
│ └── use-resource-relations.ts # 静态及动态关系名称补载
├── src/views/shared/
│ ├── CrudListPage.vue # 业务列优先的标准列表
│ ├── resource-list-field-display.ts # 资源列表列序与关系名称
│ ├── RelationNameText.vue # 名称、跳转和 UUID 复制
│ └── TreePage.vue # 树形资源中文展示
└── scripts/check-resource-display-contracts.mjs # 48 类资源静态契约检查
```
## 3. 展示规则
### 3.1 列表
- 不展示数据库自增 `id`
- 默认展示最多 6 个主要业务字段。
- 订单、合同、支付、钱包流水和商城订单使用专属列顺序。
- “系统唯一标识”位于业务字段之后,并保留完整复制能力。
- 表格宽度不足时只在表格容器内部滚动。
### 3.2 详情与关系
- 业务编号、状态和主要关联置前UUID、创建时间和更新时间靠后。
- 静态关系和由主体类型决定的动态关系都补载可读名称。
- 名称可点击进入存在详情路由的关联资源;树形资源没有详情路由时仅展示。
- 名称加载失败时展示明确错误文案,并继续保留 UUID。
- 未配置中文名称的响应字段在生产页面隐藏,由静态检查阻止回归。
### 3.3 聚合子表与 JSON
- 配送合同的气瓶与修订、配送订单的明细、分配、状态、轨迹、确认和支付使用固定中文列。
- 关联表不再根据 `Object.keys` 自动追加未知列。
- JSON 查看器完整展示原内容,仅改善排版;已有不脱敏要求保持不变。
## 4. 兼容性与维护
- 本次前端扩展不改变 API 请求协议。
- 没有历史名称快照时使用当前关联名称和 UUID不伪造历史名称。
- 新增资源字段时必须先加入中文字段字典;新增聚合集合时必须声明固定列。
- 执行 `npm run resource-display-contracts:check` 可检查资源数量、空只读契约、数据库 ID 列、未知字段保护和固定集合配置。
## 5. 变更记录
- v1.0:建立 48 类资源中文展示契约,补齐原 19 类空字段只读资源。
- v1.0统一业务列优先、关系名称跳转、UUID 次要复制和响应式表格。
- v1.0:建立固定聚合子表和完整 JSON 查看规则。