diff --git a/app/api/v1/app_valuations/app_valuations.py b/app/api/v1/app_valuations/app_valuations.py index 7701356..342362f 100644 --- a/app/api/v1/app_valuations/app_valuations.py +++ b/app/api/v1/app_valuations/app_valuations.py @@ -166,7 +166,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate # 步骤1:立即更新计算输入参数(不管后续是否成功) try: - await valuation_controller.update( + await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate( calculation_input=input_data, @@ -212,7 +212,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate # api_calc_fields["flow_correction"] = None if api_calc_fields: - await valuation_controller.update( + await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate(**api_calc_fields) ) @@ -225,7 +225,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate # 步骤2:更新计算结果字段(模型估值B、市场估值C、最终估值AB、完整计算结果) try: - await valuation_controller.update( + await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate( model_value_b=calculation_result.get('model_value_b'), @@ -280,7 +280,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate base_pledge_rate_value = "0.5" # 固定值:基础质押率 = 0.5 flow_correction_value = "0.3" # 固定值:流量修正系数 = 0.3 - await valuation_controller.update( + await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate( dynamic_pledge_rate=drp_result, @@ -309,7 +309,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate # 步骤4:最后更新状态为成功 try: - result = await valuation_controller.update( + result = await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate( status='success' @@ -362,7 +362,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate fail_update_fields.update(api_calc_fields) try: - await valuation_controller.update( + await valuation_controller.update_calc( valuation_id, ValuationAssessmentUpdate(**fail_update_fields) ) @@ -372,7 +372,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate # 如果保存失败,至少更新状态 try: fail_update = ValuationAssessmentUpdate(status='rejected') - await valuation_controller.update(valuation_id, fail_update) + await valuation_controller.update_calc(valuation_id, fail_update) except Exception: pass else: diff --git a/app/controllers/user_valuation.py b/app/controllers/user_valuation.py index 343b88c..dd77aad 100644 --- a/app/controllers/user_valuation.py +++ b/app/controllers/user_valuation.py @@ -127,7 +127,7 @@ class UserValuationController: inheritor_ages=valuation.inheritor_ages, inheritor_age_count=valuation.inheritor_age_count, inheritor_certificates=valuation.inheritor_certificates, - heritage_level=valuation.heritage_level, + heritage_level=getattr(valuation, "heritage_level", None), heritage_asset_level=valuation.heritage_asset_level, patent_application_no=valuation.patent_application_no, patent_remaining_years=valuation.patent_remaining_years, @@ -197,7 +197,7 @@ class UserValuationController: inheritor_ages=valuation.inheritor_ages, inheritor_age_count=valuation.inheritor_age_count, inheritor_certificates=valuation.inheritor_certificates, - heritage_level=valuation.heritage_level, + heritage_level=getattr(valuation, "heritage_level", None), heritage_asset_level=valuation.heritage_asset_level, patent_application_no=valuation.patent_application_no, patent_remaining_years=valuation.patent_remaining_years, diff --git a/app/controllers/valuation.py b/app/controllers/valuation.py index b8d396e..ca99fb1 100644 --- a/app/controllers/valuation.py +++ b/app/controllers/valuation.py @@ -847,6 +847,17 @@ class ValuationController: out = ValuationAssessmentOut.model_validate(valuation) return await self._attach_user_phone(out) + async def update_calc(self, valuation_id: int, data: ValuationAssessmentUpdate) -> Optional[ValuationAssessmentOut]: + valuation = await self.model.filter(id=valuation_id, is_active=True).first() + if not valuation: + return None + update_data = data.model_dump(exclude_unset=True) + if update_data: + await valuation.update_from_dict(update_data) + await valuation.save() + out = ValuationAssessmentOut.model_validate(valuation) + return await self._attach_user_phone(out) + async def _attach_user_phone(self, out: ValuationAssessmentOut) -> ValuationAssessmentOut: user = await AppUser.filter(id=out.user_id).first() out.user_phone = getattr(user, "phone", None) if user else None diff --git a/app/schemas/valuation.py b/app/schemas/valuation.py index 916e3e1..4a96f9c 100644 --- a/app/schemas/valuation.py +++ b/app/schemas/valuation.py @@ -193,7 +193,7 @@ class ValuationAssessmentOut(ValuationAssessmentBase): status: str = Field(..., description="评估状态") admin_notes: Optional[str] = Field(None, description="管理员备注") created_at: datetime = Field(..., description="创建时间") - updated_at: datetime = Field(..., description="更新时间") + updated_at: Optional[datetime] = Field(None, description="更新时间") audited_at: Optional[datetime] = Field(None, description="审核时间") is_active: bool = Field(..., description="是否激活") @@ -246,7 +246,7 @@ class UserValuationOut(ValuationAssessmentBase): status: str = Field(..., description="评估状态") admin_notes: Optional[str] = Field(None, description="管理员备注") created_at: datetime = Field(..., description="创建时间") - updated_at: datetime = Field(..., description="更新时间") + updated_at: Optional[datetime] = Field(None, description="更新时间") is_active: Optional[bool] = Field(None, description="是否激活") class Config: @@ -290,7 +290,7 @@ class UserValuationDetail(ValuationAssessmentBase): status: str = Field(..., description="评估状态") admin_notes: Optional[str] = Field(None, description="管理员备注") created_at: datetime = Field(..., description="创建时间") - updated_at: datetime = Field(..., description="更新时间") + updated_at: Optional[datetime] = Field(None, description="更新时间") class Config: from_attributes = True @@ -422,7 +422,7 @@ class ValuationCalculationStepOut(ValuationCalculationStepBase): id: int = Field(..., description="主键ID") valuation_id: int = Field(..., description="关联的估值评估ID") created_at: datetime = Field(..., description="创建时间") - updated_at: datetime = Field(..., description="更新时间") + updated_at: Optional[datetime] = Field(None, description="更新时间") class Config: from_attributes = True diff --git a/web1/dist.zip b/web1/dist.zip new file mode 100644 index 0000000..7ef9a8d Binary files /dev/null and b/web1/dist.zip differ diff --git a/估值字段.txt b/估值字段.txt index 4246f48..9a077f7 100644 --- a/估值字段.txt +++ b/估值字段.txt @@ -37,8 +37,8 @@ export DOCKER_DEFAULT_PLATFORM=linux/amd64 -docker build -t zfc931912343/guzhi-fastapi-admin:v2.6 . -docker push zfc931912343/guzhi-fastapi-admin:v2.6 +docker build -t zfc931912343/guzhi-fastapi-admin:v2.7 . +docker push zfc931912343/guzhi-fastapi-admin:v2.7 # 运行容器