add drp add requests params

This commit is contained in:
duxin 2025-10-10 12:12:07 +08:00
parent 48b93fdddb
commit e1eb673b76
5 changed files with 181 additions and 1 deletions

View File

@ -35,7 +35,7 @@ def create_app() -> FastAPI:
lifespan=lifespan,
)
# 注册静态文件目录
app.mount("/static", StaticFiles(directory="app/static"), name="static")
# app.mount("/static", StaticFiles(directory="app/static"), name="static")
register_exceptions(app)
register_routers(app, prefix="/api")
return app

View File

@ -40,6 +40,64 @@ async def calculate_valuation(
计算估值评估
根据用户提交的估值评估数据调用计算引擎进行经济价值B1计算
请求示例JSON (仅包含用户填写部分):
{
"asset_name": "传统刺绣工艺",
"institution": "某文化传承机构",
"industry": "传统手工艺",
// 财务状况 (用户填写)
"annual_revenue": "500", // 近12个月机构营收/万元
"rd_investment": "50", // 近12个月机构研发投入/万元
"three_year_income": [400, 450, 500], // 近三年机构收益/万元
// 非遗等级与技术 (用户填写)
"inheritor_level": "国家级传承人", // 非遗传承人等级
"inheritor_ages": [45, 60, 75], // 传承人年龄列表
"heritage_level": "国家级", // 非遗等级
"patent_application_no": "CN202310123456.7", // 专利申请号
"patent_remaining_years": "15", // 专利剩余年限
"historical_evidence": { // 历史证明证据及数量
"历史文献": 3,
"考古发现": 2,
"传承谱系": 5
},
"pattern_images": ["demo.jpg"], // 非遗纹样图片
// 非遗应用与推广 (用户填写)
"application_maturity": "成熟应用", // 应用成熟度
"application_coverage": "全国覆盖", // 应用覆盖范围
"cooperation_depth": "0.5", // 跨界合作深度
"offline_activities": "12", // 近12个月线下宣讲活动次数
"online_accounts": [ // 线上宣传账号信息
{"platform": "抖音", "account": "传统刺绣大师"},
{"platform": "微博", "account": "非遗传承人"}
],
// 市场信息 (用户填写)
"sales_volume": "1000", // 近12个月销售量
"link_views": "5000", // 近12个月链接浏览量
"circulation": "限量", // 发行量
"last_market_activity": "2024-01-15", // 最近一次市场活动时间
"price_fluctuation": [95.0, 105.0], // 近30天价格波动区间
"manual_bids": [48000.0, 50000.0, 52000.0], // 手动收集的竞价列表
// 政策相关 (用户填写)
"funding_status": "国家级资助", // 资金支持情况
"implementation_stage": "成熟应用" // 实施阶段
}
API获取参数 (系统自动获取无需用户填写):
- 搜索指数: 百度微信微博搜索指数
- 社交媒体数据: 点赞数评论数转发数粉丝数
- 交易数据: 近3个月加权平均价格
- 热度数据: 近7日日均浏览量收藏数
- ESG评分: 根据行业自动匹配
- 行业系数: 根据行业ROE计算
- 政策匹配度: 根据行业自动匹配
- 专利验证: 通过API验证专利有效性
- 侵权记录: 通过API查询侵权诉讼历史
"""
try:
start_ts = time.monotonic()

View File

@ -0,0 +1,9 @@
"""
动态质押率DPR计算包
动态质押率DPR=基础质押率*(1+ 流量修正系数)+ 政策加成系数- 流动性调节因子
"""
from .sub_formulas.dynamic_pledge_rate import DynamicPledgeRateCalculator
__all__ = [
"DynamicPledgeRateCalculator"
]

View File

@ -0,0 +1,7 @@
from .dynamic_pledge_rate import DynamicPledgeRateCalculator
__all__ = [
"DynamicPledgeRateCalculator"
]

View File

@ -0,0 +1,106 @@
"""
动态质押率DPR计算模块
动态质押率DPR=基础质押率*(1+ 流量修正系数)+ 政策加成系数- 流动性调节因子
"""
class DynamicPledgeRateCalculator:
"""DRP计算器"""
def __init__(self):
pass
def calculate_dynamic_pledge_rate(self,
monthly_amount: float,
heritage_level: str,
) -> float:
"""
动态质押率 DPR 计算公式
DPR = 基础质押率 * (1 + 流量修正系数) + 政策加成系数 - 流动性调节因子
参数:
monthly_amount (float): 月交易额万元
heritage_level (str): 非遗等级
liquidity_adjustment (float): 流动性调节因子例如 0.05 表示5%
固定参数:
基础质押率 = 0.5
流量修正系数 = 0.3
"""
base_rate = 0.5
flow_correction = 0.3
# ① 交易额得分影响可嵌入流量修正或单独展示,这里保持原式不变
policy_bonus = self.get_heritage_level_score(heritage_level)
liquidity_adjustment = self.get_monthly_transaction_score(monthly_amount)
dpr = base_rate * (1 + flow_correction) + policy_bonus - liquidity_adjustment
return round(dpr, 4)
def get_heritage_level_score(self, level: str) -> float:
"""
根据用户所选的非遗等级匹配系数分数
规则
国家级非遗 => +0.05
省级非遗 => +0.03
纳入国家文化数字化战略清单 => +0.02
=> 0.0
参数:
level (str): 用户选择的非遗等级描述
返回:
float: 对应的分数
"""
level = level.strip()
if "国家级" in level:
return 0.05
elif "省级" in level:
return 0.03
elif "国家文化数字化战略清单" in level:
return 0.02
else:
return 0.0
def get_monthly_transaction_score(self, monthly_amount: float) -> float:
"""
根据用户月交易额区间匹配评分
规则
月交易额 < 100 => -0.1
月交易额 [100, 500) => 0
月交易额 500 => +0.15
参数:
monthly_amount (float): 月交易额单位万元
返回:
float: 对应的评分
"""
if monthly_amount < 100:
return -0.1
elif monthly_amount < 500:
return 0.0
else:
return 0.15
# 示例使用
if __name__ == "__main__":
# 创建计算器实例
calculator = DynamicPledgeRateCalculator()
# 示例1国家级非遗月交易额500万流动性调节因子0.05
print(calculator.calculate_dynamic_pledge_rate(500, "国家级非遗"))
# 结果0.55
# 示例2省级非遗流动性调节因子0.02
print(calculator.calculate_dynamic_pledge_rate(300, "省级非遗"))
# 结果0.68
# 示例3无非遗流动性调节因子0.1
print(calculator.calculate_dynamic_pledge_rate(50, ""))
# 0.75