diff --git a/app/__init__.py b/app/__init__.py index cbfdb40..ddfe959 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -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 diff --git a/app/api/v1/calculation/calcuation.py b/app/api/v1/calculation/calcuation.py index d116af9..bb7cc87 100644 --- a/app/api/v1/calculation/calcuation.py +++ b/app/api/v1/calculation/calcuation.py @@ -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() diff --git a/app/utils/calculation_engine/drp/__init__.py b/app/utils/calculation_engine/drp/__init__.py new file mode 100644 index 0000000..ae07dfe --- /dev/null +++ b/app/utils/calculation_engine/drp/__init__.py @@ -0,0 +1,9 @@ +""" +动态质押率DPR计算包 +动态质押率DPR=基础质押率*(1+ 流量修正系数)+ 政策加成系数- 流动性调节因子 +""" +from .sub_formulas.dynamic_pledge_rate import DynamicPledgeRateCalculator + +__all__ = [ + "DynamicPledgeRateCalculator" +] diff --git a/app/utils/calculation_engine/drp/sub_formulas/__init__.py b/app/utils/calculation_engine/drp/sub_formulas/__init__.py new file mode 100644 index 0000000..d993c16 --- /dev/null +++ b/app/utils/calculation_engine/drp/sub_formulas/__init__.py @@ -0,0 +1,7 @@ + +from .dynamic_pledge_rate import DynamicPledgeRateCalculator + +__all__ = [ + "DynamicPledgeRateCalculator" +] + diff --git a/app/utils/calculation_engine/drp/sub_formulas/dynamic_pledge_rate.py b/app/utils/calculation_engine/drp/sub_formulas/dynamic_pledge_rate.py new file mode 100644 index 0000000..c590738 --- /dev/null +++ b/app/utils/calculation_engine/drp/sub_formulas/dynamic_pledge_rate.py @@ -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