779 lines
21 KiB
Rust
779 lines
21 KiB
Rust
// Asset Classification System - 资产分类系统
|
|
// 基于GNACS (Global New Asset Classification Standard) 设计
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::HashMap;
|
|
|
|
/// 资产大类
|
|
///
|
|
/// 参考GNACS、GICS、ISO 10962等国际标准设计
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum AssetClass {
|
|
// ========== 1. 不动产类 (Real Estate) ==========
|
|
|
|
/// 1.1 住宅地产
|
|
ResidentialRealEstate(ResidentialType),
|
|
|
|
/// 1.2 商业地产
|
|
CommercialRealEstate(CommercialType),
|
|
|
|
/// 1.3 工业地产
|
|
IndustrialRealEstate(IndustrialType),
|
|
|
|
/// 1.4 土地使用权
|
|
LandUseRights(LandType),
|
|
|
|
/// 1.5 房地产投资信托(REITs)
|
|
RealEstateInvestmentTrust,
|
|
|
|
// ========== 2. 金融证券类 (Financial Securities) ==========
|
|
|
|
/// 2.1 股权证券
|
|
EquitySecurities(EquityType),
|
|
|
|
/// 2.2 债务证券
|
|
DebtSecurities(DebtType),
|
|
|
|
/// 2.3 衍生品
|
|
Derivatives(DerivativeType),
|
|
|
|
/// 2.4 结构化产品
|
|
StructuredProducts(StructuredType),
|
|
|
|
/// 2.5 基金份额
|
|
FundShares(FundType),
|
|
|
|
// ========== 3. 大宗商品类 (Commodities) ==========
|
|
|
|
/// 3.1 能源商品
|
|
EnergyCommodities(EnergyType),
|
|
|
|
/// 3.2 金属商品
|
|
MetalCommodities(MetalType),
|
|
|
|
/// 3.3 农产品
|
|
AgriculturalCommodities(AgricultureType),
|
|
|
|
/// 3.4 贵金属
|
|
PreciousMetals(PreciousMetalType),
|
|
|
|
// ========== 4. 艺术品与收藏品类 (Collectibles) ==========
|
|
|
|
/// 4.1 艺术品
|
|
Artworks(ArtworkType),
|
|
|
|
/// 4.2 古董文物
|
|
Antiques(AntiqueType),
|
|
|
|
/// 4.3 收藏品
|
|
Collectibles(CollectibleType),
|
|
|
|
/// 4.4 奢侈品
|
|
LuxuryGoods(LuxuryType),
|
|
|
|
// ========== 5. 知识产权类 (Intellectual Property) ==========
|
|
|
|
/// 5.1 专利权
|
|
Patents(PatentType),
|
|
|
|
/// 5.2 商标权
|
|
Trademarks(TrademarkType),
|
|
|
|
/// 5.3 版权
|
|
Copyrights(CopyrightType),
|
|
|
|
/// 5.4 商业秘密
|
|
TradeSecrets,
|
|
|
|
/// 5.5 域名
|
|
DomainNames,
|
|
|
|
// ========== 6. 数字资产类 (Digital Assets) ==========
|
|
|
|
/// 6.1 加密货币
|
|
Cryptocurrencies(CryptoType),
|
|
|
|
/// 6.2 NFT
|
|
NonFungibleTokens(NFTType),
|
|
|
|
/// 6.3 数字藏品
|
|
DigitalCollectibles,
|
|
|
|
/// 6.4 虚拟资产
|
|
VirtualAssets(VirtualAssetType),
|
|
|
|
// ========== 7. 基础设施类 (Infrastructure) ==========
|
|
|
|
/// 7.1 交通设施
|
|
TransportationInfrastructure(TransportType),
|
|
|
|
/// 7.2 能源设施
|
|
EnergyInfrastructure(EnergyInfraType),
|
|
|
|
/// 7.3 通信设施
|
|
TelecommunicationInfrastructure,
|
|
|
|
/// 7.4 公用事业
|
|
UtilityInfrastructure(UtilityType),
|
|
|
|
// ========== 8. 自然资源类 (Natural Resources) ==========
|
|
|
|
/// 8.1 矿产资源
|
|
MineralResources(MineralType),
|
|
|
|
/// 8.2 森林资源
|
|
ForestResources,
|
|
|
|
/// 8.3 水资源
|
|
WaterResources,
|
|
|
|
/// 8.4 渔业资源
|
|
FisheryResources,
|
|
|
|
// ========== 9. 环境权益类 (Environmental Rights) ==========
|
|
|
|
/// 9.1 碳排放权
|
|
CarbonEmissionRights(CarbonType),
|
|
|
|
/// 9.2 排污权
|
|
PollutionRights,
|
|
|
|
/// 9.3 可再生能源证书
|
|
RenewableEnergyCertificates,
|
|
|
|
/// 9.4 生态补偿权
|
|
EcologicalCompensationRights,
|
|
|
|
// ========== 10. 企业权益类 (Business Interests) ==========
|
|
|
|
/// 10.1 股权
|
|
Equity(EquityInterestType),
|
|
|
|
/// 10.2 合伙权益
|
|
PartnershipInterests,
|
|
|
|
/// 10.3 特许经营权
|
|
FranchiseRights,
|
|
|
|
/// 10.4 经营权
|
|
OperatingRights,
|
|
|
|
// ========== 11. 债权类 (Receivables) ==========
|
|
|
|
/// 11.1 应收账款
|
|
AccountsReceivable,
|
|
|
|
/// 11.2 贷款债权
|
|
LoanReceivables(LoanType),
|
|
|
|
/// 11.3 租赁债权
|
|
LeaseReceivables,
|
|
|
|
/// 11.4 票据债权
|
|
BillReceivables,
|
|
|
|
// ========== 12. 保险产品类 (Insurance Products) ==========
|
|
|
|
/// 12.1 人寿保险
|
|
LifeInsurance(LifeInsuranceType),
|
|
|
|
/// 12.2 财产保险
|
|
PropertyInsurance,
|
|
|
|
/// 12.3 再保险
|
|
Reinsurance,
|
|
|
|
// ========== 13. 农业资产类 (Agricultural Assets) ==========
|
|
|
|
/// 13.1 农地
|
|
Farmland,
|
|
|
|
/// 13.2 畜牧资产
|
|
Livestock(LivestockType),
|
|
|
|
/// 13.3 农业设施
|
|
AgriculturalFacilities,
|
|
|
|
// ========== 14. 交通工具类 (Vehicles) ==========
|
|
|
|
/// 14.1 航空器
|
|
Aircraft(AircraftType),
|
|
|
|
/// 14.2 船舶
|
|
Vessels(VesselType),
|
|
|
|
/// 14.3 铁路车辆
|
|
RailwayVehicles,
|
|
|
|
/// 14.4 汽车
|
|
Automobiles(AutoType),
|
|
|
|
// ========== 15. 机械设备类 (Machinery & Equipment) ==========
|
|
|
|
/// 15.1 工业设备
|
|
IndustrialEquipment,
|
|
|
|
/// 15.2 医疗设备
|
|
MedicalEquipment,
|
|
|
|
/// 15.3 科研设备
|
|
ResearchEquipment,
|
|
|
|
// ========== 16. 数据资产类 (Data Assets) ==========
|
|
|
|
/// 16.1 用户数据
|
|
UserData,
|
|
|
|
/// 16.2 商业数据
|
|
BusinessData,
|
|
|
|
/// 16.3 科研数据
|
|
ResearchData,
|
|
|
|
// ========== 17. 品牌资产类 (Brand Assets) ==========
|
|
|
|
/// 17.1 品牌价值
|
|
BrandValue,
|
|
|
|
/// 17.2 商誉
|
|
Goodwill,
|
|
|
|
/// 17.3 客户关系
|
|
CustomerRelationships,
|
|
|
|
// ========== 18. 体育资产类 (Sports Assets) ==========
|
|
|
|
/// 18.1 球员合同
|
|
PlayerContracts,
|
|
|
|
/// 18.2 赛事权益
|
|
EventRights,
|
|
|
|
/// 18.3 体育场馆
|
|
SportsVenues,
|
|
|
|
// ========== 19. 娱乐资产类 (Entertainment Assets) ==========
|
|
|
|
/// 19.1 影视版权
|
|
FilmRights,
|
|
|
|
/// 19.2 音乐版权
|
|
MusicRights,
|
|
|
|
/// 19.3 游戏资产
|
|
GameAssets,
|
|
|
|
// ========== 20. 其他资产类 (Other Assets) ==========
|
|
|
|
/// 自定义资产类别
|
|
Custom(String),
|
|
}
|
|
|
|
// ========== 子类别定义 ==========
|
|
|
|
/// 住宅地产类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum ResidentialType {
|
|
SingleFamily, // 独栋别墅
|
|
Apartment, // 公寓
|
|
Condominium, // 共管公寓
|
|
Townhouse, // 联排别墅
|
|
Villa, // 别墅
|
|
PentHouse, // 顶层豪宅
|
|
AffordableHousing, // 经济适用房
|
|
}
|
|
|
|
/// 商业地产类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum CommercialType {
|
|
Office, // 写字楼
|
|
Retail, // 零售商铺
|
|
Hotel, // 酒店
|
|
ShoppingMall, // 购物中心
|
|
MixedUse, // 综合体
|
|
Parking, // 停车场
|
|
}
|
|
|
|
/// 工业地产类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum IndustrialType {
|
|
Warehouse, // 仓库
|
|
Factory, // 工厂
|
|
LogisticsCenter, // 物流中心
|
|
DataCenter, // 数据中心
|
|
RDFacility, // 研发设施
|
|
}
|
|
|
|
/// 土地类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum LandType {
|
|
Residential, // 住宅用地
|
|
Commercial, // 商业用地
|
|
Industrial, // 工业用地
|
|
Agricultural, // 农业用地
|
|
Forest, // 林地
|
|
Undeveloped, // 未开发土地
|
|
}
|
|
|
|
/// 股权证券类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum EquityType {
|
|
CommonStock, // 普通股
|
|
PreferredStock, // 优先股
|
|
Warrant, // 认股权证
|
|
ConvertibleBond, // 可转换债券
|
|
DepositaryReceipt, // 存托凭证(ADR/GDR)
|
|
}
|
|
|
|
/// 债务证券类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum DebtType {
|
|
GovernmentBond, // 国债
|
|
CorporateBond, // 公司债
|
|
MunicipalBond, // 市政债
|
|
AssetBackedSecurity, // 资产支持证券(ABS)
|
|
MortgageBackedSecurity, // 抵押贷款支持证券(MBS)
|
|
}
|
|
|
|
/// 衍生品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum DerivativeType {
|
|
Futures, // 期货
|
|
Options, // 期权
|
|
Swaps, // 掉期
|
|
Forwards, // 远期
|
|
CreditDerivatives, // 信用衍生品
|
|
}
|
|
|
|
/// 结构化产品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum StructuredType {
|
|
StructuredNote, // 结构化票据
|
|
CDO, // 担保债务凭证
|
|
CLO, // 担保贷款凭证
|
|
SyntheticCDO, // 合成CDO
|
|
}
|
|
|
|
/// 基金类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum FundType {
|
|
MutualFund, // 共同基金
|
|
HedgeFund, // 对冲基金
|
|
PrivateEquityFund, // 私募股权基金
|
|
VentureFund, // 风险投资基金
|
|
ETF, // 交易所交易基金
|
|
IndexFund, // 指数基金
|
|
}
|
|
|
|
/// 能源商品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum EnergyType {
|
|
CrudeOil, // 原油
|
|
NaturalGas, // 天然气
|
|
Coal, // 煤炭
|
|
Gasoline, // 汽油
|
|
HeatingOil, // 取暖油
|
|
Uranium, // 铀
|
|
}
|
|
|
|
/// 金属商品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum MetalType {
|
|
Copper, // 铜
|
|
Aluminum, // 铝
|
|
Zinc, // 锌
|
|
Nickel, // 镍
|
|
Lead, // 铅
|
|
Tin, // 锡
|
|
Steel, // 钢铁
|
|
}
|
|
|
|
/// 农产品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum AgricultureType {
|
|
Wheat, // 小麦
|
|
Corn, // 玉米
|
|
Soybeans, // 大豆
|
|
Rice, // 大米
|
|
Coffee, // 咖啡
|
|
Sugar, // 糖
|
|
Cotton, // 棉花
|
|
Cocoa, // 可可
|
|
}
|
|
|
|
/// 贵金属类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum PreciousMetalType {
|
|
Gold, // 黄金
|
|
Silver, // 白银
|
|
Platinum, // 铂金
|
|
Palladium, // 钯金
|
|
Rhodium, // 铑
|
|
}
|
|
|
|
/// 艺术品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum ArtworkType {
|
|
Painting, // 绘画
|
|
Sculpture, // 雕塑
|
|
Photography, // 摄影
|
|
PrintMaking, // 版画
|
|
Installation, // 装置艺术
|
|
DigitalArt, // 数字艺术
|
|
}
|
|
|
|
/// 古董类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum AntiqueType {
|
|
Furniture, // 家具
|
|
Porcelain, // 瓷器
|
|
Jade, // 玉器
|
|
Bronze, // 青铜器
|
|
Calligraphy, // 书法
|
|
Painting, // 古画
|
|
}
|
|
|
|
/// 收藏品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum CollectibleType {
|
|
Stamps, // 邮票
|
|
Coins, // 钱币
|
|
Comics, // 漫画
|
|
TradingCards, // 交易卡
|
|
Memorabilia, // 纪念品
|
|
Watches, // 手表
|
|
}
|
|
|
|
/// 奢侈品类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum LuxuryType {
|
|
Jewelry, // 珠宝
|
|
Watches, // 名表
|
|
Handbags, // 名包
|
|
Wine, // 名酒
|
|
Spirits, // 烈酒
|
|
Cigars, // 雪茄
|
|
}
|
|
|
|
/// 专利类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum PatentType {
|
|
Invention, // 发明专利
|
|
UtilityModel, // 实用新型
|
|
Design, // 外观设计
|
|
PlantPatent, // 植物专利
|
|
}
|
|
|
|
/// 商标类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum TrademarkType {
|
|
WordMark, // 文字商标
|
|
FigurativeMark, // 图形商标
|
|
CombinedMark, // 组合商标
|
|
SoundMark, // 声音商标
|
|
ColorMark, // 颜色商标
|
|
}
|
|
|
|
/// 版权类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum CopyrightType {
|
|
Literary, // 文学作品
|
|
Musical, // 音乐作品
|
|
Dramatic, // 戏剧作品
|
|
Audiovisual, // 视听作品
|
|
Software, // 软件著作权
|
|
}
|
|
|
|
/// 加密货币类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum CryptoType {
|
|
Bitcoin, // 比特币
|
|
Ethereum, // 以太坊
|
|
Stablecoin, // 稳定币
|
|
UtilityToken, // 功能型代币
|
|
SecurityToken, // 证券型代币
|
|
GovernanceToken, // 治理代币
|
|
}
|
|
|
|
/// NFT类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum NFTType {
|
|
Art, // 艺术品NFT
|
|
Collectible, // 收藏品NFT
|
|
Gaming, // 游戏NFT
|
|
Music, // 音乐NFT
|
|
Video, // 视频NFT
|
|
Metaverse, // 元宇宙NFT
|
|
}
|
|
|
|
/// 虚拟资产类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum VirtualAssetType {
|
|
GameItems, // 游戏道具
|
|
VirtualLand, // 虚拟土地
|
|
VirtualRealEstate, // 虚拟房产
|
|
Avatars, // 虚拟形象
|
|
}
|
|
|
|
/// 交通设施类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum TransportType {
|
|
Highway, // 高速公路
|
|
Railway, // 铁路
|
|
Airport, // 机场
|
|
Seaport, // 海港
|
|
Bridge, // 桥梁
|
|
Tunnel, // 隧道
|
|
}
|
|
|
|
/// 能源设施类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum EnergyInfraType {
|
|
PowerPlant, // 发电厂
|
|
SolarFarm, // 太阳能电站
|
|
WindFarm, // 风电场
|
|
HydroPlant, // 水电站
|
|
NuclearPlant, // 核电站
|
|
Pipeline, // 管道
|
|
}
|
|
|
|
/// 公用事业类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum UtilityType {
|
|
Water, // 供水
|
|
Electricity, // 供电
|
|
Gas, // 供气
|
|
Sewage, // 污水处理
|
|
Waste, // 垃圾处理
|
|
}
|
|
|
|
/// 矿产资源类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum MineralType {
|
|
IronOre, // 铁矿
|
|
CopperOre, // 铜矿
|
|
GoldOre, // 金矿
|
|
SilverOre, // 银矿
|
|
RareEarth, // 稀土
|
|
Lithium, // 锂矿
|
|
}
|
|
|
|
/// 碳排放权类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum CarbonType {
|
|
EmissionAllowance, // 排放配额
|
|
CarbonCredit, // 碳信用
|
|
CarbonOffset, // 碳抵消
|
|
CCER, // 中国核证自愿减排量
|
|
}
|
|
|
|
/// 股权权益类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum EquityInterestType {
|
|
ControllingInterest, // 控股权
|
|
MinorityInterest, // 少数股权
|
|
FounderShares, // 创始人股份
|
|
EmployeeOptions, // 员工期权
|
|
}
|
|
|
|
/// 贷款类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum LoanType {
|
|
Mortgage, // 抵押贷款
|
|
PersonalLoan, // 个人贷款
|
|
BusinessLoan, // 企业贷款
|
|
StudentLoan, // 学生贷款
|
|
AutoLoan, // 汽车贷款
|
|
}
|
|
|
|
/// 人寿保险类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum LifeInsuranceType {
|
|
TermLife, // 定期寿险
|
|
WholeLife, // 终身寿险
|
|
UniversalLife, // 万能寿险
|
|
VariableLife, // 变额寿险
|
|
Annuity, // 年金保险
|
|
}
|
|
|
|
/// 畜牧资产类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum LivestockType {
|
|
Cattle, // 牛
|
|
Pigs, // 猪
|
|
Sheep, // 羊
|
|
Poultry, // 家禽
|
|
Horses, // 马
|
|
}
|
|
|
|
/// 航空器类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum AircraftType {
|
|
CommercialAircraft, // 商用飞机
|
|
PrivateJet, // 私人飞机
|
|
Helicopter, // 直升机
|
|
Drone, // 无人机
|
|
}
|
|
|
|
/// 船舶类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum VesselType {
|
|
CargoShip, // 货船
|
|
TankerShip, // 油轮
|
|
ContainerShip, // 集装箱船
|
|
CruiseShip, // 邮轮
|
|
Yacht, // 游艇
|
|
}
|
|
|
|
/// 汽车类型
|
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum AutoType {
|
|
PassengerCar, // 乘用车
|
|
Truck, // 卡车
|
|
Bus, // 公交车
|
|
ElectricVehicle, // 电动车
|
|
LuxuryCar, // 豪华车
|
|
ClassicCar, // 古董车
|
|
}
|
|
|
|
/// 资产分类管理器
|
|
pub struct AssetClassificationManager {
|
|
/// 资产类别元数据
|
|
#[allow(dead_code)]
|
|
metadata: HashMap<String, AssetMetadata>,
|
|
}
|
|
|
|
/// 资产元数据
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct AssetMetadata {
|
|
/// 类别名称
|
|
pub name: String,
|
|
|
|
/// 类别描述
|
|
pub description: String,
|
|
|
|
/// 父类别
|
|
pub parent: Option<String>,
|
|
|
|
/// 子类别
|
|
pub children: Vec<String>,
|
|
|
|
/// 典型估值方法
|
|
pub valuation_methods: Vec<String>,
|
|
|
|
/// 流动性等级 (1-5, 5最高)
|
|
pub liquidity_level: u8,
|
|
|
|
/// 是否需要专业评估
|
|
pub requires_professional_appraisal: bool,
|
|
|
|
/// 典型持有期限(天)
|
|
pub typical_holding_period: Option<u32>,
|
|
}
|
|
|
|
impl AssetClassificationManager {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
metadata: HashMap::new(),
|
|
}
|
|
}
|
|
|
|
/// 获取资产类别的显示名称
|
|
pub fn get_display_name(asset_class: &AssetClass) -> String {
|
|
match asset_class {
|
|
AssetClass::ResidentialRealEstate(t) => format!("住宅地产 - {:?}", t),
|
|
AssetClass::CommercialRealEstate(t) => format!("商业地产 - {:?}", t),
|
|
AssetClass::EquitySecurities(t) => format!("股权证券 - {:?}", t),
|
|
AssetClass::DebtSecurities(t) => format!("债务证券 - {:?}", t),
|
|
AssetClass::EnergyCommodities(t) => format!("能源商品 - {:?}", t),
|
|
AssetClass::Artworks(t) => format!("艺术品 - {:?}", t),
|
|
AssetClass::Patents(t) => format!("专利 - {:?}", t),
|
|
AssetClass::Cryptocurrencies(t) => format!("加密货币 - {:?}", t),
|
|
AssetClass::CarbonEmissionRights(t) => format!("碳排放权 - {:?}", t),
|
|
AssetClass::Custom(s) => format!("自定义 - {}", s),
|
|
_ => format!("{:?}", asset_class),
|
|
}
|
|
}
|
|
|
|
/// 判断是否为金融资产
|
|
pub fn is_financial_asset(asset_class: &AssetClass) -> bool {
|
|
matches!(
|
|
asset_class,
|
|
AssetClass::EquitySecurities(_)
|
|
| AssetClass::DebtSecurities(_)
|
|
| AssetClass::Derivatives(_)
|
|
| AssetClass::StructuredProducts(_)
|
|
| AssetClass::FundShares(_)
|
|
)
|
|
}
|
|
|
|
/// 判断是否为实物资产
|
|
pub fn is_physical_asset(asset_class: &AssetClass) -> bool {
|
|
matches!(
|
|
asset_class,
|
|
AssetClass::ResidentialRealEstate(_)
|
|
| AssetClass::CommercialRealEstate(_)
|
|
| AssetClass::EnergyCommodities(_)
|
|
| AssetClass::MetalCommodities(_)
|
|
| AssetClass::Artworks(_)
|
|
| AssetClass::Antiques(_)
|
|
)
|
|
}
|
|
|
|
/// 判断是否为数字资产
|
|
pub fn is_digital_asset(asset_class: &AssetClass) -> bool {
|
|
matches!(
|
|
asset_class,
|
|
AssetClass::Cryptocurrencies(_)
|
|
| AssetClass::NonFungibleTokens(_)
|
|
| AssetClass::DigitalCollectibles
|
|
| AssetClass::VirtualAssets(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl Default for AssetClassificationManager {
|
|
fn default() -> Self {
|
|
Self::new()
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_asset_class_display() {
|
|
let asset = AssetClass::ResidentialRealEstate(ResidentialType::Apartment);
|
|
let name = AssetClassificationManager::get_display_name(&asset);
|
|
assert!(name.contains("住宅地产"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_is_financial_asset() {
|
|
let equity = AssetClass::EquitySecurities(EquityType::CommonStock);
|
|
assert!(AssetClassificationManager::is_financial_asset(&equity));
|
|
|
|
let real_estate = AssetClass::ResidentialRealEstate(ResidentialType::Apartment);
|
|
assert!(!AssetClassificationManager::is_financial_asset(&real_estate));
|
|
}
|
|
|
|
#[test]
|
|
fn test_is_physical_asset() {
|
|
let real_estate = AssetClass::CommercialRealEstate(CommercialType::Office);
|
|
assert!(AssetClassificationManager::is_physical_asset(&real_estate));
|
|
|
|
let crypto = AssetClass::Cryptocurrencies(CryptoType::Bitcoin);
|
|
assert!(!AssetClassificationManager::is_physical_asset(&crypto));
|
|
}
|
|
|
|
#[test]
|
|
fn test_is_digital_asset() {
|
|
let nft = AssetClass::NonFungibleTokens(NFTType::Art);
|
|
assert!(AssetClassificationManager::is_digital_asset(&nft));
|
|
|
|
let gold = AssetClass::PreciousMetals(PreciousMetalType::Gold);
|
|
assert!(!AssetClassificationManager::is_digital_asset(&gold));
|
|
}
|
|
}
|