diff --git a/app/api/v1/app_valuations/app_valuations.py b/app/api/v1/app_valuations/app_valuations.py index 75faaea..ca5b369 100644 --- a/app/api/v1/app_valuations/app_valuations.py +++ b/app/api/v1/app_valuations/app_valuations.py @@ -1,4 +1,5 @@ from random import random +import statistics from datetime import datetime from fastapi import APIRouter, Depends, HTTPException, status, BackgroundTasks @@ -476,7 +477,25 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str, # expert_valuations: 专家估值列表(系统配置) transaction_data: Dict = None manual_bids: List[float] = None - # TODO 需要客户确认 三个数值 + + # 处理月交易额波动区间的三个关键数值:最高价、最低价、中位数 + # 已实现:从data.price_fluctuation中提取并计算三个数值 + price_fluctuation_median = None # 中位数 + price_fluctuation_max = None # 最高价 + price_fluctuation_min = None # 最低价 + + if hasattr(data, 'price_fluctuation') and data.price_fluctuation: + try: + # 将price_fluctuation转换为浮点数列表 + price_values = [float(i) for i in data.price_fluctuation if i is not None] + if price_values: + price_fluctuation_max = max(price_values) + price_fluctuation_min = min(price_values) + price_fluctuation_median = statistics.median(price_values) + except (ValueError, TypeError) as e: + # 如果转换失败,记录日志但不中断程序 + logger.warning(f"价格波动区间数据转换失败: {e}") + expert_valuations = None # 浏览热度分 - 优化数据获取逻辑 daily_browse_volume = 0 # 默认值 @@ -534,6 +553,10 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str, "weighted_average_price": transaction_data, "manual_bids": manual_bids, # 手动收集的竞价列表 (用户填写) "expert_valuations": expert_valuations, # 专家估值列表 (系统配置) + # 月交易额波动区间的三个关键数值 + "price_fluctuation_max": price_fluctuation_max, # 最高价 + "price_fluctuation_min": price_fluctuation_min, # 最低价 + "price_fluctuation_median": price_fluctuation_median, # 中位数 # 计算热度系数C2 "daily_browse_volume": daily_browse_volume, # 近7日日均浏览量 (API获取) "collection_count": collection_count, # 收藏数