fix(calculation): 优化市场价值计算参数获取逻辑
修复市场价值计算中参数获取的默认值问题,改进浏览量和收藏数的获取方式: 1. 为expert_valuations设置默认值0 2. 优先从用户填写的link_views获取浏览量 3. 支持从平台账户数据中获取浏览量和收藏数 4. 添加默认平台数据结构
This commit is contained in:
parent
089d6dd504
commit
2e20d36964
@ -478,9 +478,47 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str,
|
||||
manual_bids: List[float] = None
|
||||
# TODO 需要客户确认 三个数值
|
||||
expert_valuations = None
|
||||
# 浏览热度分 TODO 需要先确定平台信息
|
||||
daily_browse_volume = 500.0 # 近7日日均浏览量(默认占位) 是否 使用该商品近12个月的链接浏览量???
|
||||
collection_count = 50 # 收藏数(默认占位) 无
|
||||
# 浏览热度分 - 优化数据获取逻辑
|
||||
daily_browse_volume = 0 # 默认值
|
||||
|
||||
# 第一优先级:使用用户填写的该商品近12个月的链接浏览量
|
||||
if hasattr(data, 'link_views') and data.link_views:
|
||||
try:
|
||||
# 尝试将字符串转换为浮点数
|
||||
daily_browse_volume = float(data.link_views)
|
||||
except (ValueError, TypeError):
|
||||
# 如果转换失败,继续使用其他数据源
|
||||
pass
|
||||
|
||||
# 第二优先级:如果没有link_views,尝试从平台账户数据中获取
|
||||
if daily_browse_volume == 0 and hasattr(data, 'platform_accounts') and data.platform_accounts:
|
||||
try:
|
||||
platform_accounts_data = data.platform_accounts
|
||||
# 获取第一个平台的数据
|
||||
first_platform_key = next(iter(platform_accounts_data))
|
||||
first_platform_data = platform_accounts_data[first_platform_key]
|
||||
# 尝试获取浏览量
|
||||
platform_views = first_platform_data.get("views", "0")
|
||||
daily_browse_volume = float(platform_views)
|
||||
except (ValueError, TypeError, StopIteration, AttributeError):
|
||||
# 如果获取失败,保持默认值
|
||||
daily_browse_volume = 0
|
||||
|
||||
# 收藏数 - 尝试从平台账户数据中获取
|
||||
collection_count = 0 # 默认值
|
||||
|
||||
if hasattr(data, 'platform_accounts') and data.platform_accounts:
|
||||
try:
|
||||
platform_accounts_data = data.platform_accounts
|
||||
# 获取第一个平台的数据
|
||||
first_platform_key = next(iter(platform_accounts_data))
|
||||
first_platform_data = platform_accounts_data[first_platform_key]
|
||||
# 尝试获取收藏数
|
||||
platform_likes = first_platform_data.get("likes", "0")
|
||||
collection_count = int(platform_likes)
|
||||
except (ValueError, TypeError, StopIteration, AttributeError):
|
||||
# 如果获取失败,保持默认值
|
||||
collection_count = 0
|
||||
# 稀缺性乘数C3 发行量
|
||||
circulation = data.scarcity_level or '限量'
|
||||
|
||||
|
||||
@ -388,9 +388,31 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str,
|
||||
# expert_valuations: 专家估值列表(系统配置)
|
||||
transaction_data: Dict = None
|
||||
manual_bids: List[float] = None
|
||||
expert_valuations = [random.uniform(0, 1) for _ in range(3)]
|
||||
# expert_valuations = [random.uniform(0, 1) for _ in range(3)]
|
||||
expert_valuations = 0 # 默认 0
|
||||
# 浏览热度分 TODO 需要先确定平台信息
|
||||
daily_browse_volume = 500.0 # 近7日日均浏览量(默认占位)
|
||||
# 优化后的多平台数据结构,支持从platform_accounts中提取或使用默认值
|
||||
default_platform_data = {
|
||||
"bilibili": {
|
||||
"account": "default_account",
|
||||
"likes": "100",
|
||||
"comments": "50",
|
||||
"shares": "20",
|
||||
"views": "500"
|
||||
}
|
||||
}
|
||||
|
||||
# 如果有平台账户数据,尝试提取浏览量,否则使用默认值
|
||||
if hasattr(data, 'platform_accounts') and data.platform_accounts:
|
||||
platform_accounts_data = data.platform_accounts
|
||||
# 获取第一个平台的数据
|
||||
first_platform_key = next(iter(platform_accounts_data))
|
||||
first_platform_data = platform_accounts_data[first_platform_key]
|
||||
# 尝试获取浏览量,如果没有则使用默认值
|
||||
daily_browse_volume = float(first_platform_data.get("views", "500"))
|
||||
else:
|
||||
daily_browse_volume = 500.0 # 默认值
|
||||
|
||||
collection_count = 50 # 收藏数(默认占位)
|
||||
# 稀缺性乘数C3 发行量
|
||||
circulation = data.circulation or '限量'
|
||||
|
||||
@ -76,7 +76,7 @@ class MarketValueCCalculator:
|
||||
"""
|
||||
# 计算市场竞价C1
|
||||
market_bidding_c1 = self.market_bidding_calculator.calculate_market_bidding_c1(
|
||||
transaction_data={'weighted_average_price': input_data.get('average_transaction_price', 50000.0)},
|
||||
transaction_data={'weighted_average_price': input_data.get('average_transaction_price', 50000.0)}, # 默认了一个 50000
|
||||
manual_bids=input_data.get('manual_bids', [input_data.get('average_transaction_price', 50000.0)]),
|
||||
expert_valuations=input_data.get('expert_valuations', [input_data.get('average_transaction_price', 50000.0)])
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user