27 KiB
数字债权服务系统前端页面设计文档
概览
基于RuoYi-Vue3框架和数字债权服务系统的后端API接口,设计完整的前端页面架构。系统将包含8个核心业务模块,每个模块都有完整的CRUD页面、数据展示和交互功能,确保用户能够高效地管理数字债权业务。
架构
基于RuoYi权限体系的架构
RuoYi权限集成架构
├── 权限API集成层
│ ├── 角色权限API: GET /dev-api/system/role/list
│ ├── 菜单权限API: GET /dev-api/system/menu/roleMenuTreeselect/{roleId}
│ ├── 权限数据缓存和同步机制
│ └── 权限变更实时通知
├── 业务角色映射层
│ ├── 安保公司 → RuoYi角色ID映射
│ ├── 甲方单位 → RuoYi角色ID映射
│ ├── 金融机构 → RuoYi角色ID映射
│ ├── 系统管理员 → RuoYi管理员角色
│ └── 平台运营 → RuoYi运营角色
└── 前端权限控制层
├── 页面访问权限控制
├── 功能按钮显示控制
├── 数据范围权限过滤
└── 操作权限验证
RuoYi菜单配置结构
数字债权服务系统菜单配置 (在RuoYi菜单管理中配置)
├── 数字债权服务 (主菜单)
│ ├── 合同管理
│ │ ├── 合同列表 [security_company, client_company, administrator]
│ │ ├── 合同创建 [security_company, administrator]
│ │ ├── 合同上传 [security_company, administrator]
│ │ └── 合同确认 [client_company, administrator]
│ ├── 债权管理
│ │ ├── 债权列表 [security_company, financial_institution, administrator]
│ │ ├── 债权生成 [security_company, administrator]
│ │ ├── 债权验证 [all_roles]
│ │ └── 数字签名 [security_company, financial_institution, administrator]
│ ├── 融资管理
│ │ ├── 融资申请列表 [security_company, financial_institution, administrator]
│ │ ├── 融资申请 [security_company, administrator]
│ │ ├── 融资审批 [financial_institution, administrator]
│ │ └── 风险评估 [financial_institution, administrator]
│ ├── 支付结算
│ │ ├── 支付管理 [client_company, financial_institution, administrator]
│ │ ├── 支付处理 [client_company, administrator]
│ │ ├── 监管账户 [financial_institution, administrator]
│ │ └── 资金分配 [financial_institution, administrator]
│ ├── 区块链集成
│ │ ├── 区块链管理 [administrator, platform_operator]
│ │ ├── 数据上链 [administrator, platform_operator]
│ │ ├── 数据验证 [all_roles]
│ │ └── 智能合约 [administrator, platform_operator]
│ ├── 报表分析
│ │ ├── 仪表板 [all_roles] (个性化数据)
│ │ ├── 报表生成 [administrator, platform_operator]
│ │ ├── 财务报表 [相关方可访问]
│ │ └── 风险分析 [financial_institution, administrator]
│ ├── 安全管理
│ │ ├── 安全管理 [administrator]
│ │ ├── MFA设置 [all_roles] (个人设置)
│ │ └── 审计日志 [administrator]
│ └── 通知服务
│ ├── 通知管理 [administrator, platform_operator]
│ ├── 消息发送 [administrator, platform_operator]
│ ├── 消息模板 [administrator, platform_operator]
│ └── 投递状态 [administrator, platform_operator]
RuoYi角色配置
数字债权业务角色配置 (在RuoYi角色管理中配置)
├── 安保公司角色
│ ├── 角色名称:数字债权-安保公司
│ ├── 角色权限:security_company
│ ├── 数据范围:仅本公司数据
│ ├── 菜单权限:合同管理、债权管理、融资管理、支付查看、报表查看
│ └── 按钮权限:创建、编辑、删除(限本公司数据)
├── 甲方单位角色
│ ├── 角色名称:数字债权-甲方单位
│ ├── 角色权限:client_company
│ ├── 数据范围:相关合同数据
│ ├── 菜单权限:合同查看、支付管理、报表查看
│ └── 按钮权限:确认、支付、查看
├── 金融机构角色
│ ├── 角色名称:数字债权-金融机构
│ ├── 角色权限:financial_institution
│ ├── 数据范围:融资相关数据
│ ├── 菜单权限:融资管理、风险评估、支付管理、报表分析
│ └── 按钮权限:审批、评估、资金管理
├── 系统管理员角色
│ ├── 角色名称:数字债权-系统管理员
│ ├── 角色权限:administrator
│ ├── 数据范围:全部数据
│ ├── 菜单权限:所有模块
│ └── 按钮权限:所有操作
└── 平台运营角色
├── 角色名称:数字债权-平台运营
├── 角色权限:platform_operator
├── 数据范围:平台级数据
├── 菜单权限:报表分析、通知服务、区块链管理
└── 按钮权限:分析、通知、技术运维
页面模块架构
数字债权服务系统前端
├── 合同管理模块 (Contract Management) [安保公司主导,甲方单位参与]
│ ├── 合同列表页面 (ContractList.vue) [所有角色可访问,数据范围不同]
│ ├── 合同创建页面 (ContractCreate.vue) [仅安保公司]
│ ├── 合同详情页面 (ContractDetail.vue) [相关方可访问]
│ ├── 合同上传页面 (ContractUpload.vue) [安保公司、管理员]
│ └── 合同确认页面 (ContractConfirm.vue) [甲方单位、管理员]
├── 债权管理模块 (Credit Management) [安保公司主导,金融机构查看]
│ ├── 债权列表页面 (CreditList.vue) [安保公司、金融机构、管理员]
│ ├── 债权生成页面 (CreditGenerate.vue) [仅安保公司、管理员]
│ ├── 债权详情页面 (CreditDetail.vue) [相关方可访问]
│ ├── 债权验证页面 (CreditValidate.vue) [所有角色]
│ └── 数字签名页面 (CreditSignature.vue) [安保公司、金融机构、管理员]
├── 融资管理模块 (Financing Management) [安保公司申请,金融机构审批]
│ ├── 融资申请列表页面 (FinancingList.vue) [安保公司、金融机构、管理员]
│ ├── 融资申请页面 (FinancingApply.vue) [仅安保公司]
│ ├── 融资审批页面 (FinancingApprove.vue) [仅金融机构、管理员]
│ ├── 风险评估页面 (RiskAssessment.vue) [金融机构、管理员]
│ └── 利率信息页面 (InterestRate.vue) [安保公司、金融机构]
├── 支付结算模块 (Payment Settlement) [甲方单位主导,其他角色查看]
│ ├── 支付管理页面 (PaymentManagement.vue) [甲方单位、金融机构、管理员]
│ ├── 支付处理页面 (PaymentProcess.vue) [甲方单位、管理员]
│ ├── 监管账户页面 (EscrowAccount.vue) [金融机构、管理员]
│ ├── 资金分配页面 (FundDistribution.vue) [金融机构、管理员]
│ └── 支付历史页面 (PaymentHistory.vue) [相关方可访问]
├── 区块链集成模块 (Blockchain Integration) [技术模块,管理员和运营]
│ ├── 区块链管理页面 (BlockchainManagement.vue) [管理员、平台运营]
│ ├── 数据上链页面 (DataStorage.vue) [管理员、平台运营]
│ ├── 数据验证页面 (DataVerification.vue) [所有角色]
│ ├── 智能合约页面 (SmartContract.vue) [管理员、平台运营]
│ └── 交易查询页面 (TransactionQuery.vue) [所有角色]
├── 报表分析模块 (Report Analytics) [所有角色,数据范围不同]
│ ├── 仪表板页面 (Dashboard.vue) [所有角色,个性化数据]
│ ├── 报表生成页面 (ReportGenerate.vue) [管理员、平台运营]
│ ├── 财务报表页面 (FinancialReport.vue) [相关方可访问]
│ ├── 风险分析页面 (RiskAnalysis.vue) [金融机构、管理员]
│ └── 统计数据页面 (Statistics.vue) [管理员、平台运营]
├── 安全管理模块 (Security Management) [管理员专用]
│ ├── 安全管理页面 (SecurityManagement.vue) [仅管理员]
│ ├── MFA设置页面 (MFASettings.vue) [所有角色个人设置]
│ ├── 审计日志页面 (AuditLogs.vue) [仅管理员]
│ ├── 数据加密页面 (DataEncryption.vue) [管理员、平台运营]
│ └── 用户认证页面 (UserAuthentication.vue) [仅管理员]
└── 通知服务模块 (Notification Service) [管理员和运营主导]
├── 通知管理页面 (NotificationManagement.vue) [管理员、平台运营]
├── 消息发送页面 (MessageSend.vue) [管理员、平台运营]
├── 消息模板页面 (MessageTemplate.vue) [管理员、平台运营]
├── 投递状态页面 (DeliveryStatus.vue) [管理员、平台运营]
└── 批量发送页面 (BatchSend.vue) [管理员、平台运营]
API服务架构
src/api/
├── system/
│ ├── role.js # RuoYi角色权限API
│ └── menu.js # RuoYi菜单权限API
├── credit/
│ ├── contract.js # 合同管理API
│ ├── credit.js # 债权管理API
│ └── financing.js # 融资管理API
├── payment/
│ └── payment.js # 支付结算API
├── blockchain/
│ └── blockchain.js # 区块链集成API
├── reports/
│ └── reports.js # 报表分析API
├── security/
│ └── security.js # 安全管理API
└── notification/
└── notification.js # 通知服务API
路由权限控制架构
src/router/modules/
├── contract.js # 合同管理路由 [security_company, client_company, administrator]
├── credit.js # 债权管理路由 [security_company, financial_institution, administrator]
├── financing.js # 融资管理路由 [security_company, financial_institution, administrator]
├── payment.js # 支付结算路由 [client_company, financial_institution, administrator]
├── blockchain.js # 区块链集成路由 [administrator, platform_operator]
├── reports.js # 报表分析路由 [所有角色,数据范围不同]
├── security.js # 安全管理路由 [administrator]
└── notification.js # 通知服务路由 [administrator, platform_operator]
// 路由守卫配置
const routePermissions = {
'/contract': ['security_company', 'client_company', 'administrator'],
'/contract/create': ['security_company', 'administrator'],
'/contract/confirm': ['client_company', 'administrator'],
'/credit': ['security_company', 'financial_institution', 'administrator'],
'/credit/generate': ['security_company', 'administrator'],
'/financing': ['security_company', 'financial_institution', 'administrator'],
'/financing/apply': ['security_company', 'administrator'],
'/financing/approve': ['financial_institution', 'administrator'],
'/payment': ['client_company', 'financial_institution', 'administrator'],
'/payment/process': ['client_company', 'administrator'],
'/blockchain': ['administrator', 'platform_operator'],
'/reports': ['all'], // 所有角色可访问,但数据范围不同
'/security': ['administrator'],
'/notification': ['administrator', 'platform_operator']
}
组件和接口
核心页面组件
权限控制组件设计
RoleBasedAccess.vue (角色权限控制组件)
// 主要功能
- 基于用户角色控制页面访问
- 动态显示/隐藏功能按钮
- 数据范围权限过滤
- 操作权限验证
// 权限配置
const rolePermissions = {
'security_company': {
modules: ['contract', 'credit', 'financing', 'payment_view', 'report_view'],
actions: ['contract_create', 'credit_generate', 'financing_apply'],
dataScope: 'own_company'
},
'client_company': {
modules: ['contract_view', 'payment', 'report_view'],
actions: ['contract_confirm', 'payment_process'],
dataScope: 'related_contracts'
},
'financial_institution': {
modules: ['financing', 'risk_assessment', 'payment_manage', 'report_analytics'],
actions: ['financing_approve', 'risk_assess', 'fund_distribute'],
dataScope: 'financing_related'
},
'administrator': {
modules: ['all'],
actions: ['all'],
dataScope: 'all'
},
'platform_operator': {
modules: ['report_analytics', 'notification', 'blockchain'],
actions: ['report_generate', 'message_send', 'blockchain_manage'],
dataScope: 'platform_level'
}
}
1. 合同管理模块组件
ContractList.vue (合同列表页面)
// 角色权限差异
- 安保公司:显示自己创建的合同,可创建、编辑、删除
- 甲方单位:显示相关的合同,可确认、查看详情
- 金融机构:显示融资相关的合同,仅查看
- 管理员:显示所有合同,可执行所有操作
- 平台运营:显示统计信息,不能操作具体合同
// API调用(基于角色)
- GET /api/credit/contracts?role={userRole}&scope={dataScope}
- 数据过滤:根据用户角色和数据权限范围过滤返回结果
ContractCreate.vue (合同创建页面)
// 访问权限
- 允许角色:security_company, administrator
- 禁止角色:client_company, financial_institution, platform_operator
// 功能差异
- 安保公司:可创建与自己相关的合同
- 管理员:可创建任意合同,可指定合同双方
ContractConfirm.vue (合同确认页面)
// 访问权限
- 允许角色:client_company, administrator
- 禁止角色:security_company, financial_institution, platform_operator
// 功能差异
- 甲方单位:只能确认与自己相关的合同
- 管理员:可确认任意合同
2. 债权管理模块组件
CreditList.vue (债权列表页面)
// 角色权限差异
- 安保公司:显示自己生成的债权,可生成、查看、验证
- 金融机构:显示融资申请相关的债权,可查看、验证
- 甲方单位:显示相关合同的债权,仅查看
- 管理员:显示所有债权,可执行所有操作
// 数据范围控制
- 根据用户角色过滤债权数据
- 敏感信息(如数字签名)根据权限显示
CreditGenerate.vue (债权生成页面)
// 访问权限
- 允许角色:security_company, administrator
- 禁止角色:client_company, financial_institution, platform_operator
// 合同选择范围
- 安保公司:只能选择自己的已确认合同
- 管理员:可选择任意已确认合同
3. 融资管理模块组件
FinancingList.vue (融资申请列表页面)
// 角色权限差异
- 安保公司:显示自己的融资申请,可申请、查看状态
- 金融机构:显示待审批和已审批的申请,可审批、评估
- 管理员:显示所有申请,可执行所有操作
- 其他角色:无权访问
FinancingApply.vue (融资申请页面)
// 访问权限
- 允许角色:security_company, administrator
- 债权选择范围:只能选择自己的有效债权
FinancingApprove.vue (融资审批页面)
// 访问权限
- 允许角色:financial_institution, administrator
- 审批权限:金融机构只能审批分配给自己的申请
4. 支付结算模块组件
PaymentManagement.vue (支付管理页面)
// 角色权限差异
- 甲方单位:显示自己的支付订单,可处理支付
- 金融机构:显示融资相关的支付,可管理资金分配
- 安保公司:显示收款记录,仅查看
- 管理员:显示所有支付,可执行所有操作
PaymentProcess.vue (支付处理页面)
// 访问权限
- 允许角色:client_company, administrator
- 支付范围:甲方单位只能处理自己的待付款项
5. 区块链集成模块组件
BlockchainManagement.vue (区块链管理页面)
// 访问权限
- 允许角色:administrator, platform_operator
- 功能差异:
- 管理员:完全管理权限
- 平台运营:监控和维护权限,不能修改配置
DataVerification.vue (数据验证页面)
// 访问权限
- 允许角色:所有角色
- 验证范围:根据角色限制可验证的数据类型
6. 报表分析模块组件
Dashboard.vue (仪表板页面)
// 个性化仪表板
- 安保公司:合同统计、债权概览、融资状态
- 甲方单位:支付提醒、合同状态、费用统计
- 金融机构:融资概览、风险分析、收益统计
- 管理员:系统概览、用户活跃度、业务统计
- 平台运营:技术指标、系统健康、数据分析
ReportGenerate.vue (报表生成页面)
// 访问权限
- 允许角色:administrator, platform_operator
- 报表类型:根据角色提供不同的报表模板
7. 安全管理模块组件
SecurityManagement.vue (安全管理页面)
// 访问权限
- 允许角色:administrator
- 功能:用户管理、权限配置、安全策略
MFASettings.vue (MFA设置页面)
// 访问权限
- 允许角色:所有角色(个人设置)
- 功能:每个用户管理自己的MFA设置
8. 通知服务模块组件
NotificationManagement.vue (通知管理页面)
// 访问权限
- 允许角色:administrator, platform_operator
- 功能差异:
- 管理员:完全管理权限,可发送系统通知
- 平台运营:业务通知管理,不能发送系统级通知
数据模型
用户角色和权限模型
用户角色枚举
const UserRole = {
SECURITY_COMPANY: 'security_company', // 安保公司
CLIENT_COMPANY: 'client_company', // 甲方单位
FINANCIAL_INSTITUTION: 'financial_institution', // 金融机构
ADMINISTRATOR: 'administrator', // 系统管理员
PLATFORM_OPERATOR: 'platform_operator' // 平台运营
}
权限数据模型
const PermissionModel = {
userId: String,
role: String,
permissions: Array, // 具体权限列表
dataScope: String, // 数据访问范围
companyId: String, // 所属公司ID
departmentId: String, // 所属部门ID
createdAt: Date,
updatedAt: Date
}
前端数据模型定义
合同数据模型
const ContractModel = {
id: String,
contractNumber: String,
title: String,
clientCompany: String,
clientCompanyId: String, // 甲方单位ID
securityCompany: String,
securityCompanyId: String, // 安保公司ID
amount: Number,
startDate: Date,
endDate: Date,
status: String, // 'draft', 'pending', 'confirmed', 'completed'
fileUrl: String,
createdBy: String, // 创建者ID
createdByRole: String, // 创建者角色
createdAt: Date,
updatedAt: Date,
// 权限相关字段
canEdit: Boolean, // 当前用户是否可编辑
canConfirm: Boolean, // 当前用户是否可确认
canDelete: Boolean // 当前用户是否可删除
}
债权数据模型
const CreditModel = {
id: String,
creditNumber: String,
contractId: String,
contractNumber: String,
securityCompanyId: String, // 债权持有方
amount: Number,
issueDate: Date,
maturityDate: Date,
status: String, // 'generated', 'active', 'transferred', 'settled'
digitalSignature: String,
blockchainHash: String,
createdAt: Date,
// 权限相关字段
canTransfer: Boolean, // 当前用户是否可转让
canValidate: Boolean, // 当前用户是否可验证
canView: Boolean // 当前用户是否可查看详情
}
融资数据模型
const FinancingModel = {
id: String,
applicationNumber: String,
creditId: String,
applicantId: String, // 申请方ID (安保公司)
financialInstitutionId: String, // 金融机构ID
requestedAmount: Number,
approvedAmount: Number,
interestRate: Number,
term: Number,
status: String, // 'pending', 'approved', 'rejected', 'disbursed'
riskLevel: String, // 'low', 'medium', 'high'
createdAt: Date,
approvedAt: Date,
approvedBy: String, // 审批人ID
// 权限相关字段
canApprove: Boolean, // 当前用户是否可审批
canModify: Boolean, // 当前用户是否可修改
canCancel: Boolean // 当前用户是否可取消
}
支付数据模型
const PaymentModel = {
id: String,
paymentNumber: String,
amount: Number,
paymentType: String, // 'contract_payment', 'financing_disbursement'
payerId: String, // 付款方ID
payeeId: String, // 收款方ID
status: String, // 'pending', 'processing', 'completed', 'failed'
escrowAccountId: String,
transactionHash: String,
createdAt: Date,
completedAt: Date,
// 权限相关字段
canProcess: Boolean, // 当前用户是否可处理
canCancel: Boolean, // 当前用户是否可取消
canView: Boolean // 当前用户是否可查看
}
角色仪表板数据模型
// 安保公司仪表板数据
const SecurityCompanyDashboard = {
totalContracts: Number,
activeCredits: Number,
pendingFinancing: Number,
totalRevenue: Number,
recentActivities: Array,
contractStatusChart: Object,
monthlyTrend: Array
}
// 甲方单位仪表板数据
const ClientCompanyDashboard = {
totalContracts: Number,
pendingPayments: Number,
paidAmount: Number,
upcomingPayments: Array,
paymentHistory: Array,
contractStatusChart: Object
}
// 金融机构仪表板数据
const FinancialInstitutionDashboard = {
pendingApplications: Number,
approvedAmount: Number,
totalLoans: Number,
riskDistribution: Array,
portfolioPerformance: Object,
marketIndicators: Array
}
// 管理员仪表板数据
const AdminDashboard = {
systemHealth: Object,
userActivity: Object,
transactionVolume: Object,
securityEvents: Array,
platformStatistics: Object,
businessMetrics: Object
}
// 平台运营仪表板数据
const PlatformOperatorDashboard = {
systemMetrics: Object,
dataAnalytics: Object,
notificationStats: Object,
blockchainStatus: Object,
performanceIndicators: Array
}
正确性属性
属性是一个特征或行为,应该在系统的所有有效执行中保持为真——本质上,是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。
属性 1: API调用一致性
对于任何页面组件和API调用,前端发送的请求格式应该与后端API接口规范完全匹配 验证: 需求 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1
属性 2: 数据展示完整性
对于任何API返回的数据,页面应该正确解析并完整展示所有必要的业务信息 验证: 需求 1.5, 2.3, 3.3, 4.3, 5.3, 6.3, 7.3, 8.3
属性 3: RuoYi权限API集成一致性
对于任何权限相关的API调用,前端应该正确调用RuoYi权限接口并正确处理返回的权限数据 验证: 需求 12.1, 12.2, 12.3
属性 4: 菜单配置完整性
对于任何数字债权业务功能,应该在RuoYi菜单管理中有对应的菜单配置和权限设置 验证: 需求 11.1, 11.3
属性 5: 角色权限一致性
对于任何用户角色和页面访问,显示的功能模块和操作按钮应该与RuoYi权限体系完全匹配 验证: 需求 10.1, 11.4
属性 6: 数据范围权限控制
对于任何用户查询请求,返回的数据应该严格限制在该用户的权限范围内 验证: 需求 10.3, 10.5
属性 7: 表单验证完整性
对于任何用户输入表单,应该进行完整的客户端验证并与服务端验证保持一致 验证: 需求 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2
属性 8: 错误处理一致性
对于任何API调用失败或异常情况,页面应该提供统一的错误处理和用户提示 验证: 需求 9.2
属性 9: 响应式布局适配
对于任何屏幕尺寸和设备类型,页面布局应该自动调整并保持功能完整性 验证: 需求 9.1
属性 10: 数据状态同步
对于任何数据更新操作,页面显示的数据状态应该与服务端数据保持同步 验证: 需求 10.5
属性 9: 操作权限验证
对于任何用户操作请求,应该在前端进行权限预检查并与后端权限验证保持一致 验证: 需求 10.4
属性 10: 页面加载性能
对于任何页面访问请求,页面应该在合理时间内完成加载并提供良好的用户体验 验证: 需求 9.5
属性 11: 角色数据隔离
对于任何不同角色的用户,应该只能访问和操作与其角色相关的业务数据 验证: 需求 10.1, 10.3
属性 12: 路由权限守卫
对于任何页面路由访问,应该根据用户角色进行权限验证,未授权访问应被阻止 验证: 需求 10.2
属性 13: 权限数据同步一致性
对于任何权限数据变更,前端权限控制应该与RuoYi后端权限数据保持实时同步 验证: 需求 11.3, 11.5
错误处理
1. API调用失败处理
- 场景: 网络异常、服务器错误、超时等
- 处理: 统一的错误提示组件,支持重试机制
- 用户体验: 友好的错误信息,避免技术术语
2. 数据验证失败处理
- 场景: 表单数据不符合要求
- 处理: 实时验证提示,字段级错误显示
- 用户体验: 清晰的验证规则说明
3. 权限不足处理
- 场景: 用户访问无权限的功能
- 处理: 隐藏功能按钮,显示权限说明
- 用户体验: 引导用户联系管理员
4. 文件上传失败处理
- 场景: 文件格式不支持、大小超限等
- 处理: 上传前验证,进度显示,失败重试
- 用户体验: 清晰的文件要求说明
测试策略
单元测试
- 组件渲染测试:验证页面组件正确渲染
- API调用测试:验证API请求格式和响应处理
- 数据处理测试:验证数据格式化和验证逻辑
- 权限控制测试:验证基于角色的功能显示
集成测试
- 页面流程测试:验证完整的业务操作流程
- API集成测试:验证前后端接口集成
- 权限集成测试:验证权限控制的端到端流程
- 数据同步测试:验证数据更新的实时同步
端到端测试
- 用户场景测试:验证真实用户操作场景
- 跨页面导航测试:验证页面间的导航和数据传递
- 响应式测试:验证不同设备上的显示效果
- 性能测试:验证页面加载和响应性能
属性基础测试
使用 Vitest 和 Vue Test Utils 进行属性基础测试,每个测试运行最少 100 次迭代以确保属性在各种输入下都成立。每个属性基础测试必须使用注释明确引用设计文档中的正确性属性。