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. 与行业估值中枢对比
"""

"""
估值逻辑严谨性：评估回答中估值结论有完整的逻辑链，不能只有结论没有论据
"""

]

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