indexstore/AppIndicators/Schemas.py

98 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from enum import Enum
from pydantic import BaseModel, constr
from typing import List, Optional
# Regex
ENameRegex = constr(regex="^[a-z0-9_]{1,}$")
CNameRegex = constr(regex="^[\u4e00-\u9fa5a-zA-Z0-9]+$")
# Enums
class NatureEnum(Enum):
enum01 = "定量"
enum02 = "定性"
class CategoryEnum(Enum):
enum01 = "盈利能力"
enum02 = "收益质量"
enum03 = "现金流量"
enum04 = "资本结构"
enum05 = "偿债能力"
enum06 = "运营能力"
enum07 = "成长能力"
enum08 = "经营指标"
enum09 = "资质指标"
enum10 = "行业指标"
enum11 = "绿色指标"
enum12 = "司法指标"
enum13 = "合规指标"
enum14 = "舆情指标"
enum15 = "其他"
# Parameters
class ParameterBase(BaseModel):
ename: ENameRegex = "example_param"
cname: CNameRegex = "示例参数"
description: str = "参数介绍文字"
class ParameterEdit(ParameterBase):
pass
class Parameter(ParameterBase):
pid: str
_iid: str
class Config:
orm_mode = True
# Indicators
class IndicatorBase(BaseModel):
ename: ENameRegex = "example_indicator"
cname: CNameRegex = "示例指标"
description: str = "指标介绍文字"
nature: NatureEnum
category: CategoryEnum
class Config:
use_enum_values = True
class IndicatorCreate(IndicatorBase):
parameters: List[ParameterEdit]
class Indicator(IndicatorBase):
iid: str
parameters: List[Parameter] = []
class Config:
orm_mode = True
class IndicatorEdit(BaseModel):
cname: Optional[CNameRegex] = None
description: Optional[str] = None
nature: Optional[NatureEnum] = None
category: Optional[CategoryEnum] = None
class Config:
use_enum_values = True
class IndicatorSearch(BaseModel):
name: Optional[str] = None
nature: Optional[str] = None
category: Optional[CategoryEnum] = None
page: int = 1
pagesize: int = 20
class Config:
use_enum_values = True