"""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: 起始端口 ID(A端)。 port_b_id: 终止端口 ID(B端)。 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 = ""