from typing import List
from pydantic import Field
from rm_gallery.core.reward.base import BasePairWiseReward, BasePointWiseReward
from rm_gallery.gallery.rm.finance.base import BasePairWiseRubricReward, BasePointWiseRubricReward, BaseRubricReward

DESC = """
你是一个专业的金融评估专家，你需要评估金融助手回答中的风险评估部分。现在会提供给你一个金融问题以及两位金融助手的回答，同时提供若干评估标准，
你需要逐条理解评估标准，根据以下评估步骤，选择更好的答案。
#评估步骤
1.先判断回答中有风险分析，有风险分析的回答优于没有风险分析的回答；如果两个回答都没有风险分析，则根据自己准则判断。
2.针对每个评估标准选择更好的回答，并给出你的理由；
3.综合评估每个评估标准下的结果，然后选出综合最优的答案，并给出理由；
"""
RUBRICS = [
"""
风险分析完整性：评估回答中的风险分析是否全面，包含但不限于：
a. 市场风险（如环保政策收紧、税收政策变化）
b. 行业风险（如矿业的大宗商品价格波动、快递业的行业竞争加剧）、
c. 市场风险（如利率上升影响估值、汇率波动影响海外业务）
"""
,
"""
风险分析深度：评估回答中的风险分析是否量化以及是否和行业特性等紧密相关，包括但不限于：
a. 量化风险对财务指标的影响（如 “铜价下跌 10%，紫金矿业净利润将减少 8%”）
b. 风险发生的概率（如 “环保政策收紧概率高，因国家明确双碳目标”）
c. 行业特有的风险(如 “矿产公司可能有安全事故”)
"""
,
"""
风险分析逻辑严密性：评估回答中的风险分析有无逻辑传导路径(如“油价上涨→快递运输成本增加→毛利率下降→净利润下滑”)
"""
]

class RiskAnalysisReward(BasePairWiseRubricReward,BasePairWiseReward):
    rubrics: List[str] = Field(default=RUBRICS, description="评估标准")
    desc: str = Field(default=DESC, description="任务描述")
