From da7617f065830d65cc1a7e68691a3a0feb8ede1f Mon Sep 17 00:00:00 2001 From: Alina Date: Tue, 17 Feb 2026 22:15:22 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=BA=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=E2=80=94=206?= =?UTF-8?q?=20=D1=81=D0=B0=D0=B9=D1=82=D0=BE=D0=B2,=2030=20=D1=83=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2,=2040=20=D0=BB=D0=B8?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены новые устройства (SDH, DWDM, RRL, VoIP, SORM, MGN, RAN BS, видеонаблюдение), третий корневой сайт «Южный», перекрёстные линии между сайтами, покрытие всех статусов и сред передачи. Co-Authored-By: Claude Opus 4.6 --- frontend/src/mock/schemaData.ts | 675 ++++++++++++++++++++++++++++---- 1 file changed, 607 insertions(+), 68 deletions(-) diff --git a/frontend/src/mock/schemaData.ts b/frontend/src/mock/schemaData.ts index 4956a10..60dca24 100644 --- a/frontend/src/mock/schemaData.ts +++ b/frontend/src/mock/schemaData.ts @@ -28,6 +28,15 @@ export const mockData: SchemaData = { status: EntityStatus.Active, parentSiteId: null, }, + { + id: 'site-3', + name: 'Узел связи Южный', + address: 'пр. Победы, 42', + erpCode: 'ERP-004', + code1C: '1C-004', + status: EntityStatus.Active, + parentSiteId: null, + }, { id: 'site-1-1', name: 'Подузел Восточный', @@ -37,10 +46,29 @@ export const mockData: SchemaData = { status: EntityStatus.Planned, parentSiteId: 'site-1', }, + { + id: 'site-1-2', + name: 'Подузел Западный', + address: 'ул. Ленина, 1, корп. 3', + erpCode: 'ERP-005', + code1C: '1C-005', + status: EntityStatus.Active, + parentSiteId: 'site-1', + }, + { + id: 'site-2-1', + name: 'Подузел Промзона', + address: 'ул. Мира, 15а', + erpCode: 'ERP-006', + code1C: '1C-006', + status: EntityStatus.UnderConstruction, + parentSiteId: 'site-2', + }, ], devices: [ - // Site 1 devices + // ===== Site 1: Центральный ===== + // Layer 1 — кроссы { id: 'dev-cross-1', name: 'Кросс оптический ОРШ-1', @@ -67,6 +95,20 @@ export const mockData: SchemaData = { status: EntityStatus.Reserved, siteId: 'site-1', }, + { + id: 'dev-cross-4', + name: 'Кросс медный КРТ-1', + networkName: 'KRT-1', + ipAddress: '', + marking: 'КРТ-100', + id1: 'INV-020', + id2: 'SN-020', + group: DeviceGroup.Passive, + category: DeviceCategory.CrossCopper, + status: EntityStatus.Active, + siteId: 'site-1', + }, + // Layer 2 — DWDM { id: 'dev-dwdm-1', name: 'DWDM Huawei OSN 8800', @@ -80,6 +122,34 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-1', }, + { + id: 'dev-dwdm-2', + name: 'DWDM ZTE ZXONE 9700', + networkName: 'DWDM-ZTE-01', + ipAddress: '10.0.1.11', + marking: '', + id1: 'INV-021', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.DWDM, + status: EntityStatus.Planned, + siteId: 'site-1', + }, + // Layer 3 — SDH + { + id: 'dev-sdh-1', + name: 'SDH Huawei OptiX OSN 3500', + networkName: 'SDH-HW-01', + ipAddress: '10.0.1.30', + marking: '', + id1: 'INV-022', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.SDH, + status: EntityStatus.Decommissioned, + siteId: 'site-1', + }, + // Layer 4 — IP { id: 'dev-router-1', name: 'Маршрутизатор Cisco ASR 9000', @@ -93,6 +163,19 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-1', }, + { + id: 'dev-router-2', + name: 'Маршрутизатор Juniper MX204', + networkName: 'RTR-JUN-01', + ipAddress: '10.0.1.3', + marking: '', + id1: 'INV-023', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.IP, + status: EntityStatus.Active, + siteId: 'site-1', + }, { id: 'dev-switch-1', name: 'Коммутатор Huawei S6730', @@ -106,6 +189,20 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-1', }, + { + id: 'dev-switch-2', + name: 'Коммутатор Cisco Catalyst 9300', + networkName: 'SW-CISCO-01', + ipAddress: '10.0.1.4', + marking: '', + id1: 'INV-024', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.LanWlan, + status: EntityStatus.Active, + siteId: 'site-1', + }, + // Layer 5 — серверы { id: 'dev-server-1', name: 'Сервер мониторинга', @@ -119,7 +216,48 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-1', }, - // Site 1-1 (child site) device + { + id: 'dev-server-2', + name: 'Сервер биллинга', + networkName: 'SRV-BILL-01', + ipAddress: '10.0.1.101', + marking: '', + id1: 'INV-025', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.Server, + status: EntityStatus.Active, + siteId: 'site-1', + }, + { + id: 'dev-sorm-1', + name: 'СОРМ Маршрут', + networkName: 'SORM-01', + ipAddress: '10.0.1.200', + marking: '', + id1: 'INV-026', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.SORM, + status: EntityStatus.Active, + siteId: 'site-1', + }, + // Layer 6 — VoIP + { + id: 'dev-voip-1', + name: 'Шлюз VoIP Eltex TAU-72', + networkName: 'VOIP-ELT-01', + ipAddress: '10.0.1.50', + marking: '', + id1: 'INV-027', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.VOIP, + status: EntityStatus.Active, + siteId: 'site-1', + }, + + // ===== Site 1-1: Подузел Восточный ===== { id: 'dev-splice-1', name: 'Муфта МТОК-96', @@ -133,7 +271,49 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-1-1', }, - // Site 2 devices + { + id: 'dev-splice-2', + name: 'Муфта МТОК-48', + networkName: '', + ipAddress: '', + marking: 'МТОК-48', + id1: 'INV-028', + id2: 'SN-028', + group: DeviceGroup.Passive, + category: DeviceCategory.Unknown, + status: EntityStatus.Planned, + siteId: 'site-1-1', + }, + + // ===== Site 1-2: Подузел Западный ===== + { + id: 'dev-rrl-1', + name: 'РРС Ericsson MINI-LINK 6352', + networkName: 'RRL-ERC-01', + ipAddress: '10.0.1.60', + marking: '', + id1: 'INV-029', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.RRL, + status: EntityStatus.Active, + siteId: 'site-1-2', + }, + { + id: 'dev-switch-3', + name: 'Коммутатор Eltex MES3124F', + networkName: 'SW-ELT-01', + ipAddress: '10.0.1.61', + marking: '', + id1: 'INV-030', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.LanWlan, + status: EntityStatus.Active, + siteId: 'site-1-2', + }, + + // ===== Site 2: Северный ===== { id: 'dev-cross-3', name: 'Кросс оптический ОРШ-3', @@ -147,6 +327,19 @@ export const mockData: SchemaData = { status: EntityStatus.Active, siteId: 'site-2', }, + { + id: 'dev-cross-5', + name: 'Кросс оптический ОРШ-5', + networkName: 'ORS-5', + ipAddress: '', + marking: 'ОРШ-24', + id1: 'INV-031', + id2: 'SN-031', + group: DeviceGroup.Passive, + category: DeviceCategory.CrossOptical, + status: EntityStatus.Active, + siteId: 'site-2', + }, { id: 'dev-olt-1', name: 'OLT Huawei MA5800', @@ -173,143 +366,489 @@ export const mockData: SchemaData = { status: EntityStatus.Faulty, siteId: 'site-2', }, + { + id: 'dev-router-3', + name: 'Маршрутизатор Eltex ESR-1000', + networkName: 'RTR-ELT-01', + ipAddress: '10.0.2.1', + marking: '', + id1: 'INV-032', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.IP, + status: EntityStatus.Active, + siteId: 'site-2', + }, + { + id: 'dev-mgn-1', + name: 'МГН-шлюз Nateks VoiceFinder', + networkName: 'MGN-NAT-01', + ipAddress: '10.0.2.50', + marking: '', + id1: 'INV-033', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.MGN, + status: EntityStatus.Active, + siteId: 'site-2', + }, + + // ===== Site 2-1: Подузел Промзона ===== + { + id: 'dev-ran-bs-1', + name: 'БС Huawei BTS3900', + networkName: 'RAN-BS-01', + ipAddress: '10.0.2.70', + marking: '', + id1: 'INV-034', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.RanBaseStation, + status: EntityStatus.UnderConstruction, + siteId: 'site-2-1', + }, + + // ===== Site 3: Южный ===== + { + id: 'dev-cross-6', + name: 'Кросс оптический ОРШ-6', + networkName: 'ORS-6', + ipAddress: '', + marking: 'ОРШ-64', + id1: 'INV-035', + id2: 'SN-035', + group: DeviceGroup.Passive, + category: DeviceCategory.CrossOptical, + status: EntityStatus.Active, + siteId: 'site-3', + }, + { + id: 'dev-dwdm-3', + name: 'DWDM Ciena 6500', + networkName: 'DWDM-CI-01', + ipAddress: '10.0.3.10', + marking: '', + id1: 'INV-036', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.DWDM, + status: EntityStatus.Active, + siteId: 'site-3', + }, + { + id: 'dev-router-4', + name: 'Маршрутизатор Nokia 7750 SR', + networkName: 'RTR-NOK-01', + ipAddress: '10.0.3.1', + marking: '', + id1: 'INV-037', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.IP, + status: EntityStatus.Active, + siteId: 'site-3', + }, + { + id: 'dev-switch-4', + name: 'Коммутатор Arista 7050X', + networkName: 'SW-ARI-01', + ipAddress: '10.0.3.2', + marking: '', + id1: 'INV-038', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.LanWlan, + status: EntityStatus.Active, + siteId: 'site-3', + }, + { + id: 'dev-server-3', + name: 'Сервер видеонаблюдения', + networkName: 'SRV-VIDEO-01', + ipAddress: '10.0.3.100', + marking: '', + id1: 'INV-039', + id2: '', + group: DeviceGroup.Active, + category: DeviceCategory.VideoSurveillance, + status: EntityStatus.Active, + siteId: 'site-3', + }, + { + id: 'dev-splice-3', + name: 'Муфта МТОК-128', + networkName: '', + ipAddress: '', + marking: 'МТОК-128', + id1: 'INV-040', + id2: 'SN-040', + group: DeviceGroup.Passive, + category: DeviceCategory.Unknown, + status: EntityStatus.Active, + siteId: 'site-3', + }, ], cards: [ - { - id: 'card-1', - slotName: '1', - networkName: 'TN12ST2', - status: EntityStatus.Active, - visible: true, - deviceId: 'dev-dwdm-1', - }, - { - id: 'card-2', - slotName: '2', - networkName: 'TN11LSX', - status: EntityStatus.Active, - visible: true, - deviceId: 'dev-dwdm-1', - }, - { - id: 'card-3', - slotName: '1', - networkName: 'RSP-480', - status: EntityStatus.Active, - visible: true, - deviceId: 'dev-router-1', - }, + // DWDM-1 cards + { id: 'card-1', slotName: '1', networkName: 'TN12ST2', status: EntityStatus.Active, visible: true, deviceId: 'dev-dwdm-1' }, + { id: 'card-2', slotName: '2', networkName: 'TN11LSX', status: EntityStatus.Active, visible: true, deviceId: 'dev-dwdm-1' }, + { id: 'card-3', slotName: '3', networkName: 'TN52TDX', status: EntityStatus.Planned, visible: true, deviceId: 'dev-dwdm-1' }, + // Router-1 cards + { id: 'card-4', slotName: '1', networkName: 'RSP-480', status: EntityStatus.Active, visible: true, deviceId: 'dev-router-1' }, + { id: 'card-5', slotName: '2', networkName: 'A9K-8T', status: EntityStatus.Active, visible: true, deviceId: 'dev-router-1' }, + // Router-2 cards + { id: 'card-6', slotName: '0', networkName: 'MPC-3D', status: EntityStatus.Active, visible: true, deviceId: 'dev-router-2' }, + // DWDM-2 cards + { id: 'card-7', slotName: '1', networkName: 'M40V', status: EntityStatus.Planned, visible: true, deviceId: 'dev-dwdm-2' }, + // OLT cards + { id: 'card-8', slotName: '0', networkName: 'H901GPSF', status: EntityStatus.UnderConstruction, visible: true, deviceId: 'dev-olt-1' }, + // DWDM-3 cards + { id: 'card-9', slotName: '1', networkName: 'WL3ne', status: EntityStatus.Active, visible: true, deviceId: 'dev-dwdm-3' }, + { id: 'card-10', slotName: '2', networkName: 'MOTR', status: EntityStatus.Active, visible: true, deviceId: 'dev-dwdm-3' }, + // Router-4 cards + { id: 'card-11', slotName: '1', networkName: 'IMM-12', status: EntityStatus.Active, visible: true, deviceId: 'dev-router-4' }, ], ports: [ - // Cross 1 ports (L = left, S = right) + // ===== Cross 1 (8L + 8S) ===== { id: 'p-c1-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-l5', name: 'L5', slotName: 'L', side: 'left', sortOrder: 5, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-l6', name: 'L6', slotName: 'L', side: 'left', sortOrder: 6, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-l7', name: 'L7', slotName: 'L', side: 'left', sortOrder: 7, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-l8', name: 'L8', slotName: 'L', side: 'left', sortOrder: 8, labelColor: '#1890ff', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, { id: 'p-c1-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-s5', name: 'S5', slotName: 'S', side: 'right', sortOrder: 5, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-s6', name: 'S6', slotName: 'S', side: 'right', sortOrder: 6, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-s7', name: 'S7', slotName: 'S', side: 'right', sortOrder: 7, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, + { id: 'p-c1-s8', name: 'S8', slotName: 'S', side: 'right', sortOrder: 8, labelColor: '#52c41a', deviceId: 'dev-cross-1', cardId: null }, - // Cross 2 ports + // ===== Cross 2 (4L + 4S) ===== { id: 'p-c2-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#1890ff', deviceId: 'dev-cross-2', cardId: null }, { id: 'p-c2-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#1890ff', deviceId: 'dev-cross-2', cardId: null }, + { id: 'p-c2-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#1890ff', deviceId: 'dev-cross-2', cardId: null }, + { id: 'p-c2-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#1890ff', deviceId: 'dev-cross-2', cardId: null }, { id: 'p-c2-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#52c41a', deviceId: 'dev-cross-2', cardId: null }, { id: 'p-c2-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#52c41a', deviceId: 'dev-cross-2', cardId: null }, + { id: 'p-c2-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#52c41a', deviceId: 'dev-cross-2', cardId: null }, + { id: 'p-c2-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#52c41a', deviceId: 'dev-cross-2', cardId: null }, - // DWDM card-1 ports + // ===== Cross 4 (copper, 4L + 4S) ===== + { id: 'p-c4-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#fa8c16', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#fa8c16', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#fa8c16', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#fa8c16', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#eb2f96', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#eb2f96', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#eb2f96', deviceId: 'dev-cross-4', cardId: null }, + { id: 'p-c4-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#eb2f96', deviceId: 'dev-cross-4', cardId: null }, + + // ===== DWDM-1 card ports ===== { id: 'p-dw-c1-1', name: 'IN', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-1' }, { id: 'p-dw-c1-2', name: 'OUT', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-1' }, - // DWDM card-2 ports { id: 'p-dw-c2-1', name: 'IN', slotName: '2', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-2' }, { id: 'p-dw-c2-2', name: 'OUT', slotName: '2', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-2' }, - // DWDM device-level ports + { id: 'p-dw-c3-1', name: 'IN', slotName: '3', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-3' }, + { id: 'p-dw-c3-2', name: 'OUT', slotName: '3', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-1', cardId: 'card-3' }, + // DWDM-1 device-level ports { id: 'p-dw-1', name: 'Ge0/0/1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-1', cardId: null }, { id: 'p-dw-2', name: 'Ge0/0/2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-1', cardId: null }, - // Router card-3 ports - { id: 'p-rtr-c3-1', name: 'Te0/0/0/0', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-3' }, - { id: 'p-rtr-c3-2', name: 'Te0/0/0/1', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-3' }, - // Router device-level ports + // ===== DWDM-2 card ports ===== + { id: 'p-dw2-c7-1', name: 'IN', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-2', cardId: 'card-7' }, + { id: 'p-dw2-c7-2', name: 'OUT', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-2', cardId: 'card-7' }, + { id: 'p-dw2-1', name: 'Ge0/0/1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-2', cardId: null }, + { id: 'p-dw2-2', name: 'Ge0/0/2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-2', cardId: null }, + + // ===== SDH-1 ports ===== + { id: 'p-sdh-1', name: 'STM-1/1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-sdh-1', cardId: null }, + { id: 'p-sdh-2', name: 'STM-1/2', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-sdh-1', cardId: null }, + { id: 'p-sdh-3', name: 'ETH-1', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-sdh-1', cardId: null }, + { id: 'p-sdh-4', name: 'ETH-2', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-sdh-1', cardId: null }, + + // ===== Router-1 card ports ===== + { id: 'p-rtr-c4-1', name: 'Te0/0/0/0', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-4' }, + { id: 'p-rtr-c4-2', name: 'Te0/0/0/1', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-4' }, + { id: 'p-rtr-c5-1', name: 'Te0/1/0/0', slotName: '2', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-5' }, + { id: 'p-rtr-c5-2', name: 'Te0/1/0/1', slotName: '2', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-1', cardId: 'card-5' }, + // Router-1 device-level ports { id: 'p-rtr-1', name: 'Ge0/0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-1', cardId: null }, { id: 'p-rtr-2', name: 'Ge0/0/1', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-router-1', cardId: null }, { id: 'p-rtr-3', name: 'Ge0/0/2', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-router-1', cardId: null }, { id: 'p-rtr-4', name: 'Ge0/0/3', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-router-1', cardId: null }, + { id: 'p-rtr-5', name: 'Ge0/0/4', slotName: '0', side: 'right', sortOrder: 5, labelColor: '', deviceId: 'dev-router-1', cardId: null }, + { id: 'p-rtr-6', name: 'Ge0/0/5', slotName: '0', side: 'left', sortOrder: 6, labelColor: '', deviceId: 'dev-router-1', cardId: null }, - // Switch ports + // ===== Router-2 card ports ===== + { id: 'p-rtr2-c6-1', name: 'et-0/0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-2', cardId: 'card-6' }, + { id: 'p-rtr2-c6-2', name: 'et-0/0/1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-2', cardId: 'card-6' }, + // Router-2 device ports + { id: 'p-rtr2-1', name: 'ge-0/0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-2', cardId: null }, + { id: 'p-rtr2-2', name: 'ge-0/0/1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-2', cardId: null }, + { id: 'p-rtr2-3', name: 'ge-0/0/2', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-router-2', cardId: null }, + { id: 'p-rtr2-4', name: 'ge-0/0/3', slotName: '0', side: 'left', sortOrder: 4, labelColor: '', deviceId: 'dev-router-2', cardId: null }, + + // ===== Switch-1 ports ===== { id: 'p-sw-1', name: 'Ge1/0/1', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, { id: 'p-sw-2', name: 'Ge1/0/2', slotName: '1', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, { id: 'p-sw-3', name: 'Ge1/0/3', slotName: '1', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, { id: 'p-sw-4', name: 'Ge1/0/4', slotName: '1', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, + { id: 'p-sw-5', name: 'Ge1/0/5', slotName: '1', side: 'left', sortOrder: 5, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, + { id: 'p-sw-6', name: 'Ge1/0/6', slotName: '1', side: 'right', sortOrder: 6, labelColor: '', deviceId: 'dev-switch-1', cardId: null }, - // Server ports + // ===== Switch-2 ports ===== + { id: 'p-sw2-1', name: 'Gi1/0/1', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-switch-2', cardId: null }, + { id: 'p-sw2-2', name: 'Gi1/0/2', slotName: '1', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-switch-2', cardId: null }, + { id: 'p-sw2-3', name: 'Gi1/0/3', slotName: '1', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-switch-2', cardId: null }, + { id: 'p-sw2-4', name: 'Gi1/0/4', slotName: '1', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-switch-2', cardId: null }, + + // ===== Server-1 ports ===== { id: 'p-srv-1', name: 'eth0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-server-1', cardId: null }, { id: 'p-srv-2', name: 'eth1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-server-1', cardId: null }, + // ===== Server-2 ports ===== + { id: 'p-srv2-1', name: 'eth0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-server-2', cardId: null }, + { id: 'p-srv2-2', name: 'eth1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-server-2', cardId: null }, + // ===== SORM ports ===== + { id: 'p-sorm-1', name: 'eth0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-sorm-1', cardId: null }, + { id: 'p-sorm-2', name: 'eth1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-sorm-1', cardId: null }, + // ===== VoIP ports ===== + { id: 'p-voip-1', name: 'WAN', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-voip-1', cardId: null }, + { id: 'p-voip-2', name: 'FXS1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-voip-1', cardId: null }, + { id: 'p-voip-3', name: 'FXS2', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-voip-1', cardId: null }, - // Splice ports + // ===== Splice-1 ports ===== { id: 'p-sp-1', name: '1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, { id: 'p-sp-2', name: '2', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, { id: 'p-sp-3', name: '3', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, { id: 'p-sp-4', name: '4', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, + { id: 'p-sp-5', name: '5', slotName: '0', side: 'left', sortOrder: 5, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, + { id: 'p-sp-6', name: '6', slotName: '0', side: 'right', sortOrder: 6, labelColor: '', deviceId: 'dev-splice-1', cardId: null }, + // ===== Splice-2 ports ===== + { id: 'p-sp2-1', name: '1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-splice-2', cardId: null }, + { id: 'p-sp2-2', name: '2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-splice-2', cardId: null }, + { id: 'p-sp2-3', name: '3', slotName: '0', side: 'left', sortOrder: 3, labelColor: '', deviceId: 'dev-splice-2', cardId: null }, + { id: 'p-sp2-4', name: '4', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-splice-2', cardId: null }, - // Cross 3 ports (site 2) + // ===== RRL ports ===== + { id: 'p-rrl-1', name: 'ETH-1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-rrl-1', cardId: null }, + { id: 'p-rrl-2', name: 'ETH-2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-rrl-1', cardId: null }, + { id: 'p-rrl-3', name: 'RF', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-rrl-1', cardId: null }, + // ===== Switch-3 ports ===== + { id: 'p-sw3-1', name: 'Ge0/1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-switch-3', cardId: null }, + { id: 'p-sw3-2', name: 'Ge0/2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-switch-3', cardId: null }, + { id: 'p-sw3-3', name: 'Ge0/3', slotName: '0', side: 'left', sortOrder: 3, labelColor: '', deviceId: 'dev-switch-3', cardId: null }, + + // ===== Cross 3 (6L + 6S) ===== { id: 'p-c3-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, { id: 'p-c3-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, { id: 'p-c3-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-l5', name: 'L5', slotName: 'L', side: 'left', sortOrder: 5, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-l6', name: 'L6', slotName: 'L', side: 'left', sortOrder: 6, labelColor: '#1890ff', deviceId: 'dev-cross-3', cardId: null }, { id: 'p-c3-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, { id: 'p-c3-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, { id: 'p-c3-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-s5', name: 'S5', slotName: 'S', side: 'right', sortOrder: 5, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, + { id: 'p-c3-s6', name: 'S6', slotName: 'S', side: 'right', sortOrder: 6, labelColor: '#52c41a', deviceId: 'dev-cross-3', cardId: null }, - // OLT ports + // ===== Cross 5 (4L + 4S) ===== + { id: 'p-c5-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#1890ff', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#1890ff', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#1890ff', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#1890ff', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#52c41a', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#52c41a', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#52c41a', deviceId: 'dev-cross-5', cardId: null }, + { id: 'p-c5-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#52c41a', deviceId: 'dev-cross-5', cardId: null }, + + // ===== OLT card ports ===== + { id: 'p-olt-c8-1', name: 'GPON0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-olt-1', cardId: 'card-8' }, + { id: 'p-olt-c8-2', name: 'GPON1', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-olt-1', cardId: 'card-8' }, + // OLT device ports { id: 'p-olt-1', name: 'GPON0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-olt-1', cardId: null }, { id: 'p-olt-2', name: 'GPON0/1', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-olt-1', cardId: null }, { id: 'p-olt-3', name: 'Uplink1', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-olt-1', cardId: null }, { id: 'p-olt-4', name: 'Uplink2', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-olt-1', cardId: null }, - // xDSL ports + // ===== xDSL ports ===== { id: 'p-xdsl-1', name: 'ADSL0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-xdsl-1', cardId: null }, { id: 'p-xdsl-2', name: 'ADSL0/1', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-xdsl-1', cardId: null }, { id: 'p-xdsl-3', name: 'Uplink1', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-xdsl-1', cardId: null }, { id: 'p-xdsl-4', name: 'Uplink2', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-xdsl-1', cardId: null }, + + // ===== Router-3 ports ===== + { id: 'p-rtr3-1', name: 'Ge0/0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-3', cardId: null }, + { id: 'p-rtr3-2', name: 'Ge0/1', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-router-3', cardId: null }, + { id: 'p-rtr3-3', name: 'Ge0/2', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-router-3', cardId: null }, + { id: 'p-rtr3-4', name: 'Ge0/3', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-router-3', cardId: null }, + + // ===== MGN ports ===== + { id: 'p-mgn-1', name: 'E1-1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-mgn-1', cardId: null }, + { id: 'p-mgn-2', name: 'E1-2', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-mgn-1', cardId: null }, + { id: 'p-mgn-3', name: 'ETH', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-mgn-1', cardId: null }, + + // ===== RAN BS ports ===== + { id: 'p-ran-1', name: 'CPRI-1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-ran-bs-1', cardId: null }, + { id: 'p-ran-2', name: 'CPRI-2', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-ran-bs-1', cardId: null }, + { id: 'p-ran-3', name: 'ETH', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-ran-bs-1', cardId: null }, + + // ===== Cross 6 (6L + 6S) ===== + { id: 'p-c6-l1', name: 'L1', slotName: 'L', side: 'left', sortOrder: 1, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-l2', name: 'L2', slotName: 'L', side: 'left', sortOrder: 2, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-l3', name: 'L3', slotName: 'L', side: 'left', sortOrder: 3, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-l4', name: 'L4', slotName: 'L', side: 'left', sortOrder: 4, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-l5', name: 'L5', slotName: 'L', side: 'left', sortOrder: 5, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-l6', name: 'L6', slotName: 'L', side: 'left', sortOrder: 6, labelColor: '#1890ff', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s1', name: 'S1', slotName: 'S', side: 'right', sortOrder: 1, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s2', name: 'S2', slotName: 'S', side: 'right', sortOrder: 2, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s3', name: 'S3', slotName: 'S', side: 'right', sortOrder: 3, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s4', name: 'S4', slotName: 'S', side: 'right', sortOrder: 4, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s5', name: 'S5', slotName: 'S', side: 'right', sortOrder: 5, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + { id: 'p-c6-s6', name: 'S6', slotName: 'S', side: 'right', sortOrder: 6, labelColor: '#52c41a', deviceId: 'dev-cross-6', cardId: null }, + + // ===== DWDM-3 card ports ===== + { id: 'p-dw3-c9-1', name: 'IN', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-3', cardId: 'card-9' }, + { id: 'p-dw3-c9-2', name: 'OUT', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-3', cardId: 'card-9' }, + { id: 'p-dw3-c10-1', name: 'IN', slotName: '2', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-3', cardId: 'card-10' }, + { id: 'p-dw3-c10-2', name: 'OUT', slotName: '2', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-3', cardId: 'card-10' }, + { id: 'p-dw3-1', name: 'Ge0/0/1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-dwdm-3', cardId: null }, + { id: 'p-dw3-2', name: 'Ge0/0/2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-dwdm-3', cardId: null }, + + // ===== Router-4 card ports ===== + { id: 'p-rtr4-c11-1', name: '1/1/1', slotName: '1', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-4', cardId: 'card-11' }, + { id: 'p-rtr4-c11-2', name: '1/1/2', slotName: '1', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-4', cardId: 'card-11' }, + // Router-4 device ports + { id: 'p-rtr4-1', name: '1/1/c1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-router-4', cardId: null }, + { id: 'p-rtr4-2', name: '1/1/c2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-router-4', cardId: null }, + { id: 'p-rtr4-3', name: '1/1/c3', slotName: '0', side: 'left', sortOrder: 3, labelColor: '', deviceId: 'dev-router-4', cardId: null }, + { id: 'p-rtr4-4', name: '1/1/c4', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-router-4', cardId: null }, + + // ===== Switch-4 ports ===== + { id: 'p-sw4-1', name: 'Et1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-switch-4', cardId: null }, + { id: 'p-sw4-2', name: 'Et2', slotName: '0', side: 'left', sortOrder: 2, labelColor: '', deviceId: 'dev-switch-4', cardId: null }, + { id: 'p-sw4-3', name: 'Et3', slotName: '0', side: 'right', sortOrder: 3, labelColor: '', deviceId: 'dev-switch-4', cardId: null }, + { id: 'p-sw4-4', name: 'Et4', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-switch-4', cardId: null }, + + // ===== Server-3 ports ===== + { id: 'p-srv3-1', name: 'eth0', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-server-3', cardId: null }, + { id: 'p-srv3-2', name: 'eth1', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-server-3', cardId: null }, + + // ===== Splice-3 ports ===== + { id: 'p-sp3-1', name: '1', slotName: '0', side: 'left', sortOrder: 1, labelColor: '', deviceId: 'dev-splice-3', cardId: null }, + { id: 'p-sp3-2', name: '2', slotName: '0', side: 'right', sortOrder: 2, labelColor: '', deviceId: 'dev-splice-3', cardId: null }, + { id: 'p-sp3-3', name: '3', slotName: '0', side: 'left', sortOrder: 3, labelColor: '', deviceId: 'dev-splice-3', cardId: null }, + { id: 'p-sp3-4', name: '4', slotName: '0', side: 'right', sortOrder: 4, labelColor: '', deviceId: 'dev-splice-3', cardId: null }, ], lines: [ - // Cross1 L1 → DWDM card-1 IN (optical, active) - { id: 'line-1', name: 'ВОК Центр-DWDM-1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s1', portZId: 'p-dw-c1-1' }, - // Cross1 L2 → DWDM card-2 IN (optical, active) - { id: 'line-2', name: 'ВОК Центр-DWDM-2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s2', portZId: 'p-dw-c2-1' }, - // DWDM card-1 OUT → Router card-3 IN (optical, active) - { id: 'line-3', name: 'Транзит DWDM-RTR', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-dw-c1-2', portZId: 'p-rtr-c3-1' }, - // Router → Switch (copper, active) - { id: 'line-4', name: 'LAN RTR-SW', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-3', portZId: 'p-sw-1' }, - // Switch → Server (copper, active) - { id: 'line-5', name: 'LAN SW-SRV', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw-3', portZId: 'p-srv-1' }, - // Cross1 L3 → Splice (optical, planned) - { id: 'line-6', name: 'ВОК Центр-Муфта', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-c1-s3', portZId: 'p-sp-1' }, - // Splice → Cross3 (optical, planned) - { id: 'line-7', name: 'ВОК Муфта-Северный', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-sp-3', portZId: 'p-c3-l1' }, - // Cross3 → OLT (optical, under construction) + // ===== Site 1 internal ===== + // Cross1 → DWDM-1 (optical) + { id: 'line-1', name: 'ВОК Кросс1-DWDM1 (1)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s1', portZId: 'p-dw-c1-1' }, + { id: 'line-2', name: 'ВОК Кросс1-DWDM1 (2)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s2', portZId: 'p-dw-c2-1' }, + { id: 'line-2b', name: 'ВОК Кросс1-DWDM1 (3)', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-c1-s5', portZId: 'p-dw-c3-1' }, + // DWDM-1 → Router-1 (optical) + { id: 'line-3', name: 'Транзит DWDM1-RTR1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-dw-c1-2', portZId: 'p-rtr-c4-1' }, + // DWDM-1 → Router-2 (optical) + { id: 'line-3b', name: 'Транзит DWDM1-RTR2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-dw-c2-2', portZId: 'p-rtr2-c6-1' }, + // Cross1 → DWDM-2 (optical, planned) + { id: 'line-3c', name: 'ВОК Кросс1-DWDM2', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-c1-s6', portZId: 'p-dw2-c7-1' }, + // Cross1 → SDH (optical, decommissioned) + { id: 'line-3d', name: 'ВОК Кросс1-SDH (выведен)', templateName: '', status: EntityStatus.Decommissioned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s7', portZId: 'p-sdh-1' }, + // Router-1 → Switch-1 (copper) + { id: 'line-4', name: 'LAN RTR1-SW1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-3', portZId: 'p-sw-1' }, + // Router-1 → Switch-2 (copper) + { id: 'line-4b', name: 'LAN RTR1-SW2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-4', portZId: 'p-sw2-1' }, + // Router-2 → Switch-1 (copper, redundancy) + { id: 'line-4c', name: 'LAN RTR2-SW1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr2-2', portZId: 'p-sw-2' }, + // Router-1 ↔ Router-2 (copper, peering) + { id: 'line-4d', name: 'Peering RTR1-RTR2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-5', portZId: 'p-rtr2-3' }, + // Switch-1 → Server-1 (copper) + { id: 'line-5', name: 'LAN SW1-SRV1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw-3', portZId: 'p-srv-1' }, + // Switch-2 → Server-2 (copper) + { id: 'line-5b', name: 'LAN SW2-SRV2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw2-3', portZId: 'p-srv2-1' }, + // Switch-2 → SORM (copper) + { id: 'line-5c', name: 'LAN SW2-SORM', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw2-4', portZId: 'p-sorm-1' }, + // Cross4 → VoIP (copper) + { id: 'line-5d', name: 'Медь КРТ1-VoIP', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-c4-s1', portZId: 'p-voip-1' }, + // Cross1 → Cross2 (optical) + { id: 'line-12', name: 'Кросс1-Кросс2', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s4', portZId: 'p-c2-l1' }, + // Cross2 → Router-1 (optical, reserved) + { id: 'line-10', name: 'Резерв Кросс2-RTR1', templateName: '', status: EntityStatus.Reserved, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dotted, portAId: 'p-c2-s1', portZId: 'p-rtr-1' }, + // Cross2 → Router-2 (optical, reserved) + { id: 'line-10b', name: 'Резерв Кросс2-RTR2', templateName: '', status: EntityStatus.Reserved, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dotted, portAId: 'p-c2-s2', portZId: 'p-rtr2-1' }, + // Router-1 self-loop (loopback) + { id: 'line-11', name: 'Перемычка RTR1', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-2', portZId: 'p-rtr-6' }, + + // ===== Site 1 → Site 1-1 (cross-site) ===== + { id: 'line-6', name: 'ВОК Центр-Муфта1', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-c1-s3', portZId: 'p-sp-1' }, + { id: 'line-6b', name: 'ВОК Центр-Муфта1 (2)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s8', portZId: 'p-sp-5' }, + // Splice-1 → Splice-2 + { id: 'line-6c', name: 'ВОК Муфта1-Муфта2', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-sp-4', portZId: 'p-sp2-1' }, + + // ===== Site 1-1 → Site 2 (cross-site) ===== + { id: 'line-7', name: 'ВОК Муфта1-Северный', templateName: '', status: EntityStatus.Planned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dashed, portAId: 'p-sp-3', portZId: 'p-c3-l1' }, + { id: 'line-7b', name: 'ВОК Муфта1-Северный (2)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-sp-6', portZId: 'p-c3-l4' }, + + // ===== Site 1 → Site 1-2 (RRL link) ===== + { id: 'line-rrl-1', name: 'LAN SW3-RRL', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw3-1', portZId: 'p-rrl-1' }, + { id: 'line-rrl-2', name: 'РРС канал', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Wireless, lineStyle: LineStyle.Dotted, portAId: 'p-rrl-3', portZId: 'p-c5-l1' }, + + // ===== Site 2 internal ===== + // Cross3 → OLT (optical) { id: 'line-8', name: 'ВОК Кросс3-OLT', templateName: '', status: EntityStatus.UnderConstruction, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-s1', portZId: 'p-olt-1' }, + // Cross3 → Router-3 (optical) + { id: 'line-8b', name: 'ВОК Кросс3-RTR3', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-s3', portZId: 'p-rtr3-1' }, + // Cross5 → xDSL (optical) + { id: 'line-8c', name: 'ВОК Кросс5-DSLAM', templateName: '', status: EntityStatus.Faulty, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c5-s1', portZId: 'p-xdsl-1' }, + // Cross3 → Cross5 (optical) + { id: 'line-8d', name: 'Кросс3-Кросс5', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-s4', portZId: 'p-c5-l2' }, // OLT → xDSL (copper, faulty) { id: 'line-9', name: 'Транзит OLT-DSLAM', templateName: '', status: EntityStatus.Faulty, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-olt-3', portZId: 'p-xdsl-3' }, - // Cross2 → Router (optical, reserved) - { id: 'line-10', name: 'Резерв Кросс2-RTR', templateName: '', status: EntityStatus.Reserved, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Dotted, portAId: 'p-c2-s1', portZId: 'p-rtr-1' }, - // Router → Router (loopback copper) - { id: 'line-11', name: 'Перемычка RTR', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr-2', portZId: 'p-rtr-4' }, - // Cross1 → Cross2 (optical, active) - { id: 'line-12', name: 'Кросс-кросс', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-s4', portZId: 'p-c2-l1' }, - // Cross1 L4 → Cross3 L2 (optical, decommissioned) + // Router-3 → MGN (copper) + { id: 'line-9b', name: 'LAN RTR3-MGN', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr3-3', portZId: 'p-mgn-3' }, + // Cross3 → RAN BS (optical, under construction) + { id: 'line-9c', name: 'ВОК Кросс3-БС', templateName: '', status: EntityStatus.UnderConstruction, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-s5', portZId: 'p-ran-1' }, + + // ===== Site 1 → Site 2 direct (cross-site decommissioned) ===== { id: 'line-13', name: 'ВОК Центр-Север (выведен)', templateName: '', status: EntityStatus.Decommissioned, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-l4', portZId: 'p-c3-l2' }, - // Complex line: Cross3 → xDSL (optical, with fibers) + + // ===== Site 1 → Site 3 (cross-site) ===== + { id: 'line-s1-s3', name: 'ВОК Центр-Южный (1)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-l5', portZId: 'p-c6-l1' }, + { id: 'line-s1-s3b', name: 'ВОК Центр-Южный (2)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c1-l6', portZId: 'p-c6-l2' }, + + // ===== Site 2 → Site 3 (cross-site) ===== + { id: 'line-s2-s3', name: 'ВОК Север-Южный', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-l5', portZId: 'p-c6-l3' }, + + // ===== Site 3 internal ===== + // Cross6 → DWDM-3 + { id: 'line-s3-1', name: 'ВОК Кросс6-DWDM3 (1)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c6-s1', portZId: 'p-dw3-c9-1' }, + { id: 'line-s3-1b', name: 'ВОК Кросс6-DWDM3 (2)', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c6-s2', portZId: 'p-dw3-c10-1' }, + // DWDM-3 → Router-4 + { id: 'line-s3-2', name: 'Транзит DWDM3-RTR4', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-dw3-c9-2', portZId: 'p-rtr4-c11-1' }, + // Router-4 → Switch-4 (copper) + { id: 'line-s3-3', name: 'LAN RTR4-SW4', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-rtr4-2', portZId: 'p-sw4-1' }, + // Switch-4 → Server-3 (copper) + { id: 'line-s3-4', name: 'LAN SW4-SRV3', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Solid, portAId: 'p-sw4-3', portZId: 'p-srv3-1' }, + // Cross6 → Splice-3 + { id: 'line-s3-5', name: 'ВОК Кросс6-Муфта3', templateName: '', status: EntityStatus.Active, type: LineType.Simple, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c6-s5', portZId: 'p-sp3-1' }, + + // ===== Complex lines ===== { id: 'line-14', name: 'Комплекс Кросс3-DSLAM', templateName: 'TEMPLATE-01', status: EntityStatus.Active, type: LineType.Complex, medium: Medium.Optical, lineStyle: LineStyle.Solid, portAId: 'p-c3-s2', portZId: 'p-xdsl-1' }, - // Switch → OLT uplink (copper, unknown) - { id: 'line-15', name: 'Транзит SW-OLT', templateName: '', status: EntityStatus.Unknown, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Dotted, portAId: 'p-sw-4', portZId: 'p-olt-4' }, + + // ===== Cross-site unknown status ===== + { id: 'line-15', name: 'Транзит SW1-OLT', templateName: '', status: EntityStatus.Unknown, type: LineType.Simple, medium: Medium.Copper, lineStyle: LineStyle.Dotted, portAId: 'p-sw-4', portZId: 'p-olt-4' }, ], fibers: [ { id: 'fiber-1', name: 'Волокно 1', status: EntityStatus.Active, lineId: 'line-14', portAId: 'p-c3-s2', portZId: 'p-xdsl-1' }, - { id: 'fiber-2', name: 'Волокно 2', status: EntityStatus.Planned, lineId: 'line-14', portAId: 'p-c3-s3', portZId: 'p-xdsl-2' }, + { id: 'fiber-2', name: 'Волокно 2', status: EntityStatus.Planned, lineId: 'line-14', portAId: 'p-c3-s6', portZId: 'p-xdsl-2' }, + { id: 'fiber-3', name: 'Волокно 3', status: EntityStatus.Active, lineId: 'line-14', portAId: 'p-c3-l6', portZId: 'p-xdsl-4' }, ], };