mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-23 15:41:17 +08:00
调整开票待办业务场景和后续任务
This commit is contained in:
@@ -55,14 +55,18 @@
|
|||||||
|
|
||||||
## 5. 首期业务范围
|
## 5. 首期业务范围
|
||||||
|
|
||||||
### 5.1 开票待办
|
### 5.1 首期开票待办
|
||||||
|
|
||||||
首期优先实现截图中的开票场景:
|
首期建设以下两个真实业务场景:
|
||||||
|
|
||||||
| 待办类型 | 触发条件 | 处理页面 | 完成条件 |
|
| 待办类型 | 接收人 | 触发条件 | 处理页面 | 完成条件 |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
| 平台采购开票 | 平台审核拒绝或要求补充材料 | 发票详情/开票申请页 | 用户重新提交或平台关闭任务 |
|
| 充电订单开票申请 | 对应运营商管理员 | 用户完成充电后提交订单开票申请 | 发票申请处理页 | 运营商完成开票、驳回或关闭申请 |
|
||||||
| 司机开票申请 | 收到司机开票申请 | 发票申请处理页 | 审核通过、驳回或关闭 |
|
| 运营商提现向平台开票 | 对应运营商管理员 | 运营商提现成功,提现状态变为 `已提现` | 财务详情/提现开票处理页 | 运营商提交发票号码及凭证后自动完成,或平台管理员关闭任务 |
|
||||||
|
|
||||||
|
首期接收人按运营商管理员角色解析,不向该运营商部门下所有普通用户广播。当前系统创建运营商时使用 `role_id = 3` 创建运营商管理员,实施时需要在测试库确认该角色的 `role_key`,并将角色配置化。
|
||||||
|
|
||||||
|
提现向平台开票按“一笔成功提现对应一条待办”实现。首期新增提现开票信息记录,至少保存发票状态、发票号码、凭证地址、提交人和提交时间;后续如平台允许合并多笔提现开具一张发票,再扩展为批量关联模型。
|
||||||
|
|
||||||
### 5.2 预留业务类型
|
### 5.2 预留业务类型
|
||||||
|
|
||||||
@@ -74,7 +78,7 @@
|
|||||||
| 清分异常 | 清分失败、分账配置错误或账单待处理 |
|
| 清分异常 | 清分失败、分账配置错误或账单待处理 |
|
||||||
| 订单异常 | 订单退款、结算或支付异常需要人工介入 |
|
| 订单异常 | 订单退款、结算或支付异常需要人工介入 |
|
||||||
|
|
||||||
首期只实现开票待办,其他类型只完成通用模型和扩展接口,不要求全部接入。
|
首期只实现上述两个开票待办,其他类型只完成通用模型和扩展接口,不要求全部接入。
|
||||||
|
|
||||||
## 6. 业务流程
|
## 6. 业务流程
|
||||||
|
|
||||||
@@ -268,7 +272,7 @@ TodoTaskService.countUnread(Long userId);
|
|||||||
```java
|
```java
|
||||||
todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
||||||
.taskType("INVOICE_REVIEW")
|
.taskType("INVOICE_REVIEW")
|
||||||
.title("司机开票申请")
|
.title("充电订单开票申请")
|
||||||
.summary("有新的开票申请需要处理")
|
.summary("有新的开票申请需要处理")
|
||||||
.businessType("INVOICE_APPLY")
|
.businessType("INVOICE_APPLY")
|
||||||
.businessId(invoiceId.toString())
|
.businessId(invoiceId.toString())
|
||||||
@@ -329,8 +333,8 @@ todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
|||||||
|
|
||||||
### 首期业务
|
### 首期业务
|
||||||
|
|
||||||
- 平台采购开票待办可以正常生成、展示、跳转和完成。
|
- 用户充电订单开票申请待办可以按运营商管理员生成、展示、跳转和完成。
|
||||||
- 司机开票申请待办可以正常生成、展示、跳转和完成。
|
- 运营商提现成功后可以生成“向平台开票”待办,并在提交发票信息后完成。
|
||||||
- 原有 `sys_notice` 公告功能不受影响。
|
- 原有 `sys_notice` 公告功能不受影响。
|
||||||
|
|
||||||
## 14. 实施拆分
|
## 14. 实施拆分
|
||||||
@@ -344,10 +348,11 @@ todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
|||||||
|
|
||||||
### 第二期:开票接入
|
### 第二期:开票接入
|
||||||
|
|
||||||
- 接入平台采购开票事件。
|
- 将充电订单开票待办接收人收敛为运营商管理员。
|
||||||
- 接入司机开票申请事件。
|
- 接入提现成功事件,创建运营商向平台开票待办。
|
||||||
- 配置业务路由和完成条件。
|
- 新增提现开票信息表、提交发票信息接口和处理页面。
|
||||||
- 增加接口和页面联调测试。
|
- 配置两个业务场景的路由和完成条件。
|
||||||
|
- 增加接口、事务和页面联调测试。
|
||||||
|
|
||||||
### 第三期:平台业务扩展
|
### 第三期:平台业务扩展
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,12 @@ PRD 同时要求“幂等键唯一”和“任务完成后允许同一业务重
|
|||||||
- 用户端详情、已读、完成和取消更新均在 SQL 条件中携带 `assignee_user_id`,避免先查后改产生越权窗口。
|
- 用户端详情、已读、完成和取消更新均在 SQL 条件中携带 `assignee_user_id`,避免先查后改产生越权窗口。
|
||||||
- 管理端能力使用独立路径和权限标识,不复用用户端接口绕过接收人过滤。
|
- 管理端能力使用独立路径和权限标识,不复用用户端接口绕过接收人过滤。
|
||||||
|
|
||||||
|
### 首期两个开票场景
|
||||||
|
|
||||||
|
- 充电订单开票:沿用 `order_invoice_record` 创建事件,接收人收敛为对应运营商管理员;当前创建运营商时使用 `role_id = 3`,正式实现前在测试库确认角色标识并配置化。
|
||||||
|
- 提现向平台开票:监听 `clearing_withdraw_info.withdraw_status` 从处理中变为已提现(`1`)的成功事件;每笔成功提现创建一条 `MERCHANT_WITHDRAW_INVOICE` 待办。
|
||||||
|
- 提现开票完成不能只依赖手工点完成,新增开票信息记录,保存发票状态、发票号码、凭证地址、提交人和提交时间,提交成功后与待办在同一事务内完成。
|
||||||
|
|
||||||
### 前后端仓库边界
|
### 前后端仓库边界
|
||||||
|
|
||||||
`jsowell-charge-ui/` 是独立 Git 仓库。后端和前端分别提交中文 commit,不将前端目录作为未跟踪目录加入后端仓库。
|
`jsowell-charge-ui/` 是独立 Git 仓库。后端和前端分别提交中文 commit,不将前端目录作为未跟踪目录加入后端仓库。
|
||||||
@@ -48,12 +54,13 @@ PRD 同时要求“幂等键唯一”和“任务完成后允许同一业务重
|
|||||||
| B05 | 首页待办卡片、数量展示和轮询刷新 | P0 | done | ESLint 和生产构建通过 | 前端 `0627061` |
|
| B05 | 首页待办卡片、数量展示和轮询刷新 | P0 | done | ESLint 和生产构建通过 | 前端 `0627061` |
|
||||||
| B05-F1 | 待办中心页面上下间距优化 | P0 | done | ESLint 和生产构建通过 | 前端 `380e2dc` |
|
| B05-F1 | 待办中心页面上下间距优化 | P0 | done | ESLint 和生产构建通过 | 前端 `380e2dc` |
|
||||||
| B06 | 菜单权限 SQL、联调和首期回归 | P0 | done | 菜单 SQL、构建和专项回归通过;待测试库执行 SQL | `974e68cf5` |
|
| B06 | 菜单权限 SQL、联调和首期回归 | P0 | done | 菜单 SQL、构建和专项回归通过;待测试库执行 SQL | `974e68cf5` |
|
||||||
| B07 | 平台采购开票待办接入 | P1 | blocked | 仓库内未找到平台采购开票模型、审核状态或接口入口 | - |
|
| B07 | 提现成功后向平台开票待办 | P1 | todo | - | - |
|
||||||
| B08 | 司机开票申请待办接入 | P1 | done | 全依赖编译、12 个专项测试通过 | `cbc2e3c72` |
|
| B08 | 充电订单开票申请待办接入 | P1 | done | 已接入业务事件;接收人需按新口径收敛为运营商管理员 | `cbc2e3c72` |
|
||||||
|
| B08-F1 | 充电订单开票接收人和文案收敛 | P1 | todo | - | - |
|
||||||
| B09 | 管理端创建、分配、取消和隐藏能力 | P1 | todo | - | - |
|
| B09 | 管理端创建、分配、取消和隐藏能力 | P1 | todo | - | - |
|
||||||
| B10 | 归档清理、过期任务和操作审计增强 | P2 | todo | - | - |
|
| B10 | 归档清理、过期任务和操作审计增强 | P2 | todo | - | - |
|
||||||
| B11 | 路由白名单、性能压测和安全专项验证 | P2 | todo | - | - |
|
| B11 | 路由白名单、性能压测和安全专项验证 | P2 | todo | - | - |
|
||||||
| B12 | 汇付、提现、清分、订单异常和实时推送扩展 | P3 | todo | - | - |
|
| B12 | 汇付、清分、订单异常和实时推送扩展 | P3 | todo | - | - |
|
||||||
|
|
||||||
## 任务清单
|
## 任务清单
|
||||||
|
|
||||||
@@ -135,23 +142,38 @@ PRD 同时要求“幂等键唯一”和“任务完成后允许同一业务重
|
|||||||
- 原 `sys_notice` 功能和菜单不受影响。
|
- 原 `sys_notice` 功能和菜单不受影响。
|
||||||
- 后端编译、相关测试、前端 lint/build 通过或记录环境阻塞原因。
|
- 后端编译、相关测试、前端 lint/build 通过或记录环境阻塞原因。
|
||||||
|
|
||||||
### TODO-007 平台采购开票接入
|
### TODO-007 提现成功后向平台开票接入
|
||||||
|
|
||||||
- 优先级:P1
|
- 优先级:P1
|
||||||
- 批次:B07
|
- 批次:B07
|
||||||
- 状态:blocked
|
- 状态:todo
|
||||||
- 阻塞原因:当前仓库检索不到平台采购开票对应的数据库模型、审核拒绝/补充材料状态和业务接口,无法安全判断创建与完成时机。
|
- 现有入口:`AdapayService.drawCash()` 创建提现记录,提现成功回调 `cashSucceeded()` 将状态更新为 `1`。
|
||||||
- 目标:在平台采购开票审核拒绝或要求补充材料时创建待办,重新提交或平台关闭时完成。
|
- 目标:提现成功后为对应运营商管理员创建“向平台开票”待办,并提供提交发票信息后自动完成的闭环。
|
||||||
- 验收标准:同一开票事件对同一接收人只产生一条有效待办,跳转参数和完成条件正确。
|
- 任务拆分:
|
||||||
|
- 新增提现开票信息表及唯一提现单号约束。
|
||||||
|
- 在提现成功状态更新事务中创建待办,使用 `MERCHANT_WITHDRAW_INVOICE` 类型。
|
||||||
|
- 新增查询提现开票详情、提交发票信息、平台关闭任务接口。
|
||||||
|
- 财务详情页增加待办处理入口,跳转携带 `merchantId`、`withdrawCode`、`todoId`。
|
||||||
|
- 验收标准:同一提现成功事件对同一管理员只产生一条有效待办;提交发票号码和凭证后待办自动完成;提现失败不创建该待办。
|
||||||
|
|
||||||
### TODO-008 司机开票申请接入
|
### TODO-008 充电订单开票申请接入
|
||||||
|
|
||||||
- 优先级:P1
|
- 优先级:P1
|
||||||
- 批次:B08
|
- 批次:B08
|
||||||
- 状态:in_progress
|
- 状态:done
|
||||||
- 目标:收到司机开票申请时创建待办,审核通过、驳回或关闭时完成。
|
- 目标:收到用户充电订单开票申请时创建待办,运营商完成开票、驳回或关闭时完成。
|
||||||
|
- 当前实现:已接入 `order_invoice_record` 创建、完成和关闭事件,并与业务事务绑定。
|
||||||
|
- 待收敛:接收人当前按运营商部门树下正常用户解析,需要改为只解析运营商管理员。
|
||||||
- 验收标准:创建和完成与开票业务事务一致,异常回滚时不产生脏任务状态。
|
- 验收标准:创建和完成与开票业务事务一致,异常回滚时不产生脏任务状态。
|
||||||
|
|
||||||
|
### TODO-008-F1 充电订单开票接收人和文案收敛
|
||||||
|
|
||||||
|
- 优先级:P1
|
||||||
|
- 批次:B08-F1
|
||||||
|
- 状态:todo
|
||||||
|
- 目标:将现有 `INVOICE_REVIEW` 待办的标题、类型文案从“司机开票申请”统一为“充电订单开票申请”,接收人限制为运营商管理员。
|
||||||
|
- 验收标准:运营商普通财务或普通操作员不会收到该待办;管理员收到的待办可正常跳转、完成和关闭。
|
||||||
|
|
||||||
### TODO-009 管理端异常任务处理
|
### TODO-009 管理端异常任务处理
|
||||||
|
|
||||||
- 优先级:P1
|
- 优先级:P1
|
||||||
@@ -173,7 +195,7 @@ PRD 同时要求“幂等键唯一”和“任务完成后允许同一业务重
|
|||||||
- 优先级:P3
|
- 优先级:P3
|
||||||
- 批次:B12
|
- 批次:B12
|
||||||
- 状态:todo
|
- 状态:todo
|
||||||
- 目标:接入汇付开户、结算账户、提现、清分和订单异常,并评估 WebSocket/SSE。
|
- 目标:接入汇付开户、结算账户、清分和订单异常,并评估 WebSocket/SSE。
|
||||||
- 验收标准:新增业务只通过统一待办 Service 接入,不修改通用数据权限和状态模型。
|
- 验收标准:新增业务只通过统一待办 Service 接入,不修改通用数据权限和状态模型。
|
||||||
|
|
||||||
## 提交记录
|
## 提交记录
|
||||||
@@ -187,6 +209,6 @@ PRD 同时要求“幂等键唯一”和“任务完成后允许同一业务重
|
|||||||
- 2026-07-16,B04:完成前端 API、待办中心筛选分页、批量已读和安全路由跳转;新增文件专项 ESLint 通过,`NODE_OPTIONS=--openssl-legacy-provider npm run build:prd` 构建通过;前端 commit `ff6b890`。
|
- 2026-07-16,B04:完成前端 API、待办中心筛选分页、批量已读和安全路由跳转;新增文件专项 ESLint 通过,`NODE_OPTIONS=--openssl-legacy-provider npm run build:prd` 构建通过;前端 commit `ff6b890`。
|
||||||
- 2026-07-16,B05:完成首页右侧待办卡片、`99+` 数量、最近 3 条、空状态、错误重试和 60 秒轮询;专项 ESLint 与生产构建通过;前端 commit `0627061`。
|
- 2026-07-16,B05:完成首页右侧待办卡片、`99+` 数量、最近 3 条、空状态、错误重试和 60 秒轮询;专项 ESLint 与生产构建通过;前端 commit `0627061`。
|
||||||
- 2026-07-16,B06:完成幂等菜单/权限 SQL;列表、查询和已读权限默认授予正常角色,完成和取消权限需按业务角色显式授权;后端 9 个专项测试再次通过,前端构建沿用 B05 验证结果;commit `974e68cf5`。
|
- 2026-07-16,B06:完成幂等菜单/权限 SQL;列表、查询和已读权限默认授予正常角色,完成和取消权限需按业务角色显式授权;后端 9 个专项测试再次通过,前端构建沿用 B05 验证结果;commit `974e68cf5`。
|
||||||
- 2026-07-16,B07 分析:当前仓库未发现平台采购开票业务落点,需补充对应模块/表/接口信息后继续。
|
|
||||||
- 2026-07-16,B08:司机开票记录创建后,按运营商部门树为正常后台用户幂等创建待办;开票状态更新为已开票时自动完成,删除/关闭记录时自动取消;业务与待办状态处于同一事务;全依赖编译和 12 个专项测试通过;commit `cbc2e3c72`。
|
- 2026-07-16,B08:司机开票记录创建后,按运营商部门树为正常后台用户幂等创建待办;开票状态更新为已开票时自动完成,删除/关闭记录时自动取消;业务与待办状态处于同一事务;全依赖编译和 12 个专项测试通过;commit `cbc2e3c72`。
|
||||||
- 2026-07-17,B05-F1:局部覆盖全局卡片纵向内边距,并补充待办页面顶部和底部留白;专项 ESLint 与生产构建通过;前端 commit `380e2dc`。
|
- 2026-07-17,B05-F1:局部覆盖全局卡片纵向内边距,并补充待办页面顶部和底部留白;专项 ESLint 与生产构建通过;前端 commit `380e2dc`。
|
||||||
|
- 2026-07-17,需求调整:移除不存在的平台采购开票场景,新增“提现成功后运营商向平台开票”场景,并将充电订单开票接收人明确为运营商管理员。
|
||||||
|
|||||||
Reference in New Issue
Block a user