-- coding: utf-8 --
“”"
@file: interlockledger
@author: maxiaolong01
@date: 2025/7/7 16:10
“”"
from typing import Annotated, Optional, List, Union
from pydantic import BaseModel, Field, validator, field_validator
from app.models.interlock.utils import InterLockType, ModuleType, LogLevelType
class BaseInterLockLedger(BaseModel):
alarm_name: Annotated[str | None, Field(alias=“alarmName”, title=“报警名称”, description=“报警名称”)] = None
lock_type: Annotated[InterLockType | None, Field(alias=“lockType”, title=“互锁类型”)] = None
product: Annotated[Optional[str], Field(alias=“product”, title=‘所属产品’, description=‘所属产品’)] = None
module_name: Annotated[str| None, Field(alias=‘moduleName’, title=‘所属模块’, description=‘所属模块’)] = None
module_type: Annotated[Union[str, List[str]]| None, Field(
alias=‘moduleType’,
title=‘模块类型’,
description=“支持多个模块类型查询”
)] = None
dept_name: Annotated[
Optional[str] | None, Field(alias=‘deptName’, title=‘所属部门名称’, description=‘所属部门名称’)] = None
trigger: Annotated[str | None, Field(alias=‘trigger’, title=‘触发器’, description=‘触发器’)] = None
channel_number: Annotated[
Optional[str | int] | None, Field(alias=‘channelNumber’, title=‘渠道号’, description=‘渠道号’)] = None
trigger_way: Annotated[str | None, Field(alias=‘triggerWay’, title=‘触发器渠道’, description=‘触发器渠道’)] = None
alarm_desc: Annotated[str | None, Field(alias=‘alarmDesc’, title=‘报警描述’, description=‘报警描述’)] = None
alarm_level: Annotated[LogLevelType,
Field(alias=‘alarmLevel’, title=‘报警级别’, description=‘报警等级’)] = None
alarm_detail: Annotated[str | None, Field(alias=‘alarmDetail’, title=‘报警详情’, description=‘报警详情’)] = None
alarm_action: Annotated[str | None, Field(alias=‘alarmAction’, title=‘报警动作’, description=‘报警动作’)] = None
alarm_channel: Annotated[
str | None, Field(alias=‘alarmChannel’, title=‘报警动作Data通道’, description=‘报警动作Data通道’)] = None
alarm_action_desc: Annotated[
str | None, Field(alias=‘alarmActionDesc’, title=‘报警动作描述’, description=‘报警动作描述’)] = None
condition: Annotated[str | None, Field(alias=‘condition’, title=‘满足条件’, description=‘满足条件’)] = None
desc: Annotated[str | None, Field(alias=‘desc’, title=‘备注’, description=‘备注’)] = None
class Config: populate_by_name = True extra = "allow" # 多值字段验证器 @field_validator('module_type', mode='after') def ensure_list_format(cls, v): """确保多值字段始终为列表格式""" if v is None: return None return [v] if not isinstance(v, list) else v
class InterLockLedgerSearch(BaseInterLockLedger):
current: Annotated[int | None, Field(title=“页码”)] = 1
size: Annotated[int | None, Field(title=“每页数量”)] = 10
order_list: Annotated[list[str] | None, Field(
alias=‘orderList’, title=‘排序’)] = None
class InterLockLedgerCreate(BaseInterLockLedger):
…
class InterLockLedgerUpdate(BaseInterLockLedger):
…
ValueError: [‘craft’] is not a valid ModuleType
最新发布