docs: add ETC/油卡充值文案改名设计规格。

明确菜单与充值类型展示「加油→油卡」,存值 fuel 与加油登记模块不动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-10-16 11:28:08 +08:00
1 parent bd5de00645
commit 19812a1da7
1 file changed
+111
@@ -0,0 +1,111 @@
# ETC/加油充值 → ETC/油卡充值(文案改名)— 设计文档
> **日期**: 2026-10-16
> **状态**: 待用户审阅(self-review 已过)
> **方案**: 展示层文案替换(存值 `fuel` 不变)
> **范围**: web-admin 车辆管理 · ETC 充值分组;miniprogram · ETC 充值申请;配套字典 / 导出 / 微信文案 / 提示语
> **前置**: `2026-09-26-pl-vehicle-recharge-restore-fuel-design.md`(曾恢复类型「加油」;本次仅改展示名称为「油卡」)
## 1. 目标
将「ETC/加油充值」业务线中对用户可见的「加油」统一改为「油卡」,与真实业务语义(给司机油卡充值)对齐,并与独立的「加油登记」(登记加油升数)区分开。
| 改前 | 改后 |
|------|------|
| ETC/加油充值管理 | ETC/油卡充值管理 |
| ETC/加油充值申请 | ETC/油卡充值申请 |
| ETC/加油充值审批 | ETC/油卡充值审批 |
| ETC/加油充值发放管理 | ETC/油卡充值发放管理 |
| ETC/加油充值审批人设置 | ETC/油卡充值审批人设置 |
| 充值类型:ETC / 加油 | 充值类型:ETC / 油卡 |
## 2. 已确认决策
| # | 项 | 决策 |
|---|-----|------|
| D1 | 菜单范围 | **全部统一**:分组 + 申请 + 审批 + 发放管理 + 审批人设置(Web);小程序「ETC/油卡充值申请」同步 |
| D2 | 存值 | `recharge_type` 继续存 `fuel`;**不**改成 `oil_card`,不迁历史数据 |
| D3 | 展示 | `fuel` → 界面 / 导出 / 微信文案 / 筛选枚举显示「油卡」 |
| D4 | 「ETC/加油…」类文案 | 页面标题、路由 meta、提示语、导出文件名(若含此短语)、发微信群标题等 **全部** 改为「油卡」 |
| D5 | 「加油站/渠道」 | **不动**(主要在发放/审批侧;申请新建表单无此字段) |
| D6 | 「加油登记」模块 | **整条线不动**(菜单、页面、升数登记、汇总) |
| D7 | 技术标识 | API path、权限码 `pl:vehicle-recharge-*`、路由 path、表名、`dict_value=fuel` **不变** |
## 3. 非目标
- 不改库表结构、不迁移 `recharge_type` 历史值
- 不改「加油登记 / 加油信息汇总」任何文案或逻辑
- 不改「加油站/渠道」字段标签与含义
- 不改工作流引擎逻辑(仅改用户可见流程名若写死为「ETC/加油…」)
- 不批量改历史设计文档 / graphify 报告中的旧称谓(可顺带改代码注释,非必须)
## 4. 现状与落点
### 4.1 数据层(需迁移 SQL)
| 对象 | ID / 键 | 当前 | 目标 |
|------|---------|------|------|
| `sys_menu` | `PL_GROUP_VEH_RECHARGE` | ETC/加油充值管理 | ETC/油卡充值管理 |
| `sys_menu` | `PL_VEH_RECHARGE_APPLY` | ETC/加油充值申请 | ETC/油卡充值申请 |
| `sys_menu` | `PL_VEH_RECHARGE_APPROVAL` | ETC/加油充值审批 | ETC/油卡充值审批 |
| `sys_menu` | `PL_VEH_RECHARGE_RECORD` | ETC/加油充值发放管理 | ETC/油卡充值发放管理 |
| `sys_menu` | `PL_VEH_RECHARGE_WF` | ETC/加油充值审批人设置 | ETC/油卡充值审批人设置 |
| `sys_dict_data` | `PL_RECHARGE_TYPE_FUEL` | `dict_label=加油`,`dict_value=fuel` | `dict_label=油卡`,`dict_value` 仍为 `fuel` |
可选:分组 `remark`「ETC/加油充值分组」→「ETC/油卡充值分组」。
表 COMMENT / 列 COMMENT 中的「fuel-加油」可在迁移中改为「fuel-油卡」,不影响运行。
工作流默认名:`bx/workflow.py` 中 `"wf_name": "ETC/加油充值审批流程"` →「ETC/油卡充值审批流程」(若库中已有实例名,是否 UPDATE 既有 `wf_name` 在实现计划中按实际表结构处理;**至少**改代码默认值)。
### 4.2 前端 web-admin
| 位置 | 改什么 |
|------|--------|
| `router/modules/pl.ts` | 所有 `ETC/加油…` meta.title |
| `utils/pl-display.ts` → `getPlRechargeTypeLabel` | `fuel` → `油卡` |
| `vehicle-recharge-apply` / `record` 表单 `el-option` | label「加油」→「油卡」 |
| `vehicle-recharge-apply/columnFilterDefs.ts` | 枚举 label |
| 各页 HTML 注释、用户可见 `ElMessage`(如指向审批菜单的提示) | 「加油」→「油卡」 |
| `api/pl/index.ts` 注释 | 可改可不改 |
### 4.3 小程序
| 位置 | 改什么 |
|------|--------|
| `config/workbench-menus.js` | 名称「ETC/油卡充值申请」;`desc` 中若写「ETC充值申请」可改为「ETC/油卡充值申请」(保持可读即可) |
| `pages.json` | navigationBarTitleText |
| `pages/pl/vehicle-recharge-apply/list.vue` | topbar 标题;本地 `fuel`→「油卡」映射 |
| `pages/pl/vehicle-recharge-apply/form.vue` | 类型选项 label |
| `utils/plVehicleRechargeCopy.js` | 类型 label + 微信标题「ETC/油卡充值申请」 |
### 4.4 后端
| 位置 | 改什么 |
|------|--------|
| `api/pl/vehicle_recharge.py` → `RECHARGE_TYPE_LABELS` | `"fuel": "油卡"`(导出 Excel 用) |
| `services/pl_vehicle_recharge_service.py` | 用户可见 detail 文案中的菜单名 |
| OpenAPI tags / 模块注释 | 建议同步改为「油卡」,避免 Swagger 仍写「加油」 |
| 单测 docstring 中的菜单称谓 | 同步(断言逻辑不变) |
## 5. 验收标准
1. Web 侧栏「车辆管理」下分组及四个子菜单均显示「油卡」,无残留「ETC/加油…」。
2. 申请 / 发放 / 审批:充值类型下拉、Tag、列头筛选、查看弹窗、导出列中 `fuel` 显示「油卡」。
3. 小程序工作台入口与申请页标题为「ETC/油卡充值申请」;选类型「油卡」提交后列表/复制文案为「油卡」。
4. 历史 `recharge_type=fuel` 记录仍可查、可筛、可导出,无需数据迁移。
5. 「加油登记」「加油信息汇总」「加油站/渠道」文案与行为与改前一致。
6. API path、权限码、筛选 query 值 `fuel` 不变;回归既有充值相关单测通过。
## 6. 风险与注意
- **双源菜单**:侧栏若走后端 `sys_menu`,必须部署迁移 SQL;路由 meta 也要改,避免 Tab/面包屑仍显示旧名。
- **字典缓存**:若前端缓存字典,改 `dict_label` 后需刷新或重新登录才能看到「油卡」。
- **勿误伤「加油登记」**:全局替换「加油」危险;应按「ETC/加油」短语与充值类型 label 定点替换。
## 7. 实现顺序(概要)
1. 迁移 SQL(菜单 + 字典 label)放入 `docs/sql/migrations/`
2. 后端 label 映射与用户可见提示
3. web-admin 路由 / 展示 / 表单 / 筛选
4. miniprogram 菜单 / 页面 / 复制文案
5. 跑相关 pytest + 手工点验侧栏与类型展示