From 3328439241f671b49acf6ec8f93d1339020992eb Mon Sep 17 00:00:00 2001 From: dubingyan666 Date: Wed, 26 Nov 2025 20:46:47 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20app/utils/calculation?= =?UTF-8?q?=5Fengine/formula=5Fregistry.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calculation_engine/formula_registry.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/utils/calculation_engine/formula_registry.py b/app/utils/calculation_engine/formula_registry.py index 004bb14..e216ca2 100644 --- a/app/utils/calculation_engine/formula_registry.py +++ b/app/utils/calculation_engine/formula_registry.py @@ -44,12 +44,12 @@ def _node( FORMULA_TREE: List[FormulaTreeNode] = [ - _node( - "FINAL_A", - "最终估值A", - "最终估值A = 模型估值B × 0.7 + 市场估值C × 0.3", - "10", - children=[ + _node( + "FINAL_A", + "最终估值A", + "最终估值A = 模型估值B × 0.7 + 市场估值C × 0.3", + "10", + children=[ _node( "MODEL_B", "模型估值B", @@ -224,6 +224,13 @@ FORMULA_TREE: List[FormulaTreeNode] = [ ), ], ), + _node( + "DYNAMIC_PLEDGE_RATE", + "动态质押率DPR", + "动态质押率DPR = 基础质押率 × (1 + 流量修正系数) + 政策加成系数 - 流动性调节因子", + "40", + group="DYNAMIC_PLEDGE", + ), ], ) ] From b0c80c500fcf96428f39291df1cb77f14d9386ab Mon Sep 17 00:00:00 2001 From: dubingyan666 Date: Wed, 26 Nov 2025 20:49:49 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20app/api/v1/app=5Fvalua?= =?UTF-8?q?tions/app=5Fvaluations.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/v1/app_valuations/app_valuations.py | 22 ++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/api/v1/app_valuations/app_valuations.py b/app/api/v1/app_valuations/app_valuations.py index 837c449..9436230 100644 --- a/app/api/v1/app_valuations/app_valuations.py +++ b/app/api/v1/app_valuations/app_valuations.py @@ -70,15 +70,19 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate except Exception as e: logger.warning("valuation.policy_fetch_timeout industry={} err={}", data.industry, repr(e)) policy_match_score = getattr(policy_obj, 'score', 0.0) or 0.0 - - # 提取 经济价值B1 计算参数 - input_data_by_b1 = await _extract_calculation_params_b1(data) + # ESG关联价值 ESG分 (0-10分) input_data_by_b1["esg_score"] = esg_score # 行业修正系数I input_data_by_b1["industry_coefficient"] = fix_num_score # 政策匹配度 input_data_by_b1["policy_match_score"] = policy_match_score + # 提取 经济价值B1 计算参数 + input_data_by_b1 = await _extract_calculation_params_b1( + data, esg_score=esg_score, industry_coefficient=fix_num_score, policy_match_score=policy_match_score + ) + + # 侵权分 默认 6 try: @@ -342,7 +346,12 @@ async def calculate_valuation( raise HTTPException(status_code=500, detail=f"任务提交失败: {str(e)}") -async def _extract_calculation_params_b1(data: UserValuationCreate) -> Dict[str, Any]: +async def _extract_calculation_params_b1( + data: UserValuationCreate, + esg_score: float = 0.0, + industry_coefficient: float = 0.0, + policy_match_score: float = 0.0, +) -> Dict[str, Any]: """ 从用户提交的数据中提取计算所需的参数 @@ -442,7 +451,10 @@ async def _extract_calculation_params_b1(data: UserValuationCreate) -> Dict[str, 'link_views': safe_float(data.link_views), # 政策乘数B13相关参数 'implementation_stage': implementation_stage, - 'funding_support': funding_support + 'funding_support': funding_support, + 'esg_score': safe_float(esg_score), + 'industry_coefficient': safe_float(industry_coefficient), + 'policy_match_score': safe_float(policy_match_score), } From 831560592f91098e3306ee3652362e5da6af9552 Mon Sep 17 00:00:00 2001 From: dubingyan666 Date: Wed, 26 Nov 2025 21:04:28 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20app/api/v1/app=5Fvalua?= =?UTF-8?q?tions/app=5Fvaluations.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/v1/app_valuations/app_valuations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/v1/app_valuations/app_valuations.py b/app/api/v1/app_valuations/app_valuations.py index 9436230..6ad99b9 100644 --- a/app/api/v1/app_valuations/app_valuations.py +++ b/app/api/v1/app_valuations/app_valuations.py @@ -551,7 +551,7 @@ async def _extract_calculation_params_b3(data: UserValuationCreate) -> Dict[str, price_fluctuation = [float(i) for i in data.price_fluctuation] highest_price, lowest_price = max(price_fluctuation), min(price_fluctuation) # lawsuit_status = "无诉讼" # 诉讼状态 TODO (API获取) - inheritor_ages = data.inheritor_age_count # [45, 60, 75] # 传承人年龄列表 + inheritor_ages = [float(i) for i in data.inheritor_age_count] # [45, 60, 75] # 传承人年龄列表 return { "highest_price": highest_price, "lowest_price": lowest_price, From 3c03eaf353142f94ec2fe0eb661ff9c91e57df58 Mon Sep 17 00:00:00 2001 From: hhm Date: Thu, 27 Nov 2025 09:45:54 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=E4=B8=8A=E4=BC=A0=E5=87=AD?= =?UTF-8?q?=E8=AF=81=E5=9B=BE=E7=89=87=E5=9C=B0=E5=9D=80=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/user-center/components/CorporateTransfer.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/web1/src/views/user-center/components/CorporateTransfer.vue b/web1/src/views/user-center/components/CorporateTransfer.vue index 66b135e..0b056c4 100644 --- a/web1/src/views/user-center/components/CorporateTransfer.vue +++ b/web1/src/views/user-center/components/CorporateTransfer.vue @@ -145,7 +145,6 @@ { - return fileList.value.length > 0 && formModel.invoiceHeader && formModel.invoiceType + return ( + uploadedFile.value && + uploadedFile.value.length > 0 && + formModel.invoiceHeader && + formModel.invoiceType + ) }) const handleUploadFinish = (file) => { From e99febec4e8b77f0cb2445ce24fa9d289b593afd Mon Sep 17 00:00:00 2001 From: hhm Date: Thu, 27 Nov 2025 10:30:15 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20=E5=87=AD=E8=AF=81=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E7=9A=84=E5=9B=BE=E7=89=87=E5=8A=A0=E4=BA=86=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E9=99=90=E5=88=B6=EF=BC=8C10mb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user-center/components/CorporateTransfer.vue | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/web1/src/views/user-center/components/CorporateTransfer.vue b/web1/src/views/user-center/components/CorporateTransfer.vue index 0b056c4..3ff9ba2 100644 --- a/web1/src/views/user-center/components/CorporateTransfer.vue +++ b/web1/src/views/user-center/components/CorporateTransfer.vue @@ -148,6 +148,7 @@ list-type="image-card" :max="1" accept="image/png,image/jpeg,image/jpg" + @before-upload="beforeUpload" @finish="handleUploadFinish" @remove="deleteUpload" > @@ -312,6 +313,16 @@ const deleteUpload = () => { uploadedFile.value = '' } +const beforeUpload = (data) => { + const file = data.file.file + const isLt10M = file.size / 1024 / 1024 < 10 + if (!isLt10M) { + message.error('图片大小不能超过10MB,请重新上传') + return false + } + return true +} + // 提交上传 function handleUploadSubmit() { if (!isFormValid.value) {