anxin-ruoyi/.kiro/specs/digital-credit-service/design.md

856 lines
40 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数字债权服务系统设计文档
## 概述
数字债权服务系统是基于RuoYi框架构建的企业级债权管理平台采用微服务架构和区块链技术为安保服务行业提供完整的债权确权、融资申请和结算清收解决方案。系统遵循RuoYi的分层架构模式在现有框架基础上扩展债权管理相关功能模块。
## 架构设计
### 整体架构
系统采用分层架构模式基于RuoYi框架的模块化设计集成区块链、安全、监控等多个技术栈
```
┌─────────────────────────────────────────────────────────────┐
│ 前端展示层 (Vue3) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │债权管理界面 │ │融资管理界面 │ │ 报表分析界面 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Web控制层 (Controller) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │合同API │ │融资API │ │ 报表API │ │
│ │债权API │ │支付API │ │ 监控API │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 业务服务层 (Service) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │合同管理 │ │融资管理 │ │ 报表分析 │ │
│ │债权管理 │ │支付结算 │ │ 工作流引擎 │ │
│ │安全管理 │ │通知服务 │ │ 集成适配 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 数据访问层 (Mapper) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │合同数据访问 │ │融资数据访问 │ │ 日志数据访问 │ │
│ │债权数据访问 │ │支付数据访问 │ │ 缓存数据访问 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 数据持久层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │MySQL数据库 │ │Redis缓存 │ │ 文件存储 │ │
│ │(业务数据) │ │(会话/缓存) │ │ (报表/日志) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────┼─────────────────────┐
│ │ │
┌───────▼────────┐ ┌─────────▼────────┐ ┌────────▼────────┐
│ 区块链集成层 │ │ 外部系统集成 │ │ 监控告警系统 │
│ ┌─────────────┐ │ │ ┌──────────────┐ │ │ ┌─────────────┐ │
│ │智能合约执行 │ │ │ │金融机构API │ │ │ │系统监控 │ │
│ │数据上链存储 │ │ │ │支付网关集成 │ │ │ │性能监控 │ │
│ │链上数据验证 │ │ │ │第三方服务 │ │ │ │告警通知 │ │
│ └─────────────┘ │ │ └──────────────┘ │ │ └─────────────┘ │
└────────────────┘ └──────────────────┘ └─────────────────┘
```
#### 架构特点
1. **分层解耦**: 严格的分层架构,每层职责明确
2. **模块化设计**: 按业务领域划分模块,便于维护和扩展
3. **多技术栈集成**: 集成区块链、缓存、监控等多种技术
4. **横向扩展**: 支持微服务化改造和水平扩展
5. **安全优先**: 在每一层都集成安全控制和数据保护
### 模块架构
系统将作为新的业务模块集成到RuoYi框架中
```
RuoYi数字债权服务系统模块架构
┌─────────────────────────────────────────────────────────────┐
│ RuoYi Framework │
├─────────────────────────────────────────────────────────────┤
│ ruoyi-admin │ ruoyi-system │ ruoyi-framework │
├─────────────────────────────────────────────────────────────┤
│ 新增债权服务模块 │
├─────────────────┬─────────────────┬─────────────────────────┤
│ ruoyi-credit │ ruoyi-blockchain│ ruoyi-payment │
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
│ │合同管理 ││ │区块链集成 ││ │支付结算 ││
│ │债权管理 ││ │智能合约 ││ │资金监管 ││
│ │融资管理 ││ │数据上链 ││ │资金分配 ││
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
├─────────────────┼─────────────────┼─────────────────────────┤
│ ruoyi-security │ruoyi-notification│ ruoyi-analytics │
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
│ │身份认证 ││ │消息推送 ││ │报表生成 ││
│ │权限管理 ││ │定时提醒 ││ │数据分析 ││
│ │数据加密 ││ │告警通知 ││ │仪表板 ││
│ │审计日志 ││ │消息模板 ││ │数据导出 ││
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
├─────────────────┼─────────────────┼─────────────────────────┤
│ ruoyi-workflow │ ruoyi-integration│ ruoyi-monitor │
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
│ │流程引擎 ││ │外部系统集成 ││ │系统监控 ││
│ │任务管理 ││ │API适配 ││ │性能监控 ││
│ │审批流程 ││ │数据同步 ││ │健康检查 ││
│ │流程回滚 ││ │第三方服务 ││ │告警机制 ││
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
└─────────────────┴─────────────────┴─────────────────────────┘
```
#### 核心模块说明
- **ruoyi-credit**: 债权管理核心模块
- 合同管理服务 (ContractManager)
- 债权管理服务 (CreditManager)
- 融资管理服务 (FinancingManager)
- **ruoyi-blockchain**: 区块链集成模块
- 区块链集成组件 (BlockchainIntegrator)
- 智能合约执行和数据上链
- **ruoyi-payment**: 支付结算模块
- 支付处理组件 (PaymentProcessor)
- 资金监管和分配逻辑
- **ruoyi-security**: 安全管理模块
- 安全管理组件 (SecurityManager)
- 数据加密、身份认证、权限控制
- **ruoyi-notification**: 通知服务模块
- 通知服务组件 (NotificationService)
- 消息推送、定时提醒、告警通知
- **ruoyi-analytics**: 数据分析模块
- 报表分析组件 (ReportAnalyzer)
- 财务报表、数据可视化、仪表板
- **ruoyi-workflow**: 工作流模块
- 工作流引擎组件 (WorkflowEngine)
- 业务流程自动化、任务审批
- **ruoyi-integration**: 集成适配模块
- 集成适配组件 (IntegrationAdapter)
- 外部系统集成、API适配
- **ruoyi-monitor**: 监控管理模块
- 系统监控、性能监控、健康检查
- 缓存管理组件 (CacheManager)
## 组件和接口
### 核心组件
#### 1. 合同管理组件 (ContractManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 处理服务合同的创建、确认和状态管理
- **接口**:
- `createContract(contractInfo)`: 创建服务合同
- `confirmContract(contractId, partyType)`: 确认合同
- `updateContractStatus(contractId, status)`: 更新合同状态
- `validateContractData(contractInfo)`: 验证合同数据完整性
- `generateContractNumber()`: 生成合同编号
#### 2. 债权管理组件 (CreditManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 管理数字债权凭证的生成、验证和状态跟踪
- **接口**:
- `generateCredit(contractId)`: 生成数字债权凭证
- `validateCredit(creditId)`: 验证债权凭证有效性
- `updateCreditStatus(creditId, status)`: 更新债权状态
- `calculateCreditAmount(contractId)`: 计算债权金额
- `generateDigitalSignature(creditData)`: 生成数字签名
#### 3. 融资管理组件 (FinancingManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 处理融资申请、审批和资金管理
- **接口**:
- `submitFinancingApplication(creditId, amount)`: 提交融资申请
- `processApproval(applicationId, result)`: 处理审批结果
- `manageFunds(accountId, operation)`: 管理资金操作
- `calculateInterestRate(creditInfo, institutionId)`: 计算利率
- `generateRiskAssessment(applicationId)`: 生成风险评估报告
#### 4. 区块链集成组件 (BlockchainIntegrator)
- **所属模块**: ruoyi-blockchain
- **架构层级**: 区块链集成层
- **职责**: 与区块链网络交互,确保数据不可篡改性
- **接口**:
- `storeOnChain(data)`: 将数据存储到区块链
- `verifyOnChain(hash)`: 验证链上数据
- `executeSmartContract(contractAddress, params)`: 执行智能合约
- `deploySmartContract(contractCode)`: 部署智能合约
- `queryChainData(queryParams)`: 查询链上数据
- `monitorChainEvents(eventFilter)`: 监控链上事件
#### 5. 支付结算组件 (PaymentProcessor)
- **所属模块**: ruoyi-payment
- **架构层级**: 业务服务层
- **职责**: 处理资金流转、分配和结算
- **接口**:
- `processPayment(paymentInfo)`: 处理支付
- `distributeFunds(distributionPlan)`: 分配资金
- `settleAccount(accountId)`: 结算账户
- `createEscrowAccount(applicationId)`: 创建监管账户
- `transferFunds(fromAccount, toAccount, amount)`: 资金转账
- `calculateFees(transactionAmount)`: 计算手续费
#### 6. 通知服务组件 (NotificationService)
- **所属模块**: ruoyi-notification
- **架构层级**: 业务服务层
- **职责**: 发送各类业务通知和提醒
- **接口**:
- `sendNotification(recipient, message, type)`: 发送通知
- `scheduleReminder(scheduleInfo)`: 安排提醒
- `sendAlert(alertInfo)`: 发送告警
- `createMessageTemplate(templateInfo)`: 创建消息模板
- `batchSendNotification(recipients, message)`: 批量发送通知
- `trackDeliveryStatus(messageId)`: 跟踪消息投递状态
#### 7. 安全管理组件 (SecurityManager)
- **所属模块**: ruoyi-security
- **架构层级**: 业务服务层(横切关注点)
- **职责**: 统一管理系统安全策略和安全事件处理
- **接口**:
- `authenticateUser(credentials)`: 用户身份认证
- `authorizeAccess(userId, resource, action)`: 权限授权
- `encryptData(data, keyId)`: 数据加密
- `decryptData(encryptedData, keyId)`: 数据解密
- `auditLog(operation, userId, resource)`: 审计日志记录
- `detectThreat(eventData)`: 威胁检测
- `handleSecurityIncident(incident)`: 安全事件处理
- `generateMFAToken(userId)`: 生成多因素认证令牌
- `validateMFAToken(userId, token)`: 验证多因素认证令牌
- `maskSensitiveData(data, userRole)`: 敏感数据脱敏
#### 8. 数据管理组件 (DataManager)
- **所属模块**: ruoyi-monitor
- **架构层级**: 数据访问层
- **职责**: 管理数据生命周期、备份恢复和数据质量
- **接口**:
- `backupData(dataType, schedule)`: 数据备份
- `restoreData(backupId, targetTime)`: 数据恢复
- `validateDataIntegrity(dataId)`: 数据完整性验证
- `maskSensitiveData(data, maskLevel)`: 敏感数据脱敏
- `archiveData(dataId, retentionPolicy)`: 数据归档
- `purgeData(dataId, reason)`: 数据清理
- `syncDataAcrossNodes(dataType)`: 跨节点数据同步
- `compressHistoricalData(timeRange)`: 压缩历史数据
- `generateDataQualityReport()`: 生成数据质量报告
#### 9. 工作流引擎组件 (WorkflowEngine)
- **所属模块**: ruoyi-workflow
- **架构层级**: 业务服务层
- **职责**: 管理业务流程的自动化执行和状态跟踪
- **接口**:
- `startWorkflow(processDefinition, parameters)`: 启动工作流
- `executeTask(taskId, action, parameters)`: 执行任务
- `approveTask(taskId, approver, decision)`: 任务审批
- `getWorkflowStatus(instanceId)`: 获取流程状态
- `rollbackWorkflow(instanceId, targetStep)`: 流程回滚
- `defineWorkflowTemplate(templateInfo)`: 定义工作流模板
- `assignTask(taskId, assignee)`: 分配任务
- `escalateTask(taskId, escalationRule)`: 任务升级
#### 10. 报表分析组件 (ReportAnalyzer)
- **所属模块**: ruoyi-analytics
- **架构层级**: 业务服务层
- **职责**: 生成各类业务报表和数据分析
- **接口**:
- `generateReport(reportType, parameters)`: 生成报表
- `exportReport(reportId, format)`: 导出报表
- `analyzeRisk(creditId, analysisType)`: 风险分析
- `calculateMetrics(metricType, timeRange)`: 计算指标
- `createDashboard(userId, widgets)`: 创建仪表板
- `scheduleReportGeneration(reportConfig)`: 定时生成报表
- `aggregateStatistics(dataSource, groupBy)`: 聚合统计数据
- `predictTrends(historicalData, algorithm)`: 趋势预测
#### 11. 集成适配组件 (IntegrationAdapter)
- **所属模块**: ruoyi-integration
- **架构层级**: 外部系统集成层
- **职责**: 与外部系统和第三方服务的集成适配
- **接口**:
- `connectExternalSystem(systemConfig)`: 连接外部系统
- `syncData(sourceSystem, targetSystem, dataType)`: 数据同步
- `callThirdPartyAPI(apiConfig, parameters)`: 调用第三方API
- `handleCallback(callbackData, source)`: 处理回调
- `transformData(data, sourceFormat, targetFormat)`: 数据转换
- `registerWebhook(webhookConfig)`: 注册Webhook
- `retryFailedIntegration(integrationId)`: 重试失败的集成
- `monitorIntegrationHealth(systemId)`: 监控集成健康状态
#### 12. 缓存管理组件 (CacheManager)
- **所属模块**: ruoyi-monitor
- **架构层级**: 数据访问层
- **职责**: 管理系统缓存策略和性能优化
- **接口**:
- `cacheData(key, data, expiration)`: 缓存数据
- `getCachedData(key)`: 获取缓存数据
- `invalidateCache(pattern)`: 失效缓存
- `preloadCache(dataType)`: 预加载缓存
- `monitorCachePerformance()`: 监控缓存性能
- `configureCachePolicy(cacheConfig)`: 配置缓存策略
- `distributeCacheUpdate(key, data)`: 分布式缓存更新
- `analyzeCacheHitRate(timeRange)`: 分析缓存命中率
### API接口设计
#### RESTful API端点
##### 合同管理API (ruoyi-credit模块)
```
POST /api/credit/contracts # 创建服务合同
PUT /api/credit/contracts/{id}/confirm # 确认合同
GET /api/credit/contracts/{id} # 获取合同详情
GET /api/credit/contracts # 查询合同列表
PUT /api/credit/contracts/{id}/status # 更新合同状态
DELETE /api/credit/contracts/{id} # 删除合同
POST /api/credit/contracts/{id}/validate # 验证合同数据
```
##### 债权管理API (ruoyi-credit模块)
```
POST /api/credit/credits # 生成数字债权凭证
GET /api/credit/credits/{id} # 获取债权凭证详情
GET /api/credit/credits # 查询债权列表
PUT /api/credit/credits/{id}/status # 更新债权状态
POST /api/credit/credits/{id}/validate # 验证债权有效性
GET /api/credit/credits/{id}/signature # 获取数字签名
```
##### 融资管理API (ruoyi-credit模块)
```
POST /api/credit/financing # 提交融资申请
PUT /api/credit/financing/{id}/approve # 审批融资申请
GET /api/credit/financing/{id} # 获取融资详情
GET /api/credit/financing # 查询融资申请列表
POST /api/credit/financing/{id}/risk-assess # 风险评估
GET /api/credit/financing/{id}/interest-rate # 获取利率信息
```
##### 支付结算API (ruoyi-payment模块)
```
POST /api/payment/process # 处理支付
POST /api/payment/escrow # 创建监管账户
PUT /api/payment/escrow/{id}/distribute # 资金分配
GET /api/payment/history # 获取支付历史
GET /api/payment/escrow/{id}/balance # 查询账户余额
POST /api/payment/transfer # 资金转账
```
##### 区块链集成API (ruoyi-blockchain模块)
```
POST /api/blockchain/store # 数据上链存储
GET /api/blockchain/verify/{hash} # 验证链上数据
POST /api/blockchain/contract/execute # 执行智能合约
POST /api/blockchain/contract/deploy # 部署智能合约
GET /api/blockchain/events # 查询链上事件
GET /api/blockchain/transaction/{txHash} # 查询交易详情
```
##### 报表分析API (ruoyi-analytics模块)
```
GET /api/reports/dashboard # 获取仪表板数据
POST /api/reports/generate # 生成报表
GET /api/reports/{id}/export # 导出报表
GET /api/reports/financial # 获取财务报表
POST /api/reports/risk-analysis # 风险分析
GET /api/reports/statistics # 统计数据
```
##### 安全管理API (ruoyi-security模块)
```
POST /api/security/authenticate # 用户认证
POST /api/security/mfa/generate # 生成MFA令牌
POST /api/security/mfa/validate # 验证MFA令牌
GET /api/security/audit-logs # 查询审计日志
POST /api/security/encrypt # 数据加密
POST /api/security/decrypt # 数据解密
```
##### 通知服务API (ruoyi-notification模块)
```
POST /api/notification/send # 发送通知
POST /api/notification/schedule # 安排定时通知
GET /api/notification/templates # 获取消息模板
POST /api/notification/templates # 创建消息模板
GET /api/notification/delivery-status/{id} # 查询投递状态
POST /api/notification/batch-send # 批量发送通知
```
## 数据模型
### 核心实体
#### 服务合同 (ServiceContract)
```java
public class ServiceContract {
private Long contractId; // 合同ID
private String contractNumber; // 合同编号
private Long securityCompanyId; // 安保公司ID
private Long clientCompanyId; // 甲方单位ID
@EncryptedField(algorithm = "AES-256-GCM")
private String serviceContent; // 服务内容(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal contractAmount; // 合同金额(加密)
private Date startDate; // 服务开始日期
private Date endDate; // 服务结束日期
private Date paymentDueDate; // 付款到期日
private String contractStatus; // 合同状态
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String blockchainHash; // 区块链哈希
private String dataHash; // 敏感数据哈希(用于完整性验证)
}
```
#### 数字债权凭证 (DigitalCredit)
```java
public class DigitalCredit {
private Long creditId; // 债权ID
private String creditNumber; // 债权编号
private Long contractId; // 关联合同ID
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal creditAmount; // 债权金额(加密)
private Date issueDate; // 发行日期
private Date maturityDate; // 到期日期
private String creditStatus; // 债权状态
private String blockchainHash; // 区块链哈希
@EncryptedField(algorithm = "AES-256-GCM")
private String digitalSignature; // 数字签名(加密)
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String encryptionKeyId; // 加密密钥ID
}
```
#### 融资申请 (FinancingApplication)
```java
public class FinancingApplication {
private Long applicationId; // 申请ID
private String applicationNumber; // 申请编号
private Long creditId; // 债权ID
private Long financialInstitutionId; // 金融机构ID
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal requestAmount; // 申请金额(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal approvedAmount; // 批准金额(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private Double interestRate; // 利率(加密)
private String applicationStatus; // 申请状态
private Date applicationDate; // 申请日期
private Date approvalDate; // 审批日期
@EncryptedField(algorithm = "AES-256-GCM")
private String approvalComments; // 审批意见(加密)
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String accessLog; // 访问日志ID
}
```
#### 资金监管账户 (EscrowAccount)
```java
public class EscrowAccount {
private Long accountId; // 账户ID
private String accountNumber; // 账户号码
private Long applicationId; // 关联融资申请ID
private BigDecimal totalAmount; // 总金额
private BigDecimal availableAmount; // 可用金额
private BigDecimal frozenAmount; // 冻结金额
private String accountStatus; // 账户状态
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}
```
#### 资金流转记录 (FundTransfer)
```java
public class FundTransfer {
private Long transferId; // 流转ID
private String transferNumber; // 流转编号
private Long fromAccountId; // 转出账户ID
private Long toAccountId; // 转入账户ID
private BigDecimal transferAmount; // 转账金额
private String transferType; // 转账类型
private String transferStatus; // 转账状态
private String description; // 描述
private Date transferTime; // 转账时间
private String blockchainTxHash; // 区块链交易哈希
}
```
### 数据库设计
系统将在现有RuoYi数据库基础上新增以下表结构
#### 核心业务表 (ruoyi-credit模块)
- `dc_service_contract`: 服务合同表
- `dc_digital_credit`: 数字债权凭证表
- `dc_financing_application`: 融资申请表
- `dc_company_info`: 公司信息表
- `dc_contract_attachment`: 合同附件表
#### 支付结算表 (ruoyi-payment模块)
- `dc_escrow_account`: 资金监管账户表
- `dc_fund_transfer`: 资金流转记录表
- `dc_payment_record`: 支付记录表
- `dc_account_balance`: 账户余额表
- `dc_transaction_log`: 交易日志表
#### 区块链集成表 (ruoyi-blockchain模块)
- `dc_blockchain_transaction`: 区块链交易表
- `dc_smart_contract`: 智能合约表
- `dc_chain_event`: 链上事件表
- `dc_hash_mapping`: 哈希映射表
#### 安全管理表 (ruoyi-security模块)
- `dc_audit_log`: 审计日志表
- `dc_security_event`: 安全事件表
- `dc_encryption_key`: 加密密钥表
- `dc_mfa_token`: 多因素认证令牌表
- `dc_access_control`: 访问控制表
#### 通知服务表 (ruoyi-notification模块)
- `dc_notification_log`: 通知日志表
- `dc_message_template`: 消息模板表
- `dc_scheduled_task`: 定时任务表
- `dc_delivery_status`: 投递状态表
#### 报表分析表 (ruoyi-analytics模块)
- `dc_report_config`: 报表配置表
- `dc_report_instance`: 报表实例表
- `dc_dashboard_widget`: 仪表板组件表
- `dc_statistics_cache`: 统计缓存表
#### 工作流管理表 (ruoyi-workflow模块)
- `dc_workflow_definition`: 工作流定义表
- `dc_workflow_instance`: 工作流实例表
- `dc_workflow_task`: 工作流任务表
- `dc_approval_record`: 审批记录表
#### 集成适配表 (ruoyi-integration模块)
- `dc_external_system`: 外部系统表
- `dc_integration_config`: 集成配置表
- `dc_api_call_log`: API调用日志表
- `dc_webhook_config`: Webhook配置表
#### 系统监控表 (ruoyi-monitor模块)
- `dc_system_monitor`: 系统监控表
- `dc_performance_metric`: 性能指标表
- `dc_cache_statistics`: 缓存统计表
- `dc_backup_record`: 备份记录表
## 正确性属性
*属性是指在系统的所有有效执行中都应该成立的特征或行为——本质上是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。*
### 合同管理属性
**属性 1: 合同创建完整性**
*对于任何*有效的合同信息,创建合同后系统必须生成唯一的合同记录并发送确认通知
**验证需求: 1.1**
**属性 2: 合同状态一致性**
*对于任何*合同确认操作,系统必须正确更新合同状态为"已确认"并记录准确的确认时间
**验证需求: 1.2**
**属性 3: 债权生成触发**
*对于任何*已确认且服务完成的合同,系统必须自动生成对应的应收账款债权记录
**验证需求: 1.3**
### 债权管理属性
**属性 4: 债权凭证完整性**
*对于任何*生成的债权记录,系统必须创建包含完整合同详情、金额和到期日的数字债权凭证
**验证需求: 1.4**
**属性 5: 区块链不可篡改性**
*对于任何*上链的数字债权凭证,其数据哈希在区块链上必须保持不可篡改
**验证需求: 1.5**
**属性 6: 债权验证准确性**
*对于任何*融资申请,系统必须准确验证关联数字债权凭证的有效性和完整性
**验证需求: 2.1**
### 融资管理属性
**属性 7: API数据提供完整性**
*对于任何*有效的API请求系统必须提供完整准确的链上债权数据用于信用评估
**验证需求: 2.2**
**属性 8: 审批结果记录**
*对于任何*通过的融资申请,系统必须准确记录审批结果并创建相应的融资合约
**验证需求: 2.3**
**属性 9: 资金监管存储**
*对于任何*到账的融资资金,系统必须将其正确存入指定的资金监管账户
**验证需求: 2.4**
**属性 10: 智能合约执行优先级**
*对于任何*进入监管账户的资金,系统必须通过智能合约优先保障安保人员薪资支付
**验证需求: 2.5**
### 结算管理属性
**属性 11: 付款提醒及时性**
*对于任何*临近到期的合同,系统必须自动发送付款提醒给相关甲方单位
**验证需求: 3.1**
**属性 12: 收款确认触发**
*对于任何*支付到监管专户的款项,系统必须确认收款并自动触发智能合约执行
**验证需求: 3.2**
**属性 13: 资金分配优先级**
*对于任何*启动的资金分配程序,系统必须首先偿还金融机构的贷款本金和利息
**验证需求: 3.3**
**属性 14: 剩余资金处理**
*对于任何*贷款偿还完成后的剩余资金,系统必须将其正确转至安保公司账户
**验证需求: 3.4**
**属性 15: 债权状态更新**
*对于任何*完成债务结清的债权,系统必须将数字债权凭证状态更新为"已结清"
**验证需求: 3.5**
### 系统管理属性
**属性 16: 操作日志完整性**
*对于任何*债权相关操作,系统必须记录包含完整操作详情的审计轨迹
**验证需求: 4.1**
**属性 17: 异常告警及时性**
*对于任何*系统异常情况,系统必须立即发送告警通知给相关管理人员
**验证需求: 4.2**
**属性 18: 查询数据实时性**
*对于任何*债权状态查询请求,系统必须提供实时准确的债权流转状态和历史记录
**验收需求: 4.3**
**属性 19: 数据备份一致性**
*对于任何*数据备份操作,系统必须确保区块链数据和业务数据的完全一致性
**验证需求: 4.4**
### API接口属性
**属性 20: API标准化响应**
*对于任何*金融机构的债权信息请求系统必须通过RESTful API提供标准化格式的数据
**验证需求: 5.1**
**属性 21: 身份认证验证**
*对于任何*包含有效认证信息的API调用系统必须正确验证调用方身份并授权数据访问
**验证需求: 5.2**
**属性 22: 风险评估数据完整性**
*对于任何*债权数据响应,系统必须包含合同金额、信用历史、还款能力等所有风险评估要素
**验证需求: 5.3**
**属性 23: 审批结果接收**
*对于任何*金融机构提交的审批结果,系统必须正确接收并完整记录审批决定和相关条件
**验证需求: 5.4**
**属性 24: 数据传输安全性**
*对于任何*数据传输过程,系统必须使用加密协议确保传输安全
**验证需求: 5.5**
### 财务管理属性
**属性 25: 债权查询完整性**
*对于任何*特定债权的查询请求,系统必须提供包含创建时间、金额、状态变更历史的完整信息
**验证需求: 6.2**
**属性 26: 资金流转实时更新**
*对于任何*资金流转操作,系统必须实时更新资金流向记录并发送相应通知
**验证需求: 6.3**
**属性 27: 财务报表数据完整性**
*对于任何*财务报表生成请求,系统必须提供完整的债权统计和收益分析等财务数据
**验证需求: 6.4**
**属性 28: 数据导出格式支持**
*对于任何*数据导出请求系统必须支持Excel、PDF等多种格式的数据导出功能
**验证需求: 6.5**
## 数据安全与隐私保护
### 敏感数据加密
#### 数据分类
- **高敏感数据**: 合同金额、银行账户信息、身份证号码、数字签名私钥
- **中敏感数据**: 公司名称、联系方式、合同内容详情
- **低敏感数据**: 合同状态、创建时间、公开的合同编号
#### 加密策略
- **数据库加密**: 使用AES-256对高敏感字段进行字段级加密
- **传输加密**: 所有API通信使用TLS 1.3协议
- **存储加密**: 文件存储使用透明数据加密(TDE)
- **密钥管理**: 采用密钥轮换机制,定期更新加密密钥
#### 加密实现
```java
// 敏感字段加密注解
@EncryptedField(algorithm = "AES-256-GCM")
private String bankAccountNumber;
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal contractAmount;
```
### 数据泄露防护
#### 访问控制
- **角色权限**: 基于RuoYi的RBAC模型细化到字段级权限控制
- **数据脱敏**: 非授权用户查看时自动脱敏显示
- **审计日志**: 记录所有敏感数据访问和操作日志
- **会话管理**: 实现安全的会话超时和强制登出机制
- **登录失败处理**: 连续登录失败时自动清理缓存数据和临时会话信息
#### 登录安全机制
- **失败计数**: 记录连续登录失败次数,超过阈值(如5次)触发安全措施
- **账户锁定**: 登录失败达到上限时临时锁定账户(如30分钟)
- **数据清理**: 登录失败时立即清理以下数据:
- 清除浏览器缓存中的敏感信息
- 注销临时会话和Token
- 清理内存中的用户数据
- 删除临时文件和下载记录
- **安全日志**: 记录所有登录失败事件包括IP地址、时间戳、失败原因
- **异常检测**: 检测异常登录模式(如异地登录、频繁失败)并触发告警
#### 多因素认证(MFA)
- **双因素认证**: 支持短信验证码、邮箱验证码、TOTP等
- **生物识别**: 支持指纹、人脸识别等生物特征认证
- **硬件Token**: 支持USB Key、智能卡等硬件认证设备
- **风险评估**: 基于用户行为和环境风险动态调整认证强度
#### 网络安全防护
- **防火墙**: 部署Web应用防火墙(WAF)防护常见攻击
- **DDoS防护**: 实施分布式拒绝服务攻击防护
- **入侵检测**: 部署IDS/IPS系统监控网络异常
- **SSL/TLS**: 强制使用HTTPS禁用弱加密算法
- **API安全**: 实施API限流、签名验证、IP白名单
#### 数据备份与恢复
- **定期备份**: 自动化数据备份,支持增量和全量备份
- **异地备份**: 备份数据存储在不同地理位置
- **备份加密**: 备份文件使用独立密钥加密
- **恢复测试**: 定期进行数据恢复演练
- **版本控制**: 保留多个备份版本,支持时间点恢复
#### 安全监控与审计
- **实时监控**: 7x24小时安全事件监控
- **行为分析**: 用户行为异常检测和分析
- **威胁情报**: 集成外部威胁情报源
- **合规审计**: 满足等保、ISO27001等合规要求
- **事件响应**: 建立安全事件应急响应机制
#### 代码安全
- **静态扫描**: 代码提交前进行安全漏洞扫描
- **依赖检查**: 检查第三方组件的安全漏洞
- **代码混淆**: 对关键代码进行混淆保护
- **运行时保护**: 部署RASP运行时应用自我保护
#### 数据脱敏规则
```java
// 银行账户脱敏: 1234****5678
// 金额脱敏: ****万元
// 身份证脱敏: 3301**********1234
```
#### 防泄露措施
- **水印标记**: 在导出文档中嵌入用户水印
- **下载限制**: 限制敏感数据的批量下载
- **屏幕截图防护**: 在敏感页面禁用截图和打印
- **网络隔离**: 敏感数据处理在内网环境中进行
- **DLP防护**: 部署数据丢失防护系统,监控数据外传
- **USB管控**: 禁用或限制USB设备访问
- **邮件监控**: 监控包含敏感数据的邮件发送
### 区块链隐私保护
#### 链上数据最小化
- **哈希存储**: 仅将数据哈希值存储在区块链上
- **零知识证明**: 使用zk-SNARKs验证数据完整性而不暴露原始数据
- **私有链**: 采用联盟链架构,限制节点访问权限
#### 隐私计算
- **同态加密**: 支持在加密状态下进行数据计算
- **安全多方计算**: 多方协作验证而不泄露各方数据
- **差分隐私**: 在数据统计分析中保护个体隐私
- **联邦学习**: 在不共享原始数据的情况下进行模型训练
#### 智能合约安全
- **合约审计**: 智能合约部署前进行安全审计
- **权限控制**: 实施细粒度的合约权限管理
- **升级机制**: 支持安全的合约升级和回滚
- **Gas优化**: 防止Gas耗尽攻击和重入攻击
- **Oracle安全**: 确保外部数据源的可信性
## 错误处理
### 异常分类
1. **业务异常**: 合同状态不符、债权验证失败、资金不足等
2. **系统异常**: 数据库连接失败、区块链网络异常、第三方服务不可用等
3. **安全异常**: 身份认证失败、权限不足、数据篡改检测、加密解密失败、登录失败超限等
4. **隐私异常**: 数据泄露检测、非授权访问、敏感数据暴露、数据清理失败等
### 错误处理策略
- **统一异常处理**: 使用RuoYi框架的全局异常处理机制
- **业务回滚**: 关键业务操作支持事务回滚
- **重试机制**: 对于网络异常等临时性错误实现自动重试
- **降级处理**: 在系统负载过高时提供基础功能保障
- **安全响应**: 检测到安全威胁时自动触发防护措施
- **隐私保护**: 发生数据泄露风险时立即启动应急响应
- **登录失败处理**: 登录失败时立即执行数据清理和会话注销
- **自动清理**: 系统异常时自动清理敏感数据缓存和临时文件
## 测试策略
### 双重测试方法
系统采用单元测试和基于属性的测试相结合的综合测试策略:
#### 单元测试
- 验证特定示例、边界情况和错误条件
- 测试组件间的集成点
- 单元测试有助于发现具体的错误,但应避免编写过多,因为基于属性的测试负责覆盖大量输入
#### 基于属性的测试
- 使用**JUnit 5**和**jqwik**库进行基于属性的测试
- 每个基于属性的测试配置为运行最少100次迭代因为属性测试过程是随机的
- 每个基于属性的测试必须用注释明确引用设计文档中的正确性属性
- 每个基于属性的测试使用以下确切格式标记:'**Feature: digital-credit-service, Property {number}: {property_text}**'
- 每个正确性属性必须由单个基于属性的测试实现
- 基于属性的测试验证应该在所有输入中保持的通用属性
#### 测试库和工具
- **单元测试**: JUnit 5, Mockito, Spring Boot Test
- **基于属性的测试**: jqwik (Java的属性测试库)
- **集成测试**: TestContainers (用于数据库和区块链测试)
- **API测试**: RestAssured, WireMock
#### 测试要求
- 基于属性的测试必须在实现过程中尽可能接近实现,以便及早发现错误
- 每个正确性属性必须有对应的基于属性的测试实现
- 测试必须验证真实功能,不得使用模拟或虚假数据来通过测试
- 如果测试在3-4次尝试后仍然失败必须解释问题并寻求指导