Browse Source
			
			
			Feature/improve exception handling of current investments in various rules (#3156)
			
				* Improve exception handling
* Update changelog
			
			
				pull/3159/head
			
			
		 
		
			
				
					
						 Thomas Kaul
					
					2 years ago
						Thomas Kaul
					
					2 years ago
					
						
							committed by
							
								 GitHub
								GitHub
							
						 
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: B5690EEEBB952194
						
					
				
			
		
		
		
	
		
			
				 4 changed files with 
6 additions and 
5 deletions
			 
			
		 
		
			
				- 
					
					
					 
					CHANGELOG.md
				
- 
					
					
					 
					apps/api/src/models/rules/account-cluster-risk/current-investment.ts
				
- 
					
					
					 
					apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts
				
- 
					
					
					 
					apps/api/src/models/rules/currency-cluster-risk/current-investment.ts
				
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | - Improved the usability of the platform management in the admin control panel | 
			
		
	
		
			
				
					|  |  |  | - Improved the usability of the tag management in the admin control panel | 
			
		
	
		
			
				
					|  |  |  | - Improved the exception handling of various rules in the _X-ray_ section | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | ### Fixed | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -35,7 +35,7 @@ export class AccountClusterRiskCurrentInvestment extends Rule<Settings> { | 
			
		
	
		
			
				
					|  |  |  |       }; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     let maxItem; | 
			
		
	
		
			
				
					|  |  |  |     let maxItem: (typeof accounts)[0]; | 
			
		
	
		
			
				
					|  |  |  |     let totalInvestment = 0; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     for (const account of Object.values(accounts)) { | 
			
		
	
	
		
			
				
					|  |  | @ -52,7 +52,7 @@ export class AccountClusterRiskCurrentInvestment extends Rule<Settings> { | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const maxInvestmentRatio = maxItem.investment / totalInvestment; | 
			
		
	
		
			
				
					|  |  |  |     const maxInvestmentRatio = maxItem?.investment / totalInvestment || 0; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (maxInvestmentRatio > ruleSettings.threshold) { | 
			
		
	
		
			
				
					|  |  |  |       return { | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -43,7 +43,7 @@ export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule<Setti | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const baseCurrencyValueRatio = baseCurrencyItem?.value / totalValue || 0; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (maxItem.groupKey !== ruleSettings.baseCurrency) { | 
			
		
	
		
			
				
					|  |  |  |     if (maxItem?.groupKey !== ruleSettings.baseCurrency) { | 
			
		
	
		
			
				
					|  |  |  |       return { | 
			
		
	
		
			
				
					|  |  |  |         evaluation: `The major part of your current investment is not in your base currency (${( | 
			
		
	
		
			
				
					|  |  |  |           baseCurrencyValueRatio * 100 | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -37,7 +37,7 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule<Settings> { | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const maxValueRatio = maxItem.value / totalValue; | 
			
		
	
		
			
				
					|  |  |  |     const maxValueRatio = maxItem?.value / totalValue || 0; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (maxValueRatio > ruleSettings.threshold) { | 
			
		
	
		
			
				
					|  |  |  |       return { | 
			
		
	
	
		
			
				
					|  |  | @ -52,7 +52,7 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule<Settings> { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     return { | 
			
		
	
		
			
				
					|  |  |  |       evaluation: `The major part of your current investment is in ${ | 
			
		
	
		
			
				
					|  |  |  |         maxItem.groupKey | 
			
		
	
		
			
				
					|  |  |  |         maxItem?.groupKey ?? ruleSettings.baseCurrency | 
			
		
	
		
			
				
					|  |  |  |       } (${(maxValueRatio * 100).toPrecision(3)}%) and does not exceed ${ | 
			
		
	
		
			
				
					|  |  |  |         ruleSettings.threshold * 100 | 
			
		
	
		
			
				
					|  |  |  |       }%`,
 | 
			
		
	
	
		
			
				
					|  |  | 
 |