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(``) const end = source.indexOf('', 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('

业务信息

') 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)'), '个人流程详情关键信息未展示产品最低利率下限' ) const requiredRetailFields = [ 'retailOutput.loanRateHistory', 'retailOutput.smoothRange', 'retailOutput.finalCalculateRate', 'retailOutput.referenceRate', 'retailOutput.blackCust', 'retailOutput.branchBp', 'retailOutput.bpLoanUse', 'retailOutput.midPerGasDdc' ] requiredRetailFields.forEach((field) => { assert(modelOutput.includes(field), `模型输出缺少字段展示: ${field}`) }) assert( modelOutput.includes("this.resultItem('营业执照', this.formatBoolean(this.retailOutput.bizProof))"), '个人风险度缺少营业执照或 BP_贷款用途关联展示' ) assert( detailCard.includes('label="客户名称"') && !detailCard.includes('label="灰黑名单客户"') && !detailCard.includes('retailOutput && retailOutput.greyBlackCust'), '个人流程详情基本信息不应展示灰黑名单客户' ) assert( !basicInfo.includes('label="基准利率"') && !basicInfo.includes('retailOutput && retailOutput.baseLoanRate'), '个人流程详情基本信息不应展示基准利率' ) assert( !detailCard.includes('label="运行模式"') && !modelOutput.includes('

基本信息

'), '个人详情仍展示运行模式或模型输出基本信息' ) console.log('retail display fields assertions passed')