{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-3da83c6603f0c4e4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/AppLayout.tsx:455", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AppLayout.tsx:455"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0ed3810e16268a9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/EquipeOnlineCard.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/EquipeOnlineCard.tsx:144"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f01316d82af5c2d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/TreinamentosCard.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TreinamentosCard.tsx:103"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe2834df4a9373e7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/SongFilesManager.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/SongFilesManager.tsx:89"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18c75c397f8d2f10", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ServerStatusPanel.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ServerStatusPanel.tsx:224"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7426f9fac9dabe3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/HistoricoCategorizado.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HistoricoCategorizado.tsx:151"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a31ae3c0697a7462", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/CategoriasMultiSelect.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/CategoriasMultiSelect.tsx:51"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b8409ec1c02c9cd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/AttachButtons.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AttachButtons.tsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3fec93dfaef36aa2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/BirthdayConversionCard.tsx:383", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/BirthdayConversionCard.tsx:383"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3437bbb3046c84d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/DisparosBanner.tsx:50", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DisparosBanner.tsx:50"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b209c77e83b119fd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e1f3e75f089b298", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistsPage.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistsPage.tsx:201"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc2cdf7f6b2875f5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PipelinePage.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PipelinePage.tsx:75"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5eff04c81d138efc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfiguracoesUnidadesPage.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfiguracoesUnidadesPage.tsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0841a0cb3e8da9d5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EstoqueLojasPage.tsx:546", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EstoqueLojasPage.tsx:546"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3f27774950b0d25", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/StoreMonitorPage.tsx:697", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/StoreMonitorPage.tsx:697"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4a0a4f02a2bcc5d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampanhasCloudPage.tsx:533", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampanhasCloudPage.tsx:533"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-406ff4ec54552eb0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfigPage.tsx:1273", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfigPage.tsx:1273"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-892dd39500ff6544", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ServicosCatalogoPage.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ServicosCatalogoPage.tsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d051b13672cfb8de", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoDetalhePage.tsx:236", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoDetalhePage.tsx:236"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ac9f6d13450715f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MetaAdsPage.tsx:107", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MetaAdsPage.tsx:107"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3c61aaf6d50fdc1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InstagramPage.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InstagramPage.tsx:41"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a133f68d9f7ad0a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InsumosPage.tsx:418", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InsumosPage.tsx:418"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c01b4d15b9c2934", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FinanceiroMusico.tsx:294", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FinanceiroMusico.tsx:294"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bcd8d00d44bffed", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ContratoPublicoPage.tsx:102", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ContratoPublicoPage.tsx:102"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9050447bd100d6fb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoPublicoPage.tsx:307", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoPublicoPage.tsx:307"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-499c3bdefcf0d682", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversationsPage.tsx:134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversationsPage.tsx:134"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7268fb1f98afdf8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ResponsesPage.tsx:206", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ResponsesPage.tsx:206"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1a9a68f0ab59196", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversasPage.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversasPage.tsx:47"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3601b74262deae82", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/TreinamentosPage.tsx:202", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/TreinamentosPage.tsx:202"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-515f6d2f35446f34", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EquipamentoPage.tsx:159", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EquipamentoPage.tsx:159"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3181574ffa39cc84", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardMusico.tsx:205", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardMusico.tsx:205"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbdb1019fe0c168e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/VendedorasAnalisePage.tsx:350", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/VendedorasAnalisePage.tsx:350"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec70f2836e51531d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampaignsPage.tsx:423", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampaignsPage.tsx:423"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4218006f95172609", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/IntentsPage.tsx:391", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/IntentsPage.tsx:391"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b018bd0789df5eb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CentralCampanhasPage.tsx:478", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CentralCampanhasPage.tsx:478"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-218e29599568a681", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/NfsBoletosPage.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/NfsBoletosPage.tsx:223"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ab9bb4f17bc7b99", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/RepairsPage.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/RepairsPage.tsx:93"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12a7f775b08def05", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CashbackPage.tsx:212", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CashbackPage.tsx:212"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43ad8bdf01a14938", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistEditorPage.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistEditorPage.tsx:78"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ef02f3190474b7c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PerfilPage.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PerfilPage.tsx:157"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f4d27d3a2da5e31", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/Dashboard.tsx:1797", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/Dashboard.tsx:1797"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d64c88e0df627440", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/full-sync-clients.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/full-sync-clients.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ca762c0cb8f16b1", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-pedidos.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-pedidos.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73ca6c83e5acc814", "name": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a022f009351746c5", "name": "Stray `console.log` in TS/JS \u2014 server/src/resumo-diario.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/resumo-diario.ts:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5db97f1874d51cb", "name": "Stray `console.log` in TS/JS \u2014 server/src/modo-operacao.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/modo-operacao.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02ac61a88b437cb3", "name": "Stray `console.log` in TS/JS \u2014 server/src/auto-config.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/auto-config.ts:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb20cf3170c4106d", "name": "Stray `console.log` in TS/JS \u2014 server/src/aviso-whatsapp-urgente.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/aviso-whatsapp-urgente.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c109816ab27eeec9", "name": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2e2610a4c503d2a", "name": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-ddp.ts:249", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-ddp.ts:249"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1204c90111a937d9", "name": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-http.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-http.ts:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d22d87480c8f0907", "name": "Stray `console.log` in TS/JS \u2014 server/src/segmentacao/calcular.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/segmentacao/calcular.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8150aee16e39b023", "name": "Stray `console.log` in TS/JS \u2014 server/src/cron/relatorio-mensal.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/cron/relatorio-mensal.ts:161"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42475715be897f51", "name": "Stray `console.log` in TS/JS \u2014 server/src/cron/anomalias-semanais.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/cron/anomalias-semanais.ts:147"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b7dc0dfc00a56f9", "name": "Stray `console.log` in TS/JS \u2014 server/src/gigcontrol/cron.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/gigcontrol/cron.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-786b173fe4939baa", "name": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp/client-manager.ts:241", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp/client-manager.ts:241"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95cf6b916c310997", "name": "Stray `console.log` in TS/JS \u2014 server/src/reativacao/processador.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/reativacao/processador.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b550c18a455607ae", "name": "Stray `console.log` in TS/JS \u2014 server/src/pos-venda/checker.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/pos-venda/checker.ts:237"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c274dd27d41940df", "name": "Stray `console.log` in TS/JS \u2014 server/src/queue/send-queue.ts:249", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/queue/send-queue.ts:249"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbe053e283e72f63", "name": "Stray `console.log` in TS/JS \u2014 server/src/financeiro/routes.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/financeiro/routes.ts:112"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b5da12254e36409", "name": "Stray `console.log` in TS/JS \u2014 server/src/evangelho/service.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/evangelho/service.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20772217681e58a6", "name": "Stray `console.log` in TS/JS \u2014 server/src/instagram/poller.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/instagram/poller.ts:113"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ded9aa27e1053ec4", "name": "Stray `console.log` in TS/JS \u2014 server/src/instagram/client.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/instagram/client.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ac5492b886c4779", "name": "Stray `console.log` in TS/JS \u2014 server/src/sms/provider.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/sms/provider.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd07835fdf365556", "name": "Stray `console.log` in TS/JS \u2014 server/src/sms/sender.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/sms/sender.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e591d813403c92ca", "name": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/client.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/client.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49ceeacb53f92bed", "name": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/sender.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/sender.ts:206"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0b6867709d73d61", "name": "Stray `console.log` in TS/JS \u2014 server/src/avisos/detect-mudanca-preco.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/avisos/detect-mudanca-preco.ts:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d5e1cbce85b51fc", "name": "Stray `console.log` in TS/JS \u2014 server/src/ai/chat-bot.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/ai/chat-bot.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56013a97b652362d", "name": "Stray `console.log` in TS/JS \u2014 server/src/birthday/checker.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/birthday/checker.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-384d2bce6d4b9aa3", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/nfs-boletos.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/nfs-boletos.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00619e766e32d7d9", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/auditoria-estoque.ts:395", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/auditoria-estoque.ts:395"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f29447719d19065", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-cloud.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-cloud.ts:113"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd42ce96518f1400", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/sms-campaigns.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/sms-campaigns.ts:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-507c021e7d6db0b2", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/central-franqueado.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/central-franqueado.ts:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4b23f3a593ec1ed", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/integracoes-nello.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/integracoes-nello.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e42aea7ccee919b", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/conversao-envios.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/conversao-envios.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a6bbd8861c91bd6", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/tasks.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/tasks.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3a5987a51fc57b1", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/intents.ts:283", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/intents.ts:283"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fc7fc92df68e3c2", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/sessions.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/sessions.ts:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8fd65b92c5e21c7", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/team.ts:1026", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/team.ts:1026"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14051dee82f4b3ea", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/estoque-lojas.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/estoque-lojas.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b9b3d6e3897d1cc", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-v2.ts:560", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-v2.ts:560"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fc9359e651c72e7", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/audit.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/audit.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66824a0691e53705", "name": "Stray `console.log` in TS/JS \u2014 server/src/routes/email-campaigns.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/email-campaigns.ts:170"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d14d483fe10a2205", "name": "TODO/FIXME marker in shipping code \u2014 server/src/varejo-online/sync-products.ts:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/src/varejo-online/sync-products.ts:32"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6979afe2c311de8", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-products.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-products.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-384198bf9c8a1854", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-entradas.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-entradas.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06a422394017e23b", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/scheduler.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/scheduler.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c10702c61ed4d033", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-devolucoes.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-devolucoes.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e169cb911e532bc", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/client-matcher.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/client-matcher.ts:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43eeabf7ec2aaafd", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-clients.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-clients.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-950b4479397acb55", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-purchases.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-purchases.ts:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7ac1cc663405f5a", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-estoque.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-estoque.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18bee0c8df5f9158", "name": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-saidas.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-saidas.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbbfe6f93b7b318c", "name": "Stray `console.log` in TS/JS \u2014 server/src/calendario-religioso/disparador.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/calendario-religioso/disparador.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-779a4383af402612", "name": "Privileged port 43 in use", "shortDescription": {"text": "Privileged port 43 in use"}, "fullDescription": {"text": "Port 43 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7176e5d95d18d844", "name": "Runtime dotenv file present in repo: .env", "shortDescription": {"text": "Runtime dotenv file present in repo: .env"}, "fullDescription": {"text": "`.env` looks like a runtime dotenv file. It contains secret-looking assignments for VITE_SUPABASE_PUBLISHABLE_KEY, ANTHROPIC_API_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0792d608e141f22b", "name": "Possible secret in .env", "shortDescription": {"text": "Possible secret in .env"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-245aa64e99269828", "name": "Insecure pattern 'node_child_process' in scripts/copiar-via-api.mjs:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/copiar-via-api.mjs:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93d0283845aa2c2d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9bb443a6fa0986a5", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoDetalhePage.tsx:236", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoDetalhePage.tsx:236"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21634ca38fa5c6f1", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoPublicoPage.tsx:307", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoPublicoPage.tsx:307"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7715e4c49cc64be", "name": "Insecure pattern 'node_child_process' in server/src/index.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/index.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-571ba033d879ec75", "name": "Insecure pattern 'cors_wildcard' in server/src/index.ts:84", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/src/index.ts:84"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d626330540ace7eb", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/ai-campaign/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/ai-campaign/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1c428370706f803", "name": "Very large file: src/pages/CampanhasCloudPage.tsx (1332 lines)", "shortDescription": {"text": "Very large file: src/pages/CampanhasCloudPage.tsx (1332 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-173c98dca06222e6", "name": "Very large file: src/pages/ConfigPage.tsx (1843 lines)", "shortDescription": {"text": "Very large file: src/pages/ConfigPage.tsx (1843 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0aab914edb9dc59b", "name": "Very large file: src/pages/IntentsPage.tsx (1963 lines)", "shortDescription": {"text": "Very large file: src/pages/IntentsPage.tsx (1963 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62848be80faa3544", "name": "Very large file: src/pages/CentralCampanhasPage.tsx (1279 lines)", "shortDescription": {"text": "Very large file: src/pages/CentralCampanhasPage.tsx (1279 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c724a35be93a85ef", "name": "Very large file: src/pages/ReportsPage.tsx (1377 lines)", "shortDescription": {"text": "Very large file: src/pages/ReportsPage.tsx (1377 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f35523025d8ab8c5", "name": "Very large file: src/pages/Dashboard.tsx (1843 lines)", "shortDescription": {"text": "Very large file: src/pages/Dashboard.tsx (1843 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9bc64f6a7c87cf5", "name": "Very large file: server/src/index.ts (7649 lines)", "shortDescription": {"text": "Very large file: server/src/index.ts (7649 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a197b7429ccfa15", "name": "Very large file: server/src/routes/intents.ts (1509 lines)", "shortDescription": {"text": "Very large file: server/src/routes/intents.ts (1509 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "3 test file(s) for 378 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 605 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 291 placeholder/mock markers across 77 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ff4719883abf794", "name": "Commented-code block (6 lines) in playwright.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in playwright.config.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae399a54c12743f8", "name": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_extras.mjs:175", "shortDescription": {"text": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_extras.mjs:175"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc43d50e8f24854e", "name": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_admin.mjs:204", "shortDescription": {"text": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_admin.mjs:204"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5d8a5455a67f53b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useBusinessHours.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useBusinessHours.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-49edd4fb857b665a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseAgenda.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseAgenda.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e59bbe9938500bcb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useRepairs.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useRepairs.ts:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89ebbb89797a15ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetaAds.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetaAds.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7394abced13c499", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInstagram.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInstagram.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5d124b5dc5b1f62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermosPremiacao.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermosPremiacao.ts:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2eef5cc3b9f718c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCentralCampanhas.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCentralCampanhas.ts:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4de790de241a4ea2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIntents.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIntents.ts:120"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaa65af9e5bd80e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnthropicKey.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnthropicKey.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c439fd99299f2652", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAvisos.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAvisos.ts:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed4d6d3ddfd6cd4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuotes.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuotes.ts:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-086d281f41aa246a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useDisparosAtivos.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useDisparosAtivos.ts:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4483bc84f26cff14", "name": "Commented-code block (5 lines) in src/hooks/useTermsAcceptance.ts:16", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useTermsAcceptance.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5131b1ce53568312", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermsAcceptance.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermsAcceptance.ts:12"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68afcd22591a69b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnaliseIaAccess.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnaliseIaAccess.ts:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc3797045368119d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNfsBoletos.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNfsBoletos.ts:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7f25109363ebc08", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useChat.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useChat.ts:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f861872b8f618247", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePushNotifications.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePushNotifications.ts:67"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b64ef5b1ba2a3b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useContracts.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useContracts.ts:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da150792ed4be560", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaPainel.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaPainel.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4eeba4931cf0f1fe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useFinanceiroAnalise.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useFinanceiroAnalise.ts:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79f4788238cfe901", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNotificationCounts.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNotificationCounts.ts:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f61ed5362643104", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useWhatsAppSessions.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useWhatsAppSessions.ts:16"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c057c7bd03106d96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useModoOperacao.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useModoOperacao.ts:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b528191676692c2", "name": "Commented-code block (7 lines) in src/hooks/useAuth.tsx:24", "shortDescription": {"text": "Commented-code block (7 lines) in src/hooks/useAuth.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68e2fa7182d8e98e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetasMensais.ts:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetasMensais.ts:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4831cf2fa54e1d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaContexto.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaContexto.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f76d629369a1c8a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCampanhasCloud.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCampanhasCloud.ts:45"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b90f9f34757e923", "name": "Commented-code block (5 lines) in src/hooks/useSends.ts:112", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useSends.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d732ec06f8b9c16c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCompras.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCompras.ts:67"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c1358f98b8d5999", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTeamMember.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTeamMember.ts:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d58b6ee1f85b134", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInsumos.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInsumos.ts:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0b2338525a2d7c7b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useVarejoSync.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useVarejoSync.ts:7"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61af3059424cd65c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useResponseConversations.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useResponseConversations.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0577e52be353d3a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useProdutosAnalise.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useProdutosAnalise.ts:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-174b18c2cb393db2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseMusico.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseMusico.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a98d2ea2f26e5872", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePlaylists.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePlaylists.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da3b9384ddf9b884", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuickReplies.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuickReplies.ts:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d74e9dc5d987f220", "name": "Commented-code block (5 lines) in src/hooks/useSessionTracker.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useSessionTracker.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6b9ccf0a03fb31f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MesEmAndamentoCard.tsx:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MesEmAndamentoCard.tsx:248"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-317650c9bf37b15f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EquipeOnlineCard.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EquipeOnlineCard.tsx:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80c82400a5c05780", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PainelInfoCliente.tsx:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PainelInfoCliente.tsx:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32c1b138e5103be9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/TreinamentosCard.tsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/TreinamentosCard.tsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7734b84afb02e47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ServerStatusPanel.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ServerStatusPanel.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca9766d1681dcfa0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendasPorVendedoraCard.tsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendasPorVendedoraCard.tsx:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f458b66be8b9094d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendedoraDrilldown.tsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendedoraDrilldown.tsx:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97ebe8cc192c122c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/HistoricoCategorizado.tsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/HistoricoCategorizado.tsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-917f0692cc444de6", "name": "Commented-code block (5 lines) in src/components/BusinessHoursGate.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/BusinessHoursGate.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-850a5c0abf52a188", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/BirthdayConversionCard.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/BirthdayConversionCard.tsx:94"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41b661c41780f672", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/PlaylistsPage.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/PlaylistsPage.tsx:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-342e1815da281979", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ActivityLogPage.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ActivityLogPage.tsx:70"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88cd9dffd902a155", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/SmsCampanhasPage.tsx:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/SmsCampanhasPage.tsx:53"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-040ce113fccba0b4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MuralPage.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MuralPage.tsx:72"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7349b1920eef34b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConversaoEnviosPage.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConversaoEnviosPage.tsx:58"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ff639461fefbe97", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/DevolucoesPage.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/DevolucoesPage.tsx:77"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ddfffc48ed5eb1a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EstoqueLojasPage.tsx:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EstoqueLojasPage.tsx:93"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f23f1269290b110a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreMonitorPage.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreMonitorPage.tsx:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77f4e00a287650df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasCloudPage.tsx:732", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasCloudPage.tsx:732"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64e6f5d45f153e5b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasResgatePage.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasResgatePage.tsx:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6cfcb83b9f5dcb80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreAssignPage.tsx:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreAssignPage.tsx:16"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9fd575db026cd7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConfigPage.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConfigPage.tsx:34"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb0dd39a00260bcf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendasDetalhePage.tsx:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendasDetalhePage.tsx:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-063e6f439badfbba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VarejoOnlinePage.tsx:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VarejoOnlinePage.tsx:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2f7d25ad3c81c09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CelularesAutorizadosPage.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CelularesAutorizadosPage.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f44b8be578c42b1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FornecedoresPage.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FornecedoresPage.tsx:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28c3d9bd7968d931", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/BoasVindasPage.tsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/BoasVindasPage.tsx:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8595c6fb3d44a393", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MaquininhasPage.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MaquininhasPage.tsx:90"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5cc3deea76b167e5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EmailCampanhasPage.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EmailCampanhasPage.tsx:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98e9ee154ee82e0e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/TreinamentosPage.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/TreinamentosPage.tsx:77"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db2574646473e833", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CashbackConfigPage.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CashbackConfigPage.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00d8bb34521786f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendedorasAnalisePage.tsx:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendedorasAnalisePage.tsx:170"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0c0c1bb71c87402", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AuditoriaEstoquePage.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AuditoriaEstoquePage.tsx:119"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47c2ffc0efb4fced", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/IntentsPage.tsx:1171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/IntentsPage.tsx:1171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b95385041680d63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MonitorLojaPage.tsx:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MonitorLojaPage.tsx:125"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-666b3f46ed56375f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientsPage.tsx:640", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientsPage.tsx:640"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a369a266378ea83f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FinanceiroPage.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FinanceiroPage.tsx:70"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-473761983ea5db5c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/WorkQueuePage.tsx:661", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/WorkQueuePage.tsx:661"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b1d7be229f247b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ReportsPage.tsx:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ReportsPage.tsx:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5a69b698f3c47a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/Dashboard.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/Dashboard.tsx:94"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca1dee5a0fd4d544", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientesPorProdutoPage.tsx:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientesPorProdutoPage.tsx:161"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa4c7bbea08ff56b", "name": "Commented-code block (5 lines) in src/lib/storeNames.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/storeNames.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca270c3c37f3fedb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/whatsapp.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/whatsapp.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89df8ff6c394af0b", "name": "Commented-code block (5 lines) in server/src/index.ts:1212", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/index.ts:1212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-274615570cb3dfd2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/index.ts:432", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/index.ts:432"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14581193c33664b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/central-franqueado/scraper-http.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/central-franqueado/scraper-http.ts:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39ddaa54d23bfb30", "name": "Commented-code block (5 lines) in server/src/cron/relatorio-mensal.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/cron/relatorio-mensal.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ae3f889cde62b09", "name": "Commented-code block (5 lines) in server/src/gigcontrol/cron.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/gigcontrol/cron.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e5229c159689fd0", "name": "Commented-code block (8 lines) in server/src/financeiro/routes.ts:298", "shortDescription": {"text": "Commented-code block (8 lines) in server/src/financeiro/routes.ts:298"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e206087235a818c7", "name": "Commented-code block (5 lines) in server/src/financeiro/parse-xlsx.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/financeiro/parse-xlsx.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0405ba344cffa45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/instagram/client.ts:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/instagram/client.ts:141"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6dddcd983293719", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/sms/provider.ts:180", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/sms/provider.ts:180"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4f6ad3ad994dfda", "name": "Legacy-named symbol `aniversario_vespera_v2` in server/src/whatsapp-cloud/sender.ts:16", "shortDescription": {"text": "Legacy-named symbol `aniversario_vespera_v2` in server/src/whatsapp-cloud/sender.ts:16"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2e5ccb3f85a7aca", "name": "Commented-code block (6 lines) in server/src/avisos/detect-mudanca-preco.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/avisos/detect-mudanca-preco.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96757f06102f129e", "name": "Commented-code block (7 lines) in server/src/routes/auditoria-estoque.ts:204", "shortDescription": {"text": "Commented-code block (7 lines) in server/src/routes/auditoria-estoque.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c862903c800d99fd", "name": "Commented-code block (5 lines) in server/src/routes/campanhas-cloud.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/campanhas-cloud.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24f2cb687df7efa5", "name": "Commented-code block (6 lines) in server/src/routes/sms-campaigns.ts:236", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/routes/sms-campaigns.ts:236"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a18ca87d5c5c34f0", "name": "Commented-code block (6 lines) in server/src/routes/insumos.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/routes/insumos.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14e75c6095255cb9", "name": "Commented-code block (5 lines) in server/src/routes/integracoes-nello.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/integracoes-nello.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac2c54ce71c22d57", "name": "Commented-code block (5 lines) in server/src/routes/avisos.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/avisos.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95d17b0a95942cde", "name": "Commented-code block (5 lines) in server/src/routes/cashback.ts:339", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/cashback.ts:339"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3967147cc043867", "name": "Commented-code block (9 lines) in server/src/routes/meta-ads.ts:27", "shortDescription": {"text": "Commented-code block (9 lines) in server/src/routes/meta-ads.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61c91043f106f22a", "name": "Commented-code block (5 lines) in server/src/routes/clientes-por-produto.ts:208", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/clientes-por-produto.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eba333250571e1db", "name": "Commented-code block (6 lines) in server/src/routes/intents.ts:1101", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/routes/intents.ts:1101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d9cdaa59a7188b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/intents.ts:1166", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/intents.ts:1166"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-859fdd0edbd15c4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/metas-mensais.ts:295", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/metas-mensais.ts:295"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4675b8fa5fbbf77", "name": "Commented-code block (5 lines) in server/src/routes/sinapse-musico.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/sinapse-musico.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be29a8645c90dc28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/sinapse-musico.ts:229", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/sinapse-musico.ts:229"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48fc942f6ae25a5a", "name": "Commented-code block (5 lines) in server/src/routes/estoque-lojas.ts:192", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/estoque-lojas.ts:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c23b27cc7fd48f53", "name": "Commented-code block (5 lines) in server/src/routes/campanhas-v2.ts:189", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/campanhas-v2.ts:189"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14ecaff708589b77", "name": "Commented-code block (10 lines) in server/src/routes/leads-import.ts:8", "shortDescription": {"text": "Commented-code block (10 lines) in server/src/routes/leads-import.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e844e18de654161b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/client.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/client.ts:149"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7a1a49408d83ff7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-purchases.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-purchases.ts:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d878832c18284612", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-saidas.ts:344", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-saidas.ts:344"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20e4b4363d16fe64", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-campaign/index.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-campaign/index.ts:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-59b992d62d86a65a", "name": "25 env vars used in code but missing from .env.example", "shortDescription": {"text": "25 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANTHROPIC_API_KEY`, `APP_URL`, `CENTRAL_FRANQUEADO_PASS`, `CENTRAL_FRANQUEADO_USER`, `DEMO_USER_ID`, `FB_APP_SECRET`, `NELLO_API_KEY`, `NELLO_FUNCTIONS_BASE_URL` + 17 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7101b6e84924398a", "name": "Frontend route `/boas-vindas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/boas-vindas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a17944dfc6723c8", "name": "Frontend route `/queue` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/queue` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfdded9d70549796", "name": "Frontend route `/tasks` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/tasks` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee7aac1073b3a2b8", "name": "Frontend route `/intents` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/intents` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ecc200af91941cc", "name": "Frontend route `/monitor-vendas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/monitor-vendas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-83ace43aeee1327c", "name": "Frontend route `/conversas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/conversas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0bac154d3efc08e", "name": "Frontend route `/avisos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/avisos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c9aa46902ba8884", "name": "Frontend route `/precos-alterados` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/precos-alterados` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c50f98e97225fd7", "name": "Frontend route `/painel-ia` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/painel-ia` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c063af25b2bd43b9", "name": "Frontend route `/nfs-boletos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/nfs-boletos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a213bb957661da5d", "name": "Frontend route `/cashback` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/cashback` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3dd832f1ea475081", "name": "Frontend route `/cashback/config` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/cashback/config` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f31cd6870388b054", "name": "Frontend route `/treinamentos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/treinamentos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c88c5504546b589", "name": "Frontend route `/mural` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/mural` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9f69e36bdb4be9d", "name": "Frontend route `/repairs` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/repairs` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d3be90e2ef02953", "name": "Frontend route `/insumos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/insumos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f5ef5acf2d88329c", "name": "Frontend route `/estoque-lojas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/estoque-lojas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2bd397fb69195263", "name": "Frontend route `/perfil` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/perfil` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-11bfdaeb219363b0", "name": "Frontend route `/frete` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/frete` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fddfc14142c1b30a", "name": "Frontend route `/vendas-detalhe` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/vendas-detalhe` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f225deb85a9ef5f", "name": "Frontend route `/plans` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/plans` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-334aed1d1645e01c", "name": "Frontend route `/supervision` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/supervision` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a2b4b49b696286e", "name": "Frontend route `/store-monitor` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/store-monitor` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7df305476da5cd92", "name": "Frontend route `/responses` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/responses` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-508c79a7863292a3", "name": "Frontend route `/instagram` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/instagram` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10460b48da8c9d09", "name": "Frontend route `/auditoria-estoque` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/auditoria-estoque` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7436709507de5af", "name": "Frontend route `/fornecedores` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/fornecedores` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0652c11a2703da9", "name": "Frontend route `/leads-import` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/leads-import` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a9954cd99806877", "name": "Frontend route `/email-campanhas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/email-campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00bf3d55635467a4", "name": "Frontend route `/sms-campanhas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/sms-campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07702ca2ee1ad79d", "name": "Frontend route `/reports` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/reports` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24cefb7ba2b4dbc1", "name": "Frontend route `/comparativo-yoy` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/comparativo-yoy` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f4da36df7c0209e1", "name": "Frontend route `/clientes-por-produto` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/clientes-por-produto` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fee10d35325e1dd9", "name": "Frontend route `/vendedoras-analise` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/vendedoras-analise` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b16121d656bce75", "name": "Frontend route `/compras` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/compras` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f269227ac817e1a", "name": "Frontend route `/maquininhas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/maquininhas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6da492aebb1a8281", "name": "Frontend route `/import` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/import` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e383ab98c60bdce4", "name": "Frontend route `/clients` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/clients` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d25157a5503aa99", "name": "Frontend route `/lists` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/lists` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3e7419b2341aaaa", "name": "Frontend route `/sends` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/sends` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8aa73db0bcfd333", "name": "Frontend route `/conversations` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/conversations` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a517f7ac1635468e", "name": "Frontend route `/varejo` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/varejo` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c13b1fd63d920a04", "name": "Frontend route `/config` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/config` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1213c82bf5090913", "name": "Frontend route `/config/marca` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/config/marca` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6d959562f989485", "name": "Frontend route `/config/unidades` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/config/unidades` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5db437c697f35d53", "name": "Frontend route `/config/integracoes` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/config/integracoes` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f56a88f13f3403b2", "name": "Frontend route `/pipeline` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/pipeline` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6520118e38b9dde", "name": "Frontend route `/orcamento/novo` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/orcamento/novo` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-008da2ec385fb2ad", "name": "Frontend route `/orcamento/:id` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/orcamento/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-230f023b5ab6eb2b", "name": "Frontend route `/contrato/:id` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/contrato/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb85cab02d5189d2", "name": "Frontend route `/musico/playlists` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/playlists` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80a5126bc670fd07", "name": "Frontend route `/musico/playlist/:id` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/playlist/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f80b4f4594548eb8", "name": "Frontend route `/team` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/team` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2482c628003d2bbb", "name": "Frontend route `/store-assign` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/store-assign` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b60d3871410a86cb", "name": "Frontend route `/financeiro` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/financeiro` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5387711bcdbe4e9b", "name": "Frontend route `/activity-log` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/activity-log` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-753fc62ea43ef154", "name": "Frontend route `/celulares-autorizados` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/celulares-autorizados` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20c1314bc0ef8477", "name": "Frontend route `/meta-ads` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/meta-ads` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74938ea81bae2e60", "name": "Frontend route `/devolucoes` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/devolucoes` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6733f24d36bed4a", "name": "Frontend route `/metas-mensais` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/metas-mensais` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d34cde881eb49e1d", "name": "Frontend route `/campanhas` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-412cd849dfbd0291", "name": "Frontend route `/campanhas-legado` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/campanhas-legado` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9cf06d9dcbddcaa9", "name": "Frontend route `/team/perfil-rendimento` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/team/perfil-rendimento` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c93a48789dabe95", "name": "Frontend route `/central-franqueado` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/central-franqueado` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da9bc5f9cb9a34a7", "name": "Frontend route `/musico/banda` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/banda` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-181b72a7406f4a6c", "name": "Frontend route `/musico/equipamento` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/equipamento` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfaadc7aec0fdcf2", "name": "Frontend route `/musico/repertorio` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/repertorio` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce876a5bb682b872", "name": "Frontend route `/musico/pacotes` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/musico/pacotes` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b287aff67fb12fcf", "name": "Frontend route `/agenda` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/agenda` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1172af1bb2400f1", "name": "Frontend route `/campanhas-cloud` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/campanhas-cloud` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d23d0dabed443365", "name": "Frontend route `/campanhas-resgate` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/campanhas-resgate` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2690550a15f69088", "name": "Frontend route `/conversao-envios` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/conversao-envios` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-944f2316ef8ad1a6", "name": "Frontend route `/termos-premiacao` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/termos-premiacao` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d7b8642320ed219", "name": "Frontend route `/planos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/planos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f1bec1fd65c0879", "name": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e6ab4daa4148ec5", "name": "Frontend route `/autorizar-celular` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/autorizar-celular` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17dfe68efeebfd79", "name": "Frontend route `/q/:token` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/q/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f21170bfdba4bcc4", "name": "Frontend route `/c/:token` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/c/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c30d16b5d7f9913", "name": "Frontend route `/app/*` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/app/*` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57ba5cc06f5a3e70", "name": "Dangling fetch: GET /api/team${path} (src/hooks/useTeamApi.ts:14)", "shortDescription": {"text": "Dangling fetch: GET /api/team${path} (src/hooks/useTeamApi.ts:14)"}, "fullDescription": {"text": "`src/hooks/useTeamApi.ts:14` calls `GET /api/team${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-982c10f8bc276ef8", "name": "Dangling fetch: GET /api/agenda?${params} (src/hooks/useSinapseAgenda.ts:40)", "shortDescription": {"text": "Dangling fetch: GET /api/agenda?${params} (src/hooks/useSinapseAgenda.ts:40)"}, "fullDescription": {"text": "`src/hooks/useSinapseAgenda.ts:40` calls `GET /api/agenda?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenda`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-315cf54258284757", "name": "Dangling fetch: DELETE /api/agenda/${id} (src/hooks/useSinapseAgenda.ts:69)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agenda/${id} (src/hooks/useSinapseAgenda.ts:69)"}, "fullDescription": {"text": "`src/hooks/useSinapseAgenda.ts:69` calls `DELETE /api/agenda/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenda/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41c37452bdc999f6", "name": "Dangling fetch: POST /api/repairs (src/hooks/useRepairs.ts:85)", "shortDescription": {"text": "Dangling fetch: POST /api/repairs (src/hooks/useRepairs.ts:85)"}, "fullDescription": {"text": "`src/hooks/useRepairs.ts:85` calls `POST /api/repairs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29d523507d76cdf8", "name": "Dangling fetch: PATCH /api/repairs/${id} (src/hooks/useRepairs.ts:105)", "shortDescription": {"text": "Dangling fetch: PATCH /api/repairs/${id} (src/hooks/useRepairs.ts:105)"}, "fullDescription": {"text": "`src/hooks/useRepairs.ts:105` calls `PATCH /api/repairs/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3945606ac9799105", "name": "Dangling fetch: DELETE /api/repairs/${id} (src/hooks/useRepairs.ts:122)", "shortDescription": {"text": "Dangling fetch: DELETE /api/repairs/${id} (src/hooks/useRepairs.ts:122)"}, "fullDescription": {"text": "`src/hooks/useRepairs.ts:122` calls `DELETE /api/repairs/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64c549c27fa4e0ec", "name": "Dangling fetch: GET /api/repairs/search-product?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:147)", "shortDescription": {"text": "Dangling fetch: GET /api/repairs/search-product?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:147)"}, "fullDescription": {"text": "`src/hooks/useRepairs.ts:147` calls `GET /api/repairs/search-product?q=${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs/search-product`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ed05d4d796fe34c", "name": "Dangling fetch: GET /api/repairs/search-client?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:170)", "shortDescription": {"text": "Dangling fetch: GET /api/repairs/search-client?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:170)"}, "fullDescription": {"text": "`src/hooks/useRepairs.ts:170` calls `GET /api/repairs/search-client?q=${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs/search-client`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6b25c0374610e0c", "name": "Dangling fetch: GET /api/meta-ads/relatorios (src/hooks/useMetaAds.ts:65)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/relatorios (src/hooks/useMetaAds.ts:65)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:65` calls `GET /api/meta-ads/relatorios` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6357bb256b1a77d4", "name": "Dangling fetch: GET /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:78)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:78)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:78` calls `GET /api/meta-ads/relatorios/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-338ae5aeecf40b7a", "name": "Dangling fetch: POST /api/meta-ads/upload (src/hooks/useMetaAds.ts:93)", "shortDescription": {"text": "Dangling fetch: POST /api/meta-ads/upload (src/hooks/useMetaAds.ts:93)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:93` calls `POST /api/meta-ads/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/upload`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21821d3ccff3f4f0", "name": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analise (src/hooks/useMetaAds.ts:131)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analise (src/hooks/useMetaAds.ts:131)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:131` calls `GET /api/meta-ads/relatorios/${relatorioId}/analise` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios/<p>/analise`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46eb3a8197e2c23d", "name": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analises (src/hooks/useMetaAds.ts:145)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analises (src/hooks/useMetaAds.ts:145)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:145` calls `GET /api/meta-ads/relatorios/${relatorioId}/analises` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios/<p>/analises`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e1796a713ae3f68", "name": "Dangling fetch: GET /api/meta-ads/analises/${analiseId} (src/hooks/useMetaAds.ts:159)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/analises/${analiseId} (src/hooks/useMetaAds.ts:159)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:159` calls `GET /api/meta-ads/analises/${analiseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/analises/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58a870b16d6b25b0", "name": "Dangling fetch: GET /api/meta-ads/linha/${linhaId}/detalhe (src/hooks/useMetaAds.ts:178)", "shortDescription": {"text": "Dangling fetch: GET /api/meta-ads/linha/${linhaId}/detalhe (src/hooks/useMetaAds.ts:178)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:178` calls `GET /api/meta-ads/linha/${linhaId}/detalhe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/linha/<p>/detalhe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-456fae5159e1817f", "name": "Dangling fetch: POST /api/meta-ads/linha/${linhaId}/analisar (src/hooks/useMetaAds.ts:198)", "shortDescription": {"text": "Dangling fetch: POST /api/meta-ads/linha/${linhaId}/analisar (src/hooks/useMetaAds.ts:198)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:198` calls `POST /api/meta-ads/linha/${linhaId}/analisar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/linha/<p>/analisar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ffe17c1f1f7f4f1", "name": "Dangling fetch: POST /api/meta-ads/relatorios/${relatorioId}/analisar (src/hooks/useMetaAds.ts:213)", "shortDescription": {"text": "Dangling fetch: POST /api/meta-ads/relatorios/${relatorioId}/analisar (src/hooks/useMetaAds.ts:213)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:213` calls `POST /api/meta-ads/relatorios/${relatorioId}/analisar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios/<p>/analisar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83de0d32f1c8a6db", "name": "Dangling fetch: DELETE /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:233)", "shortDescription": {"text": "Dangling fetch: DELETE /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:233)"}, "fullDescription": {"text": "`src/hooks/useMetaAds.ts:233` calls `DELETE /api/meta-ads/relatorios/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/meta-ads/relatorios/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2346fe5fa839d73e", "name": "Dangling fetch: GET /api/termos-premiacao?${p.toString()} (src/hooks/useTermosPremiacao.ts:57)", "shortDescription": {"text": "Dangling fetch: GET /api/termos-premiacao?${p.toString()} (src/hooks/useTermosPremiacao.ts:57)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:57` calls `GET /api/termos-premiacao?${p.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9fd8283dede0bd8", "name": "Dangling fetch: POST /api/termos-premiacao/gerar (src/hooks/useTermosPremiacao.ts:79)", "shortDescription": {"text": "Dangling fetch: POST /api/termos-premiacao/gerar (src/hooks/useTermosPremiacao.ts:79)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:79` calls `POST /api/termos-premiacao/gerar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao/gerar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5707953580b7bc27", "name": "Dangling fetch: POST /api/termos-premiacao/${id}/marcar-enviado (src/hooks/useTermosPremiacao.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/marcar-enviado (src/hooks/useTermosPremiacao.ts:96)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:96` calls `POST /api/termos-premiacao/${id}/marcar-enviado` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao/<p>/marcar-enviado`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e044c463ca13518", "name": "Dangling fetch: POST /api/termos-premiacao/${id}/upload-assinado (src/hooks/useTermosPremiacao.ts:114)", "shortDescription": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/upload-assinado (src/hooks/useTermosPremiacao.ts:114)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:114` calls `POST /api/termos-premiacao/${id}/upload-assinado` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao/<p>/upload-assinado`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2441eba47504f3db", "name": "Dangling fetch: POST /api/termos-premiacao/${id}/aceitar (src/hooks/useTermosPremiacao.ts:132)", "shortDescription": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/aceitar (src/hooks/useTermosPremiacao.ts:132)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:132` calls `POST /api/termos-premiacao/${id}/aceitar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao/<p>/aceitar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9603be9b023324c", "name": "Dangling fetch: DELETE /api/termos-premiacao/${id} (src/hooks/useTermosPremiacao.ts:148)", "shortDescription": {"text": "Dangling fetch: DELETE /api/termos-premiacao/${id} (src/hooks/useTermosPremiacao.ts:148)"}, "fullDescription": {"text": "`src/hooks/useTermosPremiacao.ts:148` calls `DELETE /api/termos-premiacao/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/termos-premiacao/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f44f8513f2e8727", "name": "Dangling fetch: POST /api/campanhas-v2/preview (src/hooks/useCentralCampanhas.ts:62)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/preview (src/hooks/useCentralCampanhas.ts:62)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:62` calls `POST /api/campanhas-v2/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86c7eb0847fa8a69", "name": "Dangling fetch: POST /api/campanhas-v2/disparar (src/hooks/useCentralCampanhas.ts:93)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/disparar (src/hooks/useCentralCampanhas.ts:93)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:93` calls `POST /api/campanhas-v2/disparar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/disparar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dda0a67ccc913ffa", "name": "Dangling fetch: GET /api/campanhas-v2/historico (src/hooks/useCentralCampanhas.ts:125)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-v2/historico (src/hooks/useCentralCampanhas.ts:125)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:125` calls `GET /api/campanhas-v2/historico` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/historico`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fdab73e8db51924e", "name": "Dangling fetch: POST /api/campanhas-v2/contar-publicos (src/hooks/useCentralCampanhas.ts:141)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/contar-publicos (src/hooks/useCentralCampanhas.ts:141)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:141` calls `POST /api/campanhas-v2/contar-publicos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/contar-publicos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46b27e544bf28a61", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/${caminho} (src/hooks/useCentralCampanhas.ts:161)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/${caminho} (src/hooks/useCentralCampanhas.ts:161)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:161` calls `POST /api/campanhas-cloud/${id}/${caminho}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b0adfacdfb52e774", "name": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCentralCampanhas.ts:177)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCentralCampanhas.ts:177)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:177` calls `GET /api/campanhas-cloud/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-11705165e91a3e63", "name": "Dangling fetch: POST /api/campanhas-v2/publico-completo (src/hooks/useCentralCampanhas.ts:190)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/publico-completo (src/hooks/useCentralCampanhas.ts:190)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:190` calls `POST /api/campanhas-v2/publico-completo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/publico-completo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c24616d1d8771846", "name": "Dangling fetch: POST /api/campanhas-v2/sugerir-publico (src/hooks/useCentralCampanhas.ts:206)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-publico (src/hooks/useCentralCampanhas.ts:206)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:206` calls `POST /api/campanhas-v2/sugerir-publico` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/sugerir-publico`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d3e8e99ae51f1a6", "name": "Dangling fetch: GET /api/campanhas-v2/produtos-sugeridos?tipo=${tipo}&limite=12 (src/hooks/useCentralCampanhas.ts:235)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-v2/produtos-sugeridos?tipo=${tipo}&limite=12 (src/hooks/useCentralCampanhas.ts:235)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:235` calls `GET /api/campanhas-v2/produtos-sugeridos?tipo=${tipo}&limite=12` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/produtos-sugeridos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9fc4adc70d4acb97", "name": "Dangling fetch: POST /api/campanhas-v2/sugerir-variaveis (src/hooks/useCentralCampanhas.ts:249)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-variaveis (src/hooks/useCentralCampanhas.ts:249)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:249` calls `POST /api/campanhas-v2/sugerir-variaveis` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/sugerir-variaveis`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9547aeb9ba7f1c4", "name": "Dangling fetch: POST /api/campanhas-v2/sugerir-mensagem (src/hooks/useCentralCampanhas.ts:265)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-mensagem (src/hooks/useCentralCampanhas.ts:265)"}, "fullDescription": {"text": "`src/hooks/useCentralCampanhas.ts:265` calls `POST /api/campanhas-v2/sugerir-mensagem` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-v2/sugerir-mensagem`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73ecc173bb0107e3", "name": "Dangling fetch: GET /api/intents/stats (src/hooks/useIntents.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /api/intents/stats (src/hooks/useIntents.ts:141)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:141` calls `GET /api/intents/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a23fbd5bf967e3d", "name": "Dangling fetch: POST /api/intents (src/hooks/useIntents.ts:155)", "shortDescription": {"text": "Dangling fetch: POST /api/intents (src/hooks/useIntents.ts:155)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:155` calls `POST /api/intents` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a498ebfc65e350b9", "name": "Dangling fetch: PATCH /api/intents/${id} (src/hooks/useIntents.ts:175)", "shortDescription": {"text": "Dangling fetch: PATCH /api/intents/${id} (src/hooks/useIntents.ts:175)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:175` calls `PATCH /api/intents/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95bb9c43135cce08", "name": "Dangling fetch: POST /api/intents/${id}/${action} (src/hooks/useIntents.ts:196)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/${id}/${action} (src/hooks/useIntents.ts:196)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:196` calls `POST /api/intents/${id}/${action}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e315a998c3a3057", "name": "Dangling fetch: GET /api/intents/sugestoes-vinculo (src/hooks/useIntents.ts:243)", "shortDescription": {"text": "Dangling fetch: GET /api/intents/sugestoes-vinculo (src/hooks/useIntents.ts:243)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:243` calls `GET /api/intents/sugestoes-vinculo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/sugestoes-vinculo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7d50113096b5b12", "name": "Dangling fetch: POST /api/intents/vincular-lote (src/hooks/useIntents.ts:257)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/vincular-lote (src/hooks/useIntents.ts:257)"}, "fullDescription": {"text": "`src/hooks/useIntents.ts:257` calls `POST /api/intents/vincular-lote` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/vincular-lote`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-292ddb8734064990", "name": "Dangling fetch: GET /api/avisos?${params.toString()} (src/hooks/useAvisos.ts:68)", "shortDescription": {"text": "Dangling fetch: GET /api/avisos?${params.toString()} (src/hooks/useAvisos.ts:68)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:68` calls `GET /api/avisos?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-494410987f4ef119", "name": "Dangling fetch: GET /api/avisos/unread-count (src/hooks/useAvisos.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /api/avisos/unread-count (src/hooks/useAvisos.ts:84)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:84` calls `GET /api/avisos/unread-count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/unread-count`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a815b972e4bdc708", "name": "Dangling fetch: POST /api/avisos (src/hooks/useAvisos.ts:101)", "shortDescription": {"text": "Dangling fetch: POST /api/avisos (src/hooks/useAvisos.ts:101)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:101` calls `POST /api/avisos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60c55c5635b51647", "name": "Dangling fetch: PATCH /api/avisos/${id} (src/hooks/useAvisos.ts:121)", "shortDescription": {"text": "Dangling fetch: PATCH /api/avisos/${id} (src/hooks/useAvisos.ts:121)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:121` calls `PATCH /api/avisos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55f5a62c29e6934b", "name": "Dangling fetch: POST /api/avisos/${id}/${action} (src/hooks/useAvisos.ts:141)", "shortDescription": {"text": "Dangling fetch: POST /api/avisos/${id}/${action} (src/hooks/useAvisos.ts:141)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:141` calls `POST /api/avisos/${id}/${action}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f9f04d7ce9191bd", "name": "Dangling fetch: POST /api/avisos/marcar-todos-lidos (src/hooks/useAvisos.ts:165)", "shortDescription": {"text": "Dangling fetch: POST /api/avisos/marcar-todos-lidos (src/hooks/useAvisos.ts:165)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:165` calls `POST /api/avisos/marcar-todos-lidos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/marcar-todos-lidos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95469e25789c7f0a", "name": "Dangling fetch: GET /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:194)", "shortDescription": {"text": "Dangling fetch: GET /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:194)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:194` calls `GET /api/avisos/${avisoId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72a65627bfc5c5b9", "name": "Dangling fetch: POST /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:208)", "shortDescription": {"text": "Dangling fetch: POST /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:208)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:208` calls `POST /api/avisos/${avisoId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b91cdbd6e2afefc", "name": "Dangling fetch: DELETE /api/avisos/${id} (src/hooks/useAvisos.ts:227)", "shortDescription": {"text": "Dangling fetch: DELETE /api/avisos/${id} (src/hooks/useAvisos.ts:227)"}, "fullDescription": {"text": "`src/hooks/useAvisos.ts:227` calls `DELETE /api/avisos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c60fb203581ac8c9", "name": "Dangling fetch: GET /api/quotes/${id} (src/hooks/useQuotes.ts:65)", "shortDescription": {"text": "Dangling fetch: GET /api/quotes/${id} (src/hooks/useQuotes.ts:65)"}, "fullDescription": {"text": "`src/hooks/useQuotes.ts:65` calls `GET /api/quotes/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61ed42035d509463", "name": "Dangling fetch: DELETE /api/quotes/${id} (src/hooks/useQuotes.ts:97)", "shortDescription": {"text": "Dangling fetch: DELETE /api/quotes/${id} (src/hooks/useQuotes.ts:97)"}, "fullDescription": {"text": "`src/hooks/useQuotes.ts:97` calls `DELETE /api/quotes/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84d653786a5cda43", "name": "Dangling fetch: POST /api/quotes/${id}/send (src/hooks/useQuotes.ts:109)", "shortDescription": {"text": "Dangling fetch: POST /api/quotes/${id}/send (src/hooks/useQuotes.ts:109)"}, "fullDescription": {"text": "`src/hooks/useQuotes.ts:109` calls `POST /api/quotes/${id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-11e51a83bef4d4c4", "name": "Dangling fetch: PATCH /api/quotes/${id} (src/hooks/useQuotes.ts:123)", "shortDescription": {"text": "Dangling fetch: PATCH /api/quotes/${id} (src/hooks/useQuotes.ts:123)"}, "fullDescription": {"text": "`src/hooks/useQuotes.ts:123` calls `PATCH /api/quotes/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2bf59f68b393c5b5", "name": "Dangling fetch: GET /api/audit/terms/status (src/hooks/useTermsAcceptance.ts:12)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/terms/status (src/hooks/useTermsAcceptance.ts:12)"}, "fullDescription": {"text": "`src/hooks/useTermsAcceptance.ts:12` calls `GET /api/audit/terms/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/terms/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9935fd52ca534da", "name": "Dangling fetch: POST /api/audit/terms/accept (src/hooks/useTermsAcceptance.ts:34)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/terms/accept (src/hooks/useTermsAcceptance.ts:34)"}, "fullDescription": {"text": "`src/hooks/useTermsAcceptance.ts:34` calls `POST /api/audit/terms/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/terms/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-855e8235618277ec", "name": "Dangling fetch: GET /api/nfs-boletos?${qs(filtros)} (src/hooks/useNfsBoletos.ts:64)", "shortDescription": {"text": "Dangling fetch: GET /api/nfs-boletos?${qs(filtros)} (src/hooks/useNfsBoletos.ts:64)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:64` calls `GET /api/nfs-boletos?${qs(filtros)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfdc2f8b4519c395", "name": "Dangling fetch: GET /api/nfs-boletos/resumo (src/hooks/useNfsBoletos.ts:77)", "shortDescription": {"text": "Dangling fetch: GET /api/nfs-boletos/resumo (src/hooks/useNfsBoletos.ts:77)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:77` calls `GET /api/nfs-boletos/resumo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/resumo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6617dcc0928ecf3", "name": "Dangling fetch: GET /api/nfs-boletos/meta/fornecedores (src/hooks/useNfsBoletos.ts:91)", "shortDescription": {"text": "Dangling fetch: GET /api/nfs-boletos/meta/fornecedores (src/hooks/useNfsBoletos.ts:91)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:91` calls `GET /api/nfs-boletos/meta/fornecedores` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/meta/fornecedores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edcd341d4948aebf", "name": "Dangling fetch: POST /api/nfs-boletos (src/hooks/useNfsBoletos.ts:104)", "shortDescription": {"text": "Dangling fetch: POST /api/nfs-boletos (src/hooks/useNfsBoletos.ts:104)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:104` calls `POST /api/nfs-boletos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c78d143e978b987", "name": "Dangling fetch: PATCH /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:124)", "shortDescription": {"text": "Dangling fetch: PATCH /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:124)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:124` calls `PATCH /api/nfs-boletos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e0781b1e55236fd", "name": "Dangling fetch: POST /api/nfs-boletos/${id}/marcar-pago (src/hooks/useNfsBoletos.ts:144)", "shortDescription": {"text": "Dangling fetch: POST /api/nfs-boletos/${id}/marcar-pago (src/hooks/useNfsBoletos.ts:144)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:144` calls `POST /api/nfs-boletos/${id}/marcar-pago` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/<p>/marcar-pago`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fae7bca719f271db", "name": "Dangling fetch: DELETE /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:164)", "shortDescription": {"text": "Dangling fetch: DELETE /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:164)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:164` calls `DELETE /api/nfs-boletos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d51182e9919a57b", "name": "Dangling fetch: POST /api/nfs-boletos/${id}/attach (src/hooks/useNfsBoletos.ts:184)", "shortDescription": {"text": "Dangling fetch: POST /api/nfs-boletos/${id}/attach (src/hooks/useNfsBoletos.ts:184)"}, "fullDescription": {"text": "`src/hooks/useNfsBoletos.ts:184` calls `POST /api/nfs-boletos/${id}/attach` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nfs-boletos/<p>/attach`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e8149c9d79a88c4", "name": "Dangling fetch: GET /api/chat/channels (src/hooks/useChat.ts:44)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/channels (src/hooks/useChat.ts:44)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:44` calls `GET /api/chat/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8979421ed5081f3d", "name": "Dangling fetch: GET /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:59)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:59)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:59` calls `GET /api/chat/channels/${slug}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dfa3e0f47742eab", "name": "Dangling fetch: POST /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:77)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:77)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:77` calls `POST /api/chat/channels/${slug}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-471fe9c55eb806f9", "name": "Dangling fetch: POST /api/chat/channels/${slug}/read (src/hooks/useChat.ts:97)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/channels/${slug}/read (src/hooks/useChat.ts:97)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:97` calls `POST /api/chat/channels/${slug}/read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/channels/<p>/read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2a4fa18ca7666aa", "name": "Dangling fetch: GET /api/chat/unread-counts (src/hooks/useChat.ts:115)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/unread-counts (src/hooks/useChat.ts:115)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:115` calls `GET /api/chat/unread-counts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/unread-counts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3de05390e748294", "name": "Dangling fetch: POST /api/chat/channels (src/hooks/useChat.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/channels (src/hooks/useChat.ts:130)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:130` calls `POST /api/chat/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-daf19ca6b54db0f1", "name": "Dangling fetch: POST /api/chat/dms (src/hooks/useChat.ts:147)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/dms (src/hooks/useChat.ts:147)"}, "fullDescription": {"text": "`src/hooks/useChat.ts:147` calls `POST /api/chat/dms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/dms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99f2fd8310d01b16", "name": "Dangling fetch: POST /api/push/subscribe (src/hooks/usePushNotifications.ts:67)", "shortDescription": {"text": "Dangling fetch: POST /api/push/subscribe (src/hooks/usePushNotifications.ts:67)"}, "fullDescription": {"text": "`src/hooks/usePushNotifications.ts:67` calls `POST /api/push/subscribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/push/subscribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f6377dbf9aeb149", "name": "Dangling fetch: POST /api/push/unsubscribe (src/hooks/usePushNotifications.ts:94)", "shortDescription": {"text": "Dangling fetch: POST /api/push/unsubscribe (src/hooks/usePushNotifications.ts:94)"}, "fullDescription": {"text": "`src/hooks/usePushNotifications.ts:94` calls `POST /api/push/unsubscribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/push/unsubscribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-684332bd37e5e405", "name": "Dangling fetch: POST /api/push/test (src/hooks/usePushNotifications.ts:109)", "shortDescription": {"text": "Dangling fetch: POST /api/push/test (src/hooks/usePushNotifications.ts:109)"}, "fullDescription": {"text": "`src/hooks/usePushNotifications.ts:109` calls `POST /api/push/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/push/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f11597e8d1c3bc82", "name": "Dangling fetch: GET /api/tasks${path} (src/hooks/useTasksApi.ts:14)", "shortDescription": {"text": "Dangling fetch: GET /api/tasks${path} (src/hooks/useTasksApi.ts:14)"}, "fullDescription": {"text": "`src/hooks/useTasksApi.ts:14` calls `GET /api/tasks${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c74f1f02d441187", "name": "Dangling fetch: GET /api/contracts/${id} (src/hooks/useContracts.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /api/contracts/${id} (src/hooks/useContracts.ts:61)"}, "fullDescription": {"text": "`src/hooks/useContracts.ts:61` calls `GET /api/contracts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16a519fe150dce13", "name": "Dangling fetch: GET /api/contracts/clausulas/${tipo} (src/hooks/useContracts.ts:74)", "shortDescription": {"text": "Dangling fetch: GET /api/contracts/clausulas/${tipo} (src/hooks/useContracts.ts:74)"}, "fullDescription": {"text": "`src/hooks/useContracts.ts:74` calls `GET /api/contracts/clausulas/${tipo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/clausulas/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19253014b0a20cf6", "name": "Dangling fetch: POST /api/contracts/${id}/send (src/hooks/useContracts.ts:105)", "shortDescription": {"text": "Dangling fetch: POST /api/contracts/${id}/send (src/hooks/useContracts.ts:105)"}, "fullDescription": {"text": "`src/hooks/useContracts.ts:105` calls `POST /api/contracts/${id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-402e2788c6b1c23d", "name": "Dangling fetch: DELETE /api/contracts/${id} (src/hooks/useContracts.ts:119)", "shortDescription": {"text": "Dangling fetch: DELETE /api/contracts/${id} (src/hooks/useContracts.ts:119)"}, "fullDescription": {"text": "`src/hooks/useContracts.ts:119` calls `DELETE /api/contracts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e352f9bc6cd3de43", "name": "Dangling fetch: GET /api/ia-painel/atual (src/hooks/useIaPainel.ts:39)", "shortDescription": {"text": "Dangling fetch: GET /api/ia-painel/atual (src/hooks/useIaPainel.ts:39)"}, "fullDescription": {"text": "`src/hooks/useIaPainel.ts:39` calls `GET /api/ia-painel/atual` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-painel/atual`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c0b55b68060397e", "name": "Dangling fetch: POST /api/ia-painel/gerar (src/hooks/useIaPainel.ts:52)", "shortDescription": {"text": "Dangling fetch: POST /api/ia-painel/gerar (src/hooks/useIaPainel.ts:52)"}, "fullDescription": {"text": "`src/hooks/useIaPainel.ts:52` calls `POST /api/ia-painel/gerar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-painel/gerar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a96b78a2cdbce97", "name": "Dangling fetch: GET /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:70)", "shortDescription": {"text": "Dangling fetch: GET /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:70)"}, "fullDescription": {"text": "`src/hooks/useIaPainel.ts:70` calls `GET /api/ia-painel/item/${itemKey}/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-painel/item/<p>/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-942415cf9a00f7d4", "name": "Dangling fetch: POST /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:83)", "shortDescription": {"text": "Dangling fetch: POST /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:83)"}, "fullDescription": {"text": "`src/hooks/useIaPainel.ts:83` calls `POST /api/ia-painel/item/${itemKey}/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-painel/item/<p>/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32241814658f7fac", "name": "Dangling fetch: GET /api/financeiro/analise?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/analise?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:71)"}, "fullDescription": {"text": "`src/hooks/useFinanceiroAnalise.ts:71` calls `GET /api/financeiro/analise?${qsPeriodo(p)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/analise`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-178663d5c311a7a5", "name": "Dangling fetch: POST /api/financeiro/analisar (src/hooks/useFinanceiroAnalise.ts:84)", "shortDescription": {"text": "Dangling fetch: POST /api/financeiro/analisar (src/hooks/useFinanceiroAnalise.ts:84)"}, "fullDescription": {"text": "`src/hooks/useFinanceiroAnalise.ts:84` calls `POST /api/financeiro/analisar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/analisar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1cd71451b73b6f7", "name": "Dangling fetch: GET /api/financeiro/analises?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:107)", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/analises?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:107)"}, "fullDescription": {"text": "`src/hooks/useFinanceiroAnalise.ts:107` calls `GET /api/financeiro/analises?${qsPeriodo(p)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/analises`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a9fbf867a65b5e1", "name": "Dangling fetch: GET /api/financeiro/analise/${id} (src/hooks/useFinanceiroAnalise.ts:121)", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/analise/${id} (src/hooks/useFinanceiroAnalise.ts:121)"}, "fullDescription": {"text": "`src/hooks/useFinanceiroAnalise.ts:121` calls `GET /api/financeiro/analise/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/analise/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b3f938adc6ae479", "name": "Dangling fetch: GET /api/notifications/counts (src/hooks/useNotificationCounts.ts:45)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications/counts (src/hooks/useNotificationCounts.ts:45)"}, "fullDescription": {"text": "`src/hooks/useNotificationCounts.ts:45` calls `GET /api/notifications/counts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications/counts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2bd300cb072f064b", "name": "Dangling fetch: POST /api/notifications/mark-seen (src/hooks/useNotificationCounts.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications/mark-seen (src/hooks/useNotificationCounts.ts:96)"}, "fullDescription": {"text": "`src/hooks/useNotificationCounts.ts:96` calls `POST /api/notifications/mark-seen` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications/mark-seen`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22db6d40b61e0859", "name": "Dangling fetch: GET /api/metas-mensais/${lojaId}/${ano}/${mes} (src/hooks/useMetasMensais.ts:66)", "shortDescription": {"text": "Dangling fetch: GET /api/metas-mensais/${lojaId}/${ano}/${mes} (src/hooks/useMetasMensais.ts:66)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:66` calls `GET /api/metas-mensais/${lojaId}/${ano}/${mes}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/<p>/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b4e54103aed524f", "name": "Dangling fetch: GET /api/metas-mensais/lista?${params.toString()} (src/hooks/useMetasMensais.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/metas-mensais/lista?${params.toString()} (src/hooks/useMetasMensais.ts:82)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:82` calls `GET /api/metas-mensais/lista?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/lista`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60f624e1d8b00d9c", "name": "Dangling fetch: POST /api/metas-mensais (src/hooks/useMetasMensais.ts:101)", "shortDescription": {"text": "Dangling fetch: POST /api/metas-mensais (src/hooks/useMetasMensais.ts:101)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:101` calls `POST /api/metas-mensais` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25a6544cf54b059b", "name": "Dangling fetch: GET /api/metas-mensais/limpar/preview?${params.toString()} (src/hooks/useMetasMensais.ts:143)", "shortDescription": {"text": "Dangling fetch: GET /api/metas-mensais/limpar/preview?${params.toString()} (src/hooks/useMetasMensais.ts:143)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:143` calls `GET /api/metas-mensais/limpar/preview?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/limpar/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9365c592b8adb13", "name": "Dangling fetch: POST /api/metas-mensais/limpar/executar (src/hooks/useMetasMensais.ts:157)", "shortDescription": {"text": "Dangling fetch: POST /api/metas-mensais/limpar/executar (src/hooks/useMetasMensais.ts:157)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:157` calls `POST /api/metas-mensais/limpar/executar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/limpar/executar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-057b5e10f5fbedd1", "name": "Dangling fetch: POST /api/metas-mensais/sugerir-ia (src/hooks/useMetasMensais.ts:198)", "shortDescription": {"text": "Dangling fetch: POST /api/metas-mensais/sugerir-ia (src/hooks/useMetasMensais.ts:198)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:198` calls `POST /api/metas-mensais/sugerir-ia` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/sugerir-ia`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ffec609c09dbf6e", "name": "Dangling fetch: DELETE /api/metas-mensais/${loja_id}/${ano}/${mes} (src/hooks/useMetasMensais.ts:213)", "shortDescription": {"text": "Dangling fetch: DELETE /api/metas-mensais/${loja_id}/${ano}/${mes} (src/hooks/useMetasMensais.ts:213)"}, "fullDescription": {"text": "`src/hooks/useMetasMensais.ts:213` calls `DELETE /api/metas-mensais/${loja_id}/${ano}/${mes}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/<p>/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f97ec1474252b139", "name": "Dangling fetch: GET /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:13)", "shortDescription": {"text": "Dangling fetch: GET /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:13)"}, "fullDescription": {"text": "`src/hooks/useIaContexto.ts:13` calls `GET /api/ia-contexto-empresa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-contexto-empresa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c51fc15831934e5", "name": "Dangling fetch: POST /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:26)", "shortDescription": {"text": "Dangling fetch: POST /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:26)"}, "fullDescription": {"text": "`src/hooks/useIaContexto.ts:26` calls `POST /api/ia-contexto-empresa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ia-contexto-empresa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94c189e4ed328d34", "name": "Dangling fetch: GET /api/campanhas-cloud/categorias-disponiveis (src/hooks/useCampanhasCloud.ts:45)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/categorias-disponiveis (src/hooks/useCampanhasCloud.ts:45)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:45` calls `GET /api/campanhas-cloud/categorias-disponiveis` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/categorias-disponiveis`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b3799be130246c3", "name": "Dangling fetch: GET /api/campanhas-cloud/diag (src/hooks/useCampanhasCloud.ts:134)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/diag (src/hooks/useCampanhasCloud.ts:134)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:134` calls `GET /api/campanhas-cloud/diag` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/diag`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c0dbfab3d795bbe", "name": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCampanhasCloud.ts:147)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCampanhasCloud.ts:147)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:147` calls `GET /api/campanhas-cloud/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6e5f8a30b8ecaed", "name": "Dangling fetch: POST /api/campanhas-cloud/preview (src/hooks/useCampanhasCloud.ts:159)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/preview (src/hooks/useCampanhasCloud.ts:159)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:159` calls `POST /api/campanhas-cloud/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60b1bbfce8a5be01", "name": "Dangling fetch: GET /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:174)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:174)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:174` calls `GET /api/campanhas-cloud` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0554bb4a40925708", "name": "Dangling fetch: GET /api/campanhas-cloud/${id}/metricas (src/hooks/useCampanhasCloud.ts:207)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id}/metricas (src/hooks/useCampanhasCloud.ts:207)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:207` calls `GET /api/campanhas-cloud/${id}/metricas` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/metricas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3acd28d1334dd0f3", "name": "Dangling fetch: GET /api/campanhas-cloud/${id}/erros (src/hooks/useCampanhasCloud.ts:225)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id}/erros (src/hooks/useCampanhasCloud.ts:225)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:225` calls `GET /api/campanhas-cloud/${id}/erros` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/erros`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9b4dc2b7e874932", "name": "Dangling fetch: GET /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:239)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:239)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:239` calls `GET /api/campanhas-cloud/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e549ccf7b1100445", "name": "Dangling fetch: POST /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:260)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:260)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:260` calls `POST /api/campanhas-cloud` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7e1fec48c4dd593", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/cancelar (src/hooks/useCampanhasCloud.ts:277)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/cancelar (src/hooks/useCampanhasCloud.ts:277)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:277` calls `POST /api/campanhas-cloud/${id}/cancelar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/cancelar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a29b7f0ef3e68068", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/disparar-agora (src/hooks/useCampanhasCloud.ts:293)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/disparar-agora (src/hooks/useCampanhasCloud.ts:293)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:293` calls `POST /api/campanhas-cloud/${id}/disparar-agora` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/disparar-agora`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13ba8942e863b96d", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/pausar (src/hooks/useCampanhasCloud.ts:309)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/pausar (src/hooks/useCampanhasCloud.ts:309)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:309` calls `POST /api/campanhas-cloud/${id}/pausar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/pausar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-939ec226b0961caf", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/retomar (src/hooks/useCampanhasCloud.ts:325)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/retomar (src/hooks/useCampanhasCloud.ts:325)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:325` calls `POST /api/campanhas-cloud/${id}/retomar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/retomar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c9426110d9987b2", "name": "Dangling fetch: PATCH /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:349)", "shortDescription": {"text": "Dangling fetch: PATCH /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:349)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:349` calls `PATCH /api/campanhas-cloud/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f6630ffad00507f3", "name": "Dangling fetch: DELETE /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:369)", "shortDescription": {"text": "Dangling fetch: DELETE /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:369)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:369` calls `DELETE /api/campanhas-cloud/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f1683e70fcee93d", "name": "Dangling fetch: POST /api/campanhas-cloud/${id}/duplicar (src/hooks/useCampanhasCloud.ts:385)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/duplicar (src/hooks/useCampanhasCloud.ts:385)"}, "fullDescription": {"text": "`src/hooks/useCampanhasCloud.ts:385` calls `POST /api/campanhas-cloud/${id}/duplicar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-cloud/<p>/duplicar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25a9eafcc7b7aabd", "name": "Dangling fetch: GET /api/compras/${id} (src/hooks/useCompras.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/compras/${id} (src/hooks/useCompras.ts:82)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:82` calls `GET /api/compras/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27e225ba7c77f580", "name": "Dangling fetch: POST /api/compras/preview-xlsx (src/hooks/useCompras.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/compras/preview-xlsx (src/hooks/useCompras.ts:96)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:96` calls `POST /api/compras/preview-xlsx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/preview-xlsx`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24de5c354bd1ed18", "name": "Dangling fetch: POST /api/compras (src/hooks/useCompras.ts:112)", "shortDescription": {"text": "Dangling fetch: POST /api/compras (src/hooks/useCompras.ts:112)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:112` calls `POST /api/compras` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24a8d7e55c4b3ddc", "name": "Dangling fetch: PATCH /api/compras/itens/${itemId} (src/hooks/useCompras.ts:166)", "shortDescription": {"text": "Dangling fetch: PATCH /api/compras/itens/${itemId} (src/hooks/useCompras.ts:166)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:166` calls `PATCH /api/compras/itens/${itemId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/itens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad30c2e6061c447a", "name": "Dangling fetch: DELETE /api/compras/itens/${itemId} (src/hooks/useCompras.ts:186)", "shortDescription": {"text": "Dangling fetch: DELETE /api/compras/itens/${itemId} (src/hooks/useCompras.ts:186)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:186` calls `DELETE /api/compras/itens/${itemId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/itens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a784c07a1de6fc48", "name": "Dangling fetch: GET /api/compras/${pedidoId}/nfes (src/hooks/useCompras.ts:206)", "shortDescription": {"text": "Dangling fetch: GET /api/compras/${pedidoId}/nfes (src/hooks/useCompras.ts:206)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:206` calls `GET /api/compras/${pedidoId}/nfes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/<p>/nfes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edba4d154b323b09", "name": "Dangling fetch: POST /api/compras/${pedidoId}/igualar-qtd-nfe (src/hooks/useCompras.ts:219)", "shortDescription": {"text": "Dangling fetch: POST /api/compras/${pedidoId}/igualar-qtd-nfe (src/hooks/useCompras.ts:219)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:219` calls `POST /api/compras/${pedidoId}/igualar-qtd-nfe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/<p>/igualar-qtd-nfe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9724ca81df13f3c5", "name": "Dangling fetch: POST /api/compras/nfes/${nfeId}/reconferir (src/hooks/useCompras.ts:238)", "shortDescription": {"text": "Dangling fetch: POST /api/compras/nfes/${nfeId}/reconferir (src/hooks/useCompras.ts:238)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:238` calls `POST /api/compras/nfes/${nfeId}/reconferir` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/nfes/<p>/reconferir`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c3d850d05035681", "name": "Dangling fetch: POST /api/compras/${pedidoId}/anexar-nfe (src/hooks/useCompras.ts:258)", "shortDescription": {"text": "Dangling fetch: POST /api/compras/${pedidoId}/anexar-nfe (src/hooks/useCompras.ts:258)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:258` calls `POST /api/compras/${pedidoId}/anexar-nfe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/<p>/anexar-nfe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be42d86deff900d7", "name": "Dangling fetch: PATCH /api/compras/${id} (src/hooks/useCompras.ts:277)", "shortDescription": {"text": "Dangling fetch: PATCH /api/compras/${id} (src/hooks/useCompras.ts:277)"}, "fullDescription": {"text": "`src/hooks/useCompras.ts:277` calls `PATCH /api/compras/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compras/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a0ae577b6cc5a7f", "name": "Dangling fetch: GET /api/team/me (src/hooks/useTeamMember.ts:30)", "shortDescription": {"text": "Dangling fetch: GET /api/team/me (src/hooks/useTeamMember.ts:30)"}, "fullDescription": {"text": "`src/hooks/useTeamMember.ts:30` calls `GET /api/team/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf4fb43a818e6dfe", "name": "Dangling fetch: GET /api/insumos (src/hooks/useInsumos.ts:49)", "shortDescription": {"text": "Dangling fetch: GET /api/insumos (src/hooks/useInsumos.ts:49)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:49` calls `GET /api/insumos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9881d6f8e4d86131", "name": "Dangling fetch: POST /api/insumos (src/hooks/useInsumos.ts:63)", "shortDescription": {"text": "Dangling fetch: POST /api/insumos (src/hooks/useInsumos.ts:63)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:63` calls `POST /api/insumos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8045741266d6938", "name": "Dangling fetch: PATCH /api/insumos/${id} (src/hooks/useInsumos.ts:80)", "shortDescription": {"text": "Dangling fetch: PATCH /api/insumos/${id} (src/hooks/useInsumos.ts:80)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:80` calls `PATCH /api/insumos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d452303b68f01f12", "name": "Dangling fetch: DELETE /api/insumos/${id} (src/hooks/useInsumos.ts:97)", "shortDescription": {"text": "Dangling fetch: DELETE /api/insumos/${id} (src/hooks/useInsumos.ts:97)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:97` calls `DELETE /api/insumos/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c09584f2ce3d55a9", "name": "Dangling fetch: POST /api/insumos/contagens (src/hooks/useInsumos.ts:113)", "shortDescription": {"text": "Dangling fetch: POST /api/insumos/contagens (src/hooks/useInsumos.ts:113)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:113` calls `POST /api/insumos/contagens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos/contagens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a70cf30cfb27dbc", "name": "Dangling fetch: GET /api/insumos/contagens?${params.toString()} (src/hooks/useInsumos.ts:133)", "shortDescription": {"text": "Dangling fetch: GET /api/insumos/contagens?${params.toString()} (src/hooks/useInsumos.ts:133)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:133` calls `GET /api/insumos/contagens?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos/contagens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb51abf4c8f7fc70", "name": "Dangling fetch: DELETE /api/insumos/contagens/${id} (src/hooks/useInsumos.ts:146)", "shortDescription": {"text": "Dangling fetch: DELETE /api/insumos/contagens/${id} (src/hooks/useInsumos.ts:146)"}, "fullDescription": {"text": "`src/hooks/useInsumos.ts:146` calls `DELETE /api/insumos/contagens/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/insumos/contagens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2ca423ee3ff41e1", "name": "Dangling fetch: GET /api/produtos-analises/analise?${qsP(p)} (src/hooks/useProdutosAnalise.ts:47)", "shortDescription": {"text": "Dangling fetch: GET /api/produtos-analises/analise?${qsP(p)} (src/hooks/useProdutosAnalise.ts:47)"}, "fullDescription": {"text": "`src/hooks/useProdutosAnalise.ts:47` calls `GET /api/produtos-analises/analise?${qsP(p)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/produtos-analises/analise`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c23cabb188310cb5", "name": "Dangling fetch: POST /api/produtos-analises/analisar (src/hooks/useProdutosAnalise.ts:60)", "shortDescription": {"text": "Dangling fetch: POST /api/produtos-analises/analisar (src/hooks/useProdutosAnalise.ts:60)"}, "fullDescription": {"text": "`src/hooks/useProdutosAnalise.ts:60` calls `POST /api/produtos-analises/analisar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/produtos-analises/analisar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d7ba29590771da4", "name": "Dangling fetch: GET /api/produtos-analises/analises?${qsP(p)} (src/hooks/useProdutosAnalise.ts:80)", "shortDescription": {"text": "Dangling fetch: GET /api/produtos-analises/analises?${qsP(p)} (src/hooks/useProdutosAnalise.ts:80)"}, "fullDescription": {"text": "`src/hooks/useProdutosAnalise.ts:80` calls `GET /api/produtos-analises/analises?${qsP(p)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/produtos-analises/analises`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b178fd97771549ba", "name": "Dangling fetch: GET /api/musico/band (src/hooks/useSinapseMusico.ts:31)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/band (src/hooks/useSinapseMusico.ts:31)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:31` calls `GET /api/musico/band` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/band`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-348a70a101019c59", "name": "Dangling fetch: DELETE /api/musico/band/${id} (src/hooks/useSinapseMusico.ts:59)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/band/${id} (src/hooks/useSinapseMusico.ts:59)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:59` calls `DELETE /api/musico/band/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/band/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87c5e975bca91991", "name": "Dangling fetch: GET /api/musico/equipment (src/hooks/useSinapseMusico.ts:89)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/equipment (src/hooks/useSinapseMusico.ts:89)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:89` calls `GET /api/musico/equipment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/equipment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df4a626154c21386", "name": "Dangling fetch: DELETE /api/musico/equipment/${id} (src/hooks/useSinapseMusico.ts:117)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/equipment/${id} (src/hooks/useSinapseMusico.ts:117)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:117` calls `DELETE /api/musico/equipment/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/equipment/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-809c1fb4c672d6ec", "name": "Dangling fetch: GET /api/musico/songs (src/hooks/useSinapseMusico.ts:146)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/songs (src/hooks/useSinapseMusico.ts:146)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:146` calls `GET /api/musico/songs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/songs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3cc507dd4b39b908", "name": "Dangling fetch: DELETE /api/musico/songs/${id} (src/hooks/useSinapseMusico.ts:174)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/songs/${id} (src/hooks/useSinapseMusico.ts:174)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:174` calls `DELETE /api/musico/songs/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/songs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71704c7af98fa069", "name": "Dangling fetch: GET /api/musico/services (src/hooks/useSinapseMusico.ts:200)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/services (src/hooks/useSinapseMusico.ts:200)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:200` calls `GET /api/musico/services` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/services`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbe4b2e7f8f77eb3", "name": "Dangling fetch: DELETE /api/musico/services/${id} (src/hooks/useSinapseMusico.ts:228)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/services/${id} (src/hooks/useSinapseMusico.ts:228)"}, "fullDescription": {"text": "`src/hooks/useSinapseMusico.ts:228` calls `DELETE /api/musico/services/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/services/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-388541458210ad90", "name": "Dangling fetch: GET /api/musico/playlists (src/hooks/usePlaylists.ts:40)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/playlists (src/hooks/usePlaylists.ts:40)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:40` calls `GET /api/musico/playlists` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/playlists`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4afedef1ed8b5693", "name": "Dangling fetch: GET /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:52)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:52)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:52` calls `GET /api/musico/playlists/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/playlists/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-701b3663dc18dd16", "name": "Dangling fetch: DELETE /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:81)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:81)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:81` calls `DELETE /api/musico/playlists/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/playlists/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b6c1268ea7e2907", "name": "Dangling fetch: PUT /api/musico/playlists/${playlistId}/songs (src/hooks/usePlaylists.ts:93)", "shortDescription": {"text": "Dangling fetch: PUT /api/musico/playlists/${playlistId}/songs (src/hooks/usePlaylists.ts:93)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:93` calls `PUT /api/musico/playlists/${playlistId}/songs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/playlists/<p>/songs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a546bbcb1978eaa", "name": "Dangling fetch: GET /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:122)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:122)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:122` calls `GET /api/musico/songs/${songId}/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/songs/<p>/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2c90e9a927a2a67", "name": "Dangling fetch: POST /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:139)", "shortDescription": {"text": "Dangling fetch: POST /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:139)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:139` calls `POST /api/musico/songs/${songId}/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/songs/<p>/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5038061e55e75f76", "name": "Dangling fetch: DELETE /api/musico/songs/files/${fileId} (src/hooks/usePlaylists.ts:157)", "shortDescription": {"text": "Dangling fetch: DELETE /api/musico/songs/files/${fileId} (src/hooks/usePlaylists.ts:157)"}, "fullDescription": {"text": "`src/hooks/usePlaylists.ts:157` calls `DELETE /api/musico/songs/files/${fileId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/songs/files/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff3091d4a0e82c18", "name": "Dangling fetch: GET /api/quick-replies (src/hooks/useQuickReplies.ts:30)", "shortDescription": {"text": "Dangling fetch: GET /api/quick-replies (src/hooks/useQuickReplies.ts:30)"}, "fullDescription": {"text": "`src/hooks/useQuickReplies.ts:30` calls `GET /api/quick-replies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quick-replies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a8bfbe12ba29494", "name": "Dangling fetch: POST /api/quick-replies (src/hooks/useQuickReplies.ts:47)", "shortDescription": {"text": "Dangling fetch: POST /api/quick-replies (src/hooks/useQuickReplies.ts:47)"}, "fullDescription": {"text": "`src/hooks/useQuickReplies.ts:47` calls `POST /api/quick-replies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quick-replies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e867ab57b287100", "name": "Dangling fetch: PATCH /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:68)", "shortDescription": {"text": "Dangling fetch: PATCH /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:68)"}, "fullDescription": {"text": "`src/hooks/useQuickReplies.ts:68` calls `PATCH /api/quick-replies/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quick-replies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8024dfd16ab6153", "name": "Dangling fetch: DELETE /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:89)", "shortDescription": {"text": "Dangling fetch: DELETE /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:89)"}, "fullDescription": {"text": "`src/hooks/useQuickReplies.ts:89` calls `DELETE /api/quick-replies/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quick-replies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fdc2cbc81c7ddd6", "name": "Dangling fetch: POST /api/audit/sessions/start (src/hooks/useSessionTracker.ts:26)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/sessions/start (src/hooks/useSessionTracker.ts:26)"}, "fullDescription": {"text": "`src/hooks/useSessionTracker.ts:26` calls `POST /api/audit/sessions/start` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/sessions/start`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01ecd567765f04aa", "name": "Dangling fetch: GET /api/avisos?category=preco_alterado&status=nao_lidos&dias=7 (src/components/PrecosAlteradosCard.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/avisos?category=preco_alterado&status=nao_lidos&dias=7 (src/components/PrecosAlteradosCard.tsx:18)"}, "fullDescription": {"text": "`src/components/PrecosAlteradosCard.tsx:18` calls `GET /api/avisos?category=preco_alterado&status=nao_lidos&dias=7` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c8f0f4eb35b9c16", "name": "Dangling fetch: POST /api/financeiro/mes-corrente/campo${qs} (src/components/MesEmAndamentoCard.tsx:98)", "shortDescription": {"text": "Dangling fetch: POST /api/financeiro/mes-corrente/campo${qs} (src/components/MesEmAndamentoCard.tsx:98)"}, "fullDescription": {"text": "`src/components/MesEmAndamentoCard.tsx:98` calls `POST /api/financeiro/mes-corrente/campo${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/mes-corrente/campo/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-817fec495eafe672", "name": "Dangling fetch: GET /api/financeiro/mes-corrente?yearMonth=${yearMonth}${qsStore} (src/components/MesEmAndamentoCard.tsx", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/mes-corrente?yearMonth=${yearMonth}${qsStore} (src/components/MesEmAndamentoCard.tsx:248)"}, "fullDescription": {"text": "`src/components/MesEmAndamentoCard.tsx:248` calls `GET /api/financeiro/mes-corrente?yearMonth=${yearMonth}${qsStore}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/mes-corrente`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c26a3d182a2e915", "name": "Dangling fetch: POST /api/financeiro/mes-corrente/reset-provisao${qs} (src/components/MesEmAndamentoCard.tsx:264)", "shortDescription": {"text": "Dangling fetch: POST /api/financeiro/mes-corrente/reset-provisao${qs} (src/components/MesEmAndamentoCard.tsx:264)"}, "fullDescription": {"text": "`src/components/MesEmAndamentoCard.tsx:264` calls `POST /api/financeiro/mes-corrente/reset-provisao${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/mes-corrente/reset-provisao/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-552f260a14d9ae6d", "name": "Dangling fetch: GET /api/audit/sessions/active (src/components/EquipeOnlineCard.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/sessions/active (src/components/EquipeOnlineCard.tsx:78)"}, "fullDescription": {"text": "`src/components/EquipeOnlineCard.tsx:78` calls `GET /api/audit/sessions/active` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/sessions/active`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d6d078c38c7ab43", "name": "Dangling fetch: GET /api/audit/sessions/recent (src/components/EquipeOnlineCard.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/sessions/recent (src/components/EquipeOnlineCard.tsx:92)"}, "fullDescription": {"text": "`src/components/EquipeOnlineCard.tsx:92` calls `GET /api/audit/sessions/recent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/sessions/recent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72cba1e1211df5cf", "name": "Dangling fetch: GET /api/audit/access-attempts/recent (src/components/EquipeOnlineCard.tsx:106)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/access-attempts/recent (src/components/EquipeOnlineCard.tsx:106)"}, "fullDescription": {"text": "`src/components/EquipeOnlineCard.tsx:106` calls `GET /api/audit/access-attempts/recent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/access-attempts/recent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ab493a361135f5d", "name": "Dangling fetch: GET /api/trainings (src/components/TreinamentosCard.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/trainings (src/components/TreinamentosCard.tsx:51)"}, "fullDescription": {"text": "`src/components/TreinamentosCard.tsx:51` calls `GET /api/trainings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd021c56a73d1273", "name": "Dangling fetch: GET /api/trainings/leitura-stats (src/components/TreinamentosCard.tsx:123)", "shortDescription": {"text": "Dangling fetch: GET /api/trainings/leitura-stats (src/components/TreinamentosCard.tsx:123)"}, "fullDescription": {"text": "`src/components/TreinamentosCard.tsx:123` calls `GET /api/trainings/leitura-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/leitura-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-752dcf1cea3bee84", "name": "Dangling fetch: GET /api/vendedoras-analise/${repId}/descontos?${p} (src/components/VendedoraDrilldown.tsx:162)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/descontos?${p} (src/components/VendedoraDrilldown.tsx:162)"}, "fullDescription": {"text": "`src/components/VendedoraDrilldown.tsx:162` calls `GET /api/vendedoras-analise/${repId}/descontos?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/vendedoras-analise/<p>/descontos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-498650a626507c0b", "name": "Dangling fetch: GET /api/vendedoras-analise/${repId}/comparativo?${p} (src/components/VendedoraDrilldown.tsx:301)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/comparativo?${p} (src/components/VendedoraDrilldown.tsx:301)"}, "fullDescription": {"text": "`src/components/VendedoraDrilldown.tsx:301` calls `GET /api/vendedoras-analise/${repId}/comparativo?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/vendedoras-analise/<p>/comparativo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4d739274d68db13", "name": "Dangling fetch: GET /api/vendedoras-analise/${repId}/mix?${p} (src/components/VendedoraDrilldown.tsx:402)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/mix?${p} (src/components/VendedoraDrilldown.tsx:402)"}, "fullDescription": {"text": "`src/components/VendedoraDrilldown.tsx:402` calls `GET /api/vendedoras-analise/${repId}/mix?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/vendedoras-analise/<p>/mix`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f86df3d7460a1c7", "name": "Dangling fetch: GET /api/vendedoras-analise/${repId}/heatmap?${p} (src/components/VendedoraDrilldown.tsx:490)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/heatmap?${p} (src/components/VendedoraDrilldown.tsx:490)"}, "fullDescription": {"text": "`src/components/VendedoraDrilldown.tsx:490` calls `GET /api/vendedoras-analise/${repId}/heatmap?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/vendedoras-analise/<p>/heatmap`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f963f62fe2e26297", "name": "Dangling fetch: GET /api/vendedoras-analise/${repId}/fidelizacao?${p} (src/components/VendedoraDrilldown.tsx:581)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/fidelizacao?${p} (src/components/VendedoraDrilldown.tsx:581)"}, "fullDescription": {"text": "`src/components/VendedoraDrilldown.tsx:581` calls `GET /api/vendedoras-analise/${repId}/fidelizacao?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/vendedoras-analise/<p>/fidelizacao`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2db37d1f158be7cc", "name": "Dangling fetch: PATCH /api/team/members/${m.id} (src/components/ResumoEquipeCard.tsx:59)", "shortDescription": {"text": "Dangling fetch: PATCH /api/team/members/${m.id} (src/components/ResumoEquipeCard.tsx:59)"}, "fullDescription": {"text": "`src/components/ResumoEquipeCard.tsx:59` calls `PATCH /api/team/members/${m.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/members/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4aeb072c55e5ff91", "name": "Dangling fetch: POST /api/team/members/${m.id}/resumo-test (src/components/ResumoEquipeCard.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/team/members/${m.id}/resumo-test (src/components/ResumoEquipeCard.tsx:76)"}, "fullDescription": {"text": "`src/components/ResumoEquipeCard.tsx:76` calls `POST /api/team/members/${m.id}/resumo-test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/members/<p>/resumo-test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9fb8a5f0b69eecfb", "name": "Dangling fetch: POST /api/avisos (src/components/AvisarGestaoButton.tsx:39)", "shortDescription": {"text": "Dangling fetch: POST /api/avisos (src/components/AvisarGestaoButton.tsx:39)"}, "fullDescription": {"text": "`src/components/AvisarGestaoButton.tsx:39` calls `POST /api/avisos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avisos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db469ed0d14a3053", "name": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/components/MobileBlocker.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/components/MobileBlocker.tsx:42)"}, "fullDescription": {"text": "`src/components/MobileBlocker.tsx:42` calls `GET /api/mobile-devices/check/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mobile-devices/check/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-494a877745275996", "name": "Dangling fetch: GET /api/musico/spotify/status (src/pages/PlaylistsPage.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/spotify/status (src/pages/PlaylistsPage.tsx:55)"}, "fullDescription": {"text": "`src/pages/PlaylistsPage.tsx:55` calls `GET /api/musico/spotify/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/spotify/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8dbf93fd328951e4", "name": "Dangling fetch: GET /api/musico/spotify/auth-url (src/pages/PlaylistsPage.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/musico/spotify/auth-url (src/pages/PlaylistsPage.tsx:78)"}, "fullDescription": {"text": "`src/pages/PlaylistsPage.tsx:78` calls `GET /api/musico/spotify/auth-url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/spotify/auth-url`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ff93c967bc40a6a", "name": "Dangling fetch: POST /api/musico/spotify/disconnect (src/pages/PlaylistsPage.tsx:95)", "shortDescription": {"text": "Dangling fetch: POST /api/musico/spotify/disconnect (src/pages/PlaylistsPage.tsx:95)"}, "fullDescription": {"text": "`src/pages/PlaylistsPage.tsx:95` calls `POST /api/musico/spotify/disconnect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/spotify/disconnect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6615f8c0af3a5e93", "name": "Dangling fetch: POST /api/musico/import-spotify (src/pages/PlaylistsPage.tsx:298)", "shortDescription": {"text": "Dangling fetch: POST /api/musico/import-spotify (src/pages/PlaylistsPage.tsx:298)"}, "fullDescription": {"text": "`src/pages/PlaylistsPage.tsx:298` calls `POST /api/musico/import-spotify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/import-spotify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-741c1e1922668385", "name": "Dangling fetch: POST /api/musico/import-csv (src/pages/PlaylistsPage.tsx:347)", "shortDescription": {"text": "Dangling fetch: POST /api/musico/import-csv (src/pages/PlaylistsPage.tsx:347)"}, "fullDescription": {"text": "`src/pages/PlaylistsPage.tsx:347` calls `POST /api/musico/import-csv` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/musico/import-csv`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66b0ce6766caed10", "name": "Dangling fetch: GET /api/activity-log?${qs} (src/pages/ActivityLogPage.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/activity-log?${qs} (src/pages/ActivityLogPage.tsx:70)"}, "fullDescription": {"text": "`src/pages/ActivityLogPage.tsx:70` calls `GET /api/activity-log?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/activity-log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ba73906b7f03a0b", "name": "Dangling fetch: GET /api/activity-log/export.csv?${qs} (src/pages/ActivityLogPage.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/activity-log/export.csv?${qs} (src/pages/ActivityLogPage.tsx:94)"}, "fullDescription": {"text": "`src/pages/ActivityLogPage.tsx:94` calls `GET /api/activity-log/export.csv?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/activity-log/export.csv`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6be04b1af93dac5d", "name": "Dangling fetch: GET /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:349)", "shortDescription": {"text": "Dangling fetch: GET /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:349)"}, "fullDescription": {"text": "`src/pages/ConfiguracoesIntegracoesPage.tsx:349` calls `GET /api/integracoes/nello/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d71cccffc6093e45", "name": "Dangling fetch: POST /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:369)", "shortDescription": {"text": "Dangling fetch: POST /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:369)"}, "fullDescription": {"text": "`src/pages/ConfiguracoesIntegracoesPage.tsx:369` calls `POST /api/integracoes/nello/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-079463e52a3ad110", "name": "Dangling fetch: POST /api/integracoes/nello/testar (src/pages/ConfiguracoesIntegracoesPage.tsx:387)", "shortDescription": {"text": "Dangling fetch: POST /api/integracoes/nello/testar (src/pages/ConfiguracoesIntegracoesPage.tsx:387)"}, "fullDescription": {"text": "`src/pages/ConfiguracoesIntegracoesPage.tsx:387` calls `POST /api/integracoes/nello/testar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/testar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d345715d5884088", "name": "Dangling fetch: GET /api/sms-campaigns (src/pages/SmsCampanhasPage.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/sms-campaigns (src/pages/SmsCampanhasPage.tsx:53)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:53` calls `GET /api/sms-campaigns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0178ef217aa3346f", "name": "Dangling fetch: POST /api/sms-campaigns/${id}/cancelar (src/pages/SmsCampanhasPage.tsx:77)", "shortDescription": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/cancelar (src/pages/SmsCampanhasPage.tsx:77)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:77` calls `POST /api/sms-campaigns/${id}/cancelar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>/cancelar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37fdb041b1f265f1", "name": "Dangling fetch: POST /api/sms-campaigns/${id}/pausar (src/pages/SmsCampanhasPage.tsx:87)", "shortDescription": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/pausar (src/pages/SmsCampanhasPage.tsx:87)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:87` calls `POST /api/sms-campaigns/${id}/pausar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>/pausar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bef7dab8b7ff2d92", "name": "Dangling fetch: POST /api/sms-campaigns/${id}/retomar (src/pages/SmsCampanhasPage.tsx:100)", "shortDescription": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/retomar (src/pages/SmsCampanhasPage.tsx:100)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:100` calls `POST /api/sms-campaigns/${id}/retomar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>/retomar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ee3a3cdd525c996", "name": "Dangling fetch: POST /api/sms-campaigns/${id}/disparar-agora (src/pages/SmsCampanhasPage.tsx:113)", "shortDescription": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/disparar-agora (src/pages/SmsCampanhasPage.tsx:113)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:113` calls `POST /api/sms-campaigns/${id}/disparar-agora` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>/disparar-agora`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ad5146d79ca4d28", "name": "Dangling fetch: DELETE /api/sms-campaigns/${id} (src/pages/SmsCampanhasPage.tsx:123)", "shortDescription": {"text": "Dangling fetch: DELETE /api/sms-campaigns/${id} (src/pages/SmsCampanhasPage.tsx:123)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:123` calls `DELETE /api/sms-campaigns/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b750ce6a36fe31da", "name": "Dangling fetch: GET /api/sms-campaigns/${campanha.id}/sends (src/pages/SmsCampanhasPage.tsx:541)", "shortDescription": {"text": "Dangling fetch: GET /api/sms-campaigns/${campanha.id}/sends (src/pages/SmsCampanhasPage.tsx:541)"}, "fullDescription": {"text": "`src/pages/SmsCampanhasPage.tsx:541` calls `GET /api/sms-campaigns/${campanha.id}/sends` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sms-campaigns/<p>/sends`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c71575a035a335bf", "name": "Dangling fetch: GET /api/mural?${qs} (src/pages/MuralPage.tsx:72)", "shortDescription": {"text": "Dangling fetch: GET /api/mural?${qs} (src/pages/MuralPage.tsx:72)"}, "fullDescription": {"text": "`src/pages/MuralPage.tsx:72` calls `GET /api/mural?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mural`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b8f429dd97ba07b", "name": "Dangling fetch: POST /api/mural (src/pages/MuralPage.tsx:84)", "shortDescription": {"text": "Dangling fetch: POST /api/mural (src/pages/MuralPage.tsx:84)"}, "fullDescription": {"text": "`src/pages/MuralPage.tsx:84` calls `POST /api/mural` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mural`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9e077fbbe69a788", "name": "Dangling fetch: POST /api/mural/${id}/voluntariar (src/pages/MuralPage.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/mural/${id}/voluntariar (src/pages/MuralPage.tsx:102)"}, "fullDescription": {"text": "`src/pages/MuralPage.tsx:102` calls `POST /api/mural/${id}/voluntariar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mural/<p>/voluntariar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9672be3cdff31a0", "name": "Dangling fetch: POST /api/mural/${id}/resolver (src/pages/MuralPage.tsx:114)", "shortDescription": {"text": "Dangling fetch: POST /api/mural/${id}/resolver (src/pages/MuralPage.tsx:114)"}, "fullDescription": {"text": "`src/pages/MuralPage.tsx:114` calls `POST /api/mural/${id}/resolver` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mural/<p>/resolver`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10ff32087e1896ec", "name": "Dangling fetch: DELETE /api/mural/${id} (src/pages/MuralPage.tsx:124)", "shortDescription": {"text": "Dangling fetch: DELETE /api/mural/${id} (src/pages/MuralPage.tsx:124)"}, "fullDescription": {"text": "`src/pages/MuralPage.tsx:124` calls `DELETE /api/mural/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mural/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85bc9cb03625b9dc", "name": "Dangling fetch: GET /api/conversao-envios?${p.toString()} (src/pages/ConversaoEnviosPage.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/conversao-envios?${p.toString()} (src/pages/ConversaoEnviosPage.tsx:58)"}, "fullDescription": {"text": "`src/pages/ConversaoEnviosPage.tsx:58` calls `GET /api/conversao-envios?${p.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/conversao-envios`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0b46895f997ed86", "name": "Dangling fetch: GET /api/conversao-envios/custos-mensais?meses=${meses} (src/pages/ConversaoEnviosPage.tsx:266)", "shortDescription": {"text": "Dangling fetch: GET /api/conversao-envios/custos-mensais?meses=${meses} (src/pages/ConversaoEnviosPage.tsx:266)"}, "fullDescription": {"text": "`src/pages/ConversaoEnviosPage.tsx:266` calls `GET /api/conversao-envios/custos-mensais?meses=${meses}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/conversao-envios/custos-mensais`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1bacb5aa0a0f097", "name": "Dangling fetch: GET /api/conversao-envios/detalhes?${p} (src/pages/ConversaoEnviosPage.tsx:548)", "shortDescription": {"text": "Dangling fetch: GET /api/conversao-envios/detalhes?${p} (src/pages/ConversaoEnviosPage.tsx:548)"}, "fullDescription": {"text": "`src/pages/ConversaoEnviosPage.tsx:548` calls `GET /api/conversao-envios/detalhes?${p}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/conversao-envios/detalhes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b5579effaf1d71c", "name": "Dangling fetch: GET /api/estoque-lojas?${qs} (src/pages/EstoqueLojasPage.tsx:93)", "shortDescription": {"text": "Dangling fetch: GET /api/estoque-lojas?${qs} (src/pages/EstoqueLojasPage.tsx:93)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:93` calls `GET /api/estoque-lojas?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9d5d2c83a5f3959", "name": "Dangling fetch: GET /api/estoque-lojas/fornecedores?apenas_novos=true&dias=90&limite=10 (src/pages/EstoqueLojasPage.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/estoque-lojas/fornecedores?apenas_novos=true&dias=90&limite=10 (src/pages/EstoqueLojasPage.tsx:109)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:109` calls `GET /api/estoque-lojas/fornecedores?apenas_novos=true&dias=90&limite=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/fornecedores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86492bc0a2dccc13", "name": "Dangling fetch: GET /api/estoque-lojas/fornecedores?limite=200 (src/pages/EstoqueLojasPage.tsx:121)", "shortDescription": {"text": "Dangling fetch: GET /api/estoque-lojas/fornecedores?limite=200 (src/pages/EstoqueLojasPage.tsx:121)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:121` calls `GET /api/estoque-lojas/fornecedores?limite=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/fornecedores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4486ad4d2ac29729", "name": "Dangling fetch: POST /api/estoque-lojas/${linha.varejo_id}/sync-foto (src/pages/EstoqueLojasPage.tsx:466)", "shortDescription": {"text": "Dangling fetch: POST /api/estoque-lojas/${linha.varejo_id}/sync-foto (src/pages/EstoqueLojasPage.tsx:466)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:466` calls `POST /api/estoque-lojas/${linha.varejo_id}/sync-foto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/<p>/sync-foto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a322313c97e22034", "name": "Dangling fetch: PUT /api/estoque-lojas/${linha.varejo_id}/foto (src/pages/EstoqueLojasPage.tsx:481)", "shortDescription": {"text": "Dangling fetch: PUT /api/estoque-lojas/${linha.varejo_id}/foto (src/pages/EstoqueLojasPage.tsx:481)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:481` calls `PUT /api/estoque-lojas/${linha.varejo_id}/foto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/<p>/foto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-155dedf405cb7074", "name": "Dangling fetch: GET /api/estoque-lojas/${varejoId}/historico (src/pages/EstoqueLojasPage.tsx:617)", "shortDescription": {"text": "Dangling fetch: GET /api/estoque-lojas/${varejoId}/historico (src/pages/EstoqueLojasPage.tsx:617)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:617` calls `GET /api/estoque-lojas/${varejoId}/historico` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/<p>/historico`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4975cba9c4ee3be", "name": "Dangling fetch: GET /api/estoque-lojas/sync-fotos/status (src/pages/EstoqueLojasPage.tsx:723)", "shortDescription": {"text": "Dangling fetch: GET /api/estoque-lojas/sync-fotos/status (src/pages/EstoqueLojasPage.tsx:723)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:723` calls `GET /api/estoque-lojas/sync-fotos/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/sync-fotos/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13d50573dd8cb67a", "name": "Dangling fetch: POST /api/estoque-lojas/sync-fotos/iniciar?escopo=em_estoque (src/pages/EstoqueLojasPage.tsx:757)", "shortDescription": {"text": "Dangling fetch: POST /api/estoque-lojas/sync-fotos/iniciar?escopo=em_estoque (src/pages/EstoqueLojasPage.tsx:757)"}, "fullDescription": {"text": "`src/pages/EstoqueLojasPage.tsx:757` calls `POST /api/estoque-lojas/sync-fotos/iniciar?escopo=em_estoque` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/estoque-lojas/sync-fotos/iniciar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d9ef362f35bb9da", "name": "Dangling fetch: GET /api/sessions/store-conversations${params} (src/pages/StoreMonitorPage.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/sessions/store-conversations${params} (src/pages/StoreMonitorPage.tsx:98)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:98` calls `GET /api/sessions/store-conversations${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/store-conversations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32da15019f24de6a", "name": "Dangling fetch: GET /api/sessions/status (src/pages/StoreMonitorPage.tsx:201)", "shortDescription": {"text": "Dangling fetch: GET /api/sessions/status (src/pages/StoreMonitorPage.tsx:201)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:201` calls `GET /api/sessions/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-193d8729009f5bc4", "name": "Dangling fetch: POST /api/sessions/${storeId}/connect (src/pages/StoreMonitorPage.tsx:226)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${storeId}/connect (src/pages/StoreMonitorPage.tsx:226)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:226` calls `POST /api/sessions/${storeId}/connect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/connect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94d0b6200d5b9c07", "name": "Dangling fetch: POST /api/sessions/${storeId}/connect-qr (src/pages/StoreMonitorPage.tsx:243)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${storeId}/connect-qr (src/pages/StoreMonitorPage.tsx:243)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:243` calls `POST /api/sessions/${storeId}/connect-qr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/connect-qr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a3738b3d109ecf1", "name": "Dangling fetch: GET /api/sessions/${storeId}/qr (src/pages/StoreMonitorPage.tsx:256)", "shortDescription": {"text": "Dangling fetch: GET /api/sessions/${storeId}/qr (src/pages/StoreMonitorPage.tsx:256)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:256` calls `GET /api/sessions/${storeId}/qr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/qr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9936d5746832dcd8", "name": "Dangling fetch: POST /api/sessions/${storeId}/reset (src/pages/StoreMonitorPage.tsx:280)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${storeId}/reset (src/pages/StoreMonitorPage.tsx:280)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:280` calls `POST /api/sessions/${storeId}/reset` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/reset`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78e3caee920b57f6", "name": "Dangling fetch: POST /api/sessions/${storeId}/force-kill (src/pages/StoreMonitorPage.tsx:305)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${storeId}/force-kill (src/pages/StoreMonitorPage.tsx:305)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:305` calls `POST /api/sessions/${storeId}/force-kill` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/force-kill`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf328ee16a45fd13", "name": "Dangling fetch: POST /api/sessions/${store}/mark-read (src/pages/StoreMonitorPage.tsx:592)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${store}/mark-read (src/pages/StoreMonitorPage.tsx:592)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:592` calls `POST /api/sessions/${store}/mark-read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/mark-read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f099f61c19615a8", "name": "Dangling fetch: POST /api/sessions/${store}/messages/${encodeURIComponent(editing.messageId)}/edit (src/pages/StoreMonit", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${store}/messages/${encodeURIComponent(editing.messageId)}/edit (src/pages/StoreMonitorPage.tsx:602)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:602` calls `POST /api/sessions/${store}/messages/${encodeURIComponent(editing.messageId)}/edit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/messages/<p>/edit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c82b656b88c178bd", "name": "Dangling fetch: POST /api/sessions/${store}/send-media (src/pages/StoreMonitorPage.tsx:624)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${store}/send-media (src/pages/StoreMonitorPage.tsx:624)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:624` calls `POST /api/sessions/${store}/send-media` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/send-media`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1a04b9b0de28ae7", "name": "Dangling fetch: POST /api/sessions/${store}/send-message (src/pages/StoreMonitorPage.tsx:651)", "shortDescription": {"text": "Dangling fetch: POST /api/sessions/${store}/send-message (src/pages/StoreMonitorPage.tsx:651)"}, "fullDescription": {"text": "`src/pages/StoreMonitorPage.tsx:651` calls `POST /api/sessions/${store}/send-message` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sessions/<p>/send-message`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ffb12838b9c4b7c", "name": "Dangling fetch: GET /api/quotes/public/${token} (src/pages/OrcamentoPublicoPage.tsx:45)", "shortDescription": {"text": "Dangling fetch: GET /api/quotes/public/${token} (src/pages/OrcamentoPublicoPage.tsx:45)"}, "fullDescription": {"text": "`src/pages/OrcamentoPublicoPage.tsx:45` calls `GET /api/quotes/public/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/public/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dca254cf4bb7ca49", "name": "Dangling fetch: POST /api/quotes/public/${token}/accept (src/pages/OrcamentoPublicoPage.tsx:70)", "shortDescription": {"text": "Dangling fetch: POST /api/quotes/public/${token}/accept (src/pages/OrcamentoPublicoPage.tsx:70)"}, "fullDescription": {"text": "`src/pages/OrcamentoPublicoPage.tsx:70` calls `POST /api/quotes/public/${token}/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/public/<p>/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41fc39858b598884", "name": "Dangling fetch: POST /api/quotes/public/${token}/reject (src/pages/OrcamentoPublicoPage.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/quotes/public/${token}/reject (src/pages/OrcamentoPublicoPage.tsx:88)"}, "fullDescription": {"text": "`src/pages/OrcamentoPublicoPage.tsx:88` calls `POST /api/quotes/public/${token}/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/public/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87dde25bcfe8fe29", "name": "Dangling fetch: GET /api/campanhas-resgate (src/pages/CampanhasResgatePage.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/campanhas-resgate (src/pages/CampanhasResgatePage.tsx:65)"}, "fullDescription": {"text": "`src/pages/CampanhasResgatePage.tsx:65` calls `GET /api/campanhas-resgate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-resgate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7af13659222541af", "name": "Dangling fetch: POST /api/campanhas-resgate/delegar (src/pages/CampanhasResgatePage.tsx:80)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-resgate/delegar (src/pages/CampanhasResgatePage.tsx:80)"}, "fullDescription": {"text": "`src/pages/CampanhasResgatePage.tsx:80` calls `POST /api/campanhas-resgate/delegar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-resgate/delegar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a2773d6eba14f88", "name": "Dangling fetch: POST /api/campanhas-resgate/cancelar (src/pages/CampanhasResgatePage.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-resgate/cancelar (src/pages/CampanhasResgatePage.tsx:99)"}, "fullDescription": {"text": "`src/pages/CampanhasResgatePage.tsx:99` calls `POST /api/campanhas-resgate/cancelar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-resgate/cancelar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-402bc341199bf558", "name": "Dangling fetch: POST /api/campanhas-resgate/editar-mensagem (src/pages/CampanhasResgatePage.tsx:115)", "shortDescription": {"text": "Dangling fetch: POST /api/campanhas-resgate/editar-mensagem (src/pages/CampanhasResgatePage.tsx:115)"}, "fullDescription": {"text": "`src/pages/CampanhasResgatePage.tsx:115` calls `POST /api/campanhas-resgate/editar-mensagem` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/campanhas-resgate/editar-mensagem`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75ae7e009bd292c0", "name": "Dangling fetch: GET /api/vendas-detalhe/${saidaId}/itens (src/pages/VendasDetalhePage.tsx:122)", "shortDescription": {"text": "Dangling fetch: GET /api/vendas-detalhe/${saidaId}/itens (src/pages/VendasDetalhePage.tsx:122)"}, "fullDescription": {"text": "`src/pages/VendasDetalhePage.tsx:122` calls `GET /api/vendas-detalhe/${saidaId}/itens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendas-detalhe/<p>/itens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-048c421a4d6938e1", "name": "Dangling fetch: GET /api/vendas-detalhe?${qs} (src/pages/VendasDetalhePage.tsx:233)", "shortDescription": {"text": "Dangling fetch: GET /api/vendas-detalhe?${qs} (src/pages/VendasDetalhePage.tsx:233)"}, "fullDescription": {"text": "`src/pages/VendasDetalhePage.tsx:233` calls `GET /api/vendas-detalhe?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendas-detalhe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e64bb6f712c0f441", "name": "Dangling fetch: GET /api/team/stores (src/pages/FretePage.tsx:36)", "shortDescription": {"text": "Dangling fetch: GET /api/team/stores (src/pages/FretePage.tsx:36)"}, "fullDescription": {"text": "`src/pages/FretePage.tsx:36` calls `GET /api/team/stores` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/stores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a19ff30dcd4b47c", "name": "Dangling fetch: GET /api/contracts/${contractId}/feedback (src/pages/ContratoDetalhePage.tsx:332)", "shortDescription": {"text": "Dangling fetch: GET /api/contracts/${contractId}/feedback (src/pages/ContratoDetalhePage.tsx:332)"}, "fullDescription": {"text": "`src/pages/ContratoDetalhePage.tsx:332` calls `GET /api/contracts/${contractId}/feedback` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/<p>/feedback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1a5a0ddbd9c158f", "name": "Dangling fetch: GET /api/mobile-devices (src/pages/CelularesAutorizadosPage.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/mobile-devices (src/pages/CelularesAutorizadosPage.tsx:71)"}, "fullDescription": {"text": "`src/pages/CelularesAutorizadosPage.tsx:71` calls `GET /api/mobile-devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mobile-devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ee9816285fdcee9", "name": "Dangling fetch: POST /api/mobile-devices/autorizar (src/pages/CelularesAutorizadosPage.tsx:82)", "shortDescription": {"text": "Dangling fetch: POST /api/mobile-devices/autorizar (src/pages/CelularesAutorizadosPage.tsx:82)"}, "fullDescription": {"text": "`src/pages/CelularesAutorizadosPage.tsx:82` calls `POST /api/mobile-devices/autorizar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mobile-devices/autorizar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4d96c5fad0ef4298", "name": "Dangling fetch: POST /api/mobile-devices/${id}/revogar (src/pages/CelularesAutorizadosPage.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/mobile-devices/${id}/revogar (src/pages/CelularesAutorizadosPage.tsx:108)"}, "fullDescription": {"text": "`src/pages/CelularesAutorizadosPage.tsx:108` calls `POST /api/mobile-devices/${id}/revogar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mobile-devices/<p>/revogar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7664db701baf3829", "name": "Dangling fetch: POST /api/contracts/public/${token}/feedback (src/pages/ContratoPublicoPage.tsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/contracts/public/${token}/feedback (src/pages/ContratoPublicoPage.tsx:52)"}, "fullDescription": {"text": "`src/pages/ContratoPublicoPage.tsx:52` calls `POST /api/contracts/public/${token}/feedback` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/public/<p>/feedback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79b9523bc232b509", "name": "Dangling fetch: GET /api/contracts/public/${token} (src/pages/ContratoPublicoPage.tsx:192)", "shortDescription": {"text": "Dangling fetch: GET /api/contracts/public/${token} (src/pages/ContratoPublicoPage.tsx:192)"}, "fullDescription": {"text": "`src/pages/ContratoPublicoPage.tsx:192` calls `GET /api/contracts/public/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/public/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d2ef9cb40b84e52", "name": "Dangling fetch: POST /api/contracts/public/${token}/accept (src/pages/ContratoPublicoPage.tsx:216)", "shortDescription": {"text": "Dangling fetch: POST /api/contracts/public/${token}/accept (src/pages/ContratoPublicoPage.tsx:216)"}, "fullDescription": {"text": "`src/pages/ContratoPublicoPage.tsx:216` calls `POST /api/contracts/public/${token}/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contracts/public/<p>/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee0967c4eb4d0e2f", "name": "Dangling fetch: GET /api/fornecedores/${fornecedorId} (src/pages/FornecedoresPage.tsx:248)", "shortDescription": {"text": "Dangling fetch: GET /api/fornecedores/${fornecedorId} (src/pages/FornecedoresPage.tsx:248)"}, "fullDescription": {"text": "`src/pages/FornecedoresPage.tsx:248` calls `GET /api/fornecedores/${fornecedorId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fornecedores/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a82cd471eb9bd16d", "name": "Dangling fetch: GET /api/welcome?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:32)", "shortDescription": {"text": "Dangling fetch: GET /api/welcome?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:32)"}, "fullDescription": {"text": "`src/pages/BoasVindasPage.tsx:32` calls `GET /api/welcome?role=${encodeURIComponent(role)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/welcome`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c54344a783ab7f7", "name": "Dangling fetch: PUT /api/welcome (src/pages/BoasVindasPage.tsx:47)", "shortDescription": {"text": "Dangling fetch: PUT /api/welcome (src/pages/BoasVindasPage.tsx:47)"}, "fullDescription": {"text": "`src/pages/BoasVindasPage.tsx:47` calls `PUT /api/welcome` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/welcome`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1bb22dfdc198e82", "name": "Dangling fetch: POST /api/welcome/reset?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:67)", "shortDescription": {"text": "Dangling fetch: POST /api/welcome/reset?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:67)"}, "fullDescription": {"text": "`src/pages/BoasVindasPage.tsx:67` calls `POST /api/welcome/reset?role=${encodeURIComponent(role)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/welcome/reset`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f11850d737b63356", "name": "Dangling fetch: POST /api/team/${member.id}/set-password (src/pages/TeamPage.tsx:124)", "shortDescription": {"text": "Dangling fetch: POST /api/team/${member.id}/set-password (src/pages/TeamPage.tsx:124)"}, "fullDescription": {"text": "`src/pages/TeamPage.tsx:124` calls `POST /api/team/${member.id}/set-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/<p>/set-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31edb59f66c96ac6", "name": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/pages/AutorizarCelularPage.tsx:20)", "shortDescription": {"text": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/pages/AutorizarCelularPage.tsx:20)"}, "fullDescription": {"text": "`src/pages/AutorizarCelularPage.tsx:20` calls `GET /api/mobile-devices/check/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mobile-devices/check/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8105794c2cde92cd", "name": "Dangling fetch: GET /api/maquininhas/analise?dias=${periodo} (src/pages/MaquininhasPage.tsx:90)", "shortDescription": {"text": "Dangling fetch: GET /api/maquininhas/analise?dias=${periodo} (src/pages/MaquininhasPage.tsx:90)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:90` calls `GET /api/maquininhas/analise?dias=${periodo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/analise`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52f613bdd9ca850b", "name": "Dangling fetch: GET /api/maquininhas/taxas (src/pages/MaquininhasPage.tsx:101)", "shortDescription": {"text": "Dangling fetch: GET /api/maquininhas/taxas (src/pages/MaquininhasPage.tsx:101)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:101` calls `GET /api/maquininhas/taxas` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/taxas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72c10645dd67c470", "name": "Dangling fetch: PUT /api/maquininhas/taxas/${id} (src/pages/MaquininhasPage.tsx:110)", "shortDescription": {"text": "Dangling fetch: PUT /api/maquininhas/taxas/${id} (src/pages/MaquininhasPage.tsx:110)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:110` calls `PUT /api/maquininhas/taxas/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/taxas/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47cd644895c60dd6", "name": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/MaquininhasPage.tsx:152)", "shortDescription": {"text": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/MaquininhasPage.tsx:152)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:152` calls `GET /api/maquininhas/transacoes?${qs.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/transacoes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9752a37e0f2d6a56", "name": "Dangling fetch: GET /api/maquininhas/negociacoes-uso?dias=${periodo} (src/pages/MaquininhasPage.tsx:163)", "shortDescription": {"text": "Dangling fetch: GET /api/maquininhas/negociacoes-uso?dias=${periodo} (src/pages/MaquininhasPage.tsx:163)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:163` calls `GET /api/maquininhas/negociacoes-uso?dias=${periodo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/negociacoes-uso`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7baa3d42dca6d8ed", "name": "Dangling fetch: PUT /api/varejo-negociacoes/${id_negociacao} (src/pages/MaquininhasPage.tsx:172)", "shortDescription": {"text": "Dangling fetch: PUT /api/varejo-negociacoes/${id_negociacao} (src/pages/MaquininhasPage.tsx:172)"}, "fullDescription": {"text": "`src/pages/MaquininhasPage.tsx:172` calls `PUT /api/varejo-negociacoes/${id_negociacao}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/varejo-negociacoes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e639a3613bfe969", "name": "Dangling fetch: GET /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:62)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:62` calls `GET /api/email-campaigns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7b2270ce1baa69b", "name": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:75)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:75` calls `GET /api/email-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f0e6cadf1dc7ca0", "name": "Dangling fetch: POST /api/email-campaigns/${id}/cancelar (src/pages/EmailCampanhasPage.tsx:86)", "shortDescription": {"text": "Dangling fetch: POST /api/email-campaigns/${id}/cancelar (src/pages/EmailCampanhasPage.tsx:86)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:86` calls `POST /api/email-campaigns/${id}/cancelar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-campaigns/<p>/cancelar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57e954e00c543079", "name": "Dangling fetch: POST /api/email-campaigns/${id}/disparar-agora (src/pages/EmailCampanhasPage.tsx:97)", "shortDescription": {"text": "Dangling fetch: POST /api/email-campaigns/${id}/disparar-agora (src/pages/EmailCampanhasPage.tsx:97)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:97` calls `POST /api/email-campaigns/${id}/disparar-agora` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-campaigns/<p>/disparar-agora`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ce3968cc3b30011", "name": "Dangling fetch: DELETE /api/email-campaigns/${id} (src/pages/EmailCampanhasPage.tsx:108)", "shortDescription": {"text": "Dangling fetch: DELETE /api/email-campaigns/${id} (src/pages/EmailCampanhasPage.tsx:108)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:108` calls `DELETE /api/email-campaigns/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa0763d8a958271a", "name": "Dangling fetch: POST /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:265)", "shortDescription": {"text": "Dangling fetch: POST /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:265)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:265` calls `POST /api/email-campaigns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2df41abb9a82ffd1", "name": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:371)", "shortDescription": {"text": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:371)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:371` calls `GET /api/email-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6032b38f8d8527c0", "name": "Dangling fetch: POST /api/email-config (src/pages/EmailCampanhasPage.tsx:393)", "shortDescription": {"text": "Dangling fetch: POST /api/email-config (src/pages/EmailCampanhasPage.tsx:393)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:393` calls `POST /api/email-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6d30ce3dc5afa1b", "name": "Dangling fetch: POST /api/email-config/test (src/pages/EmailCampanhasPage.tsx:416)", "shortDescription": {"text": "Dangling fetch: POST /api/email-config/test (src/pages/EmailCampanhasPage.tsx:416)"}, "fullDescription": {"text": "`src/pages/EmailCampanhasPage.tsx:416` calls `POST /api/email-config/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-config/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3e805e52d498dab", "name": "Dangling fetch: GET /api/trainings?${qs} (src/pages/TreinamentosPage.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/trainings?${qs} (src/pages/TreinamentosPage.tsx:77)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:77` calls `GET /api/trainings?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc3339c087f1a38b", "name": "Dangling fetch: POST /api/trainings/${id}/read (src/pages/TreinamentosPage.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/trainings/${id}/read (src/pages/TreinamentosPage.tsx:88)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:88` calls `POST /api/trainings/${id}/read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/<p>/read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e24207a814146201", "name": "Dangling fetch: DELETE /api/trainings/${id} (src/pages/TreinamentosPage.tsx:98)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trainings/${id} (src/pages/TreinamentosPage.tsx:98)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:98` calls `DELETE /api/trainings/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6766eedf71897c35", "name": "Dangling fetch: POST /api/trainings/${training.id}/read (src/pages/TreinamentosPage.tsx:251)", "shortDescription": {"text": "Dangling fetch: POST /api/trainings/${training.id}/read (src/pages/TreinamentosPage.tsx:251)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:251` calls `POST /api/trainings/${training.id}/read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/<p>/read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c34eec975d8551a", "name": "Dangling fetch: GET /api/trainings/${training.id}/leituras (src/pages/TreinamentosPage.tsx:270)", "shortDescription": {"text": "Dangling fetch: GET /api/trainings/${training.id}/leituras (src/pages/TreinamentosPage.tsx:270)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:270` calls `GET /api/trainings/${training.id}/leituras` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/<p>/leituras`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4df52ccce8d34bc", "name": "Dangling fetch: POST /api/trainings/upload-cover (src/pages/TreinamentosPage.tsx:402)", "shortDescription": {"text": "Dangling fetch: POST /api/trainings/upload-cover (src/pages/TreinamentosPage.tsx:402)"}, "fullDescription": {"text": "`src/pages/TreinamentosPage.tsx:402` calls `POST /api/trainings/upload-cover` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trainings/upload-cover`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10448f2f3b3fc833", "name": "Dangling fetch: POST /api/leads-import/salvar-como-lista (src/pages/LeadsImportPage.tsx:145)", "shortDescription": {"text": "Dangling fetch: POST /api/leads-import/salvar-como-lista (src/pages/LeadsImportPage.tsx:145)"}, "fullDescription": {"text": "`src/pages/LeadsImportPage.tsx:145` calls `POST /api/leads-import/salvar-como-lista` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/leads-import/salvar-como-lista`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f7560868666981f", "name": "Dangling fetch: POST /api/leads-import/comparar (src/pages/LeadsImportPage.tsx:185)", "shortDescription": {"text": "Dangling fetch: POST /api/leads-import/comparar (src/pages/LeadsImportPage.tsx:185)"}, "fullDescription": {"text": "`src/pages/LeadsImportPage.tsx:185` calls `POST /api/leads-import/comparar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/leads-import/comparar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6955ff638e2e8c43", "name": "Dangling fetch: GET /api/cashback/config (src/pages/CashbackConfigPage.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/cashback/config (src/pages/CashbackConfigPage.tsx:50)"}, "fullDescription": {"text": "`src/pages/CashbackConfigPage.tsx:50` calls `GET /api/cashback/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/cashback/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-579df775c140445c", "name": "Dangling fetch: PUT /api/cashback/config (src/pages/CashbackConfigPage.tsx:63)", "shortDescription": {"text": "Dangling fetch: PUT /api/cashback/config (src/pages/CashbackConfigPage.tsx:63)"}, "fullDescription": {"text": "`src/pages/CashbackConfigPage.tsx:63` calls `PUT /api/cashback/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/cashback/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1cf98e2708a98028", "name": "Dangling fetch: GET /api/vendedoras-analise/export.csv?${params} (src/pages/VendedorasAnalisePage.tsx:170)", "shortDescription": {"text": "Dangling fetch: GET /api/vendedoras-analise/export.csv?${params} (src/pages/VendedorasAnalisePage.tsx:170)"}, "fullDescription": {"text": "`src/pages/VendedorasAnalisePage.tsx:170` calls `GET /api/vendedoras-analise/export.csv?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendedoras-analise/export.csv`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c159e926c611cab", "name": "Dangling fetch: GET /api/auditoria-estoque?loja=${loja} (src/pages/AuditoriaEstoquePage.tsx:119)", "shortDescription": {"text": "Dangling fetch: GET /api/auditoria-estoque?loja=${loja} (src/pages/AuditoriaEstoquePage.tsx:119)"}, "fullDescription": {"text": "`src/pages/AuditoriaEstoquePage.tsx:119` calls `GET /api/auditoria-estoque?loja=${loja}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auditoria-estoque`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec98c4648f2b5eac", "name": "Dangling fetch: GET /api/auditoria-estoque/analise-nfes (src/pages/AuditoriaEstoquePage.tsx:132)", "shortDescription": {"text": "Dangling fetch: GET /api/auditoria-estoque/analise-nfes (src/pages/AuditoriaEstoquePage.tsx:132)"}, "fullDescription": {"text": "`src/pages/AuditoriaEstoquePage.tsx:132` calls `GET /api/auditoria-estoque/analise-nfes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auditoria-estoque/analise-nfes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf8d3e0fc78d34e0", "name": "Dangling fetch: POST /api/auditoria-estoque/sync-entradas (src/pages/AuditoriaEstoquePage.tsx:143)", "shortDescription": {"text": "Dangling fetch: POST /api/auditoria-estoque/sync-entradas (src/pages/AuditoriaEstoquePage.tsx:143)"}, "fullDescription": {"text": "`src/pages/AuditoriaEstoquePage.tsx:143` calls `POST /api/auditoria-estoque/sync-entradas` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auditoria-estoque/sync-entradas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dce061b907bdbb81", "name": "Dangling fetch: GET /api/auditoria-estoque/timeline?vids=${vids} (src/pages/AuditoriaEstoquePage.tsx:619)", "shortDescription": {"text": "Dangling fetch: GET /api/auditoria-estoque/timeline?vids=${vids} (src/pages/AuditoriaEstoquePage.tsx:619)"}, "fullDescription": {"text": "`src/pages/AuditoriaEstoquePage.tsx:619` calls `GET /api/auditoria-estoque/timeline?vids=${vids}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auditoria-estoque/timeline`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0dfcc31f4ed93653", "name": "Dangling fetch: POST /api/intents/import-google-sheets/preview (src/pages/IntentsPage.tsx:1090)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/import-google-sheets/preview (src/pages/IntentsPage.tsx:1090)"}, "fullDescription": {"text": "`src/pages/IntentsPage.tsx:1090` calls `POST /api/intents/import-google-sheets/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/import-google-sheets/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3ac04631e4df945", "name": "Dangling fetch: POST /api/intents/import-xlsx/preview (src/pages/IntentsPage.tsx:1122)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/import-xlsx/preview (src/pages/IntentsPage.tsx:1122)"}, "fullDescription": {"text": "`src/pages/IntentsPage.tsx:1122` calls `POST /api/intents/import-xlsx/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/import-xlsx/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53f3c74efeefda1b", "name": "Dangling fetch: POST /api/intents/import-xlsx/commit (src/pages/IntentsPage.tsx:1171)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/import-xlsx/commit (src/pages/IntentsPage.tsx:1171)"}, "fullDescription": {"text": "`src/pages/IntentsPage.tsx:1171` calls `POST /api/intents/import-xlsx/commit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/import-xlsx/commit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-104a5c2cdf0641c2", "name": "Dangling fetch: POST /api/intents/import-google-sheets/commit (src/pages/IntentsPage.tsx:1177)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/import-google-sheets/commit (src/pages/IntentsPage.tsx:1177)"}, "fullDescription": {"text": "`src/pages/IntentsPage.tsx:1177` calls `POST /api/intents/import-google-sheets/commit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/import-google-sheets/commit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-514346aa6c930972", "name": "Dangling fetch: GET /api/precos-alterados?dias=${dias}&status=todos (src/pages/PrecosAlteradosPage.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/precos-alterados?dias=${dias}&status=todos (src/pages/PrecosAlteradosPage.tsx:58)"}, "fullDescription": {"text": "`src/pages/PrecosAlteradosPage.tsx:58` calls `GET /api/precos-alterados?dias=${dias}&status=todos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/precos-alterados`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5de3c2efac3fc8d", "name": "Dangling fetch: POST /api/precos-alterados/${id}/ajustar (src/pages/PrecosAlteradosPage.tsx:74)", "shortDescription": {"text": "Dangling fetch: POST /api/precos-alterados/${id}/ajustar (src/pages/PrecosAlteradosPage.tsx:74)"}, "fullDescription": {"text": "`src/pages/PrecosAlteradosPage.tsx:74` calls `POST /api/precos-alterados/${id}/ajustar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/precos-alterados/<p>/ajustar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7e01ceb19b4a706", "name": "Dangling fetch: POST /api/precos-alterados/marcar-todos-ajustados (src/pages/PrecosAlteradosPage.tsx:91)", "shortDescription": {"text": "Dangling fetch: POST /api/precos-alterados/marcar-todos-ajustados (src/pages/PrecosAlteradosPage.tsx:91)"}, "fullDescription": {"text": "`src/pages/PrecosAlteradosPage.tsx:91` calls `POST /api/precos-alterados/marcar-todos-ajustados` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/precos-alterados/marcar-todos-ajustados`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-367dc2947250672b", "name": "Dangling fetch: POST /api/repairs/${repairId}/attach (src/pages/RepairsPage.tsx:16)", "shortDescription": {"text": "Dangling fetch: POST /api/repairs/${repairId}/attach (src/pages/RepairsPage.tsx:16)"}, "fullDescription": {"text": "`src/pages/RepairsPage.tsx:16` calls `POST /api/repairs/${repairId}/attach` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/repairs/<p>/attach`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-790db8821d439c4c", "name": "Dangling fetch: GET /api/cashback/resumo (src/pages/CashbackPage.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/cashback/resumo (src/pages/CashbackPage.tsx:48)"}, "fullDescription": {"text": "`src/pages/CashbackPage.tsx:48` calls `GET /api/cashback/resumo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/cashback/resumo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7111e50a70561ee", "name": "Dangling fetch: GET /api/cashback/clientes?min=0.01&limit=200&ordenar=${ordenar} (src/pages/CashbackPage.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/cashback/clientes?min=0.01&limit=200&ordenar=${ordenar} (src/pages/CashbackPage.tsx:49)"}, "fullDescription": {"text": "`src/pages/CashbackPage.tsx:49` calls `GET /api/cashback/clientes?min=0.01&limit=200&ordenar=${ordenar}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/cashback/clientes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27fa97e703f8ab86", "name": "Dangling fetch: GET /api/financeiro/resumo${qsStore} (src/pages/FinanceiroPage.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/resumo${qsStore} (src/pages/FinanceiroPage.tsx:70)"}, "fullDescription": {"text": "`src/pages/FinanceiroPage.tsx:70` calls `GET /api/financeiro/resumo${qsStore}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/resumo/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f06ba1588b2032e", "name": "Dangling fetch: GET /api/financeiro/dre?${params} (src/pages/FinanceiroPage.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/financeiro/dre?${params} (src/pages/FinanceiroPage.tsx:80)"}, "fullDescription": {"text": "`src/pages/FinanceiroPage.tsx:80` calls `GET /api/financeiro/dre?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/dre`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f55da7f8d02f91d8", "name": "Dangling fetch: POST /api/financeiro/upload${qs} (src/pages/FinanceiroPage.tsx:92)", "shortDescription": {"text": "Dangling fetch: POST /api/financeiro/upload${qs} (src/pages/FinanceiroPage.tsx:92)"}, "fullDescription": {"text": "`src/pages/FinanceiroPage.tsx:92` calls `POST /api/financeiro/upload${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/upload/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c81d910bacff7e5", "name": "Dangling fetch: POST /api/financeiro/sync-google (src/pages/FinanceiroPage.tsx:113)", "shortDescription": {"text": "Dangling fetch: POST /api/financeiro/sync-google (src/pages/FinanceiroPage.tsx:113)"}, "fullDescription": {"text": "`src/pages/FinanceiroPage.tsx:113` calls `POST /api/financeiro/sync-google` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/financeiro/sync-google`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43564449822a6b22", "name": "Dangling fetch: GET /api/integracoes/nello/analises (src/pages/PerfilRendimentoPage.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/integracoes/nello/analises (src/pages/PerfilRendimentoPage.tsx:84)"}, "fullDescription": {"text": "`src/pages/PerfilRendimentoPage.tsx:84` calls `GET /api/integracoes/nello/analises` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/analises`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-824df058e7c6cadf", "name": "Dangling fetch: GET /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:98)"}, "fullDescription": {"text": "`src/pages/PerfilRendimentoPage.tsx:98` calls `GET /api/integracoes/nello/analises/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/analises/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8def984b97354f60", "name": "Dangling fetch: DELETE /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:112)", "shortDescription": {"text": "Dangling fetch: DELETE /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:112)"}, "fullDescription": {"text": "`src/pages/PerfilRendimentoPage.tsx:112` calls `DELETE /api/integracoes/nello/analises/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/analises/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5f38aa9c5f9e090", "name": "Dangling fetch: POST /api/integracoes/nello/analise-ia (src/pages/PerfilRendimentoPage.tsx:133)", "shortDescription": {"text": "Dangling fetch: POST /api/integracoes/nello/analise-ia (src/pages/PerfilRendimentoPage.tsx:133)"}, "fullDescription": {"text": "`src/pages/PerfilRendimentoPage.tsx:133` calls `POST /api/integracoes/nello/analise-ia` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/analise-ia`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09c377e9e054b3e5", "name": "Dangling fetch: GET /api/integracoes/nello/equipe-perfil (src/pages/PerfilRendimentoPage.tsx:164)", "shortDescription": {"text": "Dangling fetch: GET /api/integracoes/nello/equipe-perfil (src/pages/PerfilRendimentoPage.tsx:164)"}, "fullDescription": {"text": "`src/pages/PerfilRendimentoPage.tsx:164` calls `GET /api/integracoes/nello/equipe-perfil` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/nello/equipe-perfil`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6699e856cdcbab57", "name": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:55)", "shortDescription": {"text": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:55)"}, "fullDescription": {"text": "`src/pages/PerfilPage.tsx:55` calls `PATCH /api/team/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b051337113fc59eb", "name": "Dangling fetch: POST /api/team/me/resumo-test (src/pages/PerfilPage.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/team/me/resumo-test (src/pages/PerfilPage.tsx:76)"}, "fullDescription": {"text": "`src/pages/PerfilPage.tsx:76` calls `POST /api/team/me/resumo-test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/me/resumo-test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbfa288783aef04c", "name": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:93)", "shortDescription": {"text": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:93)"}, "fullDescription": {"text": "`src/pages/PerfilPage.tsx:93` calls `PATCH /api/team/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a4aecd9b9783965", "name": "Dangling fetch: POST /api/intents/${intentId}/notified (src/pages/WorkQueuePage.tsx:148)", "shortDescription": {"text": "Dangling fetch: POST /api/intents/${intentId}/notified (src/pages/WorkQueuePage.tsx:148)"}, "fullDescription": {"text": "`src/pages/WorkQueuePage.tsx:148` calls `POST /api/intents/${intentId}/notified` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/intents/<p>/notified`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-520e42691a4cbdd7", "name": "Dangling fetch: POST /api/team/assignments (src/pages/WorkQueuePage.tsx:781)", "shortDescription": {"text": "Dangling fetch: POST /api/team/assignments (src/pages/WorkQueuePage.tsx:781)"}, "fullDescription": {"text": "`src/pages/WorkQueuePage.tsx:781` calls `POST /api/team/assignments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/team/assignments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50a148df5c1144f6", "name": "Dangling fetch: GET /api/reports/fluxo-horarios?${params.toString()} (src/pages/ReportsPage.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/reports/fluxo-horarios?${params.toString()} (src/pages/ReportsPage.tsx:53)"}, "fullDescription": {"text": "`src/pages/ReportsPage.tsx:53` calls `GET /api/reports/fluxo-horarios?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/reports/fluxo-horarios`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-183003386140f34e", "name": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/ReportsPage.tsx:1199)", "shortDescription": {"text": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/ReportsPage.tsx:1199)"}, "fullDescription": {"text": "`src/pages/ReportsPage.tsx:1199` calls `GET /api/maquininhas/transacoes?${qs.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maquininhas/transacoes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-789bc45d6328f261", "name": "Dangling fetch: POST /api/analise/comparativo-custom (src/pages/ComparativoYoYPage.tsx:45)", "shortDescription": {"text": "Dangling fetch: POST /api/analise/comparativo-custom (src/pages/ComparativoYoYPage.tsx:45)"}, "fullDescription": {"text": "`src/pages/ComparativoYoYPage.tsx:45` calls `POST /api/analise/comparativo-custom` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analise/comparativo-custom`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de09509613724289", "name": "Dangling fetch: GET /api/metas-mensais/${loja.id}/${anoMes.ano}/${anoMes.mes} (src/pages/Dashboard.tsx:646)", "shortDescription": {"text": "Dangling fetch: GET /api/metas-mensais/${loja.id}/${anoMes.ano}/${anoMes.mes} (src/pages/Dashboard.tsx:646)"}, "fullDescription": {"text": "`src/pages/Dashboard.tsx:646` calls `GET /api/metas-mensais/${loja.id}/${anoMes.ano}/${anoMes.mes}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/metas-mensais/<p>/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c3f9321eb74c070", "name": "Dangling fetch: GET /api/integracoes/central-franqueado/pedidos (src/pages/CentralFranqueadoPage.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/integracoes/central-franqueado/pedidos (src/pages/CentralFranqueadoPage.tsx:49)"}, "fullDescription": {"text": "`src/pages/CentralFranqueadoPage.tsx:49` calls `GET /api/integracoes/central-franqueado/pedidos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/central-franqueado/pedidos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b6fd92b12b56ff5", "name": "Dangling fetch: POST /api/integracoes/central-franqueado/sync (src/pages/CentralFranqueadoPage.tsx:66)", "shortDescription": {"text": "Dangling fetch: POST /api/integracoes/central-franqueado/sync (src/pages/CentralFranqueadoPage.tsx:66)"}, "fullDescription": {"text": "`src/pages/CentralFranqueadoPage.tsx:66` calls `POST /api/integracoes/central-franqueado/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/integracoes/central-franqueado/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-294f96d0b70812a5", "name": "Dangling fetch: POST /api/clientes-por-produto/criar-resgate (src/pages/ClientesPorProdutoPage.tsx:161)", "shortDescription": {"text": "Dangling fetch: POST /api/clientes-por-produto/criar-resgate (src/pages/ClientesPorProdutoPage.tsx:161)"}, "fullDescription": {"text": "`src/pages/ClientesPorProdutoPage.tsx:161` calls `POST /api/clientes-por-produto/criar-resgate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clientes-por-produto/criar-resgate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20ed36ab1eade278", "name": "Dangling fetch: GET /api/clientes-por-produto?${params} (src/pages/ClientesPorProdutoPage.tsx:213)", "shortDescription": {"text": "Dangling fetch: GET /api/clientes-por-produto?${params} (src/pages/ClientesPorProdutoPage.tsx:213)"}, "fullDescription": {"text": "`src/pages/ClientesPorProdutoPage.tsx:213` calls `GET /api/clientes-por-produto?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clientes-por-produto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a0d258aa6ec9bcf", "name": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/index.ts:432)", "shortDescription": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/index.ts:432)"}, "fullDescription": {"text": "`server/src/index.ts:432` calls `POST https://accounts.spotify.com/api/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/accounts.spotify.com/api/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1121642536c8c4d0", "name": "Dangling fetch: GET https://api.spotify.com/v1/me (server/src/index.ts:445)", "shortDescription": {"text": "Dangling fetch: GET https://api.spotify.com/v1/me (server/src/index.ts:445)"}, "fullDescription": {"text": "`server/src/index.ts:445` calls `GET https://api.spotify.com/v1/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.spotify.com/v1/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c10114071ec9fd54", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneId}?fields=verified_name,display_phone_number (server/src/in", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneId}?fields=verified_name,display_phone_number (server/src/index.ts:1259)"}, "fullDescription": {"text": "`server/src/index.ts:1259` calls `GET https://graph.facebook.com/v21.0/${phoneId}?fields=verified_name,display_phone_number` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6807c5400b77a966", "name": "Dangling fetch: GET https://www.varejofacil.com/api/v1/produto/produtos?count=1 (server/src/index.ts:1273)", "shortDescription": {"text": "Dangling fetch: GET https://www.varejofacil.com/api/v1/produto/produtos?count=1 (server/src/index.ts:1273)"}, "fullDescription": {"text": "`server/src/index.ts:1273` calls `GET https://www.varejofacil.com/api/v1/produto/produtos?count=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.varejofacil.com/api/v1/produto/produtos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-457bcd58d946ed1b", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/${accountId}?fields=name,currency (server/src/index.ts:1287)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${accountId}?fields=name,currency (server/src/index.ts:1287)"}, "fullDescription": {"text": "`server/src/index.ts:1287` calls `GET https://graph.facebook.com/v21.0/${accountId}?fields=name,currency` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a65a544492ccb91", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/${businessId}?fields=username (server/src/index.ts:1302)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${businessId}?fields=username (server/src/index.ts:1302)"}, "fullDescription": {"text": "`server/src/index.ts:1302` calls `GET https://graph.facebook.com/v21.0/${businessId}?fields=username` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c45cbfa37b55a83a", "name": "Dangling fetch: POST https://graph.facebook.com/v22.0/${phoneNumberId}/register (server/src/index.ts:2172)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v22.0/${phoneNumberId}/register (server/src/index.ts:2172)"}, "fullDescription": {"text": "`server/src/index.ts:2172` calls `POST https://graph.facebook.com/v22.0/${phoneNumberId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v22.0/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d14d307fc1a3c4b", "name": "Dangling fetch: GET https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2286)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2286)"}, "fullDescription": {"text": "`server/src/index.ts:2286` calls `GET https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v22.0/<p>/subscribed_apps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f68354de6e31d42d", "name": "Dangling fetch: GET https://graph.facebook.com/v22.0/${phoneNumberId}?fields=display_phone_number,verified_name,quality_", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v22.0/${phoneNumberId}?fields=display_phone_number,verified_name,quality_rating,throughput,status,messaging_limit_tier (server/src/index.ts:2299)"}, "fullDescription": {"text": "`server/src/index.ts:2299` calls `GET https://graph.facebook.com/v22.0/${phoneNumberId}?fields=display_phone_number,verified_name,quality_rating,throughput,status,messaging_limit_tier` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v22.0/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cfd4c4f8d159c51", "name": "Dangling fetch: POST https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2352)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2352)"}, "fullDescription": {"text": "`server/src/index.ts:2352` calls `POST https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v22.0/<p>/subscribed_apps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-206c9e8506b16834", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/media (server/src/index.ts:4786)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/media (server/src/index.ts:4786)"}, "fullDescription": {"text": "`server/src/index.ts:4786` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/media` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/media`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3546220943af10d", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4812)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4812)"}, "fullDescription": {"text": "`server/src/index.ts:4812` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3207f10f068959ad", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4927)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4927)"}, "fullDescription": {"text": "`server/src/index.ts:4927` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44b2ade9f783ff96", "name": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/negociacoes-cartao?token=${token}&quantidade=500 (ser", "shortDescription": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/negociacoes-cartao?token=${token}&quantidade=500 (server/src/index.ts:7037)"}, "fullDescription": {"text": "`server/src/index.ts:7037` calls `GET https://integrador.varejonline.com.br/apps/api/negociacoes-cartao?token=${token}&quantidade=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/integrador.varejonline.com.br/apps/api/negociacoes-cartao`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46d9cd72842fe6d4", "name": "Dangling fetch: POST https://sms.comtele.com.br/api/v2/send (server/src/sms/provider.ts:109)", "shortDescription": {"text": "Dangling fetch: POST https://sms.comtele.com.br/api/v2/send (server/src/sms/provider.ts:109)"}, "fullDescription": {"text": "`server/src/sms/provider.ts:109` calls `POST https://sms.comtele.com.br/api/v2/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/sms.comtele.com.br/api/v2/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e2ccb558f9d4fec", "name": "Dangling fetch: POST https://api.zenvia.com/v2/channels/sms/messages (server/src/sms/provider.ts:231)", "shortDescription": {"text": "Dangling fetch: POST https://api.zenvia.com/v2/channels/sms/messages (server/src/sms/provider.ts:231)"}, "fullDescription": {"text": "`server/src/sms/provider.ts:231` calls `POST https://api.zenvia.com/v2/channels/sms/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.zenvia.com/v2/channels/sms/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80834a84e67b017e", "name": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/src/ai/anthropic-client.ts:68)", "shortDescription": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/src/ai/anthropic-client.ts:68)"}, "fullDescription": {"text": "`server/src/ai/anthropic-client.ts:68` calls `GET https://api.anthropic.com/v1/models?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-704c97e9a2e6f42d", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (server/src/routes/metas-mensais.ts:295)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (server/src/routes/metas-mensais.ts:295)"}, "fullDescription": {"text": "`server/src/routes/metas-mensais.ts:295` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8bc1420be11a4f90", "name": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:229)", "shortDescription": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:229)"}, "fullDescription": {"text": "`server/src/routes/sinapse-musico.ts:229` calls `POST https://accounts.spotify.com/api/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/accounts.spotify.com/api/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2767cd79664b3a4", "name": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:259)", "shortDescription": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:259)"}, "fullDescription": {"text": "`server/src/routes/sinapse-musico.ts:259` calls `POST https://accounts.spotify.com/api/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/accounts.spotify.com/api/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19d5bb4e0f07c48d", "name": "Dangling fetch: GET https://open.spotify.com/embed/playlist/${pid} (server/src/routes/sinapse-musico.ts:346)", "shortDescription": {"text": "Dangling fetch: GET https://open.spotify.com/embed/playlist/${pid} (server/src/routes/sinapse-musico.ts:346)"}, "fullDescription": {"text": "`server/src/routes/sinapse-musico.ts:346` calls `GET https://open.spotify.com/embed/playlist/${pid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.spotify.com/embed/playlist/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cccb7e2045ead3b", "name": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(vid)}?token=${token} (s", "shortDescription": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(vid)}?token=${token} (server/src/routes/estoque-lojas.ts:636)"}, "fullDescription": {"text": "`server/src/routes/estoque-lojas.ts:636` calls `GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(vid)}?token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/integrador.varejonline.com.br/apps/api/produtos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9747c8a377e773ed", "name": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(varejoId)}?token=${toke", "shortDescription": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(varejoId)}?token=${token} (server/src/routes/estoque-lojas.ts:741)"}, "fullDescription": {"text": "`server/src/routes/estoque-lojas.ts:741` calls `GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(varejoId)}?token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/integrador.varejonline.com.br/apps/api/produtos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b960c3f86a9d3357", "name": "Dangling fetch: GET http://localhost:${process.env.PORT ?? 3002}/api/campanhas-cloud/templates (server/src/routes/campan", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${process.env.PORT ?? 3002}/api/campanhas-cloud/templates (server/src/routes/campanhas-v2.ts:137)"}, "fullDescription": {"text": "`server/src/routes/campanhas-v2.ts:137` calls `GET http://localhost:${process.env.PORT ?? 3002}/api/campanhas-cloud/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:${process.env.port `\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b189c3b570f366dc", "name": "Dangling fetch: POST https://ai.gateway.lovable.dev/v1/chat/completions (supabase/functions/ai-campaign/index.ts:46)", "shortDescription": {"text": "Dangling fetch: POST https://ai.gateway.lovable.dev/v1/chat/completions (supabase/functions/ai-campaign/index.ts:46)"}, "fullDescription": {"text": "`supabase/functions/ai-campaign/index.ts:46` calls `POST https://ai.gateway.lovable.dev/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/ai.gateway.lovable.dev/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e89a8887b328cc7", "name": "Unused endpoint: USE /supabase-api", "shortDescription": {"text": "Unused endpoint: USE /supabase-api"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /supabase-api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8636dd48e48d1da9", "name": "Unused endpoint: USE /api/sessions", "shortDescription": {"text": "Unused endpoint: USE /api/sessions"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/sessions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7472eefab50d274", "name": "Unused endpoint: USE /api/team", "shortDescription": {"text": "Unused endpoint: USE /api/team"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/team` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5a94b3756c9fc60", "name": "Unused endpoint: USE /api/financeiro", "shortDescription": {"text": "Unused endpoint: USE /api/financeiro"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/financeiro` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e70e63a6cb974f4", "name": "Unused endpoint: USE /api/produtos-analises", "shortDescription": {"text": "Unused endpoint: USE /api/produtos-analises"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/produtos-analises` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c22186b9b9e31602", "name": "Unused endpoint: USE /api/ia-painel", "shortDescription": {"text": "Unused endpoint: USE /api/ia-painel"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/ia-painel` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40568327602d5d2c", "name": "Unused endpoint: USE /api/nfs-boletos", "shortDescription": {"text": "Unused endpoint: USE /api/nfs-boletos"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/nfs-boletos` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29a67114af52dd97", "name": "Unused endpoint: USE /api/ia-contexto-empresa", "shortDescription": {"text": "Unused endpoint: USE /api/ia-contexto-empresa"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/ia-contexto-empresa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3a8b7932f72b92f", "name": "Unused endpoint: USE /api/notifications", "shortDescription": {"text": "Unused endpoint: USE /api/notifications"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/notifications` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f1bf2ea29fcc3c0", "name": "Unused endpoint: USE /api/campanhas-v2", "shortDescription": {"text": "Unused endpoint: USE /api/campanhas-v2"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/campanhas-v2` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-521d383a57bde1f8", "name": "Unused endpoint: USE /api/integracoes/nello", "shortDescription": {"text": "Unused endpoint: USE /api/integracoes/nello"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/integracoes/nello` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a6e90e895319165", "name": "Unused endpoint: USE /api/integracoes/central-franqueado", "shortDescription": {"text": "Unused endpoint: USE /api/integracoes/central-franqueado"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/integracoes/central-franqueado` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88941e74faaf3624", "name": "Unused endpoint: USE /api/leads-comercial", "shortDescription": {"text": "Unused endpoint: USE /api/leads-comercial"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/leads-comercial` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b8a9a8826292041", "name": "Unused endpoint: POST /api/anomalias/verificar", "shortDescription": {"text": "Unused endpoint: POST /api/anomalias/verificar"}, "fullDescription": {"text": "`server/src/index.ts` declares `POST /api/anomalias/verificar` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8dca8fdc1e10991", "name": "Unused endpoint: POST /api/relatorios/disparar-mes", "shortDescription": {"text": "Unused endpoint: POST /api/relatorios/disparar-mes"}, "fullDescription": {"text": "`server/src/index.ts` declares `POST /api/relatorios/disparar-mes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af0c0daafdd89b33", "name": "Unused endpoint: USE /api/avisos", "shortDescription": {"text": "Unused endpoint: USE /api/avisos"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/avisos` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b49fc4f9a8d52a1", "name": "Unused endpoint: USE /api/welcome", "shortDescription": {"text": "Unused endpoint: USE /api/welcome"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/welcome` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d32558b1a2ab00b3", "name": "Unused endpoint: USE /api/estoque-lojas", "shortDescription": {"text": "Unused endpoint: USE /api/estoque-lojas"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/estoque-lojas` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4975ed587852888f", "name": "Unused endpoint: USE /api/vendas-detalhe", "shortDescription": {"text": "Unused endpoint: USE /api/vendas-detalhe"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/vendas-detalhe` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1308d9881944e31", "name": "Unused endpoint: USE /api/varejo-negociacoes", "shortDescription": {"text": "Unused endpoint: USE /api/varejo-negociacoes"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/varejo-negociacoes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65b8d1e3967bb355", "name": "Unused endpoint: USE /api/trainings", "shortDescription": {"text": "Unused endpoint: USE /api/trainings"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/trainings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-538bbf0ab06b039c", "name": "Unused endpoint: USE /api/push", "shortDescription": {"text": "Unused endpoint: USE /api/push"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/push` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f63986b663b62893", "name": "Unused endpoint: USE /api/mural", "shortDescription": {"text": "Unused endpoint: USE /api/mural"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/mural` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-787b3ab65171ae33", "name": "Unused endpoint: USE /api/auditoria-estoque", "shortDescription": {"text": "Unused endpoint: USE /api/auditoria-estoque"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/auditoria-estoque` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08cd3819597bfa1d", "name": "Unused endpoint: USE /api/activity-log", "shortDescription": {"text": "Unused endpoint: USE /api/activity-log"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/activity-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a86e7cffac7d7f43", "name": "Unused endpoint: USE /api/mobile-devices", "shortDescription": {"text": "Unused endpoint: USE /api/mobile-devices"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/mobile-devices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26890ce1452230a6", "name": "Unused endpoint: USE /api/vendedoras-analise", "shortDescription": {"text": "Unused endpoint: USE /api/vendedoras-analise"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/vendedoras-analise` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d115c6f666e8a685", "name": "Unused endpoint: USE /api/fornecedores", "shortDescription": {"text": "Unused endpoint: USE /api/fornecedores"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/fornecedores` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4b9984ed3dcd058", "name": "Unused endpoint: USE /api/leads-import", "shortDescription": {"text": "Unused endpoint: USE /api/leads-import"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/leads-import` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec4ba975c979878d", "name": "Unused endpoint: USE /api/email-config", "shortDescription": {"text": "Unused endpoint: USE /api/email-config"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/email-config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffae45ee1e8382aa", "name": "Unused endpoint: USE /api/email-campaigns", "shortDescription": {"text": "Unused endpoint: USE /api/email-campaigns"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/email-campaigns` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c34ee468b0065523", "name": "Unused endpoint: USE /api/sms-campaigns", "shortDescription": {"text": "Unused endpoint: USE /api/sms-campaigns"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/sms-campaigns` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b92dc87a4256298", "name": "Unused endpoint: USE /api/chat", "shortDescription": {"text": "Unused endpoint: USE /api/chat"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a67e6dcc4d1f338", "name": "Unused endpoint: USE /api/insumos", "shortDescription": {"text": "Unused endpoint: USE /api/insumos"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/insumos` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca53df65d09a8421", "name": "Unused endpoint: USE /api/analise", "shortDescription": {"text": "Unused endpoint: USE /api/analise"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/analise` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-481f2c140846df15", "name": "Unused endpoint: USE /api/clientes-por-produto", "shortDescription": {"text": "Unused endpoint: USE /api/clientes-por-produto"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/clientes-por-produto` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1b3b031004ea6df", "name": "Unused endpoint: USE /api/campanhas-resgate", "shortDescription": {"text": "Unused endpoint: USE /api/campanhas-resgate"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/campanhas-resgate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-943932994aecc751", "name": "Unused endpoint: USE /api/musico", "shortDescription": {"text": "Unused endpoint: USE /api/musico"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/musico` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe052376cef4c08d", "name": "Unused endpoint: GET /spotify/callback", "shortDescription": {"text": "Unused endpoint: GET /spotify/callback"}, "fullDescription": {"text": "`server/src/index.ts` declares `GET /spotify/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b2775b25fe7e83b", "name": "Unused endpoint: USE /api/agenda", "shortDescription": {"text": "Unused endpoint: USE /api/agenda"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/agenda` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f1af875ae07230b", "name": "Unused endpoint: USE /api/quotes", "shortDescription": {"text": "Unused endpoint: USE /api/quotes"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/quotes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8db4f4c5420e1e33", "name": "Unused endpoint: USE /api/contracts", "shortDescription": {"text": "Unused endpoint: USE /api/contracts"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/contracts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f8e0e29ff8b61f1", "name": "Unused endpoint: USE /api/precos-alterados", "shortDescription": {"text": "Unused endpoint: USE /api/precos-alterados"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/precos-alterados` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec0488b38c7bbee2", "name": "Unused endpoint: USE /api/cashback", "shortDescription": {"text": "Unused endpoint: USE /api/cashback"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/cashback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d8bdcdf75007b5b", "name": "Unused endpoint: USE /api/maquininhas", "shortDescription": {"text": "Unused endpoint: USE /api/maquininhas"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/maquininhas` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-adf2bc596d9ef568", "name": "Unused endpoint: USE /api/meta-ads", "shortDescription": {"text": "Unused endpoint: USE /api/meta-ads"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/meta-ads` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c18fb988f709128", "name": "Unused endpoint: USE /api/metas-mensais", "shortDescription": {"text": "Unused endpoint: USE /api/metas-mensais"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/metas-mensais` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e91910ba293e372", "name": "Unused endpoint: USE /api/termos-premiacao", "shortDescription": {"text": "Unused endpoint: USE /api/termos-premiacao"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/termos-premiacao` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24259eec99c56be9", "name": "Unused endpoint: USE /api/campanhas-cloud", "shortDescription": {"text": "Unused endpoint: USE /api/campanhas-cloud"}, "fullDescription": {"text": "`server/src/index.ts` declares `USE /api/campanhas-cloud` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25124"}, "properties": {"repository": "cristianocristianonunes-create/nello-pulseos", "repoUrl": "https://github.com/cristianocristianonunes-create/nello-pulseos", "branch": "main"}, "results": [{"ruleId": "scanner-3da83c6603f0c4e4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AppLayout.tsx:455"}, "properties": {"repobilityId": "1d00af5eb6c0ef0e", "scanner": "scanner-primary", "fingerprint": "3da83c6603f0c4e4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0ed3810e16268a9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/EquipeOnlineCard.tsx:144"}, "properties": {"repobilityId": "d31e1fd3cac6ab63", "scanner": "scanner-primary", "fingerprint": "f0ed3810e16268a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4f01316d82af5c2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TreinamentosCard.tsx:103"}, "properties": {"repobilityId": "5f7dda40727b1b49", "scanner": "scanner-primary", "fingerprint": "4f01316d82af5c2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe2834df4a9373e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/SongFilesManager.tsx:89"}, "properties": {"repobilityId": "7cedd395ffb1e3eb", "scanner": "scanner-primary", "fingerprint": "fe2834df4a9373e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-18c75c397f8d2f10", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ServerStatusPanel.tsx:224"}, "properties": {"repobilityId": "6722ec820b995218", "scanner": "scanner-primary", "fingerprint": "18c75c397f8d2f10", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7426f9fac9dabe3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HistoricoCategorizado.tsx:151"}, "properties": {"repobilityId": "70a27b2411598008", "scanner": "scanner-primary", "fingerprint": "a7426f9fac9dabe3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a31ae3c0697a7462", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/CategoriasMultiSelect.tsx:51"}, "properties": {"repobilityId": "46d8e8249759755d", "scanner": "scanner-primary", "fingerprint": "a31ae3c0697a7462", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b8409ec1c02c9cd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AttachButtons.tsx:104"}, "properties": {"repobilityId": "ac74c4d5956ed17c", "scanner": "scanner-primary", "fingerprint": "1b8409ec1c02c9cd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3fec93dfaef36aa2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/BirthdayConversionCard.tsx:383"}, "properties": {"repobilityId": "177c828f29508ad2", "scanner": "scanner-primary", "fingerprint": "3fec93dfaef36aa2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3437bbb3046c84d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DisparosBanner.tsx:50"}, "properties": {"repobilityId": "1a10dbeb93f3c490", "scanner": "scanner-primary", "fingerprint": "e3437bbb3046c84d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b209c77e83b119fd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "b8c68f17a4018107", "scanner": "scanner-primary", "fingerprint": "b209c77e83b119fd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2e1f3e75f089b298", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistsPage.tsx:201"}, "properties": {"repobilityId": "b8dd25c8caafec16", "scanner": "scanner-primary", "fingerprint": "2e1f3e75f089b298", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc2cdf7f6b2875f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PipelinePage.tsx:75"}, "properties": {"repobilityId": "487c150dec8f9319", "scanner": "scanner-primary", "fingerprint": "cc2cdf7f6b2875f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5eff04c81d138efc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfiguracoesUnidadesPage.tsx:123"}, "properties": {"repobilityId": "8095423167b81f56", "scanner": "scanner-primary", "fingerprint": "5eff04c81d138efc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0841a0cb3e8da9d5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EstoqueLojasPage.tsx:546"}, "properties": {"repobilityId": "472ea20fe9274cad", "scanner": "scanner-primary", "fingerprint": "0841a0cb3e8da9d5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d3f27774950b0d25", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/StoreMonitorPage.tsx:697"}, "properties": {"repobilityId": "5400a43798b89034", "scanner": "scanner-primary", "fingerprint": "d3f27774950b0d25", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4a0a4f02a2bcc5d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampanhasCloudPage.tsx:533"}, "properties": {"repobilityId": "1ec40ad65ae9ca24", "scanner": "scanner-primary", "fingerprint": "d4a0a4f02a2bcc5d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-406ff4ec54552eb0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConfigPage.tsx:1273"}, "properties": {"repobilityId": "332a0a6286313a59", "scanner": "scanner-primary", "fingerprint": "406ff4ec54552eb0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-892dd39500ff6544", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ServicosCatalogoPage.tsx:123"}, "properties": {"repobilityId": "0afee32ffdc8164c", "scanner": "scanner-primary", "fingerprint": "892dd39500ff6544", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d051b13672cfb8de", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoDetalhePage.tsx:236"}, "properties": {"repobilityId": "c3ccbb615b82fa43", "scanner": "scanner-primary", "fingerprint": "d051b13672cfb8de", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5ac9f6d13450715f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MetaAdsPage.tsx:107"}, "properties": {"repobilityId": "50e913872d4abc84", "scanner": "scanner-primary", "fingerprint": "5ac9f6d13450715f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b3c61aaf6d50fdc1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InstagramPage.tsx:41"}, "properties": {"repobilityId": "dad7c0456837d02a", "scanner": "scanner-primary", "fingerprint": "b3c61aaf6d50fdc1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a133f68d9f7ad0a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/InsumosPage.tsx:418"}, "properties": {"repobilityId": "c3a93f94688d2386", "scanner": "scanner-primary", "fingerprint": "8a133f68d9f7ad0a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c01b4d15b9c2934", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FinanceiroMusico.tsx:294"}, "properties": {"repobilityId": "1c95fe8fe899cbe4", "scanner": "scanner-primary", "fingerprint": "6c01b4d15b9c2934", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1bcd8d00d44bffed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ContratoPublicoPage.tsx:102"}, "properties": {"repobilityId": "13f26c8884aa473a", "scanner": "scanner-primary", "fingerprint": "1bcd8d00d44bffed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9050447bd100d6fb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ContratoPublicoPage.tsx:307"}, "properties": {"repobilityId": "3b8e9b9ec2b3a809", "scanner": "scanner-primary", "fingerprint": "9050447bd100d6fb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-499c3bdefcf0d682", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversationsPage.tsx:134"}, "properties": {"repobilityId": "59e00e83116276ae", "scanner": "scanner-primary", "fingerprint": "499c3bdefcf0d682", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7268fb1f98afdf8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ResponsesPage.tsx:206"}, "properties": {"repobilityId": "b4584d4aa2da9f96", "scanner": "scanner-primary", "fingerprint": "a7268fb1f98afdf8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a1a9a68f0ab59196", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ConversasPage.tsx:47"}, "properties": {"repobilityId": "0c67941dc2a5b04d", "scanner": "scanner-primary", "fingerprint": "a1a9a68f0ab59196", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3601b74262deae82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/TreinamentosPage.tsx:202"}, "properties": {"repobilityId": "cffd926a31cd7005", "scanner": "scanner-primary", "fingerprint": "3601b74262deae82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-515f6d2f35446f34", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/EquipamentoPage.tsx:159"}, "properties": {"repobilityId": "0fa0b65688b4fd9f", "scanner": "scanner-primary", "fingerprint": "515f6d2f35446f34", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3181574ffa39cc84", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardMusico.tsx:205"}, "properties": {"repobilityId": "bda9177a77b1372f", "scanner": "scanner-primary", "fingerprint": "3181574ffa39cc84", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bbdb1019fe0c168e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/VendedorasAnalisePage.tsx:350"}, "properties": {"repobilityId": "9643299deb67ed62", "scanner": "scanner-primary", "fingerprint": "bbdb1019fe0c168e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec70f2836e51531d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CampaignsPage.tsx:423"}, "properties": {"repobilityId": "8e46378fc2c1c508", "scanner": "scanner-primary", "fingerprint": "ec70f2836e51531d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4218006f95172609", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/IntentsPage.tsx:391"}, "properties": {"repobilityId": "579e775392ea20eb", "scanner": "scanner-primary", "fingerprint": "4218006f95172609", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2b018bd0789df5eb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CentralCampanhasPage.tsx:478"}, "properties": {"repobilityId": "b469e395cb6fac37", "scanner": "scanner-primary", "fingerprint": "2b018bd0789df5eb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-218e29599568a681", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/NfsBoletosPage.tsx:223"}, "properties": {"repobilityId": "b5388a02528a682e", "scanner": "scanner-primary", "fingerprint": "218e29599568a681", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0ab9bb4f17bc7b99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/RepairsPage.tsx:93"}, "properties": {"repobilityId": "c8cc7471ffe77243", "scanner": "scanner-primary", "fingerprint": "0ab9bb4f17bc7b99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-12a7f775b08def05", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CashbackPage.tsx:212"}, "properties": {"repobilityId": "e5377c176a0c0d59", "scanner": "scanner-primary", "fingerprint": "12a7f775b08def05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43ad8bdf01a14938", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PlaylistEditorPage.tsx:78"}, "properties": {"repobilityId": "104a8f3c86c175ab", "scanner": "scanner-primary", "fingerprint": "43ad8bdf01a14938", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ef02f3190474b7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/PerfilPage.tsx:157"}, "properties": {"repobilityId": "b82639de255acc5f", "scanner": "scanner-primary", "fingerprint": "7ef02f3190474b7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f4d27d3a2da5e31", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/Dashboard.tsx:1797"}, "properties": {"repobilityId": "ef6dffe971709383", "scanner": "scanner-primary", "fingerprint": "5f4d27d3a2da5e31", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d64c88e0df627440", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/full-sync-clients.ts:67"}, "properties": {"repobilityId": "0175332b7afb9868", "scanner": "scanner-primary", "fingerprint": "d64c88e0df627440", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ca762c0cb8f16b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-pedidos.ts:36"}, "properties": {"repobilityId": "31fc872e70079303", "scanner": "scanner-primary", "fingerprint": "4ca762c0cb8f16b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73ca6c83e5acc814", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:31"}, "properties": {"repobilityId": "966123b8e19cb728", "scanner": "scanner-primary", "fingerprint": "73ca6c83e5acc814", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a022f009351746c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/resumo-diario.ts:152"}, "properties": {"repobilityId": "9d9206ce5bc71027", "scanner": "scanner-primary", "fingerprint": "a022f009351746c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5db97f1874d51cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/modo-operacao.ts:29"}, "properties": {"repobilityId": "b095de8208c37cf8", "scanner": "scanner-primary", "fingerprint": "b5db97f1874d51cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02ac61a88b437cb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/auto-config.ts:59"}, "properties": {"repobilityId": "3cc35f4db9a71060", "scanner": "scanner-primary", "fingerprint": "02ac61a88b437cb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb20cf3170c4106d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/aviso-whatsapp-urgente.ts:56"}, "properties": {"repobilityId": "62f546bdd163d81f", "scanner": "scanner-primary", "fingerprint": "fb20cf3170c4106d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c109816ab27eeec9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper.ts:60"}, "properties": {"repobilityId": "0f716169940a5cde", "scanner": "scanner-primary", "fingerprint": "c109816ab27eeec9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e2610a4c503d2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-ddp.ts:249"}, "properties": {"repobilityId": "77b7e4f88f3ff9b2", "scanner": "scanner-primary", "fingerprint": "b2e2610a4c503d2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1204c90111a937d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/central-franqueado/scraper-http.ts:105"}, "properties": {"repobilityId": "e8738b7fc73daf20", "scanner": "scanner-primary", "fingerprint": "1204c90111a937d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d22d87480c8f0907", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/segmentacao/calcular.ts:25"}, "properties": {"repobilityId": "76cbae6239d1dbc0", "scanner": "scanner-primary", "fingerprint": "d22d87480c8f0907", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8150aee16e39b023", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/cron/relatorio-mensal.ts:161"}, "properties": {"repobilityId": "ad9d2fd00ce8080d", "scanner": "scanner-primary", "fingerprint": "8150aee16e39b023", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42475715be897f51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/cron/anomalias-semanais.ts:147"}, "properties": {"repobilityId": "6fb466575c988e18", "scanner": "scanner-primary", "fingerprint": "42475715be897f51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b7dc0dfc00a56f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/gigcontrol/cron.ts:65"}, "properties": {"repobilityId": "5bb19a79bde32257", "scanner": "scanner-primary", "fingerprint": "4b7dc0dfc00a56f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-786b173fe4939baa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp/client-manager.ts:241"}, "properties": {"repobilityId": "16a32e975c640e00", "scanner": "scanner-primary", "fingerprint": "786b173fe4939baa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95cf6b916c310997", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/reativacao/processador.ts:244"}, "properties": {"repobilityId": "4d260e2b3946ed01", "scanner": "scanner-primary", "fingerprint": "95cf6b916c310997", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b550c18a455607ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/pos-venda/checker.ts:237"}, "properties": {"repobilityId": "d6e05ad244f2ef05", "scanner": "scanner-primary", "fingerprint": "b550c18a455607ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c274dd27d41940df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/queue/send-queue.ts:249"}, "properties": {"repobilityId": "07166b1b39798999", "scanner": "scanner-primary", "fingerprint": "c274dd27d41940df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbe053e283e72f63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/financeiro/routes.ts:112"}, "properties": {"repobilityId": "3201aae2cddab5c0", "scanner": "scanner-primary", "fingerprint": "bbe053e283e72f63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b5da12254e36409", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/evangelho/service.ts:92"}, "properties": {"repobilityId": "e63076909fbfd318", "scanner": "scanner-primary", "fingerprint": "8b5da12254e36409", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20772217681e58a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/instagram/poller.ts:113"}, "properties": {"repobilityId": "bdf3a3cadb30800e", "scanner": "scanner-primary", "fingerprint": "20772217681e58a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ded9aa27e1053ec4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/instagram/client.ts:22"}, "properties": {"repobilityId": "ced8876db94d5a98", "scanner": "scanner-primary", "fingerprint": "ded9aa27e1053ec4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ac5492b886c4779", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/sms/provider.ts:35"}, "properties": {"repobilityId": "21d895b445afa530", "scanner": "scanner-primary", "fingerprint": "3ac5492b886c4779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd07835fdf365556", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/sms/sender.ts:44"}, "properties": {"repobilityId": "5393cc2e6f265489", "scanner": "scanner-primary", "fingerprint": "dd07835fdf365556", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e591d813403c92ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/client.ts:20"}, "properties": {"repobilityId": "87a1fdf30f1c1bfd", "scanner": "scanner-primary", "fingerprint": "e591d813403c92ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49ceeacb53f92bed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/whatsapp-cloud/sender.ts:206"}, "properties": {"repobilityId": "f26a41f2297f0b7c", "scanner": "scanner-primary", "fingerprint": "49ceeacb53f92bed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0b6867709d73d61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/avisos/detect-mudanca-preco.ts:100"}, "properties": {"repobilityId": "463d1172df4c4d90", "scanner": "scanner-primary", "fingerprint": "c0b6867709d73d61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d5e1cbce85b51fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/ai/chat-bot.ts:195"}, "properties": {"repobilityId": "dee38edda398c694", "scanner": "scanner-primary", "fingerprint": "1d5e1cbce85b51fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56013a97b652362d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/birthday/checker.ts:30"}, "properties": {"repobilityId": "e4d8417ad8366a58", "scanner": "scanner-primary", "fingerprint": "56013a97b652362d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-384d2bce6d4b9aa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/nfs-boletos.ts:193"}, "properties": {"repobilityId": "61b5caa6eda8449d", "scanner": "scanner-primary", "fingerprint": "384d2bce6d4b9aa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00619e766e32d7d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/auditoria-estoque.ts:395"}, "properties": {"repobilityId": "f04da9c4db9970fa", "scanner": "scanner-primary", "fingerprint": "00619e766e32d7d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f29447719d19065", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-cloud.ts:113"}, "properties": {"repobilityId": "a1761d1b89d8ce7f", "scanner": "scanner-primary", "fingerprint": "0f29447719d19065", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd42ce96518f1400", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/sms-campaigns.ts:194"}, "properties": {"repobilityId": "fa07437598f870b7", "scanner": "scanner-primary", "fingerprint": "bd42ce96518f1400", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-507c021e7d6db0b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/central-franqueado.ts:37"}, "properties": {"repobilityId": "3c1dddb7d988dad7", "scanner": "scanner-primary", "fingerprint": "507c021e7d6db0b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4b23f3a593ec1ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/integracoes-nello.ts:33"}, "properties": {"repobilityId": "b294065bf871a456", "scanner": "scanner-primary", "fingerprint": "a4b23f3a593ec1ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e42aea7ccee919b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/conversao-envios.ts:16"}, "properties": {"repobilityId": "a0cb1f3f8381921d", "scanner": "scanner-primary", "fingerprint": "5e42aea7ccee919b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a6bbd8861c91bd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/tasks.ts:123"}, "properties": {"repobilityId": "f0623f3f27e7f8e8", "scanner": "scanner-primary", "fingerprint": "6a6bbd8861c91bd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3a5987a51fc57b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/intents.ts:283"}, "properties": {"repobilityId": "984d1fbf3e82c918", "scanner": "scanner-primary", "fingerprint": "b3a5987a51fc57b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fc7fc92df68e3c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/sessions.ts:119"}, "properties": {"repobilityId": "b1aafc8a7f538a16", "scanner": "scanner-primary", "fingerprint": "5fc7fc92df68e3c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8fd65b92c5e21c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/team.ts:1026"}, "properties": {"repobilityId": "26a301315c33b994", "scanner": "scanner-primary", "fingerprint": "f8fd65b92c5e21c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-14051dee82f4b3ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/estoque-lojas.ts:44"}, "properties": {"repobilityId": "cf6380982c307cd0", "scanner": "scanner-primary", "fingerprint": "14051dee82f4b3ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b9b3d6e3897d1cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/campanhas-v2.ts:560"}, "properties": {"repobilityId": "baa155e53ec96f1f", "scanner": "scanner-primary", "fingerprint": "1b9b3d6e3897d1cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fc9359e651c72e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/audit.ts:76"}, "properties": {"repobilityId": "56bb175ff60a7d5b", "scanner": "scanner-primary", "fingerprint": "2fc9359e651c72e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66824a0691e53705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/routes/email-campaigns.ts:170"}, "properties": {"repobilityId": "2a6afb6db697fc56", "scanner": "scanner-primary", "fingerprint": "66824a0691e53705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d14d483fe10a2205", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/src/varejo-online/sync-products.ts:32"}, "properties": {"repobilityId": "3268588a1cb37abf", "scanner": "scanner-primary", "fingerprint": "d14d483fe10a2205", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f6979afe2c311de8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-products.ts:30"}, "properties": {"repobilityId": "f07de51ac3258dd7", "scanner": "scanner-primary", "fingerprint": "f6979afe2c311de8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-384198bf9c8a1854", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-entradas.ts:120"}, "properties": {"repobilityId": "4e63a3ce0d2ba0ca", "scanner": "scanner-primary", "fingerprint": "384198bf9c8a1854", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06a422394017e23b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/scheduler.ts:73"}, "properties": {"repobilityId": "6deb845e58e83eaf", "scanner": "scanner-primary", "fingerprint": "06a422394017e23b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c10702c61ed4d033", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-devolucoes.ts:48"}, "properties": {"repobilityId": "c58762c54185bec8", "scanner": "scanner-primary", "fingerprint": "c10702c61ed4d033", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e169cb911e532bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/client-matcher.ts:105"}, "properties": {"repobilityId": "5caca51a18abcede", "scanner": "scanner-primary", "fingerprint": "5e169cb911e532bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43eeabf7ec2aaafd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-clients.ts:72"}, "properties": {"repobilityId": "f31d2aed21b725d8", "scanner": "scanner-primary", "fingerprint": "43eeabf7ec2aaafd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-950b4479397acb55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-purchases.ts:154"}, "properties": {"repobilityId": "16195fa2ce3c461b", "scanner": "scanner-primary", "fingerprint": "950b4479397acb55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7ac1cc663405f5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-estoque.ts:27"}, "properties": {"repobilityId": "c5559d2e99badb2b", "scanner": "scanner-primary", "fingerprint": "c7ac1cc663405f5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18bee0c8df5f9158", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/varejo-online/sync-saidas.ts:245"}, "properties": {"repobilityId": "3a0b7428a9d51909", "scanner": "scanner-primary", "fingerprint": "18bee0c8df5f9158", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbbfe6f93b7b318c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/calendario-religioso/disparador.ts:56"}, "properties": {"repobilityId": "02005132d34c4f6a", "scanner": "scanner-primary", "fingerprint": "cbbfe6f93b7b318c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-779a4383af402612", "level": "warning", "message": {"text": "Privileged port 43 in use"}, "properties": {"repobilityId": "af1bc8881542418e", "scanner": "scanner-primary", "fingerprint": "779a4383af402612", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/copiar-dados-zapsanto.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7176e5d95d18d844", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env"}, "properties": {"repobilityId": "4b9c737a445874ba", "scanner": "scanner-primary", "fingerprint": "7176e5d95d18d844", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0792d608e141f22b", "level": "error", "message": {"text": "Possible secret in .env"}, "properties": {"repobilityId": "30de0ca161e70093", "scanner": "scanner-primary", "fingerprint": "0792d608e141f22b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-245aa64e99269828", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/copiar-via-api.mjs:21"}, "properties": {"repobilityId": "b8563674163a62fd", "scanner": "scanner-primary", "fingerprint": "245aa64e99269828", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/copiar-via-api.mjs"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-93d0283845aa2c2d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "33f10636e53b4298", "scanner": "scanner-primary", "fingerprint": "93d0283845aa2c2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-9bb443a6fa0986a5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoDetalhePage.tsx:236"}, "properties": {"repobilityId": "75f59d83b4eefa41", "scanner": "scanner-primary", "fingerprint": "9bb443a6fa0986a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/ContratoDetalhePage.tsx"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-21634ca38fa5c6f1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ContratoPublicoPage.tsx:307"}, "properties": {"repobilityId": "8de8a6029a859f70", "scanner": "scanner-primary", "fingerprint": "21634ca38fa5c6f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/ContratoPublicoPage.tsx"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-d7715e4c49cc64be", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/index.ts:6"}, "properties": {"repobilityId": "e38302723e23299b", "scanner": "scanner-primary", "fingerprint": "d7715e4c49cc64be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-571ba033d879ec75", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/src/index.ts:84"}, "properties": {"repobilityId": "1083a4ecea2f2d0a", "scanner": "scanner-primary", "fingerprint": "571ba033d879ec75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/index.ts"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-d626330540ace7eb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/ai-campaign/index.ts:4"}, "properties": {"repobilityId": "8aef8e90f6bbe1c5", "scanner": "scanner-primary", "fingerprint": "d626330540ace7eb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/ai-campaign/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e1c428370706f803", "level": "note", "message": {"text": "Very large file: src/pages/CampanhasCloudPage.tsx (1332 lines)"}, "properties": {"repobilityId": "177406d11c9c36d5", "scanner": "scanner-primary", "fingerprint": "e1c428370706f803", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-173c98dca06222e6", "level": "note", "message": {"text": "Very large file: src/pages/ConfigPage.tsx (1843 lines)"}, "properties": {"repobilityId": "48f4eb6ba2ef1970", "scanner": "scanner-primary", "fingerprint": "173c98dca06222e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0aab914edb9dc59b", "level": "note", "message": {"text": "Very large file: src/pages/IntentsPage.tsx (1963 lines)"}, "properties": {"repobilityId": "c1a6654f6e393470", "scanner": "scanner-primary", "fingerprint": "0aab914edb9dc59b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-62848be80faa3544", "level": "note", "message": {"text": "Very large file: src/pages/CentralCampanhasPage.tsx (1279 lines)"}, "properties": {"repobilityId": "53fb839961725ce9", "scanner": "scanner-primary", "fingerprint": "62848be80faa3544", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c724a35be93a85ef", "level": "note", "message": {"text": "Very large file: src/pages/ReportsPage.tsx (1377 lines)"}, "properties": {"repobilityId": "737f4c12f055c64c", "scanner": "scanner-primary", "fingerprint": "c724a35be93a85ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f35523025d8ab8c5", "level": "note", "message": {"text": "Very large file: src/pages/Dashboard.tsx (1843 lines)"}, "properties": {"repobilityId": "65f65cb5d9f24cc9", "scanner": "scanner-primary", "fingerprint": "f35523025d8ab8c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e9bc64f6a7c87cf5", "level": "note", "message": {"text": "Very large file: server/src/index.ts (7649 lines)"}, "properties": {"repobilityId": "89957119f563c951", "scanner": "scanner-primary", "fingerprint": "e9bc64f6a7c87cf5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a197b7429ccfa15", "level": "note", "message": {"text": "Very large file: server/src/routes/intents.ts (1509 lines)"}, "properties": {"repobilityId": "17d9bb20a7b52fb8", "scanner": "scanner-primary", "fingerprint": "0a197b7429ccfa15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "78c22d16e36b1397", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "1c654afaa30152ea", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "63b5d4d54abc76c7", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "24f4981d870f1fe1", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e7aa172a8ba1a0ca", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2ff4719883abf794", "level": "none", "message": {"text": "Commented-code block (6 lines) in playwright.config.ts:4"}, "properties": {"repobilityId": "9800bf3a1375b1b1", "scanner": "scanner-primary", "fingerprint": "2ff4719883abf794", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae399a54c12743f8", "level": "note", "message": {"text": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_extras.mjs:175"}, "properties": {"repobilityId": "e5a2275f4f41847c", "scanner": "scanner-primary", "fingerprint": "ae399a54c12743f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bc43d50e8f24854e", "level": "note", "message": {"text": "Legacy-named symbol `promocao_geral_v2` in scripts/seed_cns_admin.mjs:204"}, "properties": {"repobilityId": "8814ce463e69cbe0", "scanner": "scanner-primary", "fingerprint": "bc43d50e8f24854e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c5d8a5455a67f53b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useBusinessHours.ts:40"}, "properties": {"repobilityId": "e5c786368f1ae0a8", "scanner": "scanner-primary", "fingerprint": "c5d8a5455a67f53b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49edd4fb857b665a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseAgenda.ts:40"}, "properties": {"repobilityId": "72d41143d347da80", "scanner": "scanner-primary", "fingerprint": "49edd4fb857b665a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e59bbe9938500bcb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useRepairs.ts:71"}, "properties": {"repobilityId": "6478782870f3ba25", "scanner": "scanner-primary", "fingerprint": "e59bbe9938500bcb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89ebbb89797a15ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetaAds.ts:65"}, "properties": {"repobilityId": "f3baaf277b24b129", "scanner": "scanner-primary", "fingerprint": "89ebbb89797a15ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7394abced13c499", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInstagram.ts:35"}, "properties": {"repobilityId": "295b744c70ca7827", "scanner": "scanner-primary", "fingerprint": "e7394abced13c499", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e5d124b5dc5b1f62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermosPremiacao.ts:57"}, "properties": {"repobilityId": "217da081d3ed74c6", "scanner": "scanner-primary", "fingerprint": "e5d124b5dc5b1f62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2eef5cc3b9f718c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCentralCampanhas.ts:62"}, "properties": {"repobilityId": "3e4ff891b0e1ffb1", "scanner": "scanner-primary", "fingerprint": "2eef5cc3b9f718c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4de790de241a4ea2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIntents.ts:120"}, "properties": {"repobilityId": "acd0c85e6ea34bfb", "scanner": "scanner-primary", "fingerprint": "4de790de241a4ea2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aaa65af9e5bd80e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnthropicKey.ts:13"}, "properties": {"repobilityId": "849a11343da5eff7", "scanner": "scanner-primary", "fingerprint": "aaa65af9e5bd80e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c439fd99299f2652", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAvisos.ts:68"}, "properties": {"repobilityId": "d7b4e360f483c68a", "scanner": "scanner-primary", "fingerprint": "c439fd99299f2652", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed4d6d3ddfd6cd4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuotes.ts:52"}, "properties": {"repobilityId": "7f1f70e5d7b72c92", "scanner": "scanner-primary", "fingerprint": "ed4d6d3ddfd6cd4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-086d281f41aa246a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useDisparosAtivos.ts:18"}, "properties": {"repobilityId": "639329d680147f8e", "scanner": "scanner-primary", "fingerprint": "086d281f41aa246a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4483bc84f26cff14", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useTermsAcceptance.ts:16"}, "properties": {"repobilityId": "21c724d2e935bb52", "scanner": "scanner-primary", "fingerprint": "4483bc84f26cff14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5131b1ce53568312", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTermsAcceptance.ts:12"}, "properties": {"repobilityId": "e43a189c12e0df13", "scanner": "scanner-primary", "fingerprint": "5131b1ce53568312", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68afcd22591a69b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useAnaliseIaAccess.ts:23"}, "properties": {"repobilityId": "66521686472b7b52", "scanner": "scanner-primary", "fingerprint": "68afcd22591a69b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc3797045368119d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNfsBoletos.ts:64"}, "properties": {"repobilityId": "d9c251f8c5ff3a5e", "scanner": "scanner-primary", "fingerprint": "dc3797045368119d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7f25109363ebc08", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useChat.ts:44"}, "properties": {"repobilityId": "52eb6f326b604bff", "scanner": "scanner-primary", "fingerprint": "c7f25109363ebc08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f861872b8f618247", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePushNotifications.ts:67"}, "properties": {"repobilityId": "e204c2a0ced440c0", "scanner": "scanner-primary", "fingerprint": "f861872b8f618247", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b64ef5b1ba2a3b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useContracts.ts:49"}, "properties": {"repobilityId": "62560ff0f16be2db", "scanner": "scanner-primary", "fingerprint": "7b64ef5b1ba2a3b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da150792ed4be560", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaPainel.ts:39"}, "properties": {"repobilityId": "d8f4e1bbd1aa9cfd", "scanner": "scanner-primary", "fingerprint": "da150792ed4be560", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4eeba4931cf0f1fe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useFinanceiroAnalise.ts:71"}, "properties": {"repobilityId": "befa2ccd9b32f46f", "scanner": "scanner-primary", "fingerprint": "4eeba4931cf0f1fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79f4788238cfe901", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useNotificationCounts.ts:96"}, "properties": {"repobilityId": "69ddbbebeff9b0fa", "scanner": "scanner-primary", "fingerprint": "79f4788238cfe901", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f61ed5362643104", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useWhatsAppSessions.ts:16"}, "properties": {"repobilityId": "ed87aa8202e45077", "scanner": "scanner-primary", "fingerprint": "5f61ed5362643104", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c057c7bd03106d96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useModoOperacao.ts:14"}, "properties": {"repobilityId": "6b9571e8b322c8c8", "scanner": "scanner-primary", "fingerprint": "c057c7bd03106d96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b528191676692c2", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/hooks/useAuth.tsx:24"}, "properties": {"repobilityId": "d3c5169af70b441d", "scanner": "scanner-primary", "fingerprint": "3b528191676692c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68e2fa7182d8e98e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMetasMensais.ts:66"}, "properties": {"repobilityId": "494c61f87d978c4f", "scanner": "scanner-primary", "fingerprint": "68e2fa7182d8e98e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4831cf2fa54e1d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useIaContexto.ts:13"}, "properties": {"repobilityId": "e0b43a14f84a8a4d", "scanner": "scanner-primary", "fingerprint": "c4831cf2fa54e1d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f76d629369a1c8a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCampanhasCloud.ts:45"}, "properties": {"repobilityId": "017ec35c7862de0c", "scanner": "scanner-primary", "fingerprint": "f76d629369a1c8a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b90f9f34757e923", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useSends.ts:112"}, "properties": {"repobilityId": "fa3dd0bc7c86c731", "scanner": "scanner-primary", "fingerprint": "8b90f9f34757e923", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d732ec06f8b9c16c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useCompras.ts:67"}, "properties": {"repobilityId": "4b71b9b187f222e0", "scanner": "scanner-primary", "fingerprint": "d732ec06f8b9c16c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c1358f98b8d5999", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTeamMember.ts:30"}, "properties": {"repobilityId": "b4a73b6e2d277fc4", "scanner": "scanner-primary", "fingerprint": "3c1358f98b8d5999", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d58b6ee1f85b134", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useInsumos.ts:49"}, "properties": {"repobilityId": "09b1e1bb64dd383e", "scanner": "scanner-primary", "fingerprint": "6d58b6ee1f85b134", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b2338525a2d7c7b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useVarejoSync.ts:7"}, "properties": {"repobilityId": "75c2308c277011f8", "scanner": "scanner-primary", "fingerprint": "0b2338525a2d7c7b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61af3059424cd65c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useResponseConversations.ts:39"}, "properties": {"repobilityId": "fca6e4cd5bdfadc9", "scanner": "scanner-primary", "fingerprint": "61af3059424cd65c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0577e52be353d3a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useProdutosAnalise.ts:47"}, "properties": {"repobilityId": "bd9e8796a599b1e3", "scanner": "scanner-primary", "fingerprint": "0577e52be353d3a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-174b18c2cb393db2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useSinapseMusico.ts:31"}, "properties": {"repobilityId": "0bf90cd3149c1caa", "scanner": "scanner-primary", "fingerprint": "174b18c2cb393db2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a98d2ea2f26e5872", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/usePlaylists.ts:40"}, "properties": {"repobilityId": "ec317359b62210ae", "scanner": "scanner-primary", "fingerprint": "a98d2ea2f26e5872", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da3b9384ddf9b884", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useQuickReplies.ts:30"}, "properties": {"repobilityId": "ad911a48b8dd6c1d", "scanner": "scanner-primary", "fingerprint": "da3b9384ddf9b884", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d74e9dc5d987f220", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useSessionTracker.ts:7"}, "properties": {"repobilityId": "a2cc948dfef52a76", "scanner": "scanner-primary", "fingerprint": "d74e9dc5d987f220", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6b9ccf0a03fb31f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MesEmAndamentoCard.tsx:248"}, "properties": {"repobilityId": "f931d1a8bbec82a3", "scanner": "scanner-primary", "fingerprint": "b6b9ccf0a03fb31f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-317650c9bf37b15f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EquipeOnlineCard.tsx:78"}, "properties": {"repobilityId": "74277aea5340dfbf", "scanner": "scanner-primary", "fingerprint": "317650c9bf37b15f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80c82400a5c05780", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PainelInfoCliente.tsx:31"}, "properties": {"repobilityId": "6b6181143b7d4415", "scanner": "scanner-primary", "fingerprint": "80c82400a5c05780", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-32c1b138e5103be9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/TreinamentosCard.tsx:51"}, "properties": {"repobilityId": "e8bfa5d7644646cf", "scanner": "scanner-primary", "fingerprint": "32c1b138e5103be9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7734b84afb02e47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ServerStatusPanel.tsx:79"}, "properties": {"repobilityId": "7b573552d1bbea2e", "scanner": "scanner-primary", "fingerprint": "e7734b84afb02e47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca9766d1681dcfa0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendasPorVendedoraCard.tsx:56"}, "properties": {"repobilityId": "afd10ee45f2b8257", "scanner": "scanner-primary", "fingerprint": "ca9766d1681dcfa0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f458b66be8b9094d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/VendedoraDrilldown.tsx:30"}, "properties": {"repobilityId": "438712bdc059c90f", "scanner": "scanner-primary", "fingerprint": "f458b66be8b9094d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97ebe8cc192c122c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/HistoricoCategorizado.tsx:51"}, "properties": {"repobilityId": "2e417a37d553a694", "scanner": "scanner-primary", "fingerprint": "97ebe8cc192c122c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-917f0692cc444de6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/BusinessHoursGate.tsx:3"}, "properties": {"repobilityId": "348121129ef2ba94", "scanner": "scanner-primary", "fingerprint": "917f0692cc444de6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-850a5c0abf52a188", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/BirthdayConversionCard.tsx:94"}, "properties": {"repobilityId": "629813b8c7dddb82", "scanner": "scanner-primary", "fingerprint": "850a5c0abf52a188", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41b661c41780f672", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/PlaylistsPage.tsx:55"}, "properties": {"repobilityId": "789aeec0d4b01afe", "scanner": "scanner-primary", "fingerprint": "41b661c41780f672", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-342e1815da281979", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ActivityLogPage.tsx:70"}, "properties": {"repobilityId": "fabf30c700bc38d0", "scanner": "scanner-primary", "fingerprint": "342e1815da281979", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88cd9dffd902a155", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/SmsCampanhasPage.tsx:53"}, "properties": {"repobilityId": "874ce7f05cd0ab4e", "scanner": "scanner-primary", "fingerprint": "88cd9dffd902a155", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-040ce113fccba0b4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MuralPage.tsx:72"}, "properties": {"repobilityId": "80ef74081317c511", "scanner": "scanner-primary", "fingerprint": "040ce113fccba0b4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7349b1920eef34b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConversaoEnviosPage.tsx:58"}, "properties": {"repobilityId": "527f861f2a3e76be", "scanner": "scanner-primary", "fingerprint": "7349b1920eef34b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ff639461fefbe97", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/DevolucoesPage.tsx:77"}, "properties": {"repobilityId": "6ba5c5905ff2c922", "scanner": "scanner-primary", "fingerprint": "9ff639461fefbe97", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ddfffc48ed5eb1a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EstoqueLojasPage.tsx:93"}, "properties": {"repobilityId": "7179fb375a36088b", "scanner": "scanner-primary", "fingerprint": "ddfffc48ed5eb1a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f23f1269290b110a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreMonitorPage.tsx:98"}, "properties": {"repobilityId": "cc49977eda87ee07", "scanner": "scanner-primary", "fingerprint": "f23f1269290b110a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77f4e00a287650df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasCloudPage.tsx:732"}, "properties": {"repobilityId": "181b6487bf8c2c0a", "scanner": "scanner-primary", "fingerprint": "77f4e00a287650df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64e6f5d45f153e5b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CampanhasResgatePage.tsx:65"}, "properties": {"repobilityId": "0718d585fe2dd760", "scanner": "scanner-primary", "fingerprint": "64e6f5d45f153e5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6cfcb83b9f5dcb80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/StoreAssignPage.tsx:16"}, "properties": {"repobilityId": "0b02a4418f9c85b1", "scanner": "scanner-primary", "fingerprint": "6cfcb83b9f5dcb80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9fd575db026cd7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ConfigPage.tsx:34"}, "properties": {"repobilityId": "b3c0bfbc6b5b52b9", "scanner": "scanner-primary", "fingerprint": "d9fd575db026cd7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb0dd39a00260bcf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendasDetalhePage.tsx:122"}, "properties": {"repobilityId": "f6e0e71899e9c277", "scanner": "scanner-primary", "fingerprint": "eb0dd39a00260bcf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-063e6f439badfbba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VarejoOnlinePage.tsx:15"}, "properties": {"repobilityId": "b281ae16ea12db8b", "scanner": "scanner-primary", "fingerprint": "063e6f439badfbba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2f7d25ad3c81c09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CelularesAutorizadosPage.tsx:71"}, "properties": {"repobilityId": "f9491ebe305db8a6", "scanner": "scanner-primary", "fingerprint": "d2f7d25ad3c81c09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f44b8be578c42b1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FornecedoresPage.tsx:89"}, "properties": {"repobilityId": "aae8d4a98b75e906", "scanner": "scanner-primary", "fingerprint": "f44b8be578c42b1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28c3d9bd7968d931", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/BoasVindasPage.tsx:32"}, "properties": {"repobilityId": "bf9e9fd9c2b34ad4", "scanner": "scanner-primary", "fingerprint": "28c3d9bd7968d931", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8595c6fb3d44a393", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MaquininhasPage.tsx:90"}, "properties": {"repobilityId": "43a1db9ffdd51777", "scanner": "scanner-primary", "fingerprint": "8595c6fb3d44a393", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cc3deea76b167e5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/EmailCampanhasPage.tsx:62"}, "properties": {"repobilityId": "25b973fa37ce73de", "scanner": "scanner-primary", "fingerprint": "5cc3deea76b167e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98e9ee154ee82e0e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/TreinamentosPage.tsx:77"}, "properties": {"repobilityId": "4d512f12cd9a3669", "scanner": "scanner-primary", "fingerprint": "98e9ee154ee82e0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-db2574646473e833", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/CashbackConfigPage.tsx:50"}, "properties": {"repobilityId": "1c9f74d490f94c7f", "scanner": "scanner-primary", "fingerprint": "db2574646473e833", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00d8bb34521786f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/VendedorasAnalisePage.tsx:170"}, "properties": {"repobilityId": "e3614a882b352093", "scanner": "scanner-primary", "fingerprint": "00d8bb34521786f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0c0c1bb71c87402", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AuditoriaEstoquePage.tsx:119"}, "properties": {"repobilityId": "9f1299d48870d3ca", "scanner": "scanner-primary", "fingerprint": "e0c0c1bb71c87402", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47c2ffc0efb4fced", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/IntentsPage.tsx:1171"}, "properties": {"repobilityId": "0922e9e4492b8fdb", "scanner": "scanner-primary", "fingerprint": "47c2ffc0efb4fced", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b95385041680d63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MonitorLojaPage.tsx:125"}, "properties": {"repobilityId": "78000385bfab5f0c", "scanner": "scanner-primary", "fingerprint": "3b95385041680d63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-666b3f46ed56375f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientsPage.tsx:640"}, "properties": {"repobilityId": "d6e9aa160db500ca", "scanner": "scanner-primary", "fingerprint": "666b3f46ed56375f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a369a266378ea83f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/FinanceiroPage.tsx:70"}, "properties": {"repobilityId": "dd9ca26aa444b6d7", "scanner": "scanner-primary", "fingerprint": "a369a266378ea83f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-473761983ea5db5c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/WorkQueuePage.tsx:661"}, "properties": {"repobilityId": "1430b69b109ab4c7", "scanner": "scanner-primary", "fingerprint": "473761983ea5db5c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b1d7be229f247b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ReportsPage.tsx:18"}, "properties": {"repobilityId": "4dfe7a3e4e0f7b3b", "scanner": "scanner-primary", "fingerprint": "7b1d7be229f247b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5a69b698f3c47a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/Dashboard.tsx:94"}, "properties": {"repobilityId": "ddb3775a95c66bad", "scanner": "scanner-primary", "fingerprint": "d5a69b698f3c47a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca1dee5a0fd4d544", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/ClientesPorProdutoPage.tsx:161"}, "properties": {"repobilityId": "81e32e82349d2de8", "scanner": "scanner-primary", "fingerprint": "ca1dee5a0fd4d544", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa4c7bbea08ff56b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/storeNames.ts:1"}, "properties": {"repobilityId": "58ff5d385c914473", "scanner": "scanner-primary", "fingerprint": "fa4c7bbea08ff56b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca270c3c37f3fedb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/whatsapp.ts:21"}, "properties": {"repobilityId": "d83a263ea00fa07b", "scanner": "scanner-primary", "fingerprint": "ca270c3c37f3fedb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89df8ff6c394af0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/index.ts:1212"}, "properties": {"repobilityId": "469bd2045e5fa3ba", "scanner": "scanner-primary", "fingerprint": "89df8ff6c394af0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-274615570cb3dfd2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/index.ts:432"}, "properties": {"repobilityId": "b54410ef2b4f2121", "scanner": "scanner-primary", "fingerprint": "274615570cb3dfd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14581193c33664b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/central-franqueado/scraper-http.ts:23"}, "properties": {"repobilityId": "cf4b62ed5b3739bd", "scanner": "scanner-primary", "fingerprint": "14581193c33664b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39ddaa54d23bfb30", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/cron/relatorio-mensal.ts:72"}, "properties": {"repobilityId": "efefdb996939e504", "scanner": "scanner-primary", "fingerprint": "39ddaa54d23bfb30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ae3f889cde62b09", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/gigcontrol/cron.ts:1"}, "properties": {"repobilityId": "a172fbcf8c79ec1b", "scanner": "scanner-primary", "fingerprint": "3ae3f889cde62b09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e5229c159689fd0", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/src/financeiro/routes.ts:298"}, "properties": {"repobilityId": "fe441fa70bb3420f", "scanner": "scanner-primary", "fingerprint": "9e5229c159689fd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e206087235a818c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/financeiro/parse-xlsx.ts:51"}, "properties": {"repobilityId": "031f7e22a0cd8ef8", "scanner": "scanner-primary", "fingerprint": "e206087235a818c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0405ba344cffa45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/instagram/client.ts:141"}, "properties": {"repobilityId": "74ddfb2eb0ffc3d0", "scanner": "scanner-primary", "fingerprint": "d0405ba344cffa45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6dddcd983293719", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/sms/provider.ts:180"}, "properties": {"repobilityId": "b700dc412ba017cc", "scanner": "scanner-primary", "fingerprint": "d6dddcd983293719", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4f6ad3ad994dfda", "level": "note", "message": {"text": "Legacy-named symbol `aniversario_vespera_v2` in server/src/whatsapp-cloud/sender.ts:16"}, "properties": {"repobilityId": "1104a6cb6ea7f6bc", "scanner": "scanner-primary", "fingerprint": "c4f6ad3ad994dfda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e2e5ccb3f85a7aca", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/avisos/detect-mudanca-preco.ts:1"}, "properties": {"repobilityId": "ba5da51081e90229", "scanner": "scanner-primary", "fingerprint": "e2e5ccb3f85a7aca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96757f06102f129e", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/src/routes/auditoria-estoque.ts:204"}, "properties": {"repobilityId": "f87fe03791a247c6", "scanner": "scanner-primary", "fingerprint": "96757f06102f129e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c862903c800d99fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/campanhas-cloud.ts:50"}, "properties": {"repobilityId": "1fd136ca54578303", "scanner": "scanner-primary", "fingerprint": "c862903c800d99fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24f2cb687df7efa5", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/routes/sms-campaigns.ts:236"}, "properties": {"repobilityId": "f406a2a3adfa24d0", "scanner": "scanner-primary", "fingerprint": "24f2cb687df7efa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a18ca87d5c5c34f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/routes/insumos.ts:8"}, "properties": {"repobilityId": "3094dc386067683b", "scanner": "scanner-primary", "fingerprint": "a18ca87d5c5c34f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14e75c6095255cb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/integracoes-nello.ts:137"}, "properties": {"repobilityId": "15f2e38534fe920f", "scanner": "scanner-primary", "fingerprint": "14e75c6095255cb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac2c54ce71c22d57", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/avisos.ts:61"}, "properties": {"repobilityId": "7fd7f8711ece69e4", "scanner": "scanner-primary", "fingerprint": "ac2c54ce71c22d57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95d17b0a95942cde", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/cashback.ts:339"}, "properties": {"repobilityId": "e412eca68705bce9", "scanner": "scanner-primary", "fingerprint": "95d17b0a95942cde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3967147cc043867", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/src/routes/meta-ads.ts:27"}, "properties": {"repobilityId": "eb6aee45931d723b", "scanner": "scanner-primary", "fingerprint": "c3967147cc043867", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61c91043f106f22a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/clientes-por-produto.ts:208"}, "properties": {"repobilityId": "8a65eeb644e3560f", "scanner": "scanner-primary", "fingerprint": "61c91043f106f22a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eba333250571e1db", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/routes/intents.ts:1101"}, "properties": {"repobilityId": "5e6737247301133f", "scanner": "scanner-primary", "fingerprint": "eba333250571e1db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d9cdaa59a7188b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/intents.ts:1166"}, "properties": {"repobilityId": "57687778118e366e", "scanner": "scanner-primary", "fingerprint": "0d9cdaa59a7188b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-859fdd0edbd15c4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/metas-mensais.ts:295"}, "properties": {"repobilityId": "253549c21029394f", "scanner": "scanner-primary", "fingerprint": "859fdd0edbd15c4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4675b8fa5fbbf77", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/sinapse-musico.ts:1"}, "properties": {"repobilityId": "05c9d690cbe833de", "scanner": "scanner-primary", "fingerprint": "a4675b8fa5fbbf77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be29a8645c90dc28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/routes/sinapse-musico.ts:229"}, "properties": {"repobilityId": "8c577e8ef7d00d4d", "scanner": "scanner-primary", "fingerprint": "be29a8645c90dc28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48fc942f6ae25a5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/estoque-lojas.ts:192"}, "properties": {"repobilityId": "99e3880a2a3ead2a", "scanner": "scanner-primary", "fingerprint": "48fc942f6ae25a5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c23b27cc7fd48f53", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/campanhas-v2.ts:189"}, "properties": {"repobilityId": "0cc06de4ce4ed120", "scanner": "scanner-primary", "fingerprint": "c23b27cc7fd48f53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14ecaff708589b77", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/src/routes/leads-import.ts:8"}, "properties": {"repobilityId": "59c8e71efa42b08b", "scanner": "scanner-primary", "fingerprint": "14ecaff708589b77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e844e18de654161b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/client.ts:149"}, "properties": {"repobilityId": "742deb8b684ca625", "scanner": "scanner-primary", "fingerprint": "e844e18de654161b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7a1a49408d83ff7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-purchases.ts:18"}, "properties": {"repobilityId": "dc370152355465fa", "scanner": "scanner-primary", "fingerprint": "f7a1a49408d83ff7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d878832c18284612", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/varejo-online/sync-saidas.ts:344"}, "properties": {"repobilityId": "23470544151a8581", "scanner": "scanner-primary", "fingerprint": "d878832c18284612", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20e4b4363d16fe64", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-campaign/index.ts:46"}, "properties": {"repobilityId": "4643156a7d63c9de", "scanner": "scanner-primary", "fingerprint": "20e4b4363d16fe64", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59b992d62d86a65a", "level": "note", "message": {"text": "25 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "58b9516d72ffa8ba", "scanner": "scanner-primary", "fingerprint": "59b992d62d86a65a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-7101b6e84924398a", "level": "warning", "message": {"text": "Frontend route `/boas-vindas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "bbd26bb5207597e5", "scanner": "scanner-primary", "fingerprint": "7101b6e84924398a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4a17944dfc6723c8", "level": "warning", "message": {"text": "Frontend route `/queue` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "cea73ed3f6aaa98d", "scanner": "scanner-primary", "fingerprint": "4a17944dfc6723c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cfdded9d70549796", "level": "warning", "message": {"text": "Frontend route `/tasks` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "61e8fadfc75ec565", "scanner": "scanner-primary", "fingerprint": "cfdded9d70549796", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ee7aac1073b3a2b8", "level": "warning", "message": {"text": "Frontend route `/intents` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ba87cd4d5380b87e", "scanner": "scanner-primary", "fingerprint": "ee7aac1073b3a2b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8ecc200af91941cc", "level": "warning", "message": {"text": "Frontend route `/monitor-vendas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e4ac52d5d2b89e59", "scanner": "scanner-primary", "fingerprint": "8ecc200af91941cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-83ace43aeee1327c", "level": "warning", "message": {"text": "Frontend route `/conversas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a48d31059555f40e", "scanner": "scanner-primary", "fingerprint": "83ace43aeee1327c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e0bac154d3efc08e", "level": "warning", "message": {"text": "Frontend route `/avisos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "42200ba6be6e559a", "scanner": "scanner-primary", "fingerprint": "e0bac154d3efc08e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0c9aa46902ba8884", "level": "warning", "message": {"text": "Frontend route `/precos-alterados` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "34cbb021ea5a3569", "scanner": "scanner-primary", "fingerprint": "0c9aa46902ba8884", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8c50f98e97225fd7", "level": "warning", "message": {"text": "Frontend route `/painel-ia` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c19ac2db6b17033b", "scanner": "scanner-primary", "fingerprint": "8c50f98e97225fd7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c063af25b2bd43b9", "level": "warning", "message": {"text": "Frontend route `/nfs-boletos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f7576ff25cd46f47", "scanner": "scanner-primary", "fingerprint": "c063af25b2bd43b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a213bb957661da5d", "level": "warning", "message": {"text": "Frontend route `/cashback` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "1b3676e7a893b947", "scanner": "scanner-primary", "fingerprint": "a213bb957661da5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3dd832f1ea475081", "level": "warning", "message": {"text": "Frontend route `/cashback/config` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "15e354132d8aae3d", "scanner": "scanner-primary", "fingerprint": "3dd832f1ea475081", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f31cd6870388b054", "level": "warning", "message": {"text": "Frontend route `/treinamentos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "1dd9dae92bb6c82a", "scanner": "scanner-primary", "fingerprint": "f31cd6870388b054", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9c88c5504546b589", "level": "warning", "message": {"text": "Frontend route `/mural` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7c44d9637e54a8b8", "scanner": "scanner-primary", "fingerprint": "9c88c5504546b589", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b9f69e36bdb4be9d", "level": "warning", "message": {"text": "Frontend route `/repairs` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "91781c5d2d3bc67c", "scanner": "scanner-primary", "fingerprint": "b9f69e36bdb4be9d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9d3be90e2ef02953", "level": "warning", "message": {"text": "Frontend route `/insumos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "53153dcab0d3a685", "scanner": "scanner-primary", "fingerprint": "9d3be90e2ef02953", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f5ef5acf2d88329c", "level": "warning", "message": {"text": "Frontend route `/estoque-lojas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "2a372a700cbc0ab2", "scanner": "scanner-primary", "fingerprint": "f5ef5acf2d88329c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2bd397fb69195263", "level": "warning", "message": {"text": "Frontend route `/perfil` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f138ab3711deb751", "scanner": "scanner-primary", "fingerprint": "2bd397fb69195263", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-11bfdaeb219363b0", "level": "warning", "message": {"text": "Frontend route `/frete` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c5a22fc5fbea6ab5", "scanner": "scanner-primary", "fingerprint": "11bfdaeb219363b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fddfc14142c1b30a", "level": "warning", "message": {"text": "Frontend route `/vendas-detalhe` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ba4e1e03b82c4a97", "scanner": "scanner-primary", "fingerprint": "fddfc14142c1b30a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2f225deb85a9ef5f", "level": "warning", "message": {"text": "Frontend route `/plans` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "04fe974bf7bbbe64", "scanner": "scanner-primary", "fingerprint": "2f225deb85a9ef5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-334aed1d1645e01c", "level": "warning", "message": {"text": "Frontend route `/supervision` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "32b16698a8eade99", "scanner": "scanner-primary", "fingerprint": "334aed1d1645e01c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2a2b4b49b696286e", "level": "warning", "message": {"text": "Frontend route `/store-monitor` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a53f06f740972097", "scanner": "scanner-primary", "fingerprint": "2a2b4b49b696286e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7df305476da5cd92", "level": "warning", "message": {"text": "Frontend route `/responses` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "aafd0566a61b693c", "scanner": "scanner-primary", "fingerprint": "7df305476da5cd92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-508c79a7863292a3", "level": "warning", "message": {"text": "Frontend route `/instagram` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ef0e74e8a5b55a06", "scanner": "scanner-primary", "fingerprint": "508c79a7863292a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-10460b48da8c9d09", "level": "warning", "message": {"text": "Frontend route `/auditoria-estoque` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "9f8b702e72253e2c", "scanner": "scanner-primary", "fingerprint": "10460b48da8c9d09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c7436709507de5af", "level": "warning", "message": {"text": "Frontend route `/fornecedores` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "39a99c1fa6778ba4", "scanner": "scanner-primary", "fingerprint": "c7436709507de5af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c0652c11a2703da9", "level": "warning", "message": {"text": "Frontend route `/leads-import` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "2a2e890a804f7f24", "scanner": "scanner-primary", "fingerprint": "c0652c11a2703da9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5a9954cd99806877", "level": "warning", "message": {"text": "Frontend route `/email-campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "0766175823c09e2b", "scanner": "scanner-primary", "fingerprint": "5a9954cd99806877", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-00bf3d55635467a4", "level": "warning", "message": {"text": "Frontend route `/sms-campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "62e5108b89606e1d", "scanner": "scanner-primary", "fingerprint": "00bf3d55635467a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-07702ca2ee1ad79d", "level": "warning", "message": {"text": "Frontend route `/reports` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "1381d8f8c0c22c94", "scanner": "scanner-primary", "fingerprint": "07702ca2ee1ad79d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-24cefb7ba2b4dbc1", "level": "warning", "message": {"text": "Frontend route `/comparativo-yoy` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "3fefed56044b2c54", "scanner": "scanner-primary", "fingerprint": "24cefb7ba2b4dbc1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f4da36df7c0209e1", "level": "warning", "message": {"text": "Frontend route `/clientes-por-produto` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f1508d4bb0d1560f", "scanner": "scanner-primary", "fingerprint": "f4da36df7c0209e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fee10d35325e1dd9", "level": "warning", "message": {"text": "Frontend route `/vendedoras-analise` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a47ad16543db4ee7", "scanner": "scanner-primary", "fingerprint": "fee10d35325e1dd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6b16121d656bce75", "level": "warning", "message": {"text": "Frontend route `/compras` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "0af878da2057c406", "scanner": "scanner-primary", "fingerprint": "6b16121d656bce75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1f269227ac817e1a", "level": "warning", "message": {"text": "Frontend route `/maquininhas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "8ddcad55d2e52b2a", "scanner": "scanner-primary", "fingerprint": "1f269227ac817e1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6da492aebb1a8281", "level": "warning", "message": {"text": "Frontend route `/import` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f01a5c6249ceee13", "scanner": "scanner-primary", "fingerprint": "6da492aebb1a8281", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e383ab98c60bdce4", "level": "warning", "message": {"text": "Frontend route `/clients` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d376a377a25f59b9", "scanner": "scanner-primary", "fingerprint": "e383ab98c60bdce4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2d25157a5503aa99", "level": "warning", "message": {"text": "Frontend route `/lists` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ad6ef815f16508e6", "scanner": "scanner-primary", "fingerprint": "2d25157a5503aa99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e3e7419b2341aaaa", "level": "warning", "message": {"text": "Frontend route `/sends` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "57c9ea1d832bd3c7", "scanner": "scanner-primary", "fingerprint": "e3e7419b2341aaaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c8aa73db0bcfd333", "level": "warning", "message": {"text": "Frontend route `/conversations` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ad76ea4fa0665b89", "scanner": "scanner-primary", "fingerprint": "c8aa73db0bcfd333", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a517f7ac1635468e", "level": "warning", "message": {"text": "Frontend route `/varejo` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "6dd50b18f3dac25e", "scanner": "scanner-primary", "fingerprint": "a517f7ac1635468e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c13b1fd63d920a04", "level": "warning", "message": {"text": "Frontend route `/config` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "54241f03f8f05bca", "scanner": "scanner-primary", "fingerprint": "c13b1fd63d920a04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1213c82bf5090913", "level": "warning", "message": {"text": "Frontend route `/config/marca` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "9a4b231122994fc0", "scanner": "scanner-primary", "fingerprint": "1213c82bf5090913", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e6d959562f989485", "level": "warning", "message": {"text": "Frontend route `/config/unidades` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f8580495ee4b625d", "scanner": "scanner-primary", "fingerprint": "e6d959562f989485", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5db437c697f35d53", "level": "warning", "message": {"text": "Frontend route `/config/integracoes` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "6481c22836e50010", "scanner": "scanner-primary", "fingerprint": "5db437c697f35d53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f56a88f13f3403b2", "level": "warning", "message": {"text": "Frontend route `/pipeline` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "91e90b3a57de789c", "scanner": "scanner-primary", "fingerprint": "f56a88f13f3403b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a6520118e38b9dde", "level": "warning", "message": {"text": "Frontend route `/orcamento/novo` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "df4b3234b653b267", "scanner": "scanner-primary", "fingerprint": "a6520118e38b9dde", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-008da2ec385fb2ad", "level": "warning", "message": {"text": "Frontend route `/orcamento/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "465263b1cb24bd05", "scanner": "scanner-primary", "fingerprint": "008da2ec385fb2ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-230f023b5ab6eb2b", "level": "warning", "message": {"text": "Frontend route `/contrato/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e6649b2572ed9532", "scanner": "scanner-primary", "fingerprint": "230f023b5ab6eb2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cb85cab02d5189d2", "level": "warning", "message": {"text": "Frontend route `/musico/playlists` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d769366878a837f5", "scanner": "scanner-primary", "fingerprint": "cb85cab02d5189d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-80a5126bc670fd07", "level": "warning", "message": {"text": "Frontend route `/musico/playlist/:id` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ac47d4de7c1d3de4", "scanner": "scanner-primary", "fingerprint": "80a5126bc670fd07", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f80b4f4594548eb8", "level": "warning", "message": {"text": "Frontend route `/team` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7175e193a4857a35", "scanner": "scanner-primary", "fingerprint": "f80b4f4594548eb8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2482c628003d2bbb", "level": "warning", "message": {"text": "Frontend route `/store-assign` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f339efeb5e987dd0", "scanner": "scanner-primary", "fingerprint": "2482c628003d2bbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b60d3871410a86cb", "level": "warning", "message": {"text": "Frontend route `/financeiro` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e8e0b1983e698d19", "scanner": "scanner-primary", "fingerprint": "b60d3871410a86cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5387711bcdbe4e9b", "level": "warning", "message": {"text": "Frontend route `/activity-log` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "513c61dc6ca36f32", "scanner": "scanner-primary", "fingerprint": "5387711bcdbe4e9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-753fc62ea43ef154", "level": "warning", "message": {"text": "Frontend route `/celulares-autorizados` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "0e6c14d7d9d8e4e7", "scanner": "scanner-primary", "fingerprint": "753fc62ea43ef154", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-20c1314bc0ef8477", "level": "warning", "message": {"text": "Frontend route `/meta-ads` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "611e18dc498a7048", "scanner": "scanner-primary", "fingerprint": "20c1314bc0ef8477", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-74938ea81bae2e60", "level": "warning", "message": {"text": "Frontend route `/devolucoes` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "b8cc89e4a0427e7c", "scanner": "scanner-primary", "fingerprint": "74938ea81bae2e60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f6733f24d36bed4a", "level": "warning", "message": {"text": "Frontend route `/metas-mensais` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7e88ee3d67c9fe73", "scanner": "scanner-primary", "fingerprint": "f6733f24d36bed4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d34cde881eb49e1d", "level": "warning", "message": {"text": "Frontend route `/campanhas` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "4c68c8e7ffec4904", "scanner": "scanner-primary", "fingerprint": "d34cde881eb49e1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-412cd849dfbd0291", "level": "warning", "message": {"text": "Frontend route `/campanhas-legado` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "15ff05c36ff44a0c", "scanner": "scanner-primary", "fingerprint": "412cd849dfbd0291", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9cf06d9dcbddcaa9", "level": "warning", "message": {"text": "Frontend route `/team/perfil-rendimento` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ead78f802e1e3387", "scanner": "scanner-primary", "fingerprint": "9cf06d9dcbddcaa9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8c93a48789dabe95", "level": "warning", "message": {"text": "Frontend route `/central-franqueado` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "777fe8a090d3e336", "scanner": "scanner-primary", "fingerprint": "8c93a48789dabe95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-da9bc5f9cb9a34a7", "level": "warning", "message": {"text": "Frontend route `/musico/banda` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "213d08accc10f9a0", "scanner": "scanner-primary", "fingerprint": "da9bc5f9cb9a34a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-181b72a7406f4a6c", "level": "warning", "message": {"text": "Frontend route `/musico/equipamento` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7b47b29d7c3ac39d", "scanner": "scanner-primary", "fingerprint": "181b72a7406f4a6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bfaadc7aec0fdcf2", "level": "warning", "message": {"text": "Frontend route `/musico/repertorio` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a6c8db1f9cb31901", "scanner": "scanner-primary", "fingerprint": "bfaadc7aec0fdcf2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ce876a5bb682b872", "level": "warning", "message": {"text": "Frontend route `/musico/pacotes` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "1a341132dcfc1313", "scanner": "scanner-primary", "fingerprint": "ce876a5bb682b872", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b287aff67fb12fcf", "level": "warning", "message": {"text": "Frontend route `/agenda` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c6f7fd52b77567a2", "scanner": "scanner-primary", "fingerprint": "b287aff67fb12fcf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b1172af1bb2400f1", "level": "warning", "message": {"text": "Frontend route `/campanhas-cloud` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "4d91b825596eb31a", "scanner": "scanner-primary", "fingerprint": "b1172af1bb2400f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d23d0dabed443365", "level": "warning", "message": {"text": "Frontend route `/campanhas-resgate` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "3efefd42f153c311", "scanner": "scanner-primary", "fingerprint": "d23d0dabed443365", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2690550a15f69088", "level": "warning", "message": {"text": "Frontend route `/conversao-envios` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "38d4adee20f70bce", "scanner": "scanner-primary", "fingerprint": "2690550a15f69088", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-944f2316ef8ad1a6", "level": "warning", "message": {"text": "Frontend route `/termos-premiacao` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "0da60be503badf2f", "scanner": "scanner-primary", "fingerprint": "944f2316ef8ad1a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8d7b8642320ed219", "level": "warning", "message": {"text": "Frontend route `/planos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "99875ac2c2b63643", "scanner": "scanner-primary", "fingerprint": "8d7b8642320ed219", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7f1bec1fd65c0879", "level": "warning", "message": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "934747c714145754", "scanner": "scanner-primary", "fingerprint": "7f1bec1fd65c0879", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0e6ab4daa4148ec5", "level": "warning", "message": {"text": "Frontend route `/autorizar-celular` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "eb8c156e6a7ad05d", "scanner": "scanner-primary", "fingerprint": "0e6ab4daa4148ec5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-17dfe68efeebfd79", "level": "warning", "message": {"text": "Frontend route `/q/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "41ef9decd5166522", "scanner": "scanner-primary", "fingerprint": "17dfe68efeebfd79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f21170bfdba4bcc4", "level": "warning", "message": {"text": "Frontend route `/c/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f715b9ad01b26a62", "scanner": "scanner-primary", "fingerprint": "f21170bfdba4bcc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1c30d16b5d7f9913", "level": "warning", "message": {"text": "Frontend route `/app/*` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d9800aeb32adc6dc", "scanner": "scanner-primary", "fingerprint": "1c30d16b5d7f9913", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-57ba5cc06f5a3e70", "level": "error", "message": {"text": "Dangling fetch: GET /api/team${path} (src/hooks/useTeamApi.ts:14)"}, "properties": {"repobilityId": "f0e4914527bad4fe", "scanner": "scanner-primary", "fingerprint": "57ba5cc06f5a3e70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-982c10f8bc276ef8", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenda?${params} (src/hooks/useSinapseAgenda.ts:40)"}, "properties": {"repobilityId": "841795705c695e63", "scanner": "scanner-primary", "fingerprint": "982c10f8bc276ef8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-315cf54258284757", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agenda/${id} (src/hooks/useSinapseAgenda.ts:69)"}, "properties": {"repobilityId": "b194be1b17cb7491", "scanner": "scanner-primary", "fingerprint": "315cf54258284757", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41c37452bdc999f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/repairs (src/hooks/useRepairs.ts:85)"}, "properties": {"repobilityId": "ad84e2b73af2561a", "scanner": "scanner-primary", "fingerprint": "41c37452bdc999f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29d523507d76cdf8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/repairs/${id} (src/hooks/useRepairs.ts:105)"}, "properties": {"repobilityId": "0fbce9b263ff892d", "scanner": "scanner-primary", "fingerprint": "29d523507d76cdf8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3945606ac9799105", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/repairs/${id} (src/hooks/useRepairs.ts:122)"}, "properties": {"repobilityId": "8dd3ee1d05dbf67b", "scanner": "scanner-primary", "fingerprint": "3945606ac9799105", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64c549c27fa4e0ec", "level": "error", "message": {"text": "Dangling fetch: GET /api/repairs/search-product?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:147)"}, "properties": {"repobilityId": "988373308f0d615a", "scanner": "scanner-primary", "fingerprint": "64c549c27fa4e0ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ed05d4d796fe34c", "level": "error", "message": {"text": "Dangling fetch: GET /api/repairs/search-client?q=${encodeURIComponent(q)} (src/hooks/useRepairs.ts:170)"}, "properties": {"repobilityId": "8a08a698375e8fd7", "scanner": "scanner-primary", "fingerprint": "2ed05d4d796fe34c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e6b25c0374610e0c", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/relatorios (src/hooks/useMetaAds.ts:65)"}, "properties": {"repobilityId": "eb080f663cf965e3", "scanner": "scanner-primary", "fingerprint": "e6b25c0374610e0c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6357bb256b1a77d4", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:78)"}, "properties": {"repobilityId": "349d6e72759d7635", "scanner": "scanner-primary", "fingerprint": "6357bb256b1a77d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-338ae5aeecf40b7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/meta-ads/upload (src/hooks/useMetaAds.ts:93)"}, "properties": {"repobilityId": "6ccb4794f5353316", "scanner": "scanner-primary", "fingerprint": "338ae5aeecf40b7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21821d3ccff3f4f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analise (src/hooks/useMetaAds.ts:131)"}, "properties": {"repobilityId": "8348f84285f7c0e6", "scanner": "scanner-primary", "fingerprint": "21821d3ccff3f4f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46eb3a8197e2c23d", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/relatorios/${relatorioId}/analises (src/hooks/useMetaAds.ts:145)"}, "properties": {"repobilityId": "a6c9d2c96dc9af81", "scanner": "scanner-primary", "fingerprint": "46eb3a8197e2c23d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e1796a713ae3f68", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/analises/${analiseId} (src/hooks/useMetaAds.ts:159)"}, "properties": {"repobilityId": "30956ef3c03f3e91", "scanner": "scanner-primary", "fingerprint": "2e1796a713ae3f68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58a870b16d6b25b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/meta-ads/linha/${linhaId}/detalhe (src/hooks/useMetaAds.ts:178)"}, "properties": {"repobilityId": "5df05667a653f333", "scanner": "scanner-primary", "fingerprint": "58a870b16d6b25b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-456fae5159e1817f", "level": "error", "message": {"text": "Dangling fetch: POST /api/meta-ads/linha/${linhaId}/analisar (src/hooks/useMetaAds.ts:198)"}, "properties": {"repobilityId": "56e08c559a55d633", "scanner": "scanner-primary", "fingerprint": "456fae5159e1817f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ffe17c1f1f7f4f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/meta-ads/relatorios/${relatorioId}/analisar (src/hooks/useMetaAds.ts:213)"}, "properties": {"repobilityId": "b7aff2263746629c", "scanner": "scanner-primary", "fingerprint": "5ffe17c1f1f7f4f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-83de0d32f1c8a6db", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/meta-ads/relatorios/${id} (src/hooks/useMetaAds.ts:233)"}, "properties": {"repobilityId": "1222a3f197fd209b", "scanner": "scanner-primary", "fingerprint": "83de0d32f1c8a6db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2346fe5fa839d73e", "level": "error", "message": {"text": "Dangling fetch: GET /api/termos-premiacao?${p.toString()} (src/hooks/useTermosPremiacao.ts:57)"}, "properties": {"repobilityId": "bbfb729b8fd41425", "scanner": "scanner-primary", "fingerprint": "2346fe5fa839d73e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9fd8283dede0bd8", "level": "error", "message": {"text": "Dangling fetch: POST /api/termos-premiacao/gerar (src/hooks/useTermosPremiacao.ts:79)"}, "properties": {"repobilityId": "d5681959264578c1", "scanner": "scanner-primary", "fingerprint": "f9fd8283dede0bd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5707953580b7bc27", "level": "error", "message": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/marcar-enviado (src/hooks/useTermosPremiacao.ts:96)"}, "properties": {"repobilityId": "692105e8a2cabfbc", "scanner": "scanner-primary", "fingerprint": "5707953580b7bc27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e044c463ca13518", "level": "error", "message": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/upload-assinado (src/hooks/useTermosPremiacao.ts:114)"}, "properties": {"repobilityId": "99641d2629a258e2", "scanner": "scanner-primary", "fingerprint": "0e044c463ca13518", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2441eba47504f3db", "level": "error", "message": {"text": "Dangling fetch: POST /api/termos-premiacao/${id}/aceitar (src/hooks/useTermosPremiacao.ts:132)"}, "properties": {"repobilityId": "e6d0cb0adabf9b74", "scanner": "scanner-primary", "fingerprint": "2441eba47504f3db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9603be9b023324c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/termos-premiacao/${id} (src/hooks/useTermosPremiacao.ts:148)"}, "properties": {"repobilityId": "112589d57d23a0c4", "scanner": "scanner-primary", "fingerprint": "c9603be9b023324c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f44f8513f2e8727", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/preview (src/hooks/useCentralCampanhas.ts:62)"}, "properties": {"repobilityId": "0a498056c3c199f0", "scanner": "scanner-primary", "fingerprint": "4f44f8513f2e8727", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86c7eb0847fa8a69", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/disparar (src/hooks/useCentralCampanhas.ts:93)"}, "properties": {"repobilityId": "77d966ceb682f726", "scanner": "scanner-primary", "fingerprint": "86c7eb0847fa8a69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dda0a67ccc913ffa", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-v2/historico (src/hooks/useCentralCampanhas.ts:125)"}, "properties": {"repobilityId": "c6d6590e6f025f9e", "scanner": "scanner-primary", "fingerprint": "dda0a67ccc913ffa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fdab73e8db51924e", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/contar-publicos (src/hooks/useCentralCampanhas.ts:141)"}, "properties": {"repobilityId": "64545b9d90c0ee94", "scanner": "scanner-primary", "fingerprint": "fdab73e8db51924e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46b27e544bf28a61", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/${caminho} (src/hooks/useCentralCampanhas.ts:161)"}, "properties": {"repobilityId": "dae6042e34e95e50", "scanner": "scanner-primary", "fingerprint": "46b27e544bf28a61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b0adfacdfb52e774", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCentralCampanhas.ts:177)"}, "properties": {"repobilityId": "e42300caaefed779", "scanner": "scanner-primary", "fingerprint": "b0adfacdfb52e774", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-11705165e91a3e63", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/publico-completo (src/hooks/useCentralCampanhas.ts:190)"}, "properties": {"repobilityId": "9f75dde00a1a45eb", "scanner": "scanner-primary", "fingerprint": "11705165e91a3e63", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c24616d1d8771846", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-publico (src/hooks/useCentralCampanhas.ts:206)"}, "properties": {"repobilityId": "34f5d2af58d628c9", "scanner": "scanner-primary", "fingerprint": "c24616d1d8771846", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d3e8e99ae51f1a6", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-v2/produtos-sugeridos?tipo=${tipo}&limite=12 (src/hooks/useCentralCampanhas.ts:235)"}, "properties": {"repobilityId": "d7796fe2d4dd8ee6", "scanner": "scanner-primary", "fingerprint": "0d3e8e99ae51f1a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9fc4adc70d4acb97", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-variaveis (src/hooks/useCentralCampanhas.ts:249)"}, "properties": {"repobilityId": "4f72cc652ca9d2dc", "scanner": "scanner-primary", "fingerprint": "9fc4adc70d4acb97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9547aeb9ba7f1c4", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-v2/sugerir-mensagem (src/hooks/useCentralCampanhas.ts:265)"}, "properties": {"repobilityId": "2c8385da8f35d7cb", "scanner": "scanner-primary", "fingerprint": "b9547aeb9ba7f1c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73ecc173bb0107e3", "level": "error", "message": {"text": "Dangling fetch: GET /api/intents/stats (src/hooks/useIntents.ts:141)"}, "properties": {"repobilityId": "191fb3ab71a937ff", "scanner": "scanner-primary", "fingerprint": "73ecc173bb0107e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a23fbd5bf967e3d", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents (src/hooks/useIntents.ts:155)"}, "properties": {"repobilityId": "ae1b5d22fa558a7b", "scanner": "scanner-primary", "fingerprint": "0a23fbd5bf967e3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a498ebfc65e350b9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/intents/${id} (src/hooks/useIntents.ts:175)"}, "properties": {"repobilityId": "07d0c0c98efd4ac0", "scanner": "scanner-primary", "fingerprint": "a498ebfc65e350b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95bb9c43135cce08", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/${id}/${action} (src/hooks/useIntents.ts:196)"}, "properties": {"repobilityId": "53c52cb5588ba0f5", "scanner": "scanner-primary", "fingerprint": "95bb9c43135cce08", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e315a998c3a3057", "level": "error", "message": {"text": "Dangling fetch: GET /api/intents/sugestoes-vinculo (src/hooks/useIntents.ts:243)"}, "properties": {"repobilityId": "b780dd081d711e6d", "scanner": "scanner-primary", "fingerprint": "9e315a998c3a3057", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e7d50113096b5b12", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/vincular-lote (src/hooks/useIntents.ts:257)"}, "properties": {"repobilityId": "954509add4ebb927", "scanner": "scanner-primary", "fingerprint": "e7d50113096b5b12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-292ddb8734064990", "level": "error", "message": {"text": "Dangling fetch: GET /api/avisos?${params.toString()} (src/hooks/useAvisos.ts:68)"}, "properties": {"repobilityId": "e6d5e41cbb518803", "scanner": "scanner-primary", "fingerprint": "292ddb8734064990", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-494410987f4ef119", "level": "error", "message": {"text": "Dangling fetch: GET /api/avisos/unread-count (src/hooks/useAvisos.ts:84)"}, "properties": {"repobilityId": "413a2db43dddd7ce", "scanner": "scanner-primary", "fingerprint": "494410987f4ef119", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a815b972e4bdc708", "level": "error", "message": {"text": "Dangling fetch: POST /api/avisos (src/hooks/useAvisos.ts:101)"}, "properties": {"repobilityId": "f3b374dc3612bcdb", "scanner": "scanner-primary", "fingerprint": "a815b972e4bdc708", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60c55c5635b51647", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/avisos/${id} (src/hooks/useAvisos.ts:121)"}, "properties": {"repobilityId": "729c5b265c71dbbc", "scanner": "scanner-primary", "fingerprint": "60c55c5635b51647", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55f5a62c29e6934b", "level": "error", "message": {"text": "Dangling fetch: POST /api/avisos/${id}/${action} (src/hooks/useAvisos.ts:141)"}, "properties": {"repobilityId": "aaad2ad86ff40fe9", "scanner": "scanner-primary", "fingerprint": "55f5a62c29e6934b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f9f04d7ce9191bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/avisos/marcar-todos-lidos (src/hooks/useAvisos.ts:165)"}, "properties": {"repobilityId": "f21f83c22723cff5", "scanner": "scanner-primary", "fingerprint": "6f9f04d7ce9191bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95469e25789c7f0a", "level": "error", "message": {"text": "Dangling fetch: GET /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:194)"}, "properties": {"repobilityId": "ffbbc3fd46c181a6", "scanner": "scanner-primary", "fingerprint": "95469e25789c7f0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72a65627bfc5c5b9", "level": "error", "message": {"text": "Dangling fetch: POST /api/avisos/${avisoId}/comments (src/hooks/useAvisos.ts:208)"}, "properties": {"repobilityId": "7a00f7dd34dbb9d4", "scanner": "scanner-primary", "fingerprint": "72a65627bfc5c5b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b91cdbd6e2afefc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/avisos/${id} (src/hooks/useAvisos.ts:227)"}, "properties": {"repobilityId": "cafb800a56bb21fa", "scanner": "scanner-primary", "fingerprint": "0b91cdbd6e2afefc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c60fb203581ac8c9", "level": "error", "message": {"text": "Dangling fetch: GET /api/quotes/${id} (src/hooks/useQuotes.ts:65)"}, "properties": {"repobilityId": "4941960c7662ad67", "scanner": "scanner-primary", "fingerprint": "c60fb203581ac8c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61ed42035d509463", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/quotes/${id} (src/hooks/useQuotes.ts:97)"}, "properties": {"repobilityId": "489e9969f2afa095", "scanner": "scanner-primary", "fingerprint": "61ed42035d509463", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84d653786a5cda43", "level": "error", "message": {"text": "Dangling fetch: POST /api/quotes/${id}/send (src/hooks/useQuotes.ts:109)"}, "properties": {"repobilityId": "fed69c1848c2df06", "scanner": "scanner-primary", "fingerprint": "84d653786a5cda43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-11e51a83bef4d4c4", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/quotes/${id} (src/hooks/useQuotes.ts:123)"}, "properties": {"repobilityId": "13173c3d23fd961a", "scanner": "scanner-primary", "fingerprint": "11e51a83bef4d4c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2bf59f68b393c5b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/terms/status (src/hooks/useTermsAcceptance.ts:12)"}, "properties": {"repobilityId": "55fcecbcb464349a", "scanner": "scanner-primary", "fingerprint": "2bf59f68b393c5b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9935fd52ca534da", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/terms/accept (src/hooks/useTermsAcceptance.ts:34)"}, "properties": {"repobilityId": "17a01f6bdd07ffcc", "scanner": "scanner-primary", "fingerprint": "a9935fd52ca534da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-855e8235618277ec", "level": "error", "message": {"text": "Dangling fetch: GET /api/nfs-boletos?${qs(filtros)} (src/hooks/useNfsBoletos.ts:64)"}, "properties": {"repobilityId": "66b9e5113bb84b2c", "scanner": "scanner-primary", "fingerprint": "855e8235618277ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cfdc2f8b4519c395", "level": "error", "message": {"text": "Dangling fetch: GET /api/nfs-boletos/resumo (src/hooks/useNfsBoletos.ts:77)"}, "properties": {"repobilityId": "85a61162676d185f", "scanner": "scanner-primary", "fingerprint": "cfdc2f8b4519c395", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e6617dcc0928ecf3", "level": "error", "message": {"text": "Dangling fetch: GET /api/nfs-boletos/meta/fornecedores (src/hooks/useNfsBoletos.ts:91)"}, "properties": {"repobilityId": "57ff117554858325", "scanner": "scanner-primary", "fingerprint": "e6617dcc0928ecf3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-edcd341d4948aebf", "level": "error", "message": {"text": "Dangling fetch: POST /api/nfs-boletos (src/hooks/useNfsBoletos.ts:104)"}, "properties": {"repobilityId": "33b4ded8685b858c", "scanner": "scanner-primary", "fingerprint": "edcd341d4948aebf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c78d143e978b987", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:124)"}, "properties": {"repobilityId": "94caa261209158a0", "scanner": "scanner-primary", "fingerprint": "5c78d143e978b987", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e0781b1e55236fd", "level": "error", "message": {"text": "Dangling fetch: POST /api/nfs-boletos/${id}/marcar-pago (src/hooks/useNfsBoletos.ts:144)"}, "properties": {"repobilityId": "3dd6b2381cf49184", "scanner": "scanner-primary", "fingerprint": "3e0781b1e55236fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fae7bca719f271db", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/nfs-boletos/${id} (src/hooks/useNfsBoletos.ts:164)"}, "properties": {"repobilityId": "d94347f9a4bf5fef", "scanner": "scanner-primary", "fingerprint": "fae7bca719f271db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d51182e9919a57b", "level": "error", "message": {"text": "Dangling fetch: POST /api/nfs-boletos/${id}/attach (src/hooks/useNfsBoletos.ts:184)"}, "properties": {"repobilityId": "40fb0365f21431ef", "scanner": "scanner-primary", "fingerprint": "2d51182e9919a57b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e8149c9d79a88c4", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/channels (src/hooks/useChat.ts:44)"}, "properties": {"repobilityId": "111d3f319d925d90", "scanner": "scanner-primary", "fingerprint": "1e8149c9d79a88c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8979421ed5081f3d", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:59)"}, "properties": {"repobilityId": "6f786e9a29cb0cbe", "scanner": "scanner-primary", "fingerprint": "8979421ed5081f3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1dfa3e0f47742eab", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/channels/${slug}/messages (src/hooks/useChat.ts:77)"}, "properties": {"repobilityId": "1f18b7f1573d9a42", "scanner": "scanner-primary", "fingerprint": "1dfa3e0f47742eab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-471fe9c55eb806f9", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/channels/${slug}/read (src/hooks/useChat.ts:97)"}, "properties": {"repobilityId": "5f50dbe95d73fbbf", "scanner": "scanner-primary", "fingerprint": "471fe9c55eb806f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2a4fa18ca7666aa", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/unread-counts (src/hooks/useChat.ts:115)"}, "properties": {"repobilityId": "09eb56a36817193b", "scanner": "scanner-primary", "fingerprint": "f2a4fa18ca7666aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3de05390e748294", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/channels (src/hooks/useChat.ts:130)"}, "properties": {"repobilityId": "84a334cab3fb6434", "scanner": "scanner-primary", "fingerprint": "f3de05390e748294", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-daf19ca6b54db0f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/dms (src/hooks/useChat.ts:147)"}, "properties": {"repobilityId": "01933f231cd478de", "scanner": "scanner-primary", "fingerprint": "daf19ca6b54db0f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99f2fd8310d01b16", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/subscribe (src/hooks/usePushNotifications.ts:67)"}, "properties": {"repobilityId": "563c01a690abb6ba", "scanner": "scanner-primary", "fingerprint": "99f2fd8310d01b16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f6377dbf9aeb149", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/unsubscribe (src/hooks/usePushNotifications.ts:94)"}, "properties": {"repobilityId": "a8a89a47ba67c45c", "scanner": "scanner-primary", "fingerprint": "5f6377dbf9aeb149", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-684332bd37e5e405", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/test (src/hooks/usePushNotifications.ts:109)"}, "properties": {"repobilityId": "77ffedf58064b380", "scanner": "scanner-primary", "fingerprint": "684332bd37e5e405", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f11597e8d1c3bc82", "level": "error", "message": {"text": "Dangling fetch: GET /api/tasks${path} (src/hooks/useTasksApi.ts:14)"}, "properties": {"repobilityId": "6c3a838b92f3099d", "scanner": "scanner-primary", "fingerprint": "f11597e8d1c3bc82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c74f1f02d441187", "level": "error", "message": {"text": "Dangling fetch: GET /api/contracts/${id} (src/hooks/useContracts.ts:61)"}, "properties": {"repobilityId": "0961752e8f033e4e", "scanner": "scanner-primary", "fingerprint": "1c74f1f02d441187", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16a519fe150dce13", "level": "error", "message": {"text": "Dangling fetch: GET /api/contracts/clausulas/${tipo} (src/hooks/useContracts.ts:74)"}, "properties": {"repobilityId": "d87ddb179b041d3d", "scanner": "scanner-primary", "fingerprint": "16a519fe150dce13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19253014b0a20cf6", "level": "error", "message": {"text": "Dangling fetch: POST /api/contracts/${id}/send (src/hooks/useContracts.ts:105)"}, "properties": {"repobilityId": "1b09a44204d01e7c", "scanner": "scanner-primary", "fingerprint": "19253014b0a20cf6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-402e2788c6b1c23d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/contracts/${id} (src/hooks/useContracts.ts:119)"}, "properties": {"repobilityId": "2500a0fd69c37239", "scanner": "scanner-primary", "fingerprint": "402e2788c6b1c23d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e352f9bc6cd3de43", "level": "error", "message": {"text": "Dangling fetch: GET /api/ia-painel/atual (src/hooks/useIaPainel.ts:39)"}, "properties": {"repobilityId": "79151d8894b013dc", "scanner": "scanner-primary", "fingerprint": "e352f9bc6cd3de43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c0b55b68060397e", "level": "error", "message": {"text": "Dangling fetch: POST /api/ia-painel/gerar (src/hooks/useIaPainel.ts:52)"}, "properties": {"repobilityId": "4f33a483709e8049", "scanner": "scanner-primary", "fingerprint": "7c0b55b68060397e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a96b78a2cdbce97", "level": "error", "message": {"text": "Dangling fetch: GET /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:70)"}, "properties": {"repobilityId": "3de272dce86a6101", "scanner": "scanner-primary", "fingerprint": "0a96b78a2cdbce97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-942415cf9a00f7d4", "level": "error", "message": {"text": "Dangling fetch: POST /api/ia-painel/item/${itemKey}/status (src/hooks/useIaPainel.ts:83)"}, "properties": {"repobilityId": "e50fd82fde22e1c7", "scanner": "scanner-primary", "fingerprint": "942415cf9a00f7d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32241814658f7fac", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/analise?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:71)"}, "properties": {"repobilityId": "6d36f195d3e0061d", "scanner": "scanner-primary", "fingerprint": "32241814658f7fac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-178663d5c311a7a5", "level": "error", "message": {"text": "Dangling fetch: POST /api/financeiro/analisar (src/hooks/useFinanceiroAnalise.ts:84)"}, "properties": {"repobilityId": "4c4713f5e10bc2dc", "scanner": "scanner-primary", "fingerprint": "178663d5c311a7a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1cd71451b73b6f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/analises?${qsPeriodo(p)} (src/hooks/useFinanceiroAnalise.ts:107)"}, "properties": {"repobilityId": "e23a3483846b8457", "scanner": "scanner-primary", "fingerprint": "c1cd71451b73b6f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a9fbf867a65b5e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/analise/${id} (src/hooks/useFinanceiroAnalise.ts:121)"}, "properties": {"repobilityId": "d0274466de2670b5", "scanner": "scanner-primary", "fingerprint": "6a9fbf867a65b5e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b3f938adc6ae479", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications/counts (src/hooks/useNotificationCounts.ts:45)"}, "properties": {"repobilityId": "cea7cc5c930eb507", "scanner": "scanner-primary", "fingerprint": "9b3f938adc6ae479", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2bd300cb072f064b", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications/mark-seen (src/hooks/useNotificationCounts.ts:96)"}, "properties": {"repobilityId": "7f39473c3b18f961", "scanner": "scanner-primary", "fingerprint": "2bd300cb072f064b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22db6d40b61e0859", "level": "error", "message": {"text": "Dangling fetch: GET /api/metas-mensais/${lojaId}/${ano}/${mes} (src/hooks/useMetasMensais.ts:66)"}, "properties": {"repobilityId": "0a21f8628e666a94", "scanner": "scanner-primary", "fingerprint": "22db6d40b61e0859", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b4e54103aed524f", "level": "error", "message": {"text": "Dangling fetch: GET /api/metas-mensais/lista?${params.toString()} (src/hooks/useMetasMensais.ts:82)"}, "properties": {"repobilityId": "dc4ac5f80423fcdb", "scanner": "scanner-primary", "fingerprint": "3b4e54103aed524f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60f624e1d8b00d9c", "level": "error", "message": {"text": "Dangling fetch: POST /api/metas-mensais (src/hooks/useMetasMensais.ts:101)"}, "properties": {"repobilityId": "7d5e202571e16297", "scanner": "scanner-primary", "fingerprint": "60f624e1d8b00d9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25a6544cf54b059b", "level": "error", "message": {"text": "Dangling fetch: GET /api/metas-mensais/limpar/preview?${params.toString()} (src/hooks/useMetasMensais.ts:143)"}, "properties": {"repobilityId": "103f3f6fbd35da79", "scanner": "scanner-primary", "fingerprint": "25a6544cf54b059b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9365c592b8adb13", "level": "error", "message": {"text": "Dangling fetch: POST /api/metas-mensais/limpar/executar (src/hooks/useMetasMensais.ts:157)"}, "properties": {"repobilityId": "45b5b328a9c0a425", "scanner": "scanner-primary", "fingerprint": "e9365c592b8adb13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-057b5e10f5fbedd1", "level": "error", "message": {"text": "Dangling fetch: POST /api/metas-mensais/sugerir-ia (src/hooks/useMetasMensais.ts:198)"}, "properties": {"repobilityId": "532f93a7fe80eed5", "scanner": "scanner-primary", "fingerprint": "057b5e10f5fbedd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ffec609c09dbf6e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/metas-mensais/${loja_id}/${ano}/${mes} (src/hooks/useMetasMensais.ts:213)"}, "properties": {"repobilityId": "0077d7719a90ef05", "scanner": "scanner-primary", "fingerprint": "9ffec609c09dbf6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f97ec1474252b139", "level": "error", "message": {"text": "Dangling fetch: GET /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:13)"}, "properties": {"repobilityId": "f023150a092c90fd", "scanner": "scanner-primary", "fingerprint": "f97ec1474252b139", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c51fc15831934e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/ia-contexto-empresa (src/hooks/useIaContexto.ts:26)"}, "properties": {"repobilityId": "f3558156dcfc72d7", "scanner": "scanner-primary", "fingerprint": "4c51fc15831934e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94c189e4ed328d34", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/categorias-disponiveis (src/hooks/useCampanhasCloud.ts:45)"}, "properties": {"repobilityId": "fd9eea4576d0bd08", "scanner": "scanner-primary", "fingerprint": "94c189e4ed328d34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b3799be130246c3", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/diag (src/hooks/useCampanhasCloud.ts:134)"}, "properties": {"repobilityId": "50b7c680cfa25bef", "scanner": "scanner-primary", "fingerprint": "4b3799be130246c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c0dbfab3d795bbe", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/templates (src/hooks/useCampanhasCloud.ts:147)"}, "properties": {"repobilityId": "2b2229381bb4b4eb", "scanner": "scanner-primary", "fingerprint": "3c0dbfab3d795bbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6e5f8a30b8ecaed", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/preview (src/hooks/useCampanhasCloud.ts:159)"}, "properties": {"repobilityId": "8271094369cdf2be", "scanner": "scanner-primary", "fingerprint": "c6e5f8a30b8ecaed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60b1bbfce8a5be01", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:174)"}, "properties": {"repobilityId": "61334047706b935f", "scanner": "scanner-primary", "fingerprint": "60b1bbfce8a5be01", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0554bb4a40925708", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id}/metricas (src/hooks/useCampanhasCloud.ts:207)"}, "properties": {"repobilityId": "97ffd73bb0fe4eb3", "scanner": "scanner-primary", "fingerprint": "0554bb4a40925708", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3acd28d1334dd0f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id}/erros (src/hooks/useCampanhasCloud.ts:225)"}, "properties": {"repobilityId": "de4604e547b35695", "scanner": "scanner-primary", "fingerprint": "3acd28d1334dd0f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9b4dc2b7e874932", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:239)"}, "properties": {"repobilityId": "9cfa36b677aed569", "scanner": "scanner-primary", "fingerprint": "f9b4dc2b7e874932", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e549ccf7b1100445", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud (src/hooks/useCampanhasCloud.ts:260)"}, "properties": {"repobilityId": "af0ac1dc826271c4", "scanner": "scanner-primary", "fingerprint": "e549ccf7b1100445", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7e1fec48c4dd593", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/cancelar (src/hooks/useCampanhasCloud.ts:277)"}, "properties": {"repobilityId": "39a8b6c67cf25266", "scanner": "scanner-primary", "fingerprint": "a7e1fec48c4dd593", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a29b7f0ef3e68068", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/disparar-agora (src/hooks/useCampanhasCloud.ts:293)"}, "properties": {"repobilityId": "90b89ed3c439f29c", "scanner": "scanner-primary", "fingerprint": "a29b7f0ef3e68068", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13ba8942e863b96d", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/pausar (src/hooks/useCampanhasCloud.ts:309)"}, "properties": {"repobilityId": "a87a04ec2fb21c0c", "scanner": "scanner-primary", "fingerprint": "13ba8942e863b96d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-939ec226b0961caf", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/retomar (src/hooks/useCampanhasCloud.ts:325)"}, "properties": {"repobilityId": "615f1783a35d0396", "scanner": "scanner-primary", "fingerprint": "939ec226b0961caf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c9426110d9987b2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:349)"}, "properties": {"repobilityId": "2741d44beffd6b3e", "scanner": "scanner-primary", "fingerprint": "3c9426110d9987b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f6630ffad00507f3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/campanhas-cloud/${id} (src/hooks/useCampanhasCloud.ts:369)"}, "properties": {"repobilityId": "034142ca8c0dc75f", "scanner": "scanner-primary", "fingerprint": "f6630ffad00507f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f1683e70fcee93d", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-cloud/${id}/duplicar (src/hooks/useCampanhasCloud.ts:385)"}, "properties": {"repobilityId": "393c9d37dbb29cd9", "scanner": "scanner-primary", "fingerprint": "6f1683e70fcee93d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25a9eafcc7b7aabd", "level": "error", "message": {"text": "Dangling fetch: GET /api/compras/${id} (src/hooks/useCompras.ts:82)"}, "properties": {"repobilityId": "9ea8a6ba90c37d4b", "scanner": "scanner-primary", "fingerprint": "25a9eafcc7b7aabd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27e225ba7c77f580", "level": "error", "message": {"text": "Dangling fetch: POST /api/compras/preview-xlsx (src/hooks/useCompras.ts:96)"}, "properties": {"repobilityId": "166378445c308aa5", "scanner": "scanner-primary", "fingerprint": "27e225ba7c77f580", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24de5c354bd1ed18", "level": "error", "message": {"text": "Dangling fetch: POST /api/compras (src/hooks/useCompras.ts:112)"}, "properties": {"repobilityId": "b1f37cce7f3edb46", "scanner": "scanner-primary", "fingerprint": "24de5c354bd1ed18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24a8d7e55c4b3ddc", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/compras/itens/${itemId} (src/hooks/useCompras.ts:166)"}, "properties": {"repobilityId": "5c24d88d35c50de4", "scanner": "scanner-primary", "fingerprint": "24a8d7e55c4b3ddc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad30c2e6061c447a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/compras/itens/${itemId} (src/hooks/useCompras.ts:186)"}, "properties": {"repobilityId": "3cdd5a1344c3f502", "scanner": "scanner-primary", "fingerprint": "ad30c2e6061c447a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a784c07a1de6fc48", "level": "error", "message": {"text": "Dangling fetch: GET /api/compras/${pedidoId}/nfes (src/hooks/useCompras.ts:206)"}, "properties": {"repobilityId": "6d25a41f0003b3c6", "scanner": "scanner-primary", "fingerprint": "a784c07a1de6fc48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-edba4d154b323b09", "level": "error", "message": {"text": "Dangling fetch: POST /api/compras/${pedidoId}/igualar-qtd-nfe (src/hooks/useCompras.ts:219)"}, "properties": {"repobilityId": "ba72a1ee5893b9e2", "scanner": "scanner-primary", "fingerprint": "edba4d154b323b09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9724ca81df13f3c5", "level": "error", "message": {"text": "Dangling fetch: POST /api/compras/nfes/${nfeId}/reconferir (src/hooks/useCompras.ts:238)"}, "properties": {"repobilityId": "0ee31e5d12a99ed9", "scanner": "scanner-primary", "fingerprint": "9724ca81df13f3c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c3d850d05035681", "level": "error", "message": {"text": "Dangling fetch: POST /api/compras/${pedidoId}/anexar-nfe (src/hooks/useCompras.ts:258)"}, "properties": {"repobilityId": "b7a78269a02c0539", "scanner": "scanner-primary", "fingerprint": "9c3d850d05035681", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be42d86deff900d7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/compras/${id} (src/hooks/useCompras.ts:277)"}, "properties": {"repobilityId": "9450264f93935d97", "scanner": "scanner-primary", "fingerprint": "be42d86deff900d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a0ae577b6cc5a7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/team/me (src/hooks/useTeamMember.ts:30)"}, "properties": {"repobilityId": "4171dcb7de58befb", "scanner": "scanner-primary", "fingerprint": "9a0ae577b6cc5a7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf4fb43a818e6dfe", "level": "error", "message": {"text": "Dangling fetch: GET /api/insumos (src/hooks/useInsumos.ts:49)"}, "properties": {"repobilityId": "edbc38bb2cf80e18", "scanner": "scanner-primary", "fingerprint": "cf4fb43a818e6dfe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9881d6f8e4d86131", "level": "error", "message": {"text": "Dangling fetch: POST /api/insumos (src/hooks/useInsumos.ts:63)"}, "properties": {"repobilityId": "8913d55f5877aad2", "scanner": "scanner-primary", "fingerprint": "9881d6f8e4d86131", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8045741266d6938", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/insumos/${id} (src/hooks/useInsumos.ts:80)"}, "properties": {"repobilityId": "d7d641cf47fab989", "scanner": "scanner-primary", "fingerprint": "e8045741266d6938", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d452303b68f01f12", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/insumos/${id} (src/hooks/useInsumos.ts:97)"}, "properties": {"repobilityId": "87d6e2ab1c818c0b", "scanner": "scanner-primary", "fingerprint": "d452303b68f01f12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c09584f2ce3d55a9", "level": "error", "message": {"text": "Dangling fetch: POST /api/insumos/contagens (src/hooks/useInsumos.ts:113)"}, "properties": {"repobilityId": "c0c51694f642ca49", "scanner": "scanner-primary", "fingerprint": "c09584f2ce3d55a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a70cf30cfb27dbc", "level": "error", "message": {"text": "Dangling fetch: GET /api/insumos/contagens?${params.toString()} (src/hooks/useInsumos.ts:133)"}, "properties": {"repobilityId": "5bb307be28b17e2d", "scanner": "scanner-primary", "fingerprint": "1a70cf30cfb27dbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb51abf4c8f7fc70", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/insumos/contagens/${id} (src/hooks/useInsumos.ts:146)"}, "properties": {"repobilityId": "7e130faee9457854", "scanner": "scanner-primary", "fingerprint": "cb51abf4c8f7fc70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2ca423ee3ff41e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/produtos-analises/analise?${qsP(p)} (src/hooks/useProdutosAnalise.ts:47)"}, "properties": {"repobilityId": "12a3964e197fccfc", "scanner": "scanner-primary", "fingerprint": "e2ca423ee3ff41e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c23cabb188310cb5", "level": "error", "message": {"text": "Dangling fetch: POST /api/produtos-analises/analisar (src/hooks/useProdutosAnalise.ts:60)"}, "properties": {"repobilityId": "1171bc1e255f81f0", "scanner": "scanner-primary", "fingerprint": "c23cabb188310cb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d7ba29590771da4", "level": "error", "message": {"text": "Dangling fetch: GET /api/produtos-analises/analises?${qsP(p)} (src/hooks/useProdutosAnalise.ts:80)"}, "properties": {"repobilityId": "a596fdb32991c530", "scanner": "scanner-primary", "fingerprint": "2d7ba29590771da4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b178fd97771549ba", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/band (src/hooks/useSinapseMusico.ts:31)"}, "properties": {"repobilityId": "f41fcdf5672b8463", "scanner": "scanner-primary", "fingerprint": "b178fd97771549ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-348a70a101019c59", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/band/${id} (src/hooks/useSinapseMusico.ts:59)"}, "properties": {"repobilityId": "e0cf5c7ddbd5882f", "scanner": "scanner-primary", "fingerprint": "348a70a101019c59", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87c5e975bca91991", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/equipment (src/hooks/useSinapseMusico.ts:89)"}, "properties": {"repobilityId": "f2de13407abbcbb2", "scanner": "scanner-primary", "fingerprint": "87c5e975bca91991", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df4a626154c21386", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/equipment/${id} (src/hooks/useSinapseMusico.ts:117)"}, "properties": {"repobilityId": "d52d23603e6efb1d", "scanner": "scanner-primary", "fingerprint": "df4a626154c21386", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-809c1fb4c672d6ec", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/songs (src/hooks/useSinapseMusico.ts:146)"}, "properties": {"repobilityId": "efae58a6c25c2a67", "scanner": "scanner-primary", "fingerprint": "809c1fb4c672d6ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3cc507dd4b39b908", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/songs/${id} (src/hooks/useSinapseMusico.ts:174)"}, "properties": {"repobilityId": "97bfe9792385d234", "scanner": "scanner-primary", "fingerprint": "3cc507dd4b39b908", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71704c7af98fa069", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/services (src/hooks/useSinapseMusico.ts:200)"}, "properties": {"repobilityId": "0dadf8f683180acb", "scanner": "scanner-primary", "fingerprint": "71704c7af98fa069", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dbe4b2e7f8f77eb3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/services/${id} (src/hooks/useSinapseMusico.ts:228)"}, "properties": {"repobilityId": "aa63f56493259f81", "scanner": "scanner-primary", "fingerprint": "dbe4b2e7f8f77eb3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-388541458210ad90", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/playlists (src/hooks/usePlaylists.ts:40)"}, "properties": {"repobilityId": "c59a1cda6d6a4446", "scanner": "scanner-primary", "fingerprint": "388541458210ad90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4afedef1ed8b5693", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:52)"}, "properties": {"repobilityId": "7ca0e8baac4d8ea1", "scanner": "scanner-primary", "fingerprint": "4afedef1ed8b5693", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-701b3663dc18dd16", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/playlists/${id} (src/hooks/usePlaylists.ts:81)"}, "properties": {"repobilityId": "de90cd79c8c38919", "scanner": "scanner-primary", "fingerprint": "701b3663dc18dd16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b6c1268ea7e2907", "level": "error", "message": {"text": "Dangling fetch: PUT /api/musico/playlists/${playlistId}/songs (src/hooks/usePlaylists.ts:93)"}, "properties": {"repobilityId": "3183e17b91e721bc", "scanner": "scanner-primary", "fingerprint": "6b6c1268ea7e2907", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a546bbcb1978eaa", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:122)"}, "properties": {"repobilityId": "562bc9fbef37f098", "scanner": "scanner-primary", "fingerprint": "4a546bbcb1978eaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2c90e9a927a2a67", "level": "error", "message": {"text": "Dangling fetch: POST /api/musico/songs/${songId}/files (src/hooks/usePlaylists.ts:139)"}, "properties": {"repobilityId": "629c55aa37c82210", "scanner": "scanner-primary", "fingerprint": "a2c90e9a927a2a67", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5038061e55e75f76", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/musico/songs/files/${fileId} (src/hooks/usePlaylists.ts:157)"}, "properties": {"repobilityId": "c9e859e9336b2d32", "scanner": "scanner-primary", "fingerprint": "5038061e55e75f76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff3091d4a0e82c18", "level": "error", "message": {"text": "Dangling fetch: GET /api/quick-replies (src/hooks/useQuickReplies.ts:30)"}, "properties": {"repobilityId": "f9cb97d1e224a33e", "scanner": "scanner-primary", "fingerprint": "ff3091d4a0e82c18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a8bfbe12ba29494", "level": "error", "message": {"text": "Dangling fetch: POST /api/quick-replies (src/hooks/useQuickReplies.ts:47)"}, "properties": {"repobilityId": "8f11f5376f40e3ea", "scanner": "scanner-primary", "fingerprint": "4a8bfbe12ba29494", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e867ab57b287100", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:68)"}, "properties": {"repobilityId": "0521632995387a9b", "scanner": "scanner-primary", "fingerprint": "7e867ab57b287100", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8024dfd16ab6153", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/quick-replies/${id} (src/hooks/useQuickReplies.ts:89)"}, "properties": {"repobilityId": "b63ce5eba547b963", "scanner": "scanner-primary", "fingerprint": "f8024dfd16ab6153", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5fdc2cbc81c7ddd6", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/sessions/start (src/hooks/useSessionTracker.ts:26)"}, "properties": {"repobilityId": "2996a7f142066d00", "scanner": "scanner-primary", "fingerprint": "5fdc2cbc81c7ddd6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01ecd567765f04aa", "level": "error", "message": {"text": "Dangling fetch: GET /api/avisos?category=preco_alterado&status=nao_lidos&dias=7 (src/components/PrecosAlteradosCard.tsx:18)"}, "properties": {"repobilityId": "48a532ce4cf678de", "scanner": "scanner-primary", "fingerprint": "01ecd567765f04aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c8f0f4eb35b9c16", "level": "error", "message": {"text": "Dangling fetch: POST /api/financeiro/mes-corrente/campo${qs} (src/components/MesEmAndamentoCard.tsx:98)"}, "properties": {"repobilityId": "92071130497753d8", "scanner": "scanner-primary", "fingerprint": "4c8f0f4eb35b9c16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-817fec495eafe672", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/mes-corrente?yearMonth=${yearMonth}${qsStore} (src/components/MesEmAndamentoCard.tsx:248)"}, "properties": {"repobilityId": "6a67c8aa8989cddd", "scanner": "scanner-primary", "fingerprint": "817fec495eafe672", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c26a3d182a2e915", "level": "error", "message": {"text": "Dangling fetch: POST /api/financeiro/mes-corrente/reset-provisao${qs} (src/components/MesEmAndamentoCard.tsx:264)"}, "properties": {"repobilityId": "ed703f022c082816", "scanner": "scanner-primary", "fingerprint": "7c26a3d182a2e915", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-552f260a14d9ae6d", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/sessions/active (src/components/EquipeOnlineCard.tsx:78)"}, "properties": {"repobilityId": "6d6693d786c2d76a", "scanner": "scanner-primary", "fingerprint": "552f260a14d9ae6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d6d078c38c7ab43", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/sessions/recent (src/components/EquipeOnlineCard.tsx:92)"}, "properties": {"repobilityId": "bee210e08b93fef0", "scanner": "scanner-primary", "fingerprint": "0d6d078c38c7ab43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72cba1e1211df5cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/access-attempts/recent (src/components/EquipeOnlineCard.tsx:106)"}, "properties": {"repobilityId": "1995aafb5472e16f", "scanner": "scanner-primary", "fingerprint": "72cba1e1211df5cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ab493a361135f5d", "level": "error", "message": {"text": "Dangling fetch: GET /api/trainings (src/components/TreinamentosCard.tsx:51)"}, "properties": {"repobilityId": "3bfd77e406993a56", "scanner": "scanner-primary", "fingerprint": "6ab493a361135f5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd021c56a73d1273", "level": "error", "message": {"text": "Dangling fetch: GET /api/trainings/leitura-stats (src/components/TreinamentosCard.tsx:123)"}, "properties": {"repobilityId": "7f883836d123c3cb", "scanner": "scanner-primary", "fingerprint": "dd021c56a73d1273", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-752dcf1cea3bee84", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/descontos?${p} (src/components/VendedoraDrilldown.tsx:162)"}, "properties": {"repobilityId": "805cd970d269cfb0", "scanner": "scanner-primary", "fingerprint": "752dcf1cea3bee84", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-498650a626507c0b", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/comparativo?${p} (src/components/VendedoraDrilldown.tsx:301)"}, "properties": {"repobilityId": "1d35b5eafd079fee", "scanner": "scanner-primary", "fingerprint": "498650a626507c0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-b4d739274d68db13", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/mix?${p} (src/components/VendedoraDrilldown.tsx:402)"}, "properties": {"repobilityId": "c6854f7a682fb058", "scanner": "scanner-primary", "fingerprint": "b4d739274d68db13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-9f86df3d7460a1c7", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/heatmap?${p} (src/components/VendedoraDrilldown.tsx:490)"}, "properties": {"repobilityId": "498f4fb78e70ba17", "scanner": "scanner-primary", "fingerprint": "9f86df3d7460a1c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-f963f62fe2e26297", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/${repId}/fidelizacao?${p} (src/components/VendedoraDrilldown.tsx:581)"}, "properties": {"repobilityId": "1a6c55539608b992", "scanner": "scanner-primary", "fingerprint": "f963f62fe2e26297", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-2db37d1f158be7cc", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/team/members/${m.id} (src/components/ResumoEquipeCard.tsx:59)"}, "properties": {"repobilityId": "6bac58d41490d797", "scanner": "scanner-primary", "fingerprint": "2db37d1f158be7cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4aeb072c55e5ff91", "level": "error", "message": {"text": "Dangling fetch: POST /api/team/members/${m.id}/resumo-test (src/components/ResumoEquipeCard.tsx:76)"}, "properties": {"repobilityId": "c3ca923a42999736", "scanner": "scanner-primary", "fingerprint": "4aeb072c55e5ff91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9fb8a5f0b69eecfb", "level": "error", "message": {"text": "Dangling fetch: POST /api/avisos (src/components/AvisarGestaoButton.tsx:39)"}, "properties": {"repobilityId": "9811d65c29349935", "scanner": "scanner-primary", "fingerprint": "9fb8a5f0b69eecfb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db469ed0d14a3053", "level": "error", "message": {"text": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/components/MobileBlocker.tsx:42)"}, "properties": {"repobilityId": "ab9c181e31a7778e", "scanner": "scanner-primary", "fingerprint": "db469ed0d14a3053", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-494a877745275996", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/spotify/status (src/pages/PlaylistsPage.tsx:55)"}, "properties": {"repobilityId": "c629b0231910bb1c", "scanner": "scanner-primary", "fingerprint": "494a877745275996", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8dbf93fd328951e4", "level": "error", "message": {"text": "Dangling fetch: GET /api/musico/spotify/auth-url (src/pages/PlaylistsPage.tsx:78)"}, "properties": {"repobilityId": "13483eefd5d116fe", "scanner": "scanner-primary", "fingerprint": "8dbf93fd328951e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0ff93c967bc40a6a", "level": "error", "message": {"text": "Dangling fetch: POST /api/musico/spotify/disconnect (src/pages/PlaylistsPage.tsx:95)"}, "properties": {"repobilityId": "3f9ccc8cb74eba99", "scanner": "scanner-primary", "fingerprint": "0ff93c967bc40a6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6615f8c0af3a5e93", "level": "error", "message": {"text": "Dangling fetch: POST /api/musico/import-spotify (src/pages/PlaylistsPage.tsx:298)"}, "properties": {"repobilityId": "b583710b7eb6f72c", "scanner": "scanner-primary", "fingerprint": "6615f8c0af3a5e93", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-741c1e1922668385", "level": "error", "message": {"text": "Dangling fetch: POST /api/musico/import-csv (src/pages/PlaylistsPage.tsx:347)"}, "properties": {"repobilityId": "7e145c0f9f87ae46", "scanner": "scanner-primary", "fingerprint": "741c1e1922668385", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66b0ce6766caed10", "level": "error", "message": {"text": "Dangling fetch: GET /api/activity-log?${qs} (src/pages/ActivityLogPage.tsx:70)"}, "properties": {"repobilityId": "5ded993df6c1c047", "scanner": "scanner-primary", "fingerprint": "66b0ce6766caed10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ba73906b7f03a0b", "level": "error", "message": {"text": "Dangling fetch: GET /api/activity-log/export.csv?${qs} (src/pages/ActivityLogPage.tsx:94)"}, "properties": {"repobilityId": "e7372634430a53d0", "scanner": "scanner-primary", "fingerprint": "8ba73906b7f03a0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6be04b1af93dac5d", "level": "error", "message": {"text": "Dangling fetch: GET /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:349)"}, "properties": {"repobilityId": "c8ec081f72655f42", "scanner": "scanner-primary", "fingerprint": "6be04b1af93dac5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d71cccffc6093e45", "level": "error", "message": {"text": "Dangling fetch: POST /api/integracoes/nello/config (src/pages/ConfiguracoesIntegracoesPage.tsx:369)"}, "properties": {"repobilityId": "601e5170ef9bff8e", "scanner": "scanner-primary", "fingerprint": "d71cccffc6093e45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-079463e52a3ad110", "level": "error", "message": {"text": "Dangling fetch: POST /api/integracoes/nello/testar (src/pages/ConfiguracoesIntegracoesPage.tsx:387)"}, "properties": {"repobilityId": "ee6a876eaaba435e", "scanner": "scanner-primary", "fingerprint": "079463e52a3ad110", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d345715d5884088", "level": "error", "message": {"text": "Dangling fetch: GET /api/sms-campaigns (src/pages/SmsCampanhasPage.tsx:53)"}, "properties": {"repobilityId": "a0e3f03ebd81e1bd", "scanner": "scanner-primary", "fingerprint": "1d345715d5884088", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0178ef217aa3346f", "level": "error", "message": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/cancelar (src/pages/SmsCampanhasPage.tsx:77)"}, "properties": {"repobilityId": "090c67e949dc69d4", "scanner": "scanner-primary", "fingerprint": "0178ef217aa3346f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37fdb041b1f265f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/pausar (src/pages/SmsCampanhasPage.tsx:87)"}, "properties": {"repobilityId": "4810ef93c20ecffb", "scanner": "scanner-primary", "fingerprint": "37fdb041b1f265f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bef7dab8b7ff2d92", "level": "error", "message": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/retomar (src/pages/SmsCampanhasPage.tsx:100)"}, "properties": {"repobilityId": "9b9e5fe09e2ebe6d", "scanner": "scanner-primary", "fingerprint": "bef7dab8b7ff2d92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ee3a3cdd525c996", "level": "error", "message": {"text": "Dangling fetch: POST /api/sms-campaigns/${id}/disparar-agora (src/pages/SmsCampanhasPage.tsx:113)"}, "properties": {"repobilityId": "9b12bcddf91d29d5", "scanner": "scanner-primary", "fingerprint": "9ee3a3cdd525c996", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ad5146d79ca4d28", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/sms-campaigns/${id} (src/pages/SmsCampanhasPage.tsx:123)"}, "properties": {"repobilityId": "b0da0e2cd2018d96", "scanner": "scanner-primary", "fingerprint": "8ad5146d79ca4d28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b750ce6a36fe31da", "level": "error", "message": {"text": "Dangling fetch: GET /api/sms-campaigns/${campanha.id}/sends (src/pages/SmsCampanhasPage.tsx:541)"}, "properties": {"repobilityId": "3db97d98c48597bb", "scanner": "scanner-primary", "fingerprint": "b750ce6a36fe31da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c71575a035a335bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/mural?${qs} (src/pages/MuralPage.tsx:72)"}, "properties": {"repobilityId": "d23d82598ff81d05", "scanner": "scanner-primary", "fingerprint": "c71575a035a335bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b8f429dd97ba07b", "level": "error", "message": {"text": "Dangling fetch: POST /api/mural (src/pages/MuralPage.tsx:84)"}, "properties": {"repobilityId": "f52f5c20b055aa21", "scanner": "scanner-primary", "fingerprint": "3b8f429dd97ba07b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9e077fbbe69a788", "level": "error", "message": {"text": "Dangling fetch: POST /api/mural/${id}/voluntariar (src/pages/MuralPage.tsx:102)"}, "properties": {"repobilityId": "8ddf6942a64b04c3", "scanner": "scanner-primary", "fingerprint": "a9e077fbbe69a788", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9672be3cdff31a0", "level": "error", "message": {"text": "Dangling fetch: POST /api/mural/${id}/resolver (src/pages/MuralPage.tsx:114)"}, "properties": {"repobilityId": "c9c5a170508f2d5e", "scanner": "scanner-primary", "fingerprint": "d9672be3cdff31a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10ff32087e1896ec", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/mural/${id} (src/pages/MuralPage.tsx:124)"}, "properties": {"repobilityId": "b05ece9ddaf747dc", "scanner": "scanner-primary", "fingerprint": "10ff32087e1896ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-85bc9cb03625b9dc", "level": "error", "message": {"text": "Dangling fetch: GET /api/conversao-envios?${p.toString()} (src/pages/ConversaoEnviosPage.tsx:58)"}, "properties": {"repobilityId": "bb6d81edb59cc570", "scanner": "scanner-primary", "fingerprint": "85bc9cb03625b9dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0b46895f997ed86", "level": "error", "message": {"text": "Dangling fetch: GET /api/conversao-envios/custos-mensais?meses=${meses} (src/pages/ConversaoEnviosPage.tsx:266)"}, "properties": {"repobilityId": "a1965fc08c8961a9", "scanner": "scanner-primary", "fingerprint": "c0b46895f997ed86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1bacb5aa0a0f097", "level": "error", "message": {"text": "Dangling fetch: GET /api/conversao-envios/detalhes?${p} (src/pages/ConversaoEnviosPage.tsx:548)"}, "properties": {"repobilityId": "2bd472c2b0be5790", "scanner": "scanner-primary", "fingerprint": "a1bacb5aa0a0f097", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b5579effaf1d71c", "level": "error", "message": {"text": "Dangling fetch: GET /api/estoque-lojas?${qs} (src/pages/EstoqueLojasPage.tsx:93)"}, "properties": {"repobilityId": "176a95b053e6d724", "scanner": "scanner-primary", "fingerprint": "1b5579effaf1d71c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9d5d2c83a5f3959", "level": "error", "message": {"text": "Dangling fetch: GET /api/estoque-lojas/fornecedores?apenas_novos=true&dias=90&limite=10 (src/pages/EstoqueLojasPage.tsx:109)"}, "properties": {"repobilityId": "a2cae6fe28a305ee", "scanner": "scanner-primary", "fingerprint": "b9d5d2c83a5f3959", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86492bc0a2dccc13", "level": "error", "message": {"text": "Dangling fetch: GET /api/estoque-lojas/fornecedores?limite=200 (src/pages/EstoqueLojasPage.tsx:121)"}, "properties": {"repobilityId": "0dcfd5e698486be7", "scanner": "scanner-primary", "fingerprint": "86492bc0a2dccc13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4486ad4d2ac29729", "level": "error", "message": {"text": "Dangling fetch: POST /api/estoque-lojas/${linha.varejo_id}/sync-foto (src/pages/EstoqueLojasPage.tsx:466)"}, "properties": {"repobilityId": "cf491304c7f839db", "scanner": "scanner-primary", "fingerprint": "4486ad4d2ac29729", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a322313c97e22034", "level": "error", "message": {"text": "Dangling fetch: PUT /api/estoque-lojas/${linha.varejo_id}/foto (src/pages/EstoqueLojasPage.tsx:481)"}, "properties": {"repobilityId": "ef0e593a5a6aaf3f", "scanner": "scanner-primary", "fingerprint": "a322313c97e22034", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-155dedf405cb7074", "level": "error", "message": {"text": "Dangling fetch: GET /api/estoque-lojas/${varejoId}/historico (src/pages/EstoqueLojasPage.tsx:617)"}, "properties": {"repobilityId": "bfc47b496133629d", "scanner": "scanner-primary", "fingerprint": "155dedf405cb7074", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4975cba9c4ee3be", "level": "error", "message": {"text": "Dangling fetch: GET /api/estoque-lojas/sync-fotos/status (src/pages/EstoqueLojasPage.tsx:723)"}, "properties": {"repobilityId": "5e730159195e4979", "scanner": "scanner-primary", "fingerprint": "f4975cba9c4ee3be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13d50573dd8cb67a", "level": "error", "message": {"text": "Dangling fetch: POST /api/estoque-lojas/sync-fotos/iniciar?escopo=em_estoque (src/pages/EstoqueLojasPage.tsx:757)"}, "properties": {"repobilityId": "9d5795ea138a7e64", "scanner": "scanner-primary", "fingerprint": "13d50573dd8cb67a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d9ef362f35bb9da", "level": "error", "message": {"text": "Dangling fetch: GET /api/sessions/store-conversations${params} (src/pages/StoreMonitorPage.tsx:98)"}, "properties": {"repobilityId": "be6f26439eb9f083", "scanner": "scanner-primary", "fingerprint": "6d9ef362f35bb9da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32da15019f24de6a", "level": "error", "message": {"text": "Dangling fetch: GET /api/sessions/status (src/pages/StoreMonitorPage.tsx:201)"}, "properties": {"repobilityId": "a79a0163d105a2fe", "scanner": "scanner-primary", "fingerprint": "32da15019f24de6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-193d8729009f5bc4", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${storeId}/connect (src/pages/StoreMonitorPage.tsx:226)"}, "properties": {"repobilityId": "6f19aa5f6316f17a", "scanner": "scanner-primary", "fingerprint": "193d8729009f5bc4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94d0b6200d5b9c07", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${storeId}/connect-qr (src/pages/StoreMonitorPage.tsx:243)"}, "properties": {"repobilityId": "e582b9e226f8611b", "scanner": "scanner-primary", "fingerprint": "94d0b6200d5b9c07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a3738b3d109ecf1", "level": "error", "message": {"text": "Dangling fetch: GET /api/sessions/${storeId}/qr (src/pages/StoreMonitorPage.tsx:256)"}, "properties": {"repobilityId": "7561f76bde657a16", "scanner": "scanner-primary", "fingerprint": "2a3738b3d109ecf1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9936d5746832dcd8", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${storeId}/reset (src/pages/StoreMonitorPage.tsx:280)"}, "properties": {"repobilityId": "a5255bdf5310fa69", "scanner": "scanner-primary", "fingerprint": "9936d5746832dcd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78e3caee920b57f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${storeId}/force-kill (src/pages/StoreMonitorPage.tsx:305)"}, "properties": {"repobilityId": "596bc883be460f2e", "scanner": "scanner-primary", "fingerprint": "78e3caee920b57f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf328ee16a45fd13", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${store}/mark-read (src/pages/StoreMonitorPage.tsx:592)"}, "properties": {"repobilityId": "900c633dee6d5ff3", "scanner": "scanner-primary", "fingerprint": "bf328ee16a45fd13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f099f61c19615a8", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${store}/messages/${encodeURIComponent(editing.messageId)}/edit (src/pages/StoreMonitorPage.tsx:602)"}, "properties": {"repobilityId": "8b63810274858556", "scanner": "scanner-primary", "fingerprint": "5f099f61c19615a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c82b656b88c178bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${store}/send-media (src/pages/StoreMonitorPage.tsx:624)"}, "properties": {"repobilityId": "be80b5440fc7eae9", "scanner": "scanner-primary", "fingerprint": "c82b656b88c178bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1a04b9b0de28ae7", "level": "error", "message": {"text": "Dangling fetch: POST /api/sessions/${store}/send-message (src/pages/StoreMonitorPage.tsx:651)"}, "properties": {"repobilityId": "79287175f4c13567", "scanner": "scanner-primary", "fingerprint": "b1a04b9b0de28ae7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ffb12838b9c4b7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/quotes/public/${token} (src/pages/OrcamentoPublicoPage.tsx:45)"}, "properties": {"repobilityId": "d8e4f649149f1909", "scanner": "scanner-primary", "fingerprint": "8ffb12838b9c4b7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dca254cf4bb7ca49", "level": "error", "message": {"text": "Dangling fetch: POST /api/quotes/public/${token}/accept (src/pages/OrcamentoPublicoPage.tsx:70)"}, "properties": {"repobilityId": "558def1f7e08ade9", "scanner": "scanner-primary", "fingerprint": "dca254cf4bb7ca49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41fc39858b598884", "level": "error", "message": {"text": "Dangling fetch: POST /api/quotes/public/${token}/reject (src/pages/OrcamentoPublicoPage.tsx:88)"}, "properties": {"repobilityId": "65e13a86a079efc6", "scanner": "scanner-primary", "fingerprint": "41fc39858b598884", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87dde25bcfe8fe29", "level": "error", "message": {"text": "Dangling fetch: GET /api/campanhas-resgate (src/pages/CampanhasResgatePage.tsx:65)"}, "properties": {"repobilityId": "8c98ea7c9fdc229e", "scanner": "scanner-primary", "fingerprint": "87dde25bcfe8fe29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7af13659222541af", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-resgate/delegar (src/pages/CampanhasResgatePage.tsx:80)"}, "properties": {"repobilityId": "55979a4d09c725fd", "scanner": "scanner-primary", "fingerprint": "7af13659222541af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a2773d6eba14f88", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-resgate/cancelar (src/pages/CampanhasResgatePage.tsx:99)"}, "properties": {"repobilityId": "f744a26ad13c2f3b", "scanner": "scanner-primary", "fingerprint": "3a2773d6eba14f88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-402bc341199bf558", "level": "error", "message": {"text": "Dangling fetch: POST /api/campanhas-resgate/editar-mensagem (src/pages/CampanhasResgatePage.tsx:115)"}, "properties": {"repobilityId": "e4fe80f6d2ca9fe9", "scanner": "scanner-primary", "fingerprint": "402bc341199bf558", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75ae7e009bd292c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendas-detalhe/${saidaId}/itens (src/pages/VendasDetalhePage.tsx:122)"}, "properties": {"repobilityId": "4956200ea06d4321", "scanner": "scanner-primary", "fingerprint": "75ae7e009bd292c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-048c421a4d6938e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendas-detalhe?${qs} (src/pages/VendasDetalhePage.tsx:233)"}, "properties": {"repobilityId": "1ec6c59644fd710b", "scanner": "scanner-primary", "fingerprint": "048c421a4d6938e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e64bb6f712c0f441", "level": "error", "message": {"text": "Dangling fetch: GET /api/team/stores (src/pages/FretePage.tsx:36)"}, "properties": {"repobilityId": "11be261e69102f2e", "scanner": "scanner-primary", "fingerprint": "e64bb6f712c0f441", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a19ff30dcd4b47c", "level": "error", "message": {"text": "Dangling fetch: GET /api/contracts/${contractId}/feedback (src/pages/ContratoDetalhePage.tsx:332)"}, "properties": {"repobilityId": "26a9d69ae1f05dc8", "scanner": "scanner-primary", "fingerprint": "4a19ff30dcd4b47c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1a5a0ddbd9c158f", "level": "error", "message": {"text": "Dangling fetch: GET /api/mobile-devices (src/pages/CelularesAutorizadosPage.tsx:71)"}, "properties": {"repobilityId": "3cd1b15318573eeb", "scanner": "scanner-primary", "fingerprint": "f1a5a0ddbd9c158f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ee9816285fdcee9", "level": "error", "message": {"text": "Dangling fetch: POST /api/mobile-devices/autorizar (src/pages/CelularesAutorizadosPage.tsx:82)"}, "properties": {"repobilityId": "714f14d8dd100c9f", "scanner": "scanner-primary", "fingerprint": "1ee9816285fdcee9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d96c5fad0ef4298", "level": "error", "message": {"text": "Dangling fetch: POST /api/mobile-devices/${id}/revogar (src/pages/CelularesAutorizadosPage.tsx:108)"}, "properties": {"repobilityId": "f97983fc5c89e38c", "scanner": "scanner-primary", "fingerprint": "4d96c5fad0ef4298", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7664db701baf3829", "level": "error", "message": {"text": "Dangling fetch: POST /api/contracts/public/${token}/feedback (src/pages/ContratoPublicoPage.tsx:52)"}, "properties": {"repobilityId": "3320f3ee1eae741b", "scanner": "scanner-primary", "fingerprint": "7664db701baf3829", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79b9523bc232b509", "level": "error", "message": {"text": "Dangling fetch: GET /api/contracts/public/${token} (src/pages/ContratoPublicoPage.tsx:192)"}, "properties": {"repobilityId": "2756bfc7c4fa3c69", "scanner": "scanner-primary", "fingerprint": "79b9523bc232b509", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d2ef9cb40b84e52", "level": "error", "message": {"text": "Dangling fetch: POST /api/contracts/public/${token}/accept (src/pages/ContratoPublicoPage.tsx:216)"}, "properties": {"repobilityId": "959c20bd9578d42f", "scanner": "scanner-primary", "fingerprint": "9d2ef9cb40b84e52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee0967c4eb4d0e2f", "level": "error", "message": {"text": "Dangling fetch: GET /api/fornecedores/${fornecedorId} (src/pages/FornecedoresPage.tsx:248)"}, "properties": {"repobilityId": "c2a845c062a0ee15", "scanner": "scanner-primary", "fingerprint": "ee0967c4eb4d0e2f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a82cd471eb9bd16d", "level": "error", "message": {"text": "Dangling fetch: GET /api/welcome?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:32)"}, "properties": {"repobilityId": "540e654dad298783", "scanner": "scanner-primary", "fingerprint": "a82cd471eb9bd16d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c54344a783ab7f7", "level": "error", "message": {"text": "Dangling fetch: PUT /api/welcome (src/pages/BoasVindasPage.tsx:47)"}, "properties": {"repobilityId": "fee41cf43d79af1b", "scanner": "scanner-primary", "fingerprint": "0c54344a783ab7f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1bb22dfdc198e82", "level": "error", "message": {"text": "Dangling fetch: POST /api/welcome/reset?role=${encodeURIComponent(role)} (src/pages/BoasVindasPage.tsx:67)"}, "properties": {"repobilityId": "1aadc87880c7fba7", "scanner": "scanner-primary", "fingerprint": "e1bb22dfdc198e82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f11850d737b63356", "level": "error", "message": {"text": "Dangling fetch: POST /api/team/${member.id}/set-password (src/pages/TeamPage.tsx:124)"}, "properties": {"repobilityId": "90107de669ec8ad0", "scanner": "scanner-primary", "fingerprint": "f11850d737b63356", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31edb59f66c96ac6", "level": "error", "message": {"text": "Dangling fetch: GET /api/mobile-devices/check/${token} (src/pages/AutorizarCelularPage.tsx:20)"}, "properties": {"repobilityId": "bc63a5ff3e6eca20", "scanner": "scanner-primary", "fingerprint": "31edb59f66c96ac6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8105794c2cde92cd", "level": "error", "message": {"text": "Dangling fetch: GET /api/maquininhas/analise?dias=${periodo} (src/pages/MaquininhasPage.tsx:90)"}, "properties": {"repobilityId": "054f157ee5bf8fa5", "scanner": "scanner-primary", "fingerprint": "8105794c2cde92cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52f613bdd9ca850b", "level": "error", "message": {"text": "Dangling fetch: GET /api/maquininhas/taxas (src/pages/MaquininhasPage.tsx:101)"}, "properties": {"repobilityId": "4c885295a887c2fb", "scanner": "scanner-primary", "fingerprint": "52f613bdd9ca850b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72c10645dd67c470", "level": "error", "message": {"text": "Dangling fetch: PUT /api/maquininhas/taxas/${id} (src/pages/MaquininhasPage.tsx:110)"}, "properties": {"repobilityId": "4b74de2ae4b60928", "scanner": "scanner-primary", "fingerprint": "72c10645dd67c470", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-47cd644895c60dd6", "level": "error", "message": {"text": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/MaquininhasPage.tsx:152)"}, "properties": {"repobilityId": "f2065ace261429e1", "scanner": "scanner-primary", "fingerprint": "47cd644895c60dd6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9752a37e0f2d6a56", "level": "error", "message": {"text": "Dangling fetch: GET /api/maquininhas/negociacoes-uso?dias=${periodo} (src/pages/MaquininhasPage.tsx:163)"}, "properties": {"repobilityId": "a5aa1993c225a215", "scanner": "scanner-primary", "fingerprint": "9752a37e0f2d6a56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7baa3d42dca6d8ed", "level": "error", "message": {"text": "Dangling fetch: PUT /api/varejo-negociacoes/${id_negociacao} (src/pages/MaquininhasPage.tsx:172)"}, "properties": {"repobilityId": "da89c129b880a7d8", "scanner": "scanner-primary", "fingerprint": "7baa3d42dca6d8ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e639a3613bfe969", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:62)"}, "properties": {"repobilityId": "1103d915348271be", "scanner": "scanner-primary", "fingerprint": "4e639a3613bfe969", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7b2270ce1baa69b", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:75)"}, "properties": {"repobilityId": "30c07740a9a40a9f", "scanner": "scanner-primary", "fingerprint": "f7b2270ce1baa69b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f0e6cadf1dc7ca0", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-campaigns/${id}/cancelar (src/pages/EmailCampanhasPage.tsx:86)"}, "properties": {"repobilityId": "44ef73c11031b087", "scanner": "scanner-primary", "fingerprint": "1f0e6cadf1dc7ca0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57e954e00c543079", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-campaigns/${id}/disparar-agora (src/pages/EmailCampanhasPage.tsx:97)"}, "properties": {"repobilityId": "b10bc84707487ab7", "scanner": "scanner-primary", "fingerprint": "57e954e00c543079", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ce3968cc3b30011", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/email-campaigns/${id} (src/pages/EmailCampanhasPage.tsx:108)"}, "properties": {"repobilityId": "eebd8792be31392a", "scanner": "scanner-primary", "fingerprint": "9ce3968cc3b30011", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa0763d8a958271a", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-campaigns (src/pages/EmailCampanhasPage.tsx:265)"}, "properties": {"repobilityId": "cbda76ee27d7b28a", "scanner": "scanner-primary", "fingerprint": "fa0763d8a958271a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2df41abb9a82ffd1", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-config (src/pages/EmailCampanhasPage.tsx:371)"}, "properties": {"repobilityId": "0fa85dcca62f11c7", "scanner": "scanner-primary", "fingerprint": "2df41abb9a82ffd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6032b38f8d8527c0", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-config (src/pages/EmailCampanhasPage.tsx:393)"}, "properties": {"repobilityId": "439e2e43fb2c869e", "scanner": "scanner-primary", "fingerprint": "6032b38f8d8527c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e6d30ce3dc5afa1b", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-config/test (src/pages/EmailCampanhasPage.tsx:416)"}, "properties": {"repobilityId": "c7144234b358a2f3", "scanner": "scanner-primary", "fingerprint": "e6d30ce3dc5afa1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3e805e52d498dab", "level": "error", "message": {"text": "Dangling fetch: GET /api/trainings?${qs} (src/pages/TreinamentosPage.tsx:77)"}, "properties": {"repobilityId": "0d0c1fa02557140f", "scanner": "scanner-primary", "fingerprint": "b3e805e52d498dab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc3339c087f1a38b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trainings/${id}/read (src/pages/TreinamentosPage.tsx:88)"}, "properties": {"repobilityId": "9ed17aca562bd3e6", "scanner": "scanner-primary", "fingerprint": "dc3339c087f1a38b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e24207a814146201", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trainings/${id} (src/pages/TreinamentosPage.tsx:98)"}, "properties": {"repobilityId": "e6d59ec2443f9e5a", "scanner": "scanner-primary", "fingerprint": "e24207a814146201", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6766eedf71897c35", "level": "error", "message": {"text": "Dangling fetch: POST /api/trainings/${training.id}/read (src/pages/TreinamentosPage.tsx:251)"}, "properties": {"repobilityId": "b25629bb9be4075e", "scanner": "scanner-primary", "fingerprint": "6766eedf71897c35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c34eec975d8551a", "level": "error", "message": {"text": "Dangling fetch: GET /api/trainings/${training.id}/leituras (src/pages/TreinamentosPage.tsx:270)"}, "properties": {"repobilityId": "0eb71086758bd67a", "scanner": "scanner-primary", "fingerprint": "8c34eec975d8551a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4df52ccce8d34bc", "level": "error", "message": {"text": "Dangling fetch: POST /api/trainings/upload-cover (src/pages/TreinamentosPage.tsx:402)"}, "properties": {"repobilityId": "884d5d99d982ee10", "scanner": "scanner-primary", "fingerprint": "e4df52ccce8d34bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10448f2f3b3fc833", "level": "error", "message": {"text": "Dangling fetch: POST /api/leads-import/salvar-como-lista (src/pages/LeadsImportPage.tsx:145)"}, "properties": {"repobilityId": "bc2851c0d19c7656", "scanner": "scanner-primary", "fingerprint": "10448f2f3b3fc833", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3f7560868666981f", "level": "error", "message": {"text": "Dangling fetch: POST /api/leads-import/comparar (src/pages/LeadsImportPage.tsx:185)"}, "properties": {"repobilityId": "afba1dbff1eb3d61", "scanner": "scanner-primary", "fingerprint": "3f7560868666981f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6955ff638e2e8c43", "level": "error", "message": {"text": "Dangling fetch: GET /api/cashback/config (src/pages/CashbackConfigPage.tsx:50)"}, "properties": {"repobilityId": "17199af488165e28", "scanner": "scanner-primary", "fingerprint": "6955ff638e2e8c43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-579df775c140445c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/cashback/config (src/pages/CashbackConfigPage.tsx:63)"}, "properties": {"repobilityId": "472c2e419c81627b", "scanner": "scanner-primary", "fingerprint": "579df775c140445c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1cf98e2708a98028", "level": "error", "message": {"text": "Dangling fetch: GET /api/vendedoras-analise/export.csv?${params} (src/pages/VendedorasAnalisePage.tsx:170)"}, "properties": {"repobilityId": "9f1e109b2aecba18", "scanner": "scanner-primary", "fingerprint": "1cf98e2708a98028", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c159e926c611cab", "level": "error", "message": {"text": "Dangling fetch: GET /api/auditoria-estoque?loja=${loja} (src/pages/AuditoriaEstoquePage.tsx:119)"}, "properties": {"repobilityId": "36ba2db28a6489a9", "scanner": "scanner-primary", "fingerprint": "0c159e926c611cab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec98c4648f2b5eac", "level": "error", "message": {"text": "Dangling fetch: GET /api/auditoria-estoque/analise-nfes (src/pages/AuditoriaEstoquePage.tsx:132)"}, "properties": {"repobilityId": "cbdecaf889c46b00", "scanner": "scanner-primary", "fingerprint": "ec98c4648f2b5eac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf8d3e0fc78d34e0", "level": "error", "message": {"text": "Dangling fetch: POST /api/auditoria-estoque/sync-entradas (src/pages/AuditoriaEstoquePage.tsx:143)"}, "properties": {"repobilityId": "837335d5ff8b71b5", "scanner": "scanner-primary", "fingerprint": "cf8d3e0fc78d34e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dce061b907bdbb81", "level": "error", "message": {"text": "Dangling fetch: GET /api/auditoria-estoque/timeline?vids=${vids} (src/pages/AuditoriaEstoquePage.tsx:619)"}, "properties": {"repobilityId": "07656123919a4fc2", "scanner": "scanner-primary", "fingerprint": "dce061b907bdbb81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0dfcc31f4ed93653", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/import-google-sheets/preview (src/pages/IntentsPage.tsx:1090)"}, "properties": {"repobilityId": "c74aa53cd17e358d", "scanner": "scanner-primary", "fingerprint": "0dfcc31f4ed93653", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a3ac04631e4df945", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/import-xlsx/preview (src/pages/IntentsPage.tsx:1122)"}, "properties": {"repobilityId": "f2cc5f1b78770172", "scanner": "scanner-primary", "fingerprint": "a3ac04631e4df945", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53f3c74efeefda1b", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/import-xlsx/commit (src/pages/IntentsPage.tsx:1171)"}, "properties": {"repobilityId": "2e07e2b170d4c255", "scanner": "scanner-primary", "fingerprint": "53f3c74efeefda1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-104a5c2cdf0641c2", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/import-google-sheets/commit (src/pages/IntentsPage.tsx:1177)"}, "properties": {"repobilityId": "ed5d4e72be8a2b96", "scanner": "scanner-primary", "fingerprint": "104a5c2cdf0641c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-514346aa6c930972", "level": "error", "message": {"text": "Dangling fetch: GET /api/precos-alterados?dias=${dias}&status=todos (src/pages/PrecosAlteradosPage.tsx:58)"}, "properties": {"repobilityId": "f6202ec8c0adc98d", "scanner": "scanner-primary", "fingerprint": "514346aa6c930972", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5de3c2efac3fc8d", "level": "error", "message": {"text": "Dangling fetch: POST /api/precos-alterados/${id}/ajustar (src/pages/PrecosAlteradosPage.tsx:74)"}, "properties": {"repobilityId": "a011d96a8f9b9a96", "scanner": "scanner-primary", "fingerprint": "a5de3c2efac3fc8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7e01ceb19b4a706", "level": "error", "message": {"text": "Dangling fetch: POST /api/precos-alterados/marcar-todos-ajustados (src/pages/PrecosAlteradosPage.tsx:91)"}, "properties": {"repobilityId": "f4e549c4dc5100ba", "scanner": "scanner-primary", "fingerprint": "d7e01ceb19b4a706", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-367dc2947250672b", "level": "error", "message": {"text": "Dangling fetch: POST /api/repairs/${repairId}/attach (src/pages/RepairsPage.tsx:16)"}, "properties": {"repobilityId": "2f124b00d88dba4b", "scanner": "scanner-primary", "fingerprint": "367dc2947250672b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-790db8821d439c4c", "level": "error", "message": {"text": "Dangling fetch: GET /api/cashback/resumo (src/pages/CashbackPage.tsx:48)"}, "properties": {"repobilityId": "0e106b901220c721", "scanner": "scanner-primary", "fingerprint": "790db8821d439c4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7111e50a70561ee", "level": "error", "message": {"text": "Dangling fetch: GET /api/cashback/clientes?min=0.01&limit=200&ordenar=${ordenar} (src/pages/CashbackPage.tsx:49)"}, "properties": {"repobilityId": "76649f3934c50e13", "scanner": "scanner-primary", "fingerprint": "d7111e50a70561ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27fa97e703f8ab86", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/resumo${qsStore} (src/pages/FinanceiroPage.tsx:70)"}, "properties": {"repobilityId": "f2f16ca7ade88c35", "scanner": "scanner-primary", "fingerprint": "27fa97e703f8ab86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f06ba1588b2032e", "level": "error", "message": {"text": "Dangling fetch: GET /api/financeiro/dre?${params} (src/pages/FinanceiroPage.tsx:80)"}, "properties": {"repobilityId": "f8bbe0c78e77689e", "scanner": "scanner-primary", "fingerprint": "1f06ba1588b2032e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f55da7f8d02f91d8", "level": "error", "message": {"text": "Dangling fetch: POST /api/financeiro/upload${qs} (src/pages/FinanceiroPage.tsx:92)"}, "properties": {"repobilityId": "428fe24a399ae14b", "scanner": "scanner-primary", "fingerprint": "f55da7f8d02f91d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c81d910bacff7e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/financeiro/sync-google (src/pages/FinanceiroPage.tsx:113)"}, "properties": {"repobilityId": "d442c73bad328b59", "scanner": "scanner-primary", "fingerprint": "3c81d910bacff7e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43564449822a6b22", "level": "error", "message": {"text": "Dangling fetch: GET /api/integracoes/nello/analises (src/pages/PerfilRendimentoPage.tsx:84)"}, "properties": {"repobilityId": "bcbf18cc5e6d6bfe", "scanner": "scanner-primary", "fingerprint": "43564449822a6b22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-824df058e7c6cadf", "level": "error", "message": {"text": "Dangling fetch: GET /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:98)"}, "properties": {"repobilityId": "fc2856df7ed2f6a5", "scanner": "scanner-primary", "fingerprint": "824df058e7c6cadf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8def984b97354f60", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/integracoes/nello/analises/${id} (src/pages/PerfilRendimentoPage.tsx:112)"}, "properties": {"repobilityId": "560a4da8948e9cac", "scanner": "scanner-primary", "fingerprint": "8def984b97354f60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5f38aa9c5f9e090", "level": "error", "message": {"text": "Dangling fetch: POST /api/integracoes/nello/analise-ia (src/pages/PerfilRendimentoPage.tsx:133)"}, "properties": {"repobilityId": "388cf89fab5e6498", "scanner": "scanner-primary", "fingerprint": "c5f38aa9c5f9e090", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09c377e9e054b3e5", "level": "error", "message": {"text": "Dangling fetch: GET /api/integracoes/nello/equipe-perfil (src/pages/PerfilRendimentoPage.tsx:164)"}, "properties": {"repobilityId": "2bdfe747c07c75bc", "scanner": "scanner-primary", "fingerprint": "09c377e9e054b3e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6699e856cdcbab57", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:55)"}, "properties": {"repobilityId": "d0356317d342b319", "scanner": "scanner-primary", "fingerprint": "6699e856cdcbab57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b051337113fc59eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/team/me/resumo-test (src/pages/PerfilPage.tsx:76)"}, "properties": {"repobilityId": "4ee1f1bd7828cee3", "scanner": "scanner-primary", "fingerprint": "b051337113fc59eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbfa288783aef04c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/team/me (src/pages/PerfilPage.tsx:93)"}, "properties": {"repobilityId": "d25a39ec6c82eb62", "scanner": "scanner-primary", "fingerprint": "fbfa288783aef04c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a4aecd9b9783965", "level": "error", "message": {"text": "Dangling fetch: POST /api/intents/${intentId}/notified (src/pages/WorkQueuePage.tsx:148)"}, "properties": {"repobilityId": "2c9cffebddf558dc", "scanner": "scanner-primary", "fingerprint": "1a4aecd9b9783965", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-520e42691a4cbdd7", "level": "error", "message": {"text": "Dangling fetch: POST /api/team/assignments (src/pages/WorkQueuePage.tsx:781)"}, "properties": {"repobilityId": "cbc73b7bb5254b3b", "scanner": "scanner-primary", "fingerprint": "520e42691a4cbdd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-50a148df5c1144f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/reports/fluxo-horarios?${params.toString()} (src/pages/ReportsPage.tsx:53)"}, "properties": {"repobilityId": "3af3d2b982e25188", "scanner": "scanner-primary", "fingerprint": "50a148df5c1144f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-183003386140f34e", "level": "error", "message": {"text": "Dangling fetch: GET /api/maquininhas/transacoes?${qs.toString()} (src/pages/ReportsPage.tsx:1199)"}, "properties": {"repobilityId": "13f6631c63a27ed0", "scanner": "scanner-primary", "fingerprint": "183003386140f34e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-789bc45d6328f261", "level": "error", "message": {"text": "Dangling fetch: POST /api/analise/comparativo-custom (src/pages/ComparativoYoYPage.tsx:45)"}, "properties": {"repobilityId": "f0f6f78688b22f74", "scanner": "scanner-primary", "fingerprint": "789bc45d6328f261", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de09509613724289", "level": "error", "message": {"text": "Dangling fetch: GET /api/metas-mensais/${loja.id}/${anoMes.ano}/${anoMes.mes} (src/pages/Dashboard.tsx:646)"}, "properties": {"repobilityId": "e579b94e709214ce", "scanner": "scanner-primary", "fingerprint": "de09509613724289", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c3f9321eb74c070", "level": "error", "message": {"text": "Dangling fetch: GET /api/integracoes/central-franqueado/pedidos (src/pages/CentralFranqueadoPage.tsx:49)"}, "properties": {"repobilityId": "0711a5a7a8de3f3f", "scanner": "scanner-primary", "fingerprint": "3c3f9321eb74c070", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b6fd92b12b56ff5", "level": "error", "message": {"text": "Dangling fetch: POST /api/integracoes/central-franqueado/sync (src/pages/CentralFranqueadoPage.tsx:66)"}, "properties": {"repobilityId": "d607973b56aa6bde", "scanner": "scanner-primary", "fingerprint": "1b6fd92b12b56ff5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-294f96d0b70812a5", "level": "error", "message": {"text": "Dangling fetch: POST /api/clientes-por-produto/criar-resgate (src/pages/ClientesPorProdutoPage.tsx:161)"}, "properties": {"repobilityId": "eefd3cfe30c9c0ab", "scanner": "scanner-primary", "fingerprint": "294f96d0b70812a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20ed36ab1eade278", "level": "error", "message": {"text": "Dangling fetch: GET /api/clientes-por-produto?${params} (src/pages/ClientesPorProdutoPage.tsx:213)"}, "properties": {"repobilityId": "27d982b0d9aacd51", "scanner": "scanner-primary", "fingerprint": "20ed36ab1eade278", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5a0d258aa6ec9bcf", "level": "error", "message": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/index.ts:432)"}, "properties": {"repobilityId": "991d5030ec8aed22", "scanner": "scanner-primary", "fingerprint": "5a0d258aa6ec9bcf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1121642536c8c4d0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.spotify.com/v1/me (server/src/index.ts:445)"}, "properties": {"repobilityId": "c8e09826a7d96937", "scanner": "scanner-primary", "fingerprint": "1121642536c8c4d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c10114071ec9fd54", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneId}?fields=verified_name,display_phone_number (server/src/index.ts:1259)"}, "properties": {"repobilityId": "eea679a8d371bb4a", "scanner": "scanner-primary", "fingerprint": "c10114071ec9fd54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6807c5400b77a966", "level": "error", "message": {"text": "Dangling fetch: GET https://www.varejofacil.com/api/v1/produto/produtos?count=1 (server/src/index.ts:1273)"}, "properties": {"repobilityId": "491985b50cc0b2b0", "scanner": "scanner-primary", "fingerprint": "6807c5400b77a966", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-457bcd58d946ed1b", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${accountId}?fields=name,currency (server/src/index.ts:1287)"}, "properties": {"repobilityId": "f611353a700055b6", "scanner": "scanner-primary", "fingerprint": "457bcd58d946ed1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a65a544492ccb91", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${businessId}?fields=username (server/src/index.ts:1302)"}, "properties": {"repobilityId": "42619a30301af209", "scanner": "scanner-primary", "fingerprint": "7a65a544492ccb91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c45cbfa37b55a83a", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v22.0/${phoneNumberId}/register (server/src/index.ts:2172)"}, "properties": {"repobilityId": "1667a0aea4a44706", "scanner": "scanner-primary", "fingerprint": "c45cbfa37b55a83a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d14d307fc1a3c4b", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2286)"}, "properties": {"repobilityId": "3b813b45c710c5b3", "scanner": "scanner-primary", "fingerprint": "9d14d307fc1a3c4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f68354de6e31d42d", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v22.0/${phoneNumberId}?fields=display_phone_number,verified_name,quality_rating,throughput,status,messaging_limit_tier (server/src/index.ts:2299)"}, "properties": {"repobilityId": "8bc045ef817e9733", "scanner": "scanner-primary", "fingerprint": "f68354de6e31d42d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7cfd4c4f8d159c51", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v22.0/${wabaId}/subscribed_apps (server/src/index.ts:2352)"}, "properties": {"repobilityId": "563d5ced6930fae0", "scanner": "scanner-primary", "fingerprint": "7cfd4c4f8d159c51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-206c9e8506b16834", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/media (server/src/index.ts:4786)"}, "properties": {"repobilityId": "e934a7052788c69e", "scanner": "scanner-primary", "fingerprint": "206c9e8506b16834", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3546220943af10d", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4812)"}, "properties": {"repobilityId": "640dc128738c01aa", "scanner": "scanner-primary", "fingerprint": "b3546220943af10d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3207f10f068959ad", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (server/src/index.ts:4927)"}, "properties": {"repobilityId": "27031fb517bbed1d", "scanner": "scanner-primary", "fingerprint": "3207f10f068959ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-44b2ade9f783ff96", "level": "error", "message": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/negociacoes-cartao?token=${token}&quantidade=500 (server/src/index.ts:7037)"}, "properties": {"repobilityId": "73b1053cd3dd6397", "scanner": "scanner-primary", "fingerprint": "44b2ade9f783ff96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46d9cd72842fe6d4", "level": "error", "message": {"text": "Dangling fetch: POST https://sms.comtele.com.br/api/v2/send (server/src/sms/provider.ts:109)"}, "properties": {"repobilityId": "8979eef7d6552b8e", "scanner": "scanner-primary", "fingerprint": "46d9cd72842fe6d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e2ccb558f9d4fec", "level": "error", "message": {"text": "Dangling fetch: POST https://api.zenvia.com/v2/channels/sms/messages (server/src/sms/provider.ts:231)"}, "properties": {"repobilityId": "4f1e3aeb1e9f8386", "scanner": "scanner-primary", "fingerprint": "4e2ccb558f9d4fec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80834a84e67b017e", "level": "error", "message": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/src/ai/anthropic-client.ts:68)"}, "properties": {"repobilityId": "972abf1e68996ce1", "scanner": "scanner-primary", "fingerprint": "80834a84e67b017e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-704c97e9a2e6f42d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (server/src/routes/metas-mensais.ts:295)"}, "properties": {"repobilityId": "9a803fab26f26287", "scanner": "scanner-primary", "fingerprint": "704c97e9a2e6f42d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8bc1420be11a4f90", "level": "error", "message": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:229)"}, "properties": {"repobilityId": "a4610d228cff05b9", "scanner": "scanner-primary", "fingerprint": "8bc1420be11a4f90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2767cd79664b3a4", "level": "error", "message": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (server/src/routes/sinapse-musico.ts:259)"}, "properties": {"repobilityId": "0042bc384148527c", "scanner": "scanner-primary", "fingerprint": "c2767cd79664b3a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19d5bb4e0f07c48d", "level": "error", "message": {"text": "Dangling fetch: GET https://open.spotify.com/embed/playlist/${pid} (server/src/routes/sinapse-musico.ts:346)"}, "properties": {"repobilityId": "9b0fad199957cef1", "scanner": "scanner-primary", "fingerprint": "19d5bb4e0f07c48d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0cccb7e2045ead3b", "level": "error", "message": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(vid)}?token=${token} (server/src/routes/estoque-lojas.ts:636)"}, "properties": {"repobilityId": "c6cb9019cda0a44f", "scanner": "scanner-primary", "fingerprint": "0cccb7e2045ead3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9747c8a377e773ed", "level": "error", "message": {"text": "Dangling fetch: GET https://integrador.varejonline.com.br/apps/api/produtos/${encodeURIComponent(varejoId)}?token=${token} (server/src/routes/estoque-lojas.ts:741)"}, "properties": {"repobilityId": "2c138119103589f4", "scanner": "scanner-primary", "fingerprint": "9747c8a377e773ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b960c3f86a9d3357", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${process.env.PORT ?? 3002}/api/campanhas-cloud/templates (server/src/routes/campanhas-v2.ts:137)"}, "properties": {"repobilityId": "3578e928fd980012", "scanner": "scanner-primary", "fingerprint": "b960c3f86a9d3357", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b189c3b570f366dc", "level": "error", "message": {"text": "Dangling fetch: POST https://ai.gateway.lovable.dev/v1/chat/completions (supabase/functions/ai-campaign/index.ts:46)"}, "properties": {"repobilityId": "5afc900698bb95b9", "scanner": "scanner-primary", "fingerprint": "b189c3b570f366dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e89a8887b328cc7", "level": "note", "message": {"text": "Unused endpoint: USE /supabase-api"}, "properties": {"repobilityId": "48f43ae37cd461f5", "scanner": "scanner-primary", "fingerprint": "2e89a8887b328cc7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8636dd48e48d1da9", "level": "note", "message": {"text": "Unused endpoint: USE /api/sessions"}, "properties": {"repobilityId": "28366932f5344fbb", "scanner": "scanner-primary", "fingerprint": "8636dd48e48d1da9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "afd6065ad08b1536", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7472eefab50d274", "level": "note", "message": {"text": "Unused endpoint: USE /api/team"}, "properties": {"repobilityId": "331f1bfe040b5087", "scanner": "scanner-primary", "fingerprint": "c7472eefab50d274", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5a94b3756c9fc60", "level": "note", "message": {"text": "Unused endpoint: USE /api/financeiro"}, "properties": {"repobilityId": "ef1222af12c02503", "scanner": "scanner-primary", "fingerprint": "a5a94b3756c9fc60", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e70e63a6cb974f4", "level": "note", "message": {"text": "Unused endpoint: USE /api/produtos-analises"}, "properties": {"repobilityId": "e6d4599dff947ec9", "scanner": "scanner-primary", "fingerprint": "9e70e63a6cb974f4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c22186b9b9e31602", "level": "note", "message": {"text": "Unused endpoint: USE /api/ia-painel"}, "properties": {"repobilityId": "fc9de669f342edf4", "scanner": "scanner-primary", "fingerprint": "c22186b9b9e31602", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-40568327602d5d2c", "level": "note", "message": {"text": "Unused endpoint: USE /api/nfs-boletos"}, "properties": {"repobilityId": "41e349fa1d64ce53", "scanner": "scanner-primary", "fingerprint": "40568327602d5d2c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-29a67114af52dd97", "level": "note", "message": {"text": "Unused endpoint: USE /api/ia-contexto-empresa"}, "properties": {"repobilityId": "ed092fb96015fb29", "scanner": "scanner-primary", "fingerprint": "29a67114af52dd97", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3a8b7932f72b92f", "level": "note", "message": {"text": "Unused endpoint: USE /api/notifications"}, "properties": {"repobilityId": "69615f28a3b78f73", "scanner": "scanner-primary", "fingerprint": "c3a8b7932f72b92f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4f1bf2ea29fcc3c0", "level": "note", "message": {"text": "Unused endpoint: USE /api/campanhas-v2"}, "properties": {"repobilityId": "6e133f7167d0e5fb", "scanner": "scanner-primary", "fingerprint": "4f1bf2ea29fcc3c0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-521d383a57bde1f8", "level": "note", "message": {"text": "Unused endpoint: USE /api/integracoes/nello"}, "properties": {"repobilityId": "607f43680493488d", "scanner": "scanner-primary", "fingerprint": "521d383a57bde1f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5a6e90e895319165", "level": "note", "message": {"text": "Unused endpoint: USE /api/integracoes/central-franqueado"}, "properties": {"repobilityId": "5a0d28f411c3c4c1", "scanner": "scanner-primary", "fingerprint": "5a6e90e895319165", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-88941e74faaf3624", "level": "note", "message": {"text": "Unused endpoint: USE /api/leads-comercial"}, "properties": {"repobilityId": "a2bdaf5f2342e18e", "scanner": "scanner-primary", "fingerprint": "88941e74faaf3624", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8b8a9a8826292041", "level": "note", "message": {"text": "Unused endpoint: POST /api/anomalias/verificar"}, "properties": {"repobilityId": "4e28843a7c298012", "scanner": "scanner-primary", "fingerprint": "8b8a9a8826292041", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8dca8fdc1e10991", "level": "note", "message": {"text": "Unused endpoint: POST /api/relatorios/disparar-mes"}, "properties": {"repobilityId": "c08d8279f40de639", "scanner": "scanner-primary", "fingerprint": "f8dca8fdc1e10991", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af0c0daafdd89b33", "level": "note", "message": {"text": "Unused endpoint: USE /api/avisos"}, "properties": {"repobilityId": "3b40fd23d63fa690", "scanner": "scanner-primary", "fingerprint": "af0c0daafdd89b33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b49fc4f9a8d52a1", "level": "note", "message": {"text": "Unused endpoint: USE /api/welcome"}, "properties": {"repobilityId": "b2453893e6f80dca", "scanner": "scanner-primary", "fingerprint": "5b49fc4f9a8d52a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d32558b1a2ab00b3", "level": "note", "message": {"text": "Unused endpoint: USE /api/estoque-lojas"}, "properties": {"repobilityId": "da43238db257b40a", "scanner": "scanner-primary", "fingerprint": "d32558b1a2ab00b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4975ed587852888f", "level": "note", "message": {"text": "Unused endpoint: USE /api/vendas-detalhe"}, "properties": {"repobilityId": "8b08f9932bd5d6dd", "scanner": "scanner-primary", "fingerprint": "4975ed587852888f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b1308d9881944e31", "level": "note", "message": {"text": "Unused endpoint: USE /api/varejo-negociacoes"}, "properties": {"repobilityId": "d35ba6a7998c2798", "scanner": "scanner-primary", "fingerprint": "b1308d9881944e31", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-65b8d1e3967bb355", "level": "note", "message": {"text": "Unused endpoint: USE /api/trainings"}, "properties": {"repobilityId": "681c9431637050e7", "scanner": "scanner-primary", "fingerprint": "65b8d1e3967bb355", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-538bbf0ab06b039c", "level": "note", "message": {"text": "Unused endpoint: USE /api/push"}, "properties": {"repobilityId": "6d0b61b690104cae", "scanner": "scanner-primary", "fingerprint": "538bbf0ab06b039c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f63986b663b62893", "level": "note", "message": {"text": "Unused endpoint: USE /api/mural"}, "properties": {"repobilityId": "2de81f24f2ff05cd", "scanner": "scanner-primary", "fingerprint": "f63986b663b62893", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-787b3ab65171ae33", "level": "note", "message": {"text": "Unused endpoint: USE /api/auditoria-estoque"}, "properties": {"repobilityId": "e3662448d4abe320", "scanner": "scanner-primary", "fingerprint": "787b3ab65171ae33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-08cd3819597bfa1d", "level": "note", "message": {"text": "Unused endpoint: USE /api/activity-log"}, "properties": {"repobilityId": "baa92e0e07e8b8e3", "scanner": "scanner-primary", "fingerprint": "08cd3819597bfa1d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a86e7cffac7d7f43", "level": "note", "message": {"text": "Unused endpoint: USE /api/mobile-devices"}, "properties": {"repobilityId": "403c7039ac8a8db7", "scanner": "scanner-primary", "fingerprint": "a86e7cffac7d7f43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26890ce1452230a6", "level": "note", "message": {"text": "Unused endpoint: USE /api/vendedoras-analise"}, "properties": {"repobilityId": "5c683707e18601f2", "scanner": "scanner-primary", "fingerprint": "26890ce1452230a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d115c6f666e8a685", "level": "note", "message": {"text": "Unused endpoint: USE /api/fornecedores"}, "properties": {"repobilityId": "11bebdc8d718cafe", "scanner": "scanner-primary", "fingerprint": "d115c6f666e8a685", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4b9984ed3dcd058", "level": "note", "message": {"text": "Unused endpoint: USE /api/leads-import"}, "properties": {"repobilityId": "f6a1958df41bbbb9", "scanner": "scanner-primary", "fingerprint": "c4b9984ed3dcd058", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec4ba975c979878d", "level": "note", "message": {"text": "Unused endpoint: USE /api/email-config"}, "properties": {"repobilityId": "cf06a0b06f5428fe", "scanner": "scanner-primary", "fingerprint": "ec4ba975c979878d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ffae45ee1e8382aa", "level": "note", "message": {"text": "Unused endpoint: USE /api/email-campaigns"}, "properties": {"repobilityId": "30e97e3b29835aa2", "scanner": "scanner-primary", "fingerprint": "ffae45ee1e8382aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c34ee468b0065523", "level": "note", "message": {"text": "Unused endpoint: USE /api/sms-campaigns"}, "properties": {"repobilityId": "563a6beb2b8d88b3", "scanner": "scanner-primary", "fingerprint": "c34ee468b0065523", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b92dc87a4256298", "level": "note", "message": {"text": "Unused endpoint: USE /api/chat"}, "properties": {"repobilityId": "b9523250eea29c8f", "scanner": "scanner-primary", "fingerprint": "2b92dc87a4256298", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a67e6dcc4d1f338", "level": "note", "message": {"text": "Unused endpoint: USE /api/insumos"}, "properties": {"repobilityId": "96c6b76a384c75af", "scanner": "scanner-primary", "fingerprint": "9a67e6dcc4d1f338", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca53df65d09a8421", "level": "note", "message": {"text": "Unused endpoint: USE /api/analise"}, "properties": {"repobilityId": "0d9b421c26176565", "scanner": "scanner-primary", "fingerprint": "ca53df65d09a8421", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-481f2c140846df15", "level": "note", "message": {"text": "Unused endpoint: USE /api/clientes-por-produto"}, "properties": {"repobilityId": "ce5868964ce329ca", "scanner": "scanner-primary", "fingerprint": "481f2c140846df15", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1b3b031004ea6df", "level": "note", "message": {"text": "Unused endpoint: USE /api/campanhas-resgate"}, "properties": {"repobilityId": "42668b4fe122fe1e", "scanner": "scanner-primary", "fingerprint": "e1b3b031004ea6df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-943932994aecc751", "level": "note", "message": {"text": "Unused endpoint: USE /api/musico"}, "properties": {"repobilityId": "8d20ba0f318a16e5", "scanner": "scanner-primary", "fingerprint": "943932994aecc751", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fe052376cef4c08d", "level": "note", "message": {"text": "Unused endpoint: GET /spotify/callback"}, "properties": {"repobilityId": "73abab487af9d46a", "scanner": "scanner-primary", "fingerprint": "fe052376cef4c08d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b2775b25fe7e83b", "level": "note", "message": {"text": "Unused endpoint: USE /api/agenda"}, "properties": {"repobilityId": "ad62afefc07c638f", "scanner": "scanner-primary", "fingerprint": "6b2775b25fe7e83b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f1af875ae07230b", "level": "note", "message": {"text": "Unused endpoint: USE /api/quotes"}, "properties": {"repobilityId": "5eaba0d5a7effde3", "scanner": "scanner-primary", "fingerprint": "1f1af875ae07230b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8db4f4c5420e1e33", "level": "note", "message": {"text": "Unused endpoint: USE /api/contracts"}, "properties": {"repobilityId": "d707ddfed6b660b9", "scanner": "scanner-primary", "fingerprint": "8db4f4c5420e1e33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9f8e0e29ff8b61f1", "level": "note", "message": {"text": "Unused endpoint: USE /api/precos-alterados"}, "properties": {"repobilityId": "a80e2b309f1dbba7", "scanner": "scanner-primary", "fingerprint": "9f8e0e29ff8b61f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec0488b38c7bbee2", "level": "note", "message": {"text": "Unused endpoint: USE /api/cashback"}, "properties": {"repobilityId": "cf4ee7325c4f7b6b", "scanner": "scanner-primary", "fingerprint": "ec0488b38c7bbee2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5d8bdcdf75007b5b", "level": "note", "message": {"text": "Unused endpoint: USE /api/maquininhas"}, "properties": {"repobilityId": "c136dc4e1dadab41", "scanner": "scanner-primary", "fingerprint": "5d8bdcdf75007b5b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-adf2bc596d9ef568", "level": "note", "message": {"text": "Unused endpoint: USE /api/meta-ads"}, "properties": {"repobilityId": "f97f14d29457d429", "scanner": "scanner-primary", "fingerprint": "adf2bc596d9ef568", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c18fb988f709128", "level": "note", "message": {"text": "Unused endpoint: USE /api/metas-mensais"}, "properties": {"repobilityId": "ef63165924a0ac4b", "scanner": "scanner-primary", "fingerprint": "8c18fb988f709128", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e91910ba293e372", "level": "note", "message": {"text": "Unused endpoint: USE /api/termos-premiacao"}, "properties": {"repobilityId": "33c61d212d678469", "scanner": "scanner-primary", "fingerprint": "9e91910ba293e372", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-24259eec99c56be9", "level": "note", "message": {"text": "Unused endpoint: USE /api/campanhas-cloud"}, "properties": {"repobilityId": "f95e863735aecfbd", "scanner": "scanner-primary", "fingerprint": "24259eec99c56be9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}