anxin-ruoyi/.kiro/specs/digital-credit-service/design.md
2026-01-04 19:57:45 +08:00

1347 lines
64 KiB
Markdown
Raw 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)`: 在平台上创建服务合同
- `uploadSignedContract(contractFile, contractInfo)`: 上传已签署的线下合同
- `confirmContract(contractId, partyType)`: 确认合同
- `updateContractStatus(contractId, status)`: 更新合同状态
- `validateContractData(contractInfo)`: 验证合同数据完整性
- `validateContractFile(contractFile)`: 验证上传合同文件的完整性和格式
- `generateContractNumber()`: 生成合同编号
- `extractContractInfo(contractFile)`: 从上传的合同文件中提取关键信息
- `linkOfflineContract(contractId, uploadedFileId)`: 关联线下合同与平台记录
#### 2. 债权管理组件 (CreditManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 管理数字债权凭证的生成、验证和状态跟踪
- **接口**:
- `generateCredit(contractId)`: 生成数字债权凭证
- `validateCredit(creditId)`: 验证债权凭证有效性
- `updateCreditStatus(creditId, status)`: 更新债权状态
- `calculateCreditAmount(contractId)`: 计算债权金额
- `generateDigitalSignature(creditData)`: 生成数字签名
#### 员工管理组件 (EmployeeManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 管理员工库、员工组和员工信息的维护
- **接口**:
- `createEmployeeLibrary(companyId)`: 为安保公司创建员工库
- `importEmployeesFromERP(fileData, format)`: 批量导入ERP格式的员工数据
- `createEmployee(employeeInfo)`: 创建员工信息,支持多种薪资单位
- `createEmployeeGroup(groupInfo)`: 创建员工组
- `assignEmployeeToGroup(employeeId, groupId)`: 将员工分配到员工组
- `getEmployeesByGroup(groupId)`: 获取员工组中的员工列表
- `linkEmployeesToContract(contractId, employeeIds, groupIds)`: 关联员工或员工组到合同
- `selectAttendanceEmployees(servicePeriodId, employeeSelection)`: 选择服务周期出勤员工
- `addTemporaryEmployee(employeeInfo, syncToLibrary)`: 添加临时员工,可选同步到员工库
- `extractEmployeeInfoFromOCR(contractFile)`: 通过OCR提取员工相关信息
- `adjustSalaryStandards(servicePeriodId, adjustments)`: 手动调整薪资标准
- `calculateLaborCost(servicePeriodId)`: 计算人工成本
- `validateEmployeeData(employeeData)`: 验证员工数据完整性
#### 风险监控组件 (RiskMonitor)
- **所属模块**: ruoyi-security
- **架构层级**: 业务服务层
- **职责**: 监控数据一致性和风险事件处理
- **接口**:
- `checkContractAmountConsistency(contractId, serviceConfirmationId)`: 检查合同金额与服务确认单金额一致性
- `checkInvoiceAmountConsistency(serviceConfirmationId, invoiceId)`: 检查服务确认单与发票金额一致性
- `validatePartyInformation(invoiceParty, contractParty)`: 验证开票方与收票方主体信息
- `checkServicePeriodConsistency(contractId, actualServicePeriods)`: 检查服务期限一致性
- `validateFinancingDataConsistency(applicationId)`: 验证融资申请数据一致性
- `generateRiskAssessmentReport(applicationId)`: 生成风险评估报告
- `recordDataAnomaly(anomalyInfo)`: 记录数据异常
- `createRiskEventTracking(riskEventId)`: 建立风险事件跟踪
- `sendRiskAlert(riskEvent, userRole)`: 按用户角色发送风险提示
- `revalidateAfterCorrection(dataId, correctionInfo)`: 数据修正后重新验证
- `updateRiskStatus(riskEventId, newStatus)`: 更新风险状态
#### 服务周期管理 (ServicePeriodManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 管理服务周期信息的手动创建、员工配置和成本计算
- **接口**:
- `createServicePeriod(contractId, periodInfo)`: 为已确定合同手动创建服务周期信息
- `uploadEmployeeInfo(servicePeriodId, employeeData)`: 上传员工信息到服务周期
- `assignEmployees(servicePeriodId, employeeList)`: 为服务周期分配员工
- `calculateLaborCost(servicePeriodId)`: 计算人工成本
- `addLoanInfo(servicePeriodId, loanDetails)`: 手动添加贷款信息
- `updateServicePeriod(servicePeriodId, updateInfo)`: 更新服务周期信息
- `generatePeriodReport(servicePeriodId, reportType)`: 生成服务周期报表
- `validateEmployeeData(employeeData)`: 验证上传的员工数据完整性
- `calculatePeriodMetrics(servicePeriodId)`: 计算服务周期关键指标
#### 员工管理组件 (EmployeeManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 管理员工信息、岗位配置和薪资标准
- **接口**:
- `getEmployeeInfo(employeeId)`: 获取员工详细信息
- `getEmployeesByPosition(position)`: 按岗位查询员工
- `updateSalaryStandard(employeeId, salaryInfo)`: 更新薪资标准
- `validateEmployeeAvailability(employeeId, startDate, endDate)`: 验证员工可用性
- `getEmployeeCostRate(employeeId)`: 获取员工成本费率
- `assignEmployeeToService(employeeId, servicePeriodId)`: 分配员工到服务周期
- `calculateEmployeeWorkload(employeeId, timeRange)`: 计算员工工作负荷
- `generateEmployeeReport(employeeId, reportType)`: 生成员工报表
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 处理融资申请、审批和资金管理
- **接口**:
- `submitFinancingApplication(creditId, amount)`: 提交融资申请
- `processApproval(applicationId, result)`: 处理审批结果
- `manageFunds(accountId, operation)`: 管理资金操作
- `calculateInterestRate(creditInfo, institutionId)`: 计算利率
- `generateRiskAssessment(applicationId)`: 生成风险评估报告
#### 3. 融资管理组件 (FinancingManager)
- **所属模块**: ruoyi-credit
- **架构层级**: 业务服务层
- **职责**: 处理融资申请、审批和资金管理
- **接口**:
- `submitFinancingApplication(creditId, amount)`: 提交融资申请
- `processApproval(applicationId, result)`: 处理审批结果
- `manageFunds(accountId, operation)`: 管理资金操作
- `calculateInterestRate(creditInfo, institutionId)`: 计算利率
- `generateRiskAssessment(applicationId)`: 生成风险评估报告
- **所属模块**: 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 # 在平台上创建服务合同
POST /api/credit/contracts/upload # 上传已签署的线下合同
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 # 验证合同数据
GET /api/credit/contracts/{id}/file # 下载合同文件
POST /api/credit/contracts/{id}/extract-info # 从上传文件提取合同信息
```
##### 员工管理API (ruoyi-credit模块)
```
POST /api/credit/employee-library # 创建员工库
POST /api/credit/employees/import # 批量导入ERP格式员工数据
POST /api/credit/employees # 创建员工信息
GET /api/credit/employees # 查询员工列表
GET /api/credit/employees/{id} # 获取员工详情
PUT /api/credit/employees/{id} # 更新员工信息
POST /api/credit/employee-groups # 创建员工组
GET /api/credit/employee-groups # 查询员工组列表
POST /api/credit/employee-groups/{id}/assign # 分配员工到员工组
GET /api/credit/employee-groups/{id}/employees # 获取员工组成员
POST /api/credit/contracts/{id}/link-employees # 关联员工或员工组到合同
POST /api/credit/service-periods/{id}/select-attendance # 选择出勤员工
POST /api/credit/employees/temporary # 添加临时员工
POST /api/credit/contracts/ocr-extract # OCR提取员工信息
PUT /api/credit/service-periods/{id}/adjust-salary # 调整薪资标准
```
##### 风险监控API (ruoyi-security模块)
```
POST /api/security/risk/check-contract-amount # 检查合同金额一致性
POST /api/security/risk/check-invoice-amount # 检查发票金额一致性
POST /api/security/risk/validate-party-info # 验证主体信息
POST /api/security/risk/check-service-period # 检查服务期限一致性
POST /api/security/risk/validate-financing-data # 验证融资数据一致性
GET /api/security/risk/assessment/{id} # 获取风险评估报告
POST /api/security/risk/record-anomaly # 记录数据异常
POST /api/security/risk/create-tracking # 创建风险事件跟踪
POST /api/security/risk/send-alert # 发送风险提示
POST /api/security/risk/revalidate # 数据修正后重新验证
PUT /api/security/risk/events/{id}/status # 更新风险状态
GET /api/security/risk/events # 查询风险事件列表
```
##### 服务周期管理API (ruoyi-credit模块)
```
POST /api/credit/service-periods # 为已确定合同手动创建服务周期
GET /api/credit/service-periods/{id} # 获取服务周期详情
GET /api/credit/service-periods # 查询服务周期列表
PUT /api/credit/service-periods/{id} # 更新服务周期信息
POST /api/credit/service-periods/{id}/upload-employees # 上传员工信息到服务周期
POST /api/credit/service-periods/{id}/employees # 分配员工到服务周期
GET /api/credit/service-periods/{id}/employees # 获取服务周期员工列表
POST /api/credit/service-periods/{id}/loans # 手动添加贷款信息
GET /api/credit/service-periods/{id}/cost # 计算服务周期成本
POST /api/credit/service-periods/{id}/report # 生成服务周期报表
GET /api/credit/contracts/confirmed # 获取已确定状态的合同列表
```
##### 员工管理API (ruoyi-credit模块)
```
GET /api/credit/employees # 查询员工列表
GET /api/credit/employees/{id} # 获取员工详情
POST /api/credit/employees # 创建员工信息
PUT /api/credit/employees/{id} # 更新员工信息
GET /api/credit/employees/by-position # 按岗位查询员工
PUT /api/credit/employees/{id}/salary # 更新薪资标准
GET /api/credit/employees/{id}/availability # 查询员工可用性
GET /api/credit/employees/{id}/workload # 查询员工工作负荷
```
##### 债权管理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 String contractType; // 合同类型: ONLINE(线上创建) / OFFLINE(线下签署)
private String contractSource; // 合同来源: PLATFORM_CREATED(平台创建) / UPLOADED(上传)
private Long attachmentId; // 关联的合同文件ID(线下合同)
private Date signDate; // 签署日期
private String extractedInfo; // 从上传文件提取的信息摘要
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
}
```
#### 员工库 (EmployeeLibrary)
```java
public class EmployeeLibrary {
private Long libraryId; // 员工库ID
private Long companyId; // 安保公司ID
private String libraryName; // 员工库名称
private String description; // 描述
private Integer totalEmployees; // 员工总数
private String libraryStatus; // 员工库状态
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String createdBy; // 创建人
}
```
#### 员工组 (EmployeeGroup)
```java
public class EmployeeGroup {
private Long groupId; // 员工组ID
private Long libraryId; // 所属员工库ID
private String groupName; // 员工组名称
private String groupType; // 员工组类型(项目组、部门组等)
private String description; // 描述
private Integer memberCount; // 成员数量
private String groupStatus; // 员工组状态
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String createdBy; // 创建人
}
```
#### 员工组成员关系 (EmployeeGroupMember)
```java
public class EmployeeGroupMember {
private Long membershipId; // 成员关系ID
private Long groupId; // 员工组ID
private Long employeeId; // 员工ID
private String memberRole; // 成员角色
private Date joinDate; // 加入日期
private String membershipStatus; // 成员状态
private Date createTime; // 创建时间
}
```
#### 合同员工关联 (ContractEmployeeLink)
```java
public class ContractEmployeeLink {
private Long linkId; // 关联ID
private Long contractId; // 合同ID
private Long employeeId; // 员工ID(可为空)
private Long groupId; // 员工组ID(可为空)
private String linkType; // 关联类型(INDIVIDUAL/GROUP)
private String assignedRole; // 分配角色
private Date linkDate; // 关联日期
private String linkStatus; // 关联状态
private Date createTime; // 创建时间
}
```
#### 风险事件 (RiskEvent)
```java
public class RiskEvent {
private Long eventId; // 风险事件ID
private String eventNumber; // 事件编号
private String eventType; // 事件类型
private String riskLevel; // 风险级别(HIGH/MEDIUM/LOW)
private String eventSource; // 事件来源
private Long relatedEntityId; // 关联实体ID
private String entityType; // 实体类型
@EncryptedField(algorithm = "AES-256-GCM")
private String eventDescription; // 事件描述(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private String anomalyDetails; // 异常详情(加密)
private String eventStatus; // 事件状态
private Date detectedTime; // 检测时间
private Date resolvedTime; // 解决时间
private String handledBy; // 处理人
private String resolution; // 解决方案
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}
```
#### 风险事件跟踪 (RiskEventTracking)
```java
public class RiskEventTracking {
private Long trackingId; // 跟踪ID
private Long eventId; // 风险事件ID
private String trackingStatus; // 跟踪状态
private String actionTaken; // 采取的行动
private String actionResult; // 行动结果
private Date actionTime; // 行动时间
private String actionBy; // 行动人
private String nextAction; // 下一步行动
private Date nextActionTime; // 下一步行动时间
private Date createTime; // 创建时间
}
```
#### 数据一致性检查记录 (DataConsistencyCheck)
```java
public class DataConsistencyCheck {
private Long checkId; // 检查ID
private String checkType; // 检查类型
private Long sourceEntityId; // 源实体ID
private Long targetEntityId; // 目标实体ID
private String checkResult; // 检查结果(PASS/FAIL)
@EncryptedField(algorithm = "AES-256-GCM")
private String inconsistencyDetails; // 不一致详情(加密)
private String checkStatus; // 检查状态
private Date checkTime; // 检查时间
private String checkedBy; // 检查人
private Date resolvedTime; // 解决时间
private String resolvedBy; // 解决人
private Date createTime; // 创建时间
}
```
#### 服务周期 (ServicePeriod)
```java
public class ServicePeriod {
private Long servicePeriodId; // 服务周期ID
private String periodNumber; // 周期编号
private Long contractId; // 关联合同ID
private Date serviceStartDate; // 服务开始日期
private Date serviceEndDate; // 服务结束日期
private Integer serviceDays; // 服务天数
private String serviceContent; // 服务内容描述
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal totalLaborCost; // 总人工成本(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal totalLoanAmount; // 关联贷款总额(加密)
private String periodStatus; // 周期状态
private Integer employeeCount; // 员工数量
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String createdBy; // 创建人
private String updatedBy; // 更新人
}
```
#### 员工信息 (EmployeeInfo)
```java
public class EmployeeInfo {
private Long employeeId; // 员工ID
private String employeeNumber; // 员工工号
@EncryptedField(algorithm = "AES-256-GCM")
private String employeeName; // 员工姓名(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private String idCardNumber; // 身份证号(加密)
private String position; // 岗位
private String department; // 部门
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal dailySalary; // 日薪标准(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal monthlySalary; // 月薪标准(加密)
private String employeeStatus; // 员工状态
private Date hireDate; // 入职日期
@EncryptedField(algorithm = "AES-256-GCM")
private String contactPhone; // 联系电话(加密)
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}
```
#### 服务周期员工分配 (ServicePeriodEmployee)
```java
public class ServicePeriodEmployee {
private Long assignmentId; // 分配ID
private Long servicePeriodId; // 服务周期ID
private Long employeeId; // 员工ID
private String assignedPosition; // 分配岗位
private Integer workDays; // 工作天数
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal assignedSalary; // 分配薪资(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal totalCost; // 总成本(加密)
private String assignmentStatus; // 分配状态
private Date assignmentDate; // 分配日期
private String assignedBy; // 分配人
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}
```
#### 服务周期贷款关联 (ServicePeriodLoan)
```java
public class ServicePeriodLoan {
private Long linkId; // 关联ID
private Long servicePeriodId; // 服务周期ID
private Long loanId; // 贷款ID
private String loanNumber; // 贷款编号
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal loanAmount; // 贷款金额(加密)
@EncryptedField(algorithm = "AES-256-GCM")
private Double interestRate; // 利率(加密)
private Integer loanTermMonths; // 贷款期限(月)
@EncryptedField(algorithm = "AES-256-GCM")
private BigDecimal monthlyPayment; // 月还款额(加密)
private String loanPurpose; // 贷款用途
private String loanStatus; // 贷款状态
private Date loanStartDate; // 贷款开始日期
private Date loanEndDate; // 贷款结束日期
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}
```
#### 资金监管账户 (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_credit`: 数字债权凭证表
- `dc_financing_application`: 融资申请表
- `dc_company_info`: 公司信息表
- `dc_contract_attachment`: 合同附件表
- `dc_contract_file`: 合同文件表(存储上传的线下合同文件信息)
- `dc_contract_extraction`: 合同信息提取表(存储从文件中提取的关键信息)
- `dc_service_period`: 服务周期表
- `dc_employee_info`: 员工信息表
- `dc_service_period_employee`: 服务周期员工分配表
- `dc_service_period_loan`: 服务周期贷款关联表
- `dc_employee_library`: 员工库表
- `dc_employee_group`: 员工组表
- `dc_employee_group_member`: 员工组成员关系表
- `dc_contract_employee_link`: 合同员工关联表
#### 支付结算表 (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`: 访问控制表
- `dc_risk_event`: 风险事件表
- `dc_risk_event_tracking`: 风险事件跟踪表
- `dc_data_consistency_check`: 数据一致性检查记录表
#### 通知服务表 (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, 2.2**
### 债权管理属性
**属性 4: 债权凭证完整性**
*对于任何*生成的债权记录,系统必须创建包含完整合同详情、金额和到期日的数字债权凭证
**验证需求: 1.4**
**属性 5: 区块链不可篡改性**
*对于任何*上链的数字债权凭证,其数据哈希在区块链上必须保持不可篡改
**验证需求: 1.5**
**属性 6: 债权验证准确性**
*对于任何*融资申请,系统必须准确验证关联数字债权凭证的有效性和完整性
**验证需求: 4.1**
### 权限控制属性
**属性 7: 数据访问权限控制**
*对于任何*用户的数据查询请求,系统必须仅显示该用户有权访问的业务数据(安保公司仅看本公司业务,甲方仅看签署合同,金融机构仅看受理申请)
**验证需求: 1.6, 2.1, 2.5, 3.1, 3.6, 4.4**
**属性 8: 操作权限验证**
*对于任何*业务操作请求,系统必须验证用户对相关资源的合法操作权限
**验证需求: 1.7, 2.4, 4.3**
**属性 9: 未授权访问检测**
*对于任何*尝试访问无权限资源的操作,系统必须拒绝访问并记录未授权尝试日志
**验证需求: 2.6, 3.7**
### 融资管理属性
**属性 10: 审批结果记录**
*对于任何*融资申请的审批操作,系统必须准确记录审批结果并创建相应的融资合约
**验证需求: 3.4, 7.4**
**属性 11: 资金监管存储**
*对于任何*到账的融资资金,系统必须将其正确存入指定的资金监管账户
**验证需求: 3.5**
### API接口属性
**属性 12: API权限验证与数据提供**
*对于任何*包含有效认证信息的API调用系统必须验证调用方身份并仅提供其有权访问的链上数据
**验证需求: 3.2, 7.2, 7.5**
**属性 13: API数据完整性**
*对于任何*债权数据API响应系统必须包含合同金额、信用历史、还款能力等所有风险评估要素
**验证需求: 3.3, 7.3**
**属性 14: API标准化响应**
*对于任何*API请求系统必须通过RESTful接口提供标准化格式的数据响应
**验证需求: 7.1**
### 支付结算属性
**属性 15: 付款提醒及时性**
*对于任何*临近到期的合同,系统必须自动发送付款提醒给相关甲方单位
**验证需求: 2.3**
**属性 16: 收款确认触发**
*对于任何*支付到监管专户的款项,系统必须确认收款并自动触发智能合约执行
**验证需求: 6.1**
**属性 17: 资金分配优先级**
*对于任何*启动的资金分配程序,系统必须首先偿还金融机构的贷款本金和利息,然后处理剩余资金
**验证需求: 4.5, 6.2, 6.3**
**属性 18: 债权状态更新**
*对于任何*完成债务结清的债权,系统必须将数字债权凭证状态更新为"已结清"
**验证需求: 6.4**
### 系统管理属性
**属性 19: 操作日志完整性**
*对于任何*债权相关操作,系统必须记录包含完整操作详情的审计轨迹
**验证需求: 5.1**
**属性 20: 异常告警及时性**
*对于任何*系统异常情况,系统必须立即发送告警通知给相关管理人员
**验证需求: 5.2**
**属性 21: 查询数据实时性**
*对于任何*债权状态查询请求,系统必须提供实时准确的债权流转状态和历史记录
**验证需求: 5.3**
**属性 22: 数据备份一致性**
*对于任何*数据备份操作,系统必须确保区块链数据和业务数据的完全一致性
**验证需求: 5.4**
### 数据安全属性
**属性 23: 数据传输安全性**
*对于任何*数据传输过程,系统必须使用加密协议确保传输安全
**验证需求: 6.5**
**属性 24: 财务数据导出权限**
*对于任何*数据导出请求,系统必须支持多种格式并确保导出数据仅包含用户有权访问的业务信息
**验证需求: 4.6**
**属性 25: 合同状态后端控制**
*对于任何*合同创建或更新操作,系统必须在后端自动设置和管理合同状态,拒绝前端提供的状态信息
**验证需求: 1.8**
**属性 26: 合同来源自动识别**
*对于任何*合同创建或上传操作系统必须根据调用的API接口自动设置合同来源(平台创建API设置为PLATFORM_CREATED上传API设置为UPLOADED),拒绝前端提供的来源信息
**验证需求: 1.1, 1.8**
### 服务周期管理属性
**属性 27: 服务周期手动创建**
*对于任何*安保公司选择的状态为"已确定"的合同,系统必须提供服务周期创建功能并允许手动上传员工信息
**验证需求: 8.1**
**属性 28: 员工数据验证完整性**
*对于任何*上传的员工信息,系统必须验证数据完整性,包括员工姓名、工号、岗位和薪资标准的有效性
**验证需求: 8.2**
**属性 29: 员工信息手动关联**
*对于任何*创建的服务周期记录,系统必须允许安保公司手动关联和配置相关员工信息
**验证需求: 8.3**
**属性 30: 成本计算准确性**
*对于任何*服务周期的成本计算,系统必须根据上传的员工薪资标准和服务天数准确计算人工成本
**验证需求: 8.4**
**属性 31: 贷款信息手动添加**
*对于任何*手动添加的贷款信息,系统必须准确记录贷款金额、利率、还款期限和还款计划
**验证需求: 8.5**
**属性 32: 服务周期数据访问权限**
*对于任何*服务周期信息查询,系统必须仅显示用户有权访问的员工和财务数据
**验证需求: 8.10**
**属性 33: 服务周期报表完整性**
*对于任何*服务周期报表导出,系统必须包含完整的员工配置、成本分析和贷款明细
**验证需求: 8.11**
**属性 34: 服务周期变更审计**
*对于任何*服务周期数据变更,系统必须记录详细的变更日志并通知相关责任人
**验证需求: 8.12**
### 员工管理属性
**属性 35: 员工库创建完整性**
*对于任何*安保公司注册后的员工库创建请求系统必须提供完整的员工库管理功能并支持ERP格式文件的批量导入
**验证需求: 8.1**
**属性 36: 员工信息多样性支持**
*对于任何*员工信息创建操作,系统必须正确支持多种薪资单位(小时制、班次制、月薪制)和岗位信息的存储
**验证需求: 8.2**
**属性 37: 员工组管理功能**
*对于任何*员工库管理操作,系统必须允许创建和管理不同的员工组,并支持员工在组间的分配
**验证需求: 8.3**
**属性 38: 合同员工关联功能**
*对于任何*合同创建操作,系统必须支持直接关联员工组或单个员工,并正确记录关联关系
**验证需求: 8.4**
**属性 39: 出勤员工选择功能**
*对于任何*服务周期出勤确认操作,系统必须支持从员工组或员工库中选择实际出勤员工
**验证需求: 8.5**
**属性 40: 临时员工同步选项**
*对于任何*临时员工添加操作,系统必须提供"将该员工同步添加到员工库"的选项并正确执行同步
**验证需求: 8.6**
**属性 41: OCR信息提取与调整**
*对于任何*通过OCR读取的合同系统必须自动提取服务周期信息并允许用户手动调整薪资标准
**验证需求: 8.7**
**属性 42: 成本计算准确性**
*对于任何*服务周期成本计算,系统必须根据实际出勤员工的薪资标准和工作量准确计算人工成本
**验证需求: 8.8**
**属性 43: 贷款信息完整记录**
*对于任何*贷款信息添加操作,系统必须完整记录贷款金额、利率、还款期限和还款计划
**验证需求: 8.9**
### 风险监控属性
**属性 44: 合同金额一致性检查**
*对于任何*合同金额与服务确认单金额的比较,当发现不一致时系统必须生成重要事件警示并通知安保公司用户
**验证需求: 9.1**
**属性 45: 发票金额风险标记**
*对于任何*服务确认单金额与发票金额的比较,当发现不一致时系统必须标记为风险事件并推送给银行和平台管理员
**验证需求: 9.2**
**属性 46: 主体信息验证阻断**
*对于任何*开票方与收票方主体信息不匹配的情况,系统必须阻止融资申请并要求用户核实
**验证需求: 9.3**
**属性 47: 服务期限一致性提醒**
*对于任何*服务期限与实际确认服务周期不符的情况,系统必须提醒用户检查合同条款
**验证需求: 9.4**
**属性 48: 融资数据一致性验证**
*对于任何*融资申请,系统必须验证所有关联数据的一致性并生成完整的风险评估报告
**验证需求: 9.5**
**属性 49: 数据异常记录与跟踪**
*对于任何*检测到的数据异常,系统必须记录异常详情并建立完整的风险事件跟踪机制
**验证需求: 9.6**
**属性 50: 角色化风险提示推送**
*对于任何*风险事件,系统必须按照用户角色推送相应的风险提示和处理建议
**验证需求: 9.7**
**属性 51: 风险状态动态更新**
*对于任何*用户修正的数据不一致问题,系统必须重新验证并准确更新风险状态
**验证需求: 9.8**
## 数据安全与隐私保护
### 敏感数据加密
#### 数据分类
- **高敏感数据**: 合同金额、银行账户信息、身份证号码、数字签名私钥
- **中敏感数据**: 公司名称、联系方式、合同内容详情
- **低敏感数据**: 合同状态、创建时间、公开的合同编号
#### 加密策略
- **数据库加密**: 使用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次尝试后仍然失败必须解释问题并寻求指导