99 lines
3.6 KiB
JavaScript
99 lines
3.6 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
const assert = require('assert')
|
|
|
|
function read(relativePath) {
|
|
return fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8')
|
|
}
|
|
|
|
const personalDetail = read('src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue')
|
|
const modelOutput = read('src/views/loanPricing/workflow/components/ModelOutputDisplay.vue')
|
|
|
|
function extractCard(source, className) {
|
|
const start = source.indexOf(`<el-card class="${className}">`)
|
|
const end = source.indexOf('</el-card>', start)
|
|
assert(start !== -1 && end !== -1, `缺少卡片: ${className}`)
|
|
return source.slice(start, end)
|
|
}
|
|
|
|
const summaryCard = extractCard(personalDetail, 'summary-card')
|
|
const detailCard = extractCard(personalDetail, 'detail-card')
|
|
const businessInfoStart = detailCard.indexOf('<h4 class="section-title">业务信息</h4>')
|
|
const basicInfo = detailCard.slice(0, businessInfoStart)
|
|
const businessInfo = detailCard.slice(businessInfoStart)
|
|
|
|
assert(
|
|
!basicInfo.includes('label="借款期限"')
|
|
&& businessInfo.includes('label="借款期限"')
|
|
&& businessInfo.includes('detailData.loanTerm'),
|
|
'个人详情页借款期限未展示在业务信息中'
|
|
)
|
|
|
|
;['期限', '担保方式', '产品最低利率下限'].forEach((label) => {
|
|
assert(summaryCard.includes(`label="${label}"`), `个人流程详情关键信息缺少字段: ${label}`)
|
|
})
|
|
|
|
;['基准利率', '浮动BP', '最终测算利率'].forEach((label) => {
|
|
assert(!summaryCard.includes(`label="${label}"`), `个人流程详情关键信息不应展示字段: ${label}`)
|
|
})
|
|
|
|
assert(
|
|
personalDetail.includes('formatRate(retailOutput && retailOutput.minRateProduct)'),
|
|
'个人流程详情关键信息未展示产品最低利率下限'
|
|
)
|
|
|
|
assert(
|
|
personalDetail.includes(':guar-type="detailData.guarType"'),
|
|
'个人模型输出未使用流程担保方式控制抵押物行'
|
|
)
|
|
|
|
const requiredRetailFields = [
|
|
'retailOutput.loanRateHistory',
|
|
'retailOutput.smoothRange',
|
|
'retailOutput.finalCalculateRate',
|
|
'retailOutput.referenceRate',
|
|
'retailOutput.branchBp',
|
|
'retailOutput.bpLoanUse',
|
|
'retailOutput.midPerGasDdc',
|
|
'retailOutput.bpPrinOverdue',
|
|
'retailOutput.bpIinterestOverdue',
|
|
'retailOutput.bpCardOverdue'
|
|
]
|
|
|
|
requiredRetailFields.forEach((field) => {
|
|
assert(modelOutput.includes(field), `模型输出缺少字段展示: ${field}`)
|
|
})
|
|
|
|
assert(
|
|
modelOutput.includes("this.resultItem('营业执照', this.formatBoolean(this.retailOutput.bizProof))"),
|
|
'个人风险度缺少营业执照或 BP_贷款用途关联展示'
|
|
)
|
|
|
|
assert(
|
|
basicInfo.includes('label="灰名单客户"')
|
|
&& basicInfo.includes('retailOutput && retailOutput.greyCust')
|
|
&& basicInfo.includes('label="黑名单客户"')
|
|
&& basicInfo.includes('retailOutput && retailOutput.blackCust'),
|
|
'个人流程详情基本信息缺少灰名单客户或黑名单客户'
|
|
)
|
|
|
|
assert(
|
|
!modelOutput.includes("this.resultItem('灰名单客户', this.formatBoolean(this.retailOutput.greyCust))")
|
|
&& !modelOutput.includes("this.resultItem('黑名单客户', this.formatBoolean(this.retailOutput.blackCust))")
|
|
&& !modelOutput.includes("'BP_灰名单与逾期', this.retailOutput.bpGreyOverdue"),
|
|
'个人风险度不应继续展示灰黑客户或旧聚合BP'
|
|
)
|
|
|
|
assert(
|
|
!basicInfo.includes('label="基准利率"')
|
|
&& !basicInfo.includes('retailOutput && retailOutput.baseLoanRate'),
|
|
'个人流程详情基本信息不应展示基准利率'
|
|
)
|
|
|
|
assert(
|
|
!detailCard.includes('label="运行模式"') && !modelOutput.includes('<h4 class="section-title">基本信息</h4>'),
|
|
'个人详情仍展示运行模式或模型输出基本信息'
|
|
)
|
|
|
|
console.log('retail display fields assertions passed')
|