This commit is contained in:
邹方成 2025-10-27 20:35:32 +08:00
parent a1af3f26ac
commit eeb249146b
3 changed files with 147 additions and 34 deletions

View File

@ -283,7 +283,6 @@ async def calculate_valuation(
try:
# 添加后台任务
esg_obj = await ESG.filter(name=data.industry).first()
background_tasks.add_task(_perform_valuation_calculation, user_id, data)
logger.info("valuation.task_queued user_id={} asset_name={} industry={}",
@ -476,14 +475,14 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str,
# transaction_data: 交易数据字典(API获取)
# manual_bids: 手动收集的竞价列表(用户填写)
# expert_valuations: 专家估值列表(系统配置)
transaction_data: Dict = None
manual_bids: List[float] = None
transaction_data: Dict = {}
manual_bids: List[float] = []
# 处理月交易额波动区间的三个关键数值:最高价、最低价、中位数
# 已实现从data.price_fluctuation中提取并计算三个数值
price_fluctuation_median = None # 中位数
price_fluctuation_max = None # 最高价
price_fluctuation_min = None # 最低价
price_fluctuation_median = 0 # 中位数
price_fluctuation_max = 0 # 最高价
price_fluctuation_min = 0 # 最低价
if hasattr(data, 'price_fluctuation') and data.price_fluctuation:
try:
@ -491,13 +490,17 @@ async def _extract_calculation_params_c(data: UserValuationCreate) -> Dict[str,
price_values = [float(i) for i in data.price_fluctuation if i is not None]
if price_values:
price_fluctuation_max = max(price_values)
manual_bids.append(price_fluctuation_max)
price_fluctuation_min = min(price_values)
manual_bids.append(price_fluctuation_min)
price_fluctuation_median = statistics.median(price_values)
manual_bids.append(price_fluctuation_median)
except (ValueError, TypeError) as e:
# 如果转换失败,记录日志但不中断程序
logger.warning(f"价格波动区间数据转换失败: {e}")
expert_valuations = None
expert_valuations = 0
# 浏览热度分 - 优化数据获取逻辑
daily_browse_volume = 0 # 默认值
@ -554,10 +557,6 @@ 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, # 收藏数

View File

@ -402,7 +402,7 @@ class UniversalAPIManager:
}
return self.make_request('chinaz', 'copyright_software', params)
def query_patent_info(self, company_name: str, chinaz_ver: str = "1") -> Dict[str, Any]:
def query_patent_info(self, company_name: str, chinaz_ver: str = "2.0") -> Dict[str, Any]:
"""查询企业专利信息"""
params = {
'searchKey': company_name,
@ -413,7 +413,7 @@ class UniversalAPIManager:
}
return self.make_request('chinaz', 'patent', params)
def query_judicial_data(self, company_name: str, chinaz_ver: str = "1") -> Dict[str, Any]:
def query_judicial_data(self, company_name: str, chinaz_ver: str = "1.0") -> Dict[str, Any]:
"""查询司法综合数据"""
params = {
'q': company_name,

View File

@ -1,14 +1,9 @@
# 非物质文化遗产IP知识产权评估系统 - 需求文档
# 需求文档
### 1.1 项目目标
主要目标:
- 建立标准化的非遗IP价值评估体系
- 提供准确、客观的非遗资产价值量化服务
### 1.3 项目范围
### 1.1 项目范围
包含范围:
- 非遗IP价值评估计算引擎
- 用户管理和权限控制系统
- 评估申请和审核流程
@ -17,15 +12,15 @@
- 第三方登录集成
- 第三方数据集成
## 2. 用户角色定义
### 2.1 管理端用户
#### 2.1.1 系统管理员
角色描述:负责系统整体管理和维护
主要职责:
- 用户账号管理和权限分配
- 系统配置和参数设置
- 基础数据维护行业、ESG、政策等
@ -33,14 +28,17 @@
- 第三方API配置管理
权限范围:
- 所有功能模块的完整访问权限
- 用户创建、编辑、删除权限
- 系统配置修改权限
- 数据导入导出权限
#### 2.1.2 业务审核员
角色描述:负责评估申请的审核和质量控制
主要职责:
- 评估申请的初步审核
- 数据完整性和合理性检查
- 计算结果的人工复核
@ -48,6 +46,7 @@
- 异常情况的处理
权限范围:
- 评估申请查看和审核权限
- 审核状态修改权限
- 审核备注添加权限
@ -56,8 +55,10 @@
### 2.2 应用端用户
#### 2.2.1 个人用户
角色描述:非遗传承人、文化工作者等个人申请者
主要需求:
- 提交个人非遗资产评估申请
- 查看评估进度和结果
- 下载评估报告
@ -74,16 +75,16 @@
详细需求:
FR-001 手机号注册
- 用户可使用手机号进行注册
- 支持短信验证码验证
- 注册时需填写基本信息(姓名、机构等)
- 系统自动分配默认权限
FR-002 手机号登录
- 支持手机号+密码登录
- 支持手机号+验证码登录
- 登录失败5次后账号临时锁定30分钟
- 登录成功后生成JWT token
#### 3.1.2 权限管理
@ -92,15 +93,11 @@ FR-002 手机号登录
详细需求:
FR-004 角色管理
- 支持创建、编辑、删除角色
- 角色可分配菜单权限和API权限
- 预设系统管理员、审核员、普通用户角色
FR-005 菜单权限
- 动态菜单权限控制
- 根据用户角色显示对应菜单
### 3.2 估值评估系统
#### 3.2.1 评估申请提交
@ -114,22 +111,24 @@ FR-005 菜单权限
详细需求:
FR-015 结果存储
- 完整计算过程和中间结果保存
- 输入参数和输出结果关联存储
- 计算时间和版本信息记录
FR-016 结果展示
- 估值结果可视化展示
- 计算过程分步骤展示
- 各维度得分雷达图展示
- 风险评估结果展示
FR-017 报告生成
- 自动生成详细评估报告
- 支持PDF格式导出
- 报告包含计算过程和结论
### 3.3 审核管理系统
### 3.4 数据管理系统
@ -141,17 +140,132 @@ FR-017 报告生成
详细需求:
FR-024 行业数据管理
- 行业分类标准维护
- 行业ROE系数管理
FR-025 ESG数据管理
- ESG评级标准维护
- 行业ESG基准分管理
FR-026 政策数据管理
- 政策匹配规则维护
- 资助政策数据库管理
## 4. 移动端开发
验收标准:
- 基础数据准确完整
- 数据更新及时有效
### 4.1 微信小程序开发
#### 4.1.1 功能范围
功能描述:基于微信小程序平台的移动端应用开发
详细需求:
FR-027 用户认证
- 支持微信授权登录
- 支持手机号快速登录
- 与PC端用户体系统一
- 自动获取微信用户基本信息
FR-028 评估申请
- 移动端评估表单提交
- 支持拍照上传证书材料
- 表单数据与PC端保持一致
- 支持草稿保存和续填
FR-029 进度查询
- 实时查看评估申请状态
- 接收微信消息推送通知
- 查看评估结果和报告
- 支持报告分享功能
#### 4.1.2 技术要求
TR-001 开发框架
- 使用微信小程序原生开发或uni-app框架
- 兼容微信小程序最新版本
- 支持分包加载优化性能
TR-002 数据同步
- 与后端API保持一致的数据接口
- 支持离线数据缓存
- 实现数据实时同步
TR-003 用户体验
- 响应式设计适配不同屏幕尺寸
- 流畅的页面切换动画
- 友好的错误提示和加载状态
#### 4.1.3 页面结构
PS-001 主要页面
- 首页:功能导航和快速入口
- 登录页:微信授权和手机号登录
- 评估申请页:分步骤表单填写
- 我的评估:申请列表和状态查看
- 评估详情:结果展示和报告下载
- 个人中心:用户信息和设置
PS-002 辅助页面
- 帮助中心:使用指南和常见问题
- 关于我们:产品介绍和联系方式
- 隐私政策:数据使用说明
### 4.2 H5移动端开发可选
#### 4.2.1 功能范围
功能描述基于H5技术的移动端网页应用
详细需求:
FR-030 跨平台兼容
- 支持微信内置浏览器
- 支持主流移动浏览器
- 响应式布局适配
FR-031 功能对等
- 与小程序功能基本一致
- 支持文件上传和预览
- 支持微信分享功能
### 4.3 移动端特有功能
#### 4.3.1 消息推送
功能描述:基于微信模板消息的状态通知
详细需求:
FR-032 推送场景
- 评估申请提交成功通知
- 审核状态变更通知
- 评估完成结果通知
- 系统重要公告推送
#### 4.3.2 便民功能
功能描述:针对移动端用户习惯的便民功能
详细需求:
FR-033 快捷操作
- 一键拨打客服电话
- 快速分享评估结果
- 扫码快速登录PC端
- 语音输入辅助填写