From 4e7c645926006389b04b01da4ac92d6d7c5e1678 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Sat, 28 Mar 2026 12:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=B5=81=E7=A8=8B=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E4=B8=8E=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-workflow-update-time-list-backend-plan.md | 120 +++++++++++++ ...-03-28-workflow-update-time-list-design.md | 164 ++++++++++++++++++ ...workflow-update-time-list-frontend-plan.md | 70 ++++++++ ...-03-28-workflow-update-time-list-design.md | 24 +++ ...6-03-28-workflow-update-time-list-plans.md | 24 +++ 5 files changed, 402 insertions(+) create mode 100644 doc/2026-03-28-workflow-update-time-list-backend-plan.md create mode 100644 doc/2026-03-28-workflow-update-time-list-design.md create mode 100644 doc/2026-03-28-workflow-update-time-list-frontend-plan.md create mode 100644 doc/implementation-report-2026-03-28-workflow-update-time-list-design.md create mode 100644 doc/implementation-report-2026-03-28-workflow-update-time-list-plans.md diff --git a/doc/2026-03-28-workflow-update-time-list-backend-plan.md b/doc/2026-03-28-workflow-update-time-list-backend-plan.md new file mode 100644 index 0000000..2b7ce42 --- /dev/null +++ b/doc/2026-03-28-workflow-update-time-list-backend-plan.md @@ -0,0 +1,120 @@ +# 流程列表更新时间展示后端实施计划 + +> **For agentic workers:** REQUIRED: Use superpowers:executing-plans to implement this plan in this repository. Do not use subagents. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 让流程列表接口返回 `updateTime`,并保持按更新时间倒序排序。 + +**Architecture:** 后端只调整列表专用 VO 和联表 SQL,让列表展示字段与现有 `ORDER BY lpw.update_time DESC` 对齐。不修改详情页、不改数据库结构、不变更列表其他字段。 + +**Tech Stack:** Spring Boot、MyBatis Plus、Lombok、Maven、XML Mapper + +--- + +### Task 1: 为列表专用 VO 补充更新时间字段 + +**Files:** +- Modify: `ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowListVO.java` +- Test: `ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowListVOTest.java` + +- [ ] **Step 1: 写失败测试约束 `updateTime` 字段存在** + +在 `LoanPricingWorkflowListVOTest` 中新增一个最小测试,例如: + +```java +@Test +void shouldExposeUpdateTimeField() { + LoanPricingWorkflowListVO vo = new LoanPricingWorkflowListVO(); + Date now = new Date(); + vo.setUpdateTime(now); + + assertEquals(now, vo.getUpdateTime()); +} +``` + +- [ ] **Step 2: 运行测试确认在字段未添加前失败** + +Run: `mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=LoanPricingWorkflowListVOTest test` +Expected: FAIL,提示 `updateTime` 相关 getter/setter 不存在。 + +- [ ] **Step 3: 在 VO 中新增 `updateTime`** + +在 `LoanPricingWorkflowListVO` 中新增: + +```java +private Date updateTime; +``` + +- [ ] **Step 4: 重新运行测试确认通过** + +Run: `mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=LoanPricingWorkflowListVOTest test` +Expected: PASS + +### Task 2: 让联表 SQL 返回更新时间 + +**Files:** +- Modify: `ruoyi-loan-pricing/src/main/resources/mapper/loanpricing/LoanPricingWorkflowMapper.xml` +- Test: `ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImplTest.java` + +- [ ] **Step 1: 写失败测试约束列表分页结果透传 `updateTime`** + +在 `LoanPricingWorkflowServiceImplTest` 中新增测试,例如: + +```java +@Test +void shouldReturnPagedWorkflowListWithUpdateTime() { + LoanPricingWorkflowListVO row = new LoanPricingWorkflowListVO(); + Date now = new Date(); + row.setUpdateTime(now); + + Page pageResult = new Page<>(1, 10); + pageResult.setRecords(List.of(row)); + + when(loanPricingWorkflowMapper.selectWorkflowPageWithRates(any(), any())).thenReturn(pageResult); + + IPage result = loanPricingWorkflowService.selectLoanPricingPage(new Page<>(1, 10), new LoanPricingWorkflow()); + + assertEquals(now, result.getRecords().get(0).getUpdateTime()); +} +``` + +- [ ] **Step 2: 运行测试确认在 SQL/VO 未对齐前失败** + +Run: `mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=LoanPricingWorkflowServiceImplTest test` +Expected: 若 `updateTime` 尚未补齐,则失败。 + +- [ ] **Step 3: 在联表 SQL 中新增更新时间返回字段** + +在 `LoanPricingWorkflowMapper.xml` 的 `SELECT` 中新增: + +```xml +lpw.update_time AS updateTime +``` + +并保留: + +```xml +ORDER BY lpw.update_time DESC +``` + +- [ ] **Step 4: 运行服务层测试确认通过** + +Run: `mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=LoanPricingWorkflowServiceImplTest test` +Expected: PASS + +- [ ] **Step 5: 运行模块测试确认无回归** + +Run: `mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false test` +Expected: 模块测试通过。 + +- [ ] **Step 6: 补充后端实施记录** + +Create: `doc/implementation-report-2026-03-28-workflow-update-time-list-backend.md` + +至少写明: + +```markdown +- 列表专用 VO 已新增 `updateTime` +- 联表 SQL 已返回 `lpw.update_time AS updateTime` +- 列表继续按 `lpw.update_time DESC` 排序 +- 已完成后端模块测试验证 +``` diff --git a/doc/2026-03-28-workflow-update-time-list-design.md b/doc/2026-03-28-workflow-update-time-list-design.md new file mode 100644 index 0000000..49d78b7 --- /dev/null +++ b/doc/2026-03-28-workflow-update-time-list-design.md @@ -0,0 +1,164 @@ +# 流程列表更新时间展示设计文档 + +## 1. 背景 + +当前流程列表页展示的是“创建时间”,但列表排序语义已经是按 `update_time` 倒序。这会导致页面展示字段与排序依据不一致。 + +本次需求是将流程列表中的“创建时间”替换为“更新时间”,并保持列表继续按更新时间排序。 + +## 2. 已确认约束 + +- 仅调整流程列表页时间列展示 +- 列表中不同时展示创建时间和更新时间 +- 后端列表链路继续按 `update_time` 倒序排序 +- 前端时间列改为展示 `updateTime` +- 不修改详情页时间展示逻辑 +- 文档和计划统一保存在 `doc` 目录 + +## 3. 现状分析 + +当前列表链路情况如下: + +1. 前端流程列表页时间列文案为“创建时间” +2. 前端时间列绑定字段为 `createTime` +3. 后端列表专用 SQL 已按 `lpw.update_time DESC` 排序 +4. 列表专用 VO 当前仅暴露 `createTime` + +因此页面展示与实际排序依据不一致。 + +## 4. 方案对比 + +### 方案一:前后端统一切换为更新时间 + +做法: + +- 前端将时间列文案改为“更新时间” +- 前端字段绑定从 `createTime` 改为 `updateTime` +- 后端列表专用 VO 增加 `updateTime` +- 联表 SQL 返回 `lpw.update_time AS updateTime` +- 排序继续保留 `ORDER BY lpw.update_time DESC` + +优点: + +- 展示语义与排序语义完全一致 +- 改动范围小 +- 不引入字段语义混乱 + +缺点: + +- 无明显缺点 + +### 方案二:继续展示创建时间,只补充说明按更新时间排序 + +做法: + +- 保持前端展示 `createTime` +- 仅在文档或页面认知上说明排序按更新时间进行 + +优点: + +- 改动最少 + +缺点: + +- 不符合“列表中展示更新时间”的需求 +- 页面展示和排序逻辑仍不一致 + +### 方案三:后端把 `update_time` 映射到 `createTime` + +做法: + +- 前端继续绑定 `createTime` +- 后端列表返回时用 `update_time` 填到 `createTime` + +优点: + +- 前端改动更少 + +缺点: + +- 字段语义错误 +- 后续维护容易误解 + +## 5. 设计结论 + +采用方案一。 + +最终实现为: + +- 流程列表页将“创建时间”替换为“更新时间” +- 时间列字段绑定改为 `updateTime` +- 后端列表专用 VO 补充 `updateTime` +- 联表 SQL 返回 `lpw.update_time AS updateTime` +- 排序继续按 `lpw.update_time DESC` + +## 6. 后端设计 + +### 6.1 返回对象 + +列表专用返回对象 `LoanPricingWorkflowListVO` 增加: + +- `private Date updateTime;` + +保留现有字段不变。 + +### 6.2 SQL 设计 + +在列表专用 SQL 中: + +- 新增 `lpw.update_time AS updateTime` +- 保持 `ORDER BY lpw.update_time DESC` + +不修改当前筛选条件。 + +## 7. 前端设计 + +在 `ruoyi-ui/src/views/loanPricing/workflow/index.vue` 中: + +- 将时间列文案从“创建时间”改为“更新时间” +- 将列绑定字段从 `createTime` 改为 `updateTime` +- 模板中 `parseTime` 的参数改为 `scope.row.updateTime` + +页面中只保留这一列,不再显示创建时间。 + +## 8. 边界与非目标 + +本次不包含以下内容: + +- 不新增双时间列展示 +- 不修改详情页时间展示逻辑 +- 不修改数据库表结构 +- 不调整列表筛选项 +- 不改变分页行为 + +## 9. 风险与控制 + +风险点主要有两个: + +1. 后端 VO 未补充 `updateTime`,前端会拿不到值 +2. 前端列头改了但仍绑定 `createTime`,会继续展示旧字段 + +控制方式: + +- 同步修改 VO、SQL、前端模板三个位置 +- 保持排序语句不动,只对齐展示字段 +- 通过源码检查、后端测试和前端构建做验证 + +## 10. 验证方案 + +实施后需要完成以下验证: + +1. 前端列表时间列文案为“更新时间” +2. 前端列表时间列绑定字段为 `updateTime` +3. 后端 `LoanPricingWorkflowListVO` 已定义 `updateTime` +4. 后端联表 SQL 已返回 `lpw.update_time AS updateTime` +5. 后端模块测试通过 +6. 前端生产构建通过 + +## 11. 实施范围 + +- 前端:流程列表页 1 个页面文件 +- 后端:列表 VO 与联表 SQL +- 数据库:无改动 + +本次属于列表展示字段与排序语义对齐,不涉及业务流程变更。 diff --git a/doc/2026-03-28-workflow-update-time-list-frontend-plan.md b/doc/2026-03-28-workflow-update-time-list-frontend-plan.md new file mode 100644 index 0000000..adb6236 --- /dev/null +++ b/doc/2026-03-28-workflow-update-time-list-frontend-plan.md @@ -0,0 +1,70 @@ +# 流程列表更新时间展示前端实施计划 + +> **For agentic workers:** REQUIRED: Use superpowers:executing-plans to implement this plan in this repository. Do not use subagents. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 将流程列表页中的“创建时间”替换为“更新时间”并展示 `updateTime`。 + +**Architecture:** 前端只修改流程列表页时间列文案和字段绑定,不新增双时间列,也不改其他列表列。页面展示字段与后端当前按更新时间排序的语义保持一致。 + +**Tech Stack:** Vue 2、Element UI、RuoYi 前端工程、npm + +--- + +### Task 1: 替换流程列表时间列为更新时间 + +**Files:** +- Modify: `ruoyi-ui/src/views/loanPricing/workflow/index.vue` + +- [ ] **Step 1: 查看当前时间列实现** + +Run: `sed -n '50,70p' ruoyi-ui/src/views/loanPricing/workflow/index.vue` +Expected: 能看到当前列表存在“创建时间”列,且模板中绑定 `createTime`。 + +- [ ] **Step 2: 将时间列替换为更新时间** + +将以下结构: + +```vue + + + +``` + +改为: + +```vue + + + +``` + +- [ ] **Step 3: 重新检查源码确认文案和字段绑定** + +Run: `rg -n '更新时间|创建时间|prop=\"updateTime\"|prop=\"createTime\"' ruoyi-ui/src/views/loanPricing/workflow/index.vue` +Expected: 该列表时间列显示为“更新时间”并绑定 `updateTime`。 + +- [ ] **Step 4: 执行前端构建验证** + +Run: `npm --prefix ruoyi-ui run build:prod` +Expected: 构建成功,输出包含 `Build complete.` + +- [ ] **Step 5: 补充前端实施记录** + +Create: `doc/implementation-report-2026-03-28-workflow-update-time-list-frontend.md` + +至少写明: + +```markdown +- 流程列表页时间列已从“创建时间”替换为“更新时间” +- 列绑定已从 `createTime` 切换为 `updateTime` +- 已完成前端构建验证 +``` + +- [ ] **Step 6: 如果为验证启动了前端进程,结束对应进程** + +Run: `ps -ef | rg 'vue-cli-service|ruoyi-ui'` +Expected: 若本次任务为验证启动了新的前端进程,验证结束后主动停止;对非本次启动的现有进程不做处理。 diff --git a/doc/implementation-report-2026-03-28-workflow-update-time-list-design.md b/doc/implementation-report-2026-03-28-workflow-update-time-list-design.md new file mode 100644 index 0000000..8f420ef --- /dev/null +++ b/doc/implementation-report-2026-03-28-workflow-update-time-list-design.md @@ -0,0 +1,24 @@ +# 流程列表更新时间展示设计实施记录 + +## 实施时间 +- 2026-03-28 + +## 修改内容 +- 新增流程列表更新时间展示设计文档 +- 明确列表将“创建时间”替换为“更新时间” +- 明确后端列表 VO 与联表 SQL 补充 `updateTime` +- 明确排序继续按 `update_time DESC` + +## 文档路径 +- `doc/2026-03-28-workflow-update-time-list-design.md` +- `doc/implementation-report-2026-03-28-workflow-update-time-list-design.md` + +## 设计结论 +- 前端列表只展示“更新时间” +- 前端时间列绑定 `updateTime` +- 后端列表专用 VO 增加 `updateTime` +- 联表 SQL 返回 `lpw.update_time AS updateTime` + +## 说明 +- 按仓库要求,本次先完成设计确认,再进入前后端实施计划 +- 仓库约束禁止启用 subagent,因此本次未执行基于 subagent 的设计文档复审流程 diff --git a/doc/implementation-report-2026-03-28-workflow-update-time-list-plans.md b/doc/implementation-report-2026-03-28-workflow-update-time-list-plans.md new file mode 100644 index 0000000..2c08d6c --- /dev/null +++ b/doc/implementation-report-2026-03-28-workflow-update-time-list-plans.md @@ -0,0 +1,24 @@ +# 流程列表更新时间展示实施计划产出记录 + +## 实施时间 +- 2026-03-28 + +## 修改内容 +- 基于设计文档补充前端实施计划 +- 基于设计文档补充后端实施计划 +- 明确列表页时间列将从创建时间切换为更新时间 + +## 文档路径 +- `doc/2026-03-28-workflow-update-time-list-design.md` +- `doc/2026-03-28-workflow-update-time-list-frontend-plan.md` +- `doc/2026-03-28-workflow-update-time-list-backend-plan.md` +- `doc/implementation-report-2026-03-28-workflow-update-time-list-plans.md` + +## 计划结论 +- 前端计划只替换流程列表页时间列文案和字段绑定 +- 后端计划只调整列表专用 VO 与联表 SQL 的返回字段 +- 排序继续按 `update_time DESC` + +## 说明 +- 按仓库要求,设计文档和实施计划均保存在 `doc` 目录 +- 仓库约束禁止启用 subagent,因此本次未执行基于 subagent 的计划文档复审流程