From d10bb521f7fd59127f84110ccc7c3ef93f8d8c61 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Mon, 20 Jul 2026 14:22:37 -0400 Subject: [PATCH] =?UTF-8?q?feat(ops):=20wireless=20(airOS/Cambium)=20Do=20?= =?UTF-8?q?Stuff=20parity=20=E2=80=94=20n8n=20bridge=20+=20panel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Last F Do Stuff gap was wireless CPEs (signal, signal-AP, CCQ, TX/RX rate, airMAX capacity). Empirically confirmed the hub cannot reach the CPE mgmt network (all probes timed out) — so, exactly like the fiber TP-Link path, this goes through n8n. - hub: ticket-collab.airosSignal({serial|ip}) + GET /collab/airos-signal. Resolves mgmt IP/login from Service Equipment, calls n8n webhook get_signal_airos (mirror of F device_ajax/airos_ac_ajax.php: airOS auth + status.cgi parse), normalizes signal/signalAp/ccq/tx-rx rate/airMAX capacity/model/version/uptime. Degrades gracefully: 404 -> registered:false. - ops: EquipmentDetail shows a "Do Stuff en direct (sans-fil)" panel for wireless equipment (isWireless heuristic), rendering the same tiles + feeding "Copier pour le ticket". Shows an "en attente" note until the webhook exists. Verified: hub live returns {ok:false,registered:false} for a real CPE (SN-772); SPA build clean, leak-check 0 secrets, deployed (index.c4ccc86f.js). The one remaining hop is creating the n8n get_signal_airos workflow (spec in docs). Co-Authored-By: Claude Opus 4.8 --- .../detail-sections/EquipmentDetail.vue | 57 +++++++++++++++++++ services/targo-hub/lib/ticket-collab.js | 52 ++++++++++++++++- 2 files changed, 108 insertions(+), 1 deletion(-) diff --git a/apps/ops/src/components/shared/detail-sections/EquipmentDetail.vue b/apps/ops/src/components/shared/detail-sections/EquipmentDetail.vue index ee31da0..12e8451 100644 --- a/apps/ops/src/components/shared/detail-sections/EquipmentDetail.vue +++ b/apps/ops/src/components/shared/detail-sections/EquipmentDetail.vue @@ -97,6 +97,38 @@ + +
+
+ + Interroge le CPE : signal, CCQ, débit, capacité airMAX — comme F + +
Interrogation du CPE…
+ + + +
+
+ Signal {{ airos.signal }} dBm · AP {{ airos.signalAp }} + CCQ {{ airos.ccq }} % + TX/RX {{ airos.txRate || '—' }} / {{ airos.rxRate || '—' }} + airMAX ▼{{ airos.capDown != null ? airos.capDown : '—' }} ▲{{ airos.capUp != null ? airos.capUp : '—' }} Mbps + {{ airos.ssid }} + {{ airos.frequency }} + TX {{ airos.txPower }} + {{ airos.uptime }} + {{ airos.version }} +
+
+ {{ airos.registered === false ? 'Signal sans-fil en attente : webhook n8n « get_signal_airos » à configurer.' : airos.error }} +
+
+
Identité de l'appareil