From a31657f91bb527e4d7d0dad6557709f0c131e5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Sun, 26 Oct 2025 22:52:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=BC=B0=E5=80=BC=E8=AE=A1=E7=AE=97):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=B7=E6=A0=BC=E6=B3=A2=E5=8A=A8=E5=8C=BA?= =?UTF-8?q?=E9=97=B4=E6=9C=80=E9=AB=98=E4=BB=B7=E3=80=81=E6=9C=80=E4=BD=8E?= =?UTF-8?q?=E4=BB=B7=E5=92=8C=E4=B8=AD=E4=BD=8D=E6=95=B0=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现从price_fluctuation字段提取数据并计算三个关键数值 当数据转换失败时记录警告日志但不中断程序 --- app/api/v1/app_valuations/app_valuations.py | 25 ++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) 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, # 收藏数