from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from typing import List, Optional from module_admin.annotation.pydantic_annotation import as_query class DataAssetItemModel(BaseModel): """ 数据资产信息项模型 """ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True) ast_no: int = Field(default=None, alias="astNo", description='数据资产编号(必填)') data_ast_eng_name: str = Field(default=None, alias="dataAstEngName", description='数据资产英文名称(必填)') data_ast_cn_name: str = Field(default=None, alias="dataAstCnName", description='数据资产中文名称') data_ast_type: str = Field(default=None, alias="dataAstType", description='数据资产类型(表/报表/数据应用)(必填)') data_ast_stat: str = Field(default=None, alias="dataAstStat", description='数据资产状态(有效/废弃)(必填)') data_ast_desc: str = Field(default=None, alias="dataAstDesc", description='数据资产描述') data_ast_screen: str = Field(default=None, alias="dataAstScreen", description='资产应用场景(API/智能问答等)') data_ast_scren_clas: str = Field(default=None, alias="dataAstScrenClas", description='应用场景分类') data_ast_clas: str = Field(default=None, alias="dataAstClas", description='数据资产标签') data_ast_cont: str = Field(default=None, alias="dataAstCont", description='数据资产内容') data_ast_faq: str = Field(default=None, alias="dataAstFaq", description='数据资产常见问题') data_ast_src: str = Field(default=None, alias="dataAstSrc", description='数据资产来源(必填)') version_no: str = Field(default="1", alias="versionNo", description='版本号(默认最新)') ctrl_flag: str = Field(default=None, alias="ctrlFlag", description='操作类型 1:插入 2:删除 3:更新') class DataAssetBatchModel(BaseModel): """ 数据资产批量操作模型 """ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True) data_assets: List[DataAssetItemModel] = Field(default=[], alias="dataAssets", description='数据资产列表') class DataAssetResultModel(BaseModel): """ 数据资产操作结果模型 """ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True) success_count: int = Field(default=0, alias="successCount", description='成功数量') failed_count: int = Field(default=0, alias="failedCount", description='失败数量') success_items: List[str] = Field(default=[], alias="successItems", description='成功项') failed_items: List[dict] = Field(default=[], alias="failedItems", description='失败项及原因') class DataAssetQueryModel(BaseModel): """ 数据资产查询模型 """ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True) ast_no: Optional[str] = Field(default=None, alias="astNo", description='资产编号') data_ast_eng_name: Optional[str] = Field(default=None, alias="dataAstEngName", description='资产英文名称') data_ast_cn_name: Optional[str] = Field(default=None, alias="dataAstCnName", description='资产中文名称') data_ast_type: Optional[str] = Field(default=None, alias="dataAstType", description='资产类型') data_ast_stat: Optional[str] = Field(default=None, alias="dataAstStat", description='资产状态') data_ast_src: Optional[str] = Field(default=None, alias="dataAstSrc", description='资产来源') begin_time: Optional[str] = Field(default=None, alias="beginTime", description='开始时间') end_time: Optional[str] = Field(default=None, alias="endTime", description='结束时间') @as_query class DataAssetPageQueryModel(DataAssetQueryModel): """ 数据资产分页查询模型 """ page_num: int = Field(default=1, alias="pageNum", description='当前页码') page_size: int = Field(default=10, alias="pageSize", description='每页记录数') @as_query class DataAssetSearchModel(BaseModel): """ 数据资产综合查询模型 """ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True) name: Optional[str] = Field(default=None, alias="name", description='资产名称(英文名或中文名)') data_ast_type: Optional[str] = Field(default=None, alias="dataAstType", description='资产类型') data_ast_screen: Optional[str] = Field(default=None, alias="dataAstScreen", description='资产应用场景') data_ast_clas: Optional[str] = Field(default=None, alias="dataAstClas", description='资产标签') data_ast_src: Optional[str] = Field(default=None, alias="dataAstSrc", description='资产来源') page_num: int = Field(default=1, alias="pageNum", description='当前页码') page_size: int = Field(default=10, alias="pageSize", description='每页记录数')