151 lines
6.1 KiB
Markdown
151 lines
6.1 KiB
Markdown
# Loan Pricing Sensitive Data Encryption Frontend Implementation Plan
|
||
|
||
> **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:** 让贷款定价流程前端只按客户内码查询,并在列表页、详情页、模型输出“基本信息”页签稳定展示后端返回的脱敏 `custName`、`idNum`。
|
||
|
||
**Architecture:** 前端不承担任何加解密逻辑,只做查询项收口与脱敏值展示消费。列表页从按 `custName` 查询切换为按 `custIsn` 查询,详情页与 `ModelOutputDisplay.vue` 保持现有结构,继续直接渲染后端返回字段,但要联调确认模型输出“基本信息”页签不再出现敏感明文。
|
||
|
||
**Tech Stack:** Vue 2、Element UI、RuoYi 前端工程、npm
|
||
|
||
---
|
||
|
||
### Task 1: 收口流程列表页查询条件为客户内码
|
||
|
||
**Files:**
|
||
- Modify: `ruoyi-ui/src/views/loanPricing/workflow/index.vue`
|
||
- Modify: `ruoyi-ui/src/api/loanPricing/workflow.js`
|
||
|
||
- [ ] **Step 1: 核对当前查询项与请求参数**
|
||
|
||
Run: `sed -n '1,140p' ruoyi-ui/src/views/loanPricing/workflow/index.vue`
|
||
Expected: 能看到当前页面仍存在“客户名称”查询项和 `queryParams.custName`。
|
||
|
||
- [ ] **Step 2: 将查询项改为客户内码**
|
||
|
||
把列表页查询区调整为类似结构:
|
||
|
||
```vue
|
||
<el-form-item label="客户内码" prop="custIsn">
|
||
<el-input
|
||
v-model="queryParams.custIsn"
|
||
placeholder="请输入客户内码"
|
||
clearable
|
||
@keyup.enter.native="handleQuery"
|
||
/>
|
||
</el-form-item>
|
||
```
|
||
|
||
同步把查询参数从:
|
||
|
||
```js
|
||
custName: undefined
|
||
```
|
||
|
||
改为:
|
||
|
||
```js
|
||
custIsn: undefined
|
||
```
|
||
|
||
- [ ] **Step 3: 核对 API 层无需额外字段转换**
|
||
|
||
检查 `ruoyi-ui/src/api/loanPricing/workflow.js`,确认 `listWorkflow(query)` 继续透传 `params: query` 即可;若代码风格需要,仅补充注释说明,不新增映射逻辑。
|
||
|
||
- [ ] **Step 4: 重新检查源码确认客户名称查询已移除**
|
||
|
||
Run: `rg -n 'custName|custIsn|客户名称|客户内码' ruoyi-ui/src/views/loanPricing/workflow/index.vue ruoyi-ui/src/api/loanPricing/workflow.js`
|
||
Expected: 列表页查询区不再出现 `queryParams.custName`,而是使用 `custIsn`。
|
||
|
||
- [ ] **Step 5: 提交本任务**
|
||
|
||
```bash
|
||
git add ruoyi-ui/src/views/loanPricing/workflow/index.vue ruoyi-ui/src/api/loanPricing/workflow.js
|
||
git commit -m "调整流程列表按客户内码查询"
|
||
```
|
||
|
||
### Task 2: 固化列表页、详情页与模型输出基本信息的脱敏展示消费
|
||
|
||
**Files:**
|
||
- Modify: `ruoyi-ui/src/views/loanPricing/workflow/index.vue`
|
||
- Modify: `ruoyi-ui/src/views/loanPricing/workflow/detail.vue`
|
||
- Modify: `ruoyi-ui/src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue`
|
||
- Modify: `ruoyi-ui/src/views/loanPricing/workflow/components/CorporateWorkflowDetail.vue`
|
||
- Inspect: `ruoyi-ui/src/views/loanPricing/workflow/components/ModelOutputDisplay.vue`
|
||
|
||
- [ ] **Step 1: 核对当前页面直接消费后端字段的位置**
|
||
|
||
Run: `rg -n 'custName|idNum' ruoyi-ui/src/views/loanPricing/workflow/index.vue ruoyi-ui/src/views/loanPricing/workflow/detail.vue ruoyi-ui/src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue ruoyi-ui/src/views/loanPricing/workflow/components/CorporateWorkflowDetail.vue ruoyi-ui/src/views/loanPricing/workflow/components/ModelOutputDisplay.vue`
|
||
Expected: 能定位列表、详情以及模型输出“基本信息”页签中所有 `custName`、`idNum` 的展示位置。
|
||
|
||
- [ ] **Step 2: 去掉任何可能的前端二次处理设想,只保留直接展示**
|
||
|
||
如果页面中需要加说明性注释,保持最小实现,例如:
|
||
|
||
```vue
|
||
<el-descriptions-item label="客户名称">{{ detailData.custName }}</el-descriptions-item>
|
||
<el-descriptions-item label="证件号码">{{ detailData.idNum }}</el-descriptions-item>
|
||
```
|
||
|
||
要求:
|
||
- 不新增“查看明文”按钮
|
||
- 不新增复制原值功能
|
||
- 不在前端自行做脱敏算法
|
||
- `ModelOutputDisplay.vue` 继续直接消费后端字段,不新增本地脱敏逻辑
|
||
|
||
- [ ] **Step 3: 执行前端构建验证**
|
||
|
||
Run: `npm --prefix ruoyi-ui run build:prod`
|
||
Expected: PASS,输出包含 `Build complete.`
|
||
|
||
- [ ] **Step 4: 页面联调确认脱敏展示**
|
||
|
||
Run: 按项目现有方式启动前端并进入贷款定价流程列表页、详情页。
|
||
Expected:
|
||
- 列表页客户名称显示为脱敏值
|
||
- 个人详情页客户名称、证件号码显示为脱敏值
|
||
- 企业详情页客户名称、证件号码显示为脱敏值
|
||
- 个人模型输出“基本信息”页签中的客户名称、证件号码显示为脱敏值
|
||
- 企业模型输出“基本信息”页签中的客户名称、证件号码显示为脱敏值
|
||
|
||
- [ ] **Step 5: 如果为验证启动了前端进程,结束对应进程**
|
||
|
||
Run: `ps -ef | rg 'ruoyi-ui|vue-cli-service|npm'`
|
||
Expected: 仅停止本次联调启动的前端进程;对非本次启动进程不做处理。
|
||
|
||
- [ ] **Step 6: 提交本任务**
|
||
|
||
```bash
|
||
git add ruoyi-ui/src/views/loanPricing/workflow/index.vue ruoyi-ui/src/views/loanPricing/workflow/detail.vue ruoyi-ui/src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue ruoyi-ui/src/views/loanPricing/workflow/components/CorporateWorkflowDetail.vue
|
||
git commit -m "接入流程敏感字段前端脱敏展示"
|
||
```
|
||
|
||
### Task 3: 补前端实施记录
|
||
|
||
**Files:**
|
||
- Create: `doc/implementation-report-2026-03-30-loan-pricing-sensitive-data-encryption-frontend.md`
|
||
|
||
- [ ] **Step 1: 编写前端实施记录**
|
||
|
||
实施记录至少写明:
|
||
|
||
```markdown
|
||
- 流程列表页查询项已从客户名称切换为客户内码
|
||
- 前端不承担 `custName`、`idNum` 加解密逻辑
|
||
- 列表页与详情页均直接展示后端返回的脱敏值
|
||
- 模型输出“基本信息”页签也直接展示后端返回的脱敏值
|
||
- 已完成前端构建验证与页面联调
|
||
```
|
||
|
||
- [ ] **Step 2: 核对文档路径**
|
||
|
||
Run: `ls doc/implementation-report-2026-03-30-loan-pricing-sensitive-data-encryption-frontend.md`
|
||
Expected: 文件位于仓库 `doc/` 目录,不写错到其他文档路径。
|
||
|
||
- [ ] **Step 3: 提交本任务**
|
||
|
||
```bash
|
||
git add doc/implementation-report-2026-03-30-loan-pricing-sensitive-data-encryption-frontend.md
|
||
git commit -m "补充贷款定价敏感字段前端实施记录"
|
||
```
|