94 lines
2.0 KiB
Python
94 lines
2.0 KiB
Python
import pydantic
|
|
|
|
from typing import List
|
|
from enum import Enum
|
|
from pydantic import BaseModel
|
|
|
|
|
|
ENameRegex = pydantic.constr(regex="^([A-Z][a-z0-9]+)+")
|
|
CNameRegex = pydantic.constr(regex="[\u4e00-\u9fa5]")
|
|
|
|
|
|
class ParameterBase(BaseModel):
|
|
ename: ENameRegex = "ExampleParameter"
|
|
cname: CNameRegex = "示例参数"
|
|
description: str = "参数介绍文字"
|
|
|
|
|
|
class ParameterCreate(ParameterBase):
|
|
pass
|
|
|
|
|
|
class ParameterEdit(ParameterBase):
|
|
pass
|
|
|
|
|
|
class Parameter(ParameterBase):
|
|
id: int
|
|
indicator_id: int
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
class NatureEnum(Enum):
|
|
quantity = "定量"
|
|
qualitative = "定性"
|
|
|
|
|
|
class CategoryEnum(str, Enum):
|
|
profitability = "盈利能力"
|
|
quality_of_revenue = "收益质量"
|
|
cash_flows = "现金流量"
|
|
capital_structure = "资本结构"
|
|
solvency = "偿债能力"
|
|
operational_capability = "运营能力"
|
|
ability_to_grow = "成长能力"
|
|
operating_indicators = "经营指标"
|
|
qualification_indicators = "资质指标"
|
|
industry_indicators = "行业指标"
|
|
green_indicators = "绿色指标"
|
|
judicial_indicators = "司法指标"
|
|
compliance_indicators = "合规指标"
|
|
public_sentiment_indicators = "舆情指标"
|
|
others = "其他"
|
|
|
|
|
|
class IndicatorBase(BaseModel):
|
|
ename: ENameRegex = "ExampleIndicator"
|
|
cname: CNameRegex = "示例指标"
|
|
description: str = "指标介绍文字"
|
|
nature: NatureEnum
|
|
category: CategoryEnum
|
|
|
|
|
|
class IndicatorCreate(IndicatorBase):
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
|
|
class IndicatorEdit(BaseModel):
|
|
cname: CNameRegex = "示例指标"
|
|
description: str = "指标介绍文字"
|
|
nature: NatureEnum
|
|
category: CategoryEnum
|
|
is_active: bool
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
|
|
class IndicatorSearch(BaseModel):
|
|
skip: int = 0
|
|
limit: int = 20
|
|
|
|
|
|
class Indicator(IndicatorBase):
|
|
id: int
|
|
is_active: bool
|
|
parameters: List[Parameter] = []
|
|
|
|
class Config:
|
|
orm_mode = True
|