leonardo 3 週間 前
親
コミット
4247cd5bf3

+ 4 - 3
src/chat/acsCommand.js

@@ -5,7 +5,8 @@ import {
   refPorSerial,
   statusConexao,
   minutosDesde,
-  classificarSinalRx
+  classificarSinalRx,
+  radiosVisiveis
 } from "../services/acsService.js";
 
 // comando explícito, à parte dos 3 modos do roteador por LLM — mesmo espírito do /cto e do
@@ -93,7 +94,7 @@ function formatarOptico(optico) {
 function formatarRadios(radios = []) {
   if (!radios.length) return "Nenhum rádio Wi-Fi reportado.";
   const linhas = radios.map(
-    (r) => `| ${r.banda ?? "?"} | ${r.ssid ?? "—"} | ${r.canal ?? "auto/?"} | ${r.habilitado === false ? "desligado" : "ligado"} |`
+    (r) => `| ${r.banda ?? "?"} | ${r.ssid ?? "—"} | ${r.canal || "automático"} | ${r.habilitado === false ? "desligado" : "ligado"} |`
   );
   return ["| Banda | SSID | Canal | Estado |", "|---|---|---|---|", ...linhas].join("\n");
 }
@@ -134,7 +135,7 @@ function formatarResumo(d, alvo) {
   linhas.push(
     "",
     "### Wi-Fi",
-    formatarRadios(d.radios),
+    formatarRadios(radiosVisiveis(d.radios)),
     "",
     `### Aparelhos no Wi-Fi (${clientesWifi.length})${d.clientes_conectados ? ` · ${d.clientes_conectados.length} na rede local` : ""}`,
     formatarClientesWifi(clientesWifi)

+ 10 - 0
src/services/acsService.js

@@ -87,6 +87,16 @@ export function classificarSinalRx(rx) {
   return "critico";
 }
 
+// SSIDs extras de fábrica que a CPE reporta desligados (DM985: "SSID2".."SSID8"; DM986:
+// "DTC_1_5G", "DTC__2_2.4G"...) — não são do cliente e o LLM os descrevia como "redes desconhecidas".
+// Ligado com nome genérico continua aparecendo: aí é uma rede em uso.
+const SSID_GENERICO_RE = /^(SSID\d*|DTC_+\d+_(2\.4|5)G)$/i;
+
+export function radiosVisiveis(radios) {
+  if (!Array.isArray(radios)) return [];
+  return radios.filter((r) => !(r?.habilitado === false && SSID_GENERICO_RE.test(String(r?.ssid ?? "").trim())));
+}
+
 export async function buscarDispositivo(ref) {
   try {
     return await fetchJson(`devices/${ref}`);

+ 3 - 2
src/services/equipamentoContextoService.js

@@ -6,7 +6,8 @@ import {
   refPorSerial,
   statusConexao,
   minutosDesde,
-  classificarSinalRx
+  classificarSinalRx,
+  radiosVisiveis
 } from "./acsService.js";
 import { buscarIdClientePorPppoe } from "./ixcIntegradorService.js";
 import { formatarTrechoAtendimento } from "./atendimentosQueryService.js";
@@ -186,7 +187,7 @@ function blocoOptico(optico) {
 }
 
 function blocoWifi(d) {
-  const radios = Array.isArray(d.radios) ? d.radios : [];
+  const radios = radiosVisiveis(d.radios);
   const linhas = radios.length
     ? radios.map(
         (r) =>