ODF/app/models.py

100 lines
2.5 KiB
Python
Raw Permalink 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.

"""ODF 光纤配线单元管理系统 - 数据模型定义。
本模块定义了系统中使用的内部数据模型(内存存储结构)。
"""
from dataclasses import dataclass, field
from enum import Enum
from typing import Optional
class PortType(str, Enum):
"""光纤端口类型枚举。"""
LC = "LC" # LC 接口
SC = "SC" # SC 接口
FC = "FC" # FC 接口
ST = "ST" # ST 接口
class PortStatus(str, Enum):
"""光纤端口状态枚举。"""
FREE = "FREE" # 空闲
IN_USE = "IN_USE" # 使用中
FAULT = "FAULT" # 故障
@dataclass
class Port:
"""光纤端口数据模型。
Attributes:
port_id: 端口唯一标识。
unit_id: 所属配线单元 ID。
port_number: 端口编号(同一单元内唯一)。
port_type: 端口类型。
status: 端口状态。
label: 端口标签/标识说明。
"""
port_id: str
unit_id: str
port_number: int
port_type: PortType = PortType.LC
status: PortStatus = PortStatus.FREE
label: str = ""
@dataclass
class Unit:
"""配线单元数据模型。
Attributes:
unit_id: 配线单元唯一标识。
rack_id: 所属机架 ID。
unit_number: 单元编号(同一机架内唯一)。
unit_name: 单元名称。
position: 在机架中的位置描述(如 "上排""下排")。
ports: 单元包含的光纤端口列表。
"""
unit_id: str
rack_id: str
unit_number: int
unit_name: str = ""
position: str = ""
ports: list[Port] = field(default_factory=list)
@dataclass
class Rack:
"""ODF 机架数据模型。
Attributes:
rack_id: 机架唯一标识。
rack_name: 机架名称/编号。
location: 物理位置描述(如机房、列、排)。
units: 机架中包含的配线单元列表。
"""
rack_id: str
rack_name: str
location: str = ""
units: list[Unit] = field(default_factory=list)
@dataclass
class Connection:
"""跳接连接数据模型,记录光纤端口之间的跳纤关系。
Attributes:
connection_id: 连接唯一标识。
port_a_id: 起始端口 IDA端
port_b_id: 终止端口 IDB端
fiber_length: 光纤长度(米)。
create_time: 创建时间。
remark: 备注说明。
"""
connection_id: str
port_a_id: str
port_b_id: str
fiber_length: float = 0.0
create_time: str = ""
remark: str = ""