{"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-a5c3094b2bd339f5", "name": "Possibly dead Python function: reconcile_line", "shortDescription": {"text": "Possibly dead Python function: reconcile_line"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ab5bd976d8a30fc", "name": "Possibly dead Python function: action_mark_reviewed", "shortDescription": {"text": "Possibly dead Python function: action_mark_reviewed"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5647074a4edc07ee", "name": "Possibly dead Python function: action_mark_blocked", "shortDescription": {"text": "Possibly dead Python function: action_mark_blocked"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e5c27937787430c", "name": "Possibly dead Python function: action_mark_pending", "shortDescription": {"text": "Possibly dead Python function: action_mark_pending"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bb2df69ff67c5bd", "name": "Possibly dead Python function: action_create_purchase_order", "shortDescription": {"text": "Possibly dead Python function: action_create_purchase_order"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6f3a56dd470f9df", "name": "Possibly dead Python function: action_classify_document", "shortDescription": {"text": "Possibly dead Python function: action_classify_document"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f51c827da4a0589", "name": "Stray `console.log` in TS/JS \u2014 check-laura-interactions.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-laura-interactions.ts:14"}, "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-f72f67d7e9eb856d", "name": "Stray `console.log` in TS/JS \u2014 test-api-laura.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-api-laura.ts:11"}, "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-2f0adc9c8434e6c6", "name": "Stray `console.log` in TS/JS \u2014 test-api-now.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-api-now.ts:10"}, "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-60a375765609a24c", "name": "Stray `console.log` in TS/JS \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:155"}, "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-f9b41081c821ca76", "name": "Stray `console.log` in TS/JS \u2014 test-fausto.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-fausto.ts:8"}, "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-d510dbe7d0351809", "name": "Stray `console.log` in TS/JS \u2014 check-connection.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-connection.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-bf35b877760b6cc0", "name": "Stray `console.log` in TS/JS \u2014 count-laura-interactions.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 count-laura-interactions.ts:13"}, "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-b8a083c1719ca863", "name": "Stray `console.log` in TS/JS \u2014 middleware.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 middleware.ts:74"}, "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-37a4e7205c5d820b", "name": "Stray `console.log` in TS/JS \u2014 pdf-reader-local/server.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pdf-reader-local/server.js: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-6c046c25238084c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-chatter-styles.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-chatter-styles.ts:141"}, "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-ad56a4dcc2536b1f", "name": "Stray `console.log` in TS/JS \u2014 prisma/seeds/generate-wine-images.ts:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seeds/generate-wine-images.ts:191"}, "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-ddd17ee00082f905", "name": "Stray `console.log` in TS/JS \u2014 prisma/seeds/seed-lapa-wine.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seeds/seed-lapa-wine.ts:46"}, "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-7c0a9e429480603f", "name": "`truncate` class without `title=` for hover reveal \u2014 components/blog/BatchBlogImageModal.tsx:359", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/blog/BatchBlogImageModal.tsx:359"}, "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-5f1ab2b7a8302cfa", "name": "Stray `console.log` in TS/JS \u2014 components/blog/BatchBlogImageModal.tsx:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/blog/BatchBlogImageModal.tsx:224"}, "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-7a4348d94d9acced", "name": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/WebsiteAnalyticsSection.tsx:358", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/WebsiteAnalyticsSection.tsx:358"}, "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-c1108cde67ac5bad", "name": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/SalesRadarActivityModal.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/SalesRadarActivityModal.tsx:301"}, "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-e338f993eb422bad", "name": "Stray `console.log` in TS/JS \u2014 components/auth/LoginForm.tsx:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/auth/LoginForm.tsx: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-173d015304c48796", "name": "Stray `console.log` in TS/JS \u2014 components/ui/InstallButton.tsx:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/ui/InstallButton.tsx: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-613d6610e2a54954", "name": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/BufferTransfer.tsx:351", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/BufferTransfer.tsx:351"}, "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-3c74ac6239fd082a", "name": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/ProductSearch.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/ProductSearch.tsx:218"}, "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-b1e8520fde519b5d", "name": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/Calculator.tsx:148", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/Calculator.tsx:148"}, "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-6a95c0aea81a5046", "name": "TODO/FIXME marker in shipping code \u2014 components/inventario/InventoryAIModal.tsx:734", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 components/inventario/InventoryAIModal.tsx:734"}, "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-1063d826c309392a", "name": "Stray `console.log` in TS/JS \u2014 components/inventario/InventoryAIModal.tsx:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/InventoryAIModal.tsx:219"}, "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-25b3aa5e2e7fabbb", "name": "Stray `console.log` in TS/JS \u2014 components/inventario/QRScanner.tsx:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/QRScanner.tsx:63"}, "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-f744c16e7184b1ef", "name": "Stray `console.log` in TS/JS \u2014 components/inventario/ProductEditModal.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/ProductEditModal.tsx:47"}, "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-cef2f171df6d3d10", "name": "Stray `console.log` in TS/JS \u2014 components/inventario/WasteTransferModal.tsx:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/WasteTransferModal.tsx:177"}, "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-e1091866d99b0f67", "name": "`truncate` class without `title=` for hover reveal \u2014 components/test-ocr/PDFUploader.tsx:117", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/test-ocr/PDFUploader.tsx:117"}, "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-3960a09cd4994a80", "name": "Stray `console.log` in TS/JS \u2014 components/pwa/ServiceWorkerRegistration.tsx:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/pwa/ServiceWorkerRegistration.tsx:12"}, "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-4d9fec38836b6a08", "name": "Stray `console.log` in TS/JS \u2014 components/pwa/PWAInstaller.tsx:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/pwa/PWAInstaller.tsx: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-310efc6d4eae1e69", "name": "`truncate` class without `title=` for hover reveal \u2014 components/prelievo-zone/NumericKeyboard.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/prelievo-zone/NumericKeyboard.tsx:218"}, "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-06f5b9c3ea2fa0d2", "name": "Stray `console.log` in TS/JS \u2014 components/prelievo-zone/QRScanner.tsx:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/prelievo-zone/QRScanner.tsx:81"}, "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-241dcbc8dace3a08", "name": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/UnmatchedProductsHandler.tsx:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/UnmatchedProductsHandler.tsx: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-db6c86b16bb77b10", "name": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/AttachmentSelector.tsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/AttachmentSelector.tsx:222"}, "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-cecb61069a6173ac", "name": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/SearchProductModal.tsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/SearchProductModal.tsx:189"}, "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-821f090ffc981cc5", "name": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/TodayArrivalsList.tsx:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/TodayArrivalsList.tsx:66"}, "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-447930a620bb0cdc", "name": "`truncate` class without `title=` for hover reveal \u2014 components/controllo-prezzi/PriceCheckProductCard.tsx:91", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/controllo-prezzi/PriceCheckProductCard.tsx:91"}, "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-acfde5de58c238ca", "name": "`truncate` class without `title=` for hover reveal \u2014 components/mobile/MobileHeader.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/mobile/MobileHeader.tsx:55"}, "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-0853ace43d63cc3c", "name": "`truncate` class without `title=` for hover reveal \u2014 components/daily-plan/SampleProductsSelector.tsx:154", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/daily-plan/SampleProductsSelector.tsx:154"}, "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-99a2296bf750845c", "name": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryConfirmModal.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryConfirmModal.tsx:108"}, "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-1f8e0ee2d2968d02", "name": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryProductList.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryProductList.tsx:145"}, "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-af25627ffd220e9d", "name": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryCamera.tsx:164", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryCamera.tsx:164"}, "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-be0ef64479b05cb8", "name": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/ProductSelector.tsx:196", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/ProductSelector.tsx:196"}, "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-69cef00578a18883", "name": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/autopilot/PostPreviewCard.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/autopilot/PostPreviewCard.tsx:132"}, "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-fc491fbf0c141d40", "name": "TODO/FIXME marker in shipping code \u2014 components/maestro/ChatWidget.tsx:37", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 components/maestro/ChatWidget.tsx:37"}, "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-82e14f529aa3d2a0", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/InteractionModal.tsx:296", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/InteractionModal.tsx:296"}, "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-230222499b455f67", "name": "Stray `console.log` in TS/JS \u2014 components/maestro/InteractionModal.tsx:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/maestro/InteractionModal.tsx:107"}, "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-f847b3e73cf19601", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/UrgentProductsModal.tsx:243", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/UrgentProductsModal.tsx:243"}, "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-b8f690c1c85e28b7", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/VehicleStockModal.tsx:410", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/VehicleStockModal.tsx:410"}, "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-1472d5aec82c212e", "name": "Stray `console.log` in TS/JS \u2014 components/maestro/VehicleStockModal.tsx:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/maestro/VehicleStockModal.tsx:93"}, "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-dfb3a508b4c56c19", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/KPICard.tsx:53", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/KPICard.tsx:53"}, "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-a0781c476a1f36f5", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/OfferProductsModal.tsx:252", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/OfferProductsModal.tsx:252"}, "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-34e36d5145cfa91c", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductCard.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductCard.tsx:92"}, "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-1b3f94ef9eb686d3", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/CustomerSearchInput.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/CustomerSearchInput.tsx:190"}, "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-0feed79a64981476", "name": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductManagementModal.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductManagementModal.tsx:379"}, "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-d71146248eac0d78", "name": "Stray `console.log` in TS/JS \u2014 components/visibility/ExclusionModal.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/visibility/ExclusionModal.tsx:47"}, "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-d5f87e49c342af16", "name": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/CustomerHeader.tsx:22", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/CustomerHeader.tsx:22"}, "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-4f332ef3465dad17", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/CartItemCard.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/CartItemCard.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-5e37c46d34f4fb8a", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductReservationModal.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductReservationModal.tsx:168"}, "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-256efa9bf7f53d4c", "name": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/AIChat.tsx:1", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/AIChat.tsx:1"}, "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-5fc85558c4329e8b", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/DeliveryCard.tsx:152", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/DeliveryCard.tsx:152"}, "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-ec7da920154cb608", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderTimeline.tsx:170", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderTimeline.tsx:170"}, "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-f0a9a7139b87ab33", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductCard.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductCard.tsx:344"}, "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-f3b4003f23bf3735", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderCard.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderCard.tsx:54"}, "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-bc5dcdf28566e67d", "name": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderProductsTable.tsx:154", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderProductsTable.tsx:154"}, "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-cd07c2a6e16caf69", "name": "`truncate` class without `title=` for hover reveal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:338", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:338"}, "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-3a303e546af43683", "name": "Stray `console.log` in TS/JS \u2014 components/catalogo-lapa/AIImageModal.tsx:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 components/catalogo-lapa/AIImageModal.tsx:143"}, "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-a2e2d820cb8e3918", "name": "`truncate` class without `title=` for hover reveal \u2014 components/scadenze/ExpiryProductCard.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/scadenze/ExpiryProductCard.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-a2d5b9600ecb068a", "name": "Stray `console.log` in TS/JS \u2014 app/resi-furgoni/page.tsx:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/resi-furgoni/page.tsx:103"}, "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-7eeb6a5d1daeadf5", "name": "`truncate` class without `title=` for hover reveal \u2014 app/infra-monitor/page.tsx:372", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/infra-monitor/page.tsx:372"}, "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-d33ed923dab06899", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-prodotti/page.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-prodotti/page.tsx:312"}, "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-3b4500abeef43e9f", "name": "`truncate` class without `title=` for hover reveal \u2014 app/chat-gestionale/page.tsx:1080", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/chat-gestionale/page.tsx:1080"}, "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-25d3eb4700af7d60", "name": "Stray `console.log` in TS/JS \u2014 app/chat-gestionale/page.tsx:512", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/chat-gestionale/page.tsx:512"}, "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-c1125fc9d55e8449", "name": "Stray `console.log` in TS/JS \u2014 app/scan-contatto/page.tsx:212", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/scan-contatto/page.tsx:212"}, "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-c32fe9fbea9028bf", "name": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-ai/page.tsx:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-ai/page.tsx:45"}, "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-3c346080b2a80970", "name": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/page.tsx:2531", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/page.tsx:2531"}, "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-b54cb103e5d2987a", "name": "Stray `console.log` in TS/JS \u2014 app/social-ai-studio/page.tsx:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/social-ai-studio/page.tsx:208"}, "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-724bac8204a19e24", "name": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/analytics/page.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/analytics/page.tsx:236"}, "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-e360e50cc95f3c0a", "name": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/autopilot/page.tsx:489", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/autopilot/page.tsx:489"}, "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-e3b5bbb43598f1d0", "name": "`truncate` class without `title=` for hover reveal \u2014 app/skills-dashboard/page.tsx:390", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/skills-dashboard/page.tsx:390"}, "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-f307801cea55f495", "name": "TODO/FIXME marker in shipping code \u2014 app/super-dashboard/cassaforte/page.tsx:137", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/super-dashboard/cassaforte/page.tsx:137"}, "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-a19ff847c7c7df7b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/product-story/page.tsx:436", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/product-story/page.tsx:436"}, "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-e07f7721054fe2e0", "name": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/sales-radar-activity/page.tsx:624", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/sales-radar-activity/page.tsx:624"}, "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-b1f44a692535cc55", "name": "Stray `console.log` in TS/JS \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:218"}, "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-b394c6ddc7012d61", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/il-mio-hub/page.tsx:345", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/il-mio-hub/page.tsx:345"}, "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-2ae775aa976628a1", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/page.tsx:486", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/page.tsx:486"}, "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-0f7a00b9505f2df4", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/page.tsx:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/page.tsx: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-c45ff9b582e64bff", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:515", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:515"}, "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-58daf9a84057ebb2", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:87"}, "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-429e9a703b2540e3", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/MediaUploadButtons.tsx:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/MediaUploadButtons.tsx:79"}, "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-320176f424321a83", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/AIOrderInput.tsx:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/AIOrderInput.tsx: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-eeaf4fb99dcd58fb", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/CustomerSelector.tsx:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/CustomerSelector.tsx:66"}, "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-15f96f0b121fe6f8", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:1132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:1132"}, "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-523ebd34bef90440", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:157"}, "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-056fafae5c207ad4", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/ordini/page.tsx:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/ordini/page.tsx:53"}, "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-d096916bfc823c42", "name": "`truncate` class without `title=` for hover reveal \u2014 app/sales-radar/page.tsx:1661", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/sales-radar/page.tsx:1661"}, "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-8f02b1300840dfdd", "name": "Stray `console.log` in TS/JS \u2014 app/sales-radar/page.tsx:404", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/sales-radar/page.tsx:404"}, "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-2f9536072e76bd80", "name": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-ocr/page.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-ocr/page.tsx:105"}, "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-6c74bf787f0b5953", "name": "Stray `console.log` in TS/JS \u2014 app/jetson-ocr/page.tsx:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/jetson-ocr/page.tsx:26"}, "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-e69ce2f84786e9c8", "name": "Icon-only button without accessible name \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:55", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:55"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0836e217de0527ac", "name": "Stray `console.log` in TS/JS \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:34"}, "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-fe165edd1a4f376a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:187", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:187"}, "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-e74b89e2d7109864", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/DocumentCard.tsx:94", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/DocumentCard.tsx:94"}, "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-f1b18585b010e22e", "name": "Stray `console.log` in TS/JS \u2014 app/spese/page.tsx:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/spese/page.tsx:64"}, "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-0091a7618a0619be", "name": "Stray `console.log` in TS/JS \u2014 app/convalida-residui/page.tsx:1409", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/convalida-residui/page.tsx:1409"}, "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-d3b05fdfab58c35c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/blog-photo-manager/page.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/blog-photo-manager/page.tsx:218"}, "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-5f95efd375b7e28f", "name": "Stray `console.log` in TS/JS \u2014 app/api/stella/did-stream/route.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/did-stream/route.ts:14"}, "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-889b594cf56de90e", "name": "Stray `console.log` in TS/JS \u2014 app/api/stella/save-conversation/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/save-conversation/route.ts:21"}, "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-2b9dbd5577c1e5a7", "name": "Stray `console.log` in TS/JS \u2014 app/api/stella/tasks/route.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/tasks/route.ts:106"}, "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-e29006ee69be5dc8", "name": "Stray `console.log` in TS/JS \u2014 app/api/blog/posts/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/blog/posts/route.ts:38"}, "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-63b2a5154d491ff3", "name": "Stray `console.log` in TS/JS \u2014 app/api/blog/upload-image/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/blog/upload-image/route.ts:52"}, "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-d40fa8995b0ce72c", "name": "Stray `console.log` in TS/JS \u2014 app/api/chat-gestionale/route.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/chat-gestionale/route.ts:82"}, "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-cc6db2d13a9b7509", "name": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/example-usage.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/example-usage.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-44d10a53130de35b", "name": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/route.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/route.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-89a737767227b512", "name": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/save/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/save/route.ts:40"}, "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-ef87c2e20129486e", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/update-quantity/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/update-quantity/route.ts:53"}, "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-460b472576fdf980", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/html-app/route.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/html-app/route.ts:7"}, "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-583a6f3967db7bda", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/analyze-video/route.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/analyze-video/route.ts:81"}, "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-963c998fbf9ecb2a", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/transfer/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/transfer/route.ts:15"}, "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-3e60768008b209e3", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/buffer-search/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/buffer-search/route.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-3e988cbc1c5538bf", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/test-all/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/test-all/route.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-07de13f172ca50a2", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/location/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/location/route.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-0bb8951379c35279", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/products/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/products/route.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-3123444dcd2aa833", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/create-van-returns/route.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/create-van-returns/route.ts:41"}, "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-edb435bf31e885ca", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/search-furgoni-locations/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/search-furgoni-locations/route.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-296624ba91a516f3", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventory/quants/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/quants/route.ts:15"}, "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-22fc67773d1ea754", "name": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/save/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/save/route.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-46cff8c0db74eb9f", "name": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/resolve-issue/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/resolve-issue/route.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-23c460423dc30e7e", "name": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/get-info/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/get-info/route.ts:17"}, "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-cba4b391a4e951c4", "name": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/init-db/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/init-db/route.ts:24"}, "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-e01d9618a815b6fd", "name": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/reviews/[id]/publish/route.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/reviews/[id]/publish/route.ts:78"}, "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-739447596404e1c0", "name": "Stray `console.log` in TS/JS \u2014 app/api/analisi-clienti/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-clienti/route.ts:17"}, "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-de25587f2361782a", "name": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/kpi/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/kpi/route.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-f81137a9881f8f19", "name": "TODO/FIXME marker in shipping code \u2014 app/api/super-dashboard/sales-timeline/route.ts:148", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/super-dashboard/sales-timeline/route.ts:148"}, "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-dbb3acfa5d527f26", "name": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-timeline/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-timeline/route.ts:34"}, "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-9a2223dcdcdc2ae3", "name": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-radar-activity/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-radar-activity/route.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-789207ddb1b83bcd", "name": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/margini/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/margini/route.ts:18"}, "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-bfa92d73261cc347", "name": "Stray `console.log` in TS/JS \u2014 app/api/control-logs/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/control-logs/route.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-a0345c0d38ecdba7", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/ai-process-order/route.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/ai-process-order/route.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-b762ae579317f906", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-orders/[customerId]/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-orders/[customerId]/route.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-90d33b1f373a8bde", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-history/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-history/route.ts:38"}, "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-98a9c9ff5df66514", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/orders/route.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/orders/route.ts:23"}, "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-29ec6659f3865f8f", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/route.ts:34"}, "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-ab56c6923c52b7bc", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/[customerId]/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/[customerId]/route.ts:39"}, "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-76e1792a745d426d", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/last-delivery/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/last-delivery/route.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-976a558bbeedf80f", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-quantities/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-quantities/route.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-6faf0644803809be", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customers/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customers/route.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-3d34ccac70fa25e2", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-message/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-message/route.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-64f1f58338b1b302", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/global-stats/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/global-stats/route.ts:15"}, "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-0588a679c2e81c1e", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/search-products/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/search-products/route.ts:53"}, "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-a19b9e378f1a4bd4", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-prices/route.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-prices/route.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-7650b647351db3e2", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/product-history/[productId]/route.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/product-history/[productId]/route.ts:41"}, "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-bd04dc9d5acc3077", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/create-order/route.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/create-order/route.ts:74"}, "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-bf5b1ae166eef5c9", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/confirm-order/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/confirm-order/route.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-ddc6db7119bc410c", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-addresses/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-addresses/route.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-8c05d475381b635b", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-line/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-line/route.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-7c937d73776142b4", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/route.ts:39"}, "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-885b3d503a7bfe7c", "name": "TODO/FIXME marker in shipping code \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:227", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:227"}, "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-c56c8fad2ba90cf3", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:64"}, "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-20a87b0cb069cc42", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/delete-line/route.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/delete-line/route.ts:49"}, "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-d8e0d6cba3ad7da9", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/update-delivery/route.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/update-delivery/route.ts:47"}, "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-6b73615ae72ffb41", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/cancel/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/cancel/route.ts:34"}, "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-65f7089cfb881eb0", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/add-line/route.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/add-line/route.ts:50"}, "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-6715f28893a9e73d", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/convert-lead-to-contact/route.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/convert-lead-to-contact/route.ts:49"}, "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-6d82bdf504209ef8", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/save-leads/route.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/save-leads/route.ts:156"}, "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-9d3cc6c9c8800c26", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/load-from-odoo/route.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/load-from-odoo/route.ts:167"}, "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-c2c7f779738f1a83", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/mark-not-target/route.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/mark-not-target/route.ts:69"}, "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-a8241311396d9b7c", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/update-leads/route.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/update-leads/route.ts:190"}, "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-27baf02abd0c60b9", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-appointment/route.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-appointment/route.ts:45"}, "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-a823458cd3364ae4", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-contact/route.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-contact/route.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-e5df209eac43c1e8", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/analyze-client/route.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/analyze-client/route.ts:68"}, "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-3f1301ad30d2d893", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/search/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/search/route.ts:53"}, "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-cf70d47771e99866", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/reactivate-lead/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/reactivate-lead/route.ts:52"}, "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-ab84d95536116ea2", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-customer/route.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-customer/route.ts:51"}, "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-1728f56d0f243d36", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-activity/route.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-activity/route.ts:69"}, "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-fc35fbd392067f7d", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-appointments/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-appointments/route.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-18fd7621f3556c24", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/fix-contact-coordinates/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/fix-contact-coordinates/route.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-eee79b65bebb3ba2", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visited-clients/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visited-clients/route.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-cdfd32287909a072", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visits/route.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visits/route.ts:45"}, "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-4933f1311fce7588", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-in/route.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-in/route.ts:64"}, "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-caa9e680777aa269", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-chatter/route.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-chatter/route.ts:55"}, "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-02beca932b250dd5", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/voice-note/route.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/voice-note/route.ts:70"}, "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-eb8c8866757e720d", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/init-db/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/init-db/route.ts:26"}, "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-90de918a5888c8a9", "name": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/chat/route.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/chat/route.ts:28"}, "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-d0b3c686bbf02c80", "name": "Stray `console.log` in TS/JS \u2014 app/api/openai/chat/route.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/openai/chat/route.ts:9"}, "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-fde560fd807b22d6", "name": "Stray `console.log` in TS/JS \u2014 app/api/openai/realtime/route.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/openai/realtime/route.ts:63"}, "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-c12fcbda1416225b", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/route.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-9afb1434647bac07", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/callback/route.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/callback/route.ts:32"}, "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-17be2ea0eaa2cacb", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/login/route.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/login/route.ts:8"}, "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-4fff6edd1618fbf4", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/unified-odoo/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/unified-odoo/route.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-ca674b20a83f0aff", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/me/route.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/me/route.ts:8"}, "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-d68e5e34f12a1f0c", "name": "Stray `console.log` in TS/JS \u2014 app/api/auth/update-profile/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/update-profile/route.ts:26"}, "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-091f6179c3fbacbc", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/extract-products/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/extract-products/route.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-9fb6ab32cf3068eb", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/save/route.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/save/route.ts:61"}, "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-e71df6b7a1dfda9d", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/transcribe/route.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/transcribe/route.ts:63"}, "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-67a4c2eac04b7b4e", "name": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/history/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/history/route.ts:40"}, "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-6dee702ba02946e0", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-consegne/list/route.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-consegne/list/route.ts:42"}, "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-111aa563ba3acbb2", "name": "Stray `console.log` in TS/JS \u2014 app/api/odoo-proxy/route.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo-proxy/route.ts:8"}, "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-711e26e57f3b0181", "name": "Stray `console.log` in TS/JS \u2014 app/api/odoo/journals/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/journals/route.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-e40554e957f69a5f", "name": "Stray `console.log` in TS/JS \u2014 app/api/odoo/post-message/route.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/post-message/route.ts:49"}, "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-222c9042eaf9ce15", "name": "Stray `console.log` in TS/JS \u2014 app/api/odoo/rpc/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/rpc/route.ts:40"}, "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-ec27c4af4512e19a", "name": "Stray `console.log` in TS/JS \u2014 app/api/odoo/contacts/addresses/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/contacts/addresses/route.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-bc74c02789116b27", "name": "Stray `console.log` in TS/JS \u2014 app/api/spese/submit/route.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/spese/submit/route.ts:49"}, "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-6f1174c303158329", "name": "Stray `console.log` in TS/JS \u2014 app/api/spese/analyze/route.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/spese/analyze/route.ts:125"}, "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-bac18deba23325b3", "name": "Stray `console.log` in TS/JS \u2014 app/api/scarti/dashboard/route.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarti/dashboard/route.ts:54"}, "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-c30a0f5f21efc03b", "name": "Stray `console.log` in TS/JS \u2014 app/api/scarti/generate-order/route.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarti/generate-order/route.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-d369247f5ea84840", "name": "Stray `console.log` in TS/JS \u2014 app/api/apps/visibility/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/apps/visibility/route.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-d713ef0c407f8161", "name": "Stray `console.log` in TS/JS \u2014 app/api/apps/check-access/route.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/apps/check-access/route.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-ade04b4cac4bb347", "name": "Stray `console.log` in TS/JS \u2014 app/api/compensi-venditori/route.ts:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/compensi-venditori/route.ts:251"}, "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-8a560c4a6ddf6f11", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/v2/chat/route.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/v2/chat/route.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-b46850ad6cf0afe7", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/test-whatsapp-send/route.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/test-whatsapp-send/route.ts:9"}, "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-7bd1dd179266b98e", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/chat/route.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/chat/route.ts:167"}, "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-0434f94e832695ab", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/setup-whatsapp-webhook/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/setup-whatsapp-webhook/route.ts:15"}, "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-d2e3ed38379d1a7c", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/whatsapp-incoming/route.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/whatsapp-incoming/route.ts:96"}, "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-bb5ac73f543757ec", "name": "Stray `console.log` in TS/JS \u2014 app/api/offer-products/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/offer-products/route.ts:57"}, "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-d8ed2c072f835ea0", "name": "Stray `console.log` in TS/JS \u2014 app/api/menu-pdf/restaurant-info/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/menu-pdf/restaurant-info/route.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-46f1c5e48250bcf2", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-diretto/upload-video/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-diretto/upload-video/route.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-d436fac9c38b2996", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/upload-pdf/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/upload-pdf/route.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-1c6fb312e4a8ac07", "name": "TODO/FIXME marker in shipping code \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:5"}, "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-2ad8e81dd4cada19", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:32"}, "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-6aaf3a7de7ed699e", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/search-products/route.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/search-products/route.ts:13"}, "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-5ba13c136a644f4e", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/apply-corrections/route.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/apply-corrections/route.ts:11"}, "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-88c11800c480a289", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/list-draft-invoices/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/list-draft-invoices/route.ts:15"}, "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-f5a81ae20c01eab8", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/get-invoice-detail/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/get-invoice-detail/route.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-1d47df328e96d4a4", "name": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/add-product-line/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/add-product-line/route.ts:18"}, "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-4870113f5d4c62f5", "name": "Stray `console.log` in TS/JS \u2014 app/api/missing-products/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/missing-products/route.ts:43"}, "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-7d06ed04c83a77a6", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-reception/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-reception/route.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-7bd29fa9ec646199", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/classify-attachments/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/classify-attachments/route.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-b985439819beb333", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-multiple-attachments/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-multiple-attachments/route.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-438942ebd29bb8ab", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-receptions-by-supplier/route.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-receptions-by-supplier/route.ts:109"}, "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-fdaf79d70e2cab5d", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/get-po-attachments/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/get-po-attachments/route.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-76e348320f39fe03", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/process-reception/route.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/process-reception/route.ts:55"}, "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-836ac0efded6e716", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-invoice/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-invoice/route.ts:38"}, "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-6c021098ed1f2875", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/search-products/route.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/search-products/route.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-d35c1a5eb9ed677a", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-attachment/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-attachment/route.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-1b50e8718e53cf9c", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/identify-supplier/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/identify-supplier/route.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-5bd41c264c7150c3", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/add-product-to-picking/route.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/add-product-to-picking/route.ts:42"}, "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-bc928f6389f52e90", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/list-today/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/list-today/route.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-4798ed3cfcdbfe98", "name": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/download-attachment/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/download-attachment/route.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-ade0708fe7a000a0", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/main-pricelists/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/main-pricelists/route.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-2d8b4df85dbce196", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/set-product-pricelist-rule/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/set-product-pricelist-rule/route.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-52e9e937c2d36ea4", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/analisi-mensile/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/analisi-mensile/route.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-e7fcb613847d3824", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products-without-rules/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products-without-rules/route.ts:40"}, "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-d54ffbacedf93f7b", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/reject-block/route.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/reject-block/route.ts:28"}, "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-3864d86fc1972fc2", "name": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/alerts/route.ts:344", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/alerts/route.ts:344"}, "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-6752c71d6d9f23ff", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/alerts/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/alerts/route.ts:57"}, "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-82b7af484e261174", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-price/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-price/route.ts:38"}, "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-c1a20dff16dbe189", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/counts/route.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/counts/route.ts:14"}, "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-651c1014743e6900", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-requests/route.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-requests/route.ts:71"}, "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-f4dce10041eb7fa8", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/aggregate/route.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/aggregate/route.ts:49"}, "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-9186fce55f167a28", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/approve-block/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/approve-block/route.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-76b90f8d40fd69af", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/update-price/route.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/update-price/route.ts:14"}, "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-63324b3412b3993c", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-reviewed/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-reviewed/route.ts:38"}, "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-eabbf0649ef5f345", "name": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/products/route.ts:109", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/products/route.ts:109"}, "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-37c79c3b39c52e38", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products/route.ts:21"}, "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-e48bde1b00fd5746", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/product-pricelist-rules/route.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/product-pricelist-rules/route.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-14b139d79acabc7c", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/fatture-bozza/route.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/fatture-bozza/route.ts:62"}, "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-78705fc1635dc73a", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-pending/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-pending/route.ts:39"}, "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-3afd95ab1127d704", "name": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto-complete/route.ts:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto-complete/route.ts:219"}, "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-925cdbd271403aed", "name": "Stray `console.log` in TS/JS \u2014 app/api/urgent-products/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/urgent-products/route.ts:57"}, "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-41ab1562167462d7", "name": "Stray `console.log` in TS/JS \u2014 app/api/waste/transfer/route.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/waste/transfer/route.ts:58"}, "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-c6503c28bd9bb494", "name": "Stray `console.log` in TS/JS \u2014 app/api/waste/location-products/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/waste/location-products/route.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-554a156edd4a9551", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/add-odoo-columns/route.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/add-odoo-columns/route.ts:8"}, "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-4794e412930c61c7", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-reservations/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-reservations/route.ts:15"}, "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-e38b7e901b7ec4c2", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-cart-reservations/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-cart-reservations/route.ts:15"}, "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-3b0b9166f2754aea", "name": "Stray `console.log` in TS/JS \u2014 app/api/daily-plan/create-sample-order/route.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/daily-plan/create-sample-order/route.ts:63"}, "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-d5f83291b77cf0df", "name": "Stray `console.log` in TS/JS \u2014 app/api/test-ai-matching/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-ai-matching/route.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-c006dfa5da79fac6", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/route.ts:24"}, "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-a1151a51ac9128f3", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/fields/route.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/fields/route.ts:54"}, "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-7f6c6f162a6cf0a3", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/update-state/route.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/update-state/route.ts:46"}, "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-6aa3b277db29d97f", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/assign-vehicle/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/assign-vehicle/route.ts:34"}, "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-36fa1f8f43ae4d96", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/create-batches/route.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/create-batches/route.ts:98"}, "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-40ca798a2bc9f874", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/pickings/route.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/pickings/route.ts:12"}, "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-f112b72088445de3", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/van-pending/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/van-pending/route.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-1398d6cf890bef69", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-signature/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-signature/route.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-b47ebaf7a0b9a5b0", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/print/route.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/print/route.ts:10"}, "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-a1285f301a990779", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/list/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/list/route.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-05af09bd882c3574", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/confirm-pickup/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/confirm-pickup/route.ts:39"}, "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-85787900b48522aa", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/get-invoice-amount/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/get-invoice-amount/route.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-13484f66f3e59e45", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/reso/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/reso/route.ts:18"}, "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-df1a54153bc54e51", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/validate/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/validate/route.ts:34"}, "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-59282fbbc8174a06", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-photo/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-photo/route.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-ee27d982e01723a1", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-partial-justification/route.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-partial-justification/route.ts:13"}, "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-cf5a35cdf1ce6313", "name": "Stray `console.log` in TS/JS \u2014 app/api/delivery/payment/route.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/payment/route.ts:28"}, "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-3ddd6344d62f3c2d", "name": "Stray `console.log` in TS/JS \u2014 app/api/avatar-generator/generate-video/route.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/avatar-generator/generate-video/route.ts:143"}, "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-091e928a8a0ab922", "name": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/list/route.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/list/route.ts:177"}, "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-709eb32ca5551f79", "name": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/create-return/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/create-return/route.ts:40"}, "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-1fbb03edfa7dfbd4", "name": "Stray `console.log` in TS/JS \u2014 app/api/chat-venditori/route.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/chat-venditori/route.ts:91"}, "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-d3ff52e60749ce4b", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/save-expiry/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/save-expiry/route.ts:53"}, "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-74bc3e551d159677", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/extract-expiry/route.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/extract-expiry/route.ts:46"}, "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-8153f0eecd830a8b", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/translate-content/route.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/translate-content/route.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-114a3282b9ae256c", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-curiosity-image/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-curiosity-image/route.ts:53"}, "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-b9e83064a59142bf", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-article/route.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-article/route.ts:143"}, "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-0fed94163e43b605", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-story/route.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-story/route.ts:88"}, "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-f1a601dae20c75ca", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/analytics/summary/route.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/analytics/summary/route.ts:118"}, "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-68ba0e82a787c7fa", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/autopilot/generate-post/route.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/autopilot/generate-post/route.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-9344bc7a6ec2651a", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-youtube/route.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-youtube/route.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-d304839a7013cbcf", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-recipe/route.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-recipe/route.ts:80"}, "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-36ac7cbc21eecf44", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-story/route.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-story/route.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-b217eb3eb8fb71f3", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-to-odoo/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-to-odoo/route.ts:24"}, "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-a37b5951f23b52c1", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/check-video-status/route.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/check-video-status/route.ts:127"}, "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-f5295aada4333a80", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/regenerate-article-image/route.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/regenerate-article-image/route.ts:12"}, "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-382f4f71c7760c7c", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-curiosity/route.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-curiosity/route.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-adc6db711ec60013", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/free-article/route.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/free-article/route.ts:84"}, "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-4c7316272e1d08bf", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/food-curiosity/route.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/food-curiosity/route.ts:75"}, "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-ddf27d3e878de0e6", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-marketing/route.ts:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-marketing/route.ts:172"}, "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-5ee8eebfcf8c0154", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/refine-video/route.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/refine-video/route.ts:80"}, "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-9215a8400dcc7bf3", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-recipe/route.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-recipe/route.ts:146"}, "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-27ba77fa1f37640f", "name": "Stray `console.log` in TS/JS \u2014 app/api/test-lot-trace/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-lot-trace/route.ts:34"}, "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-438b9dc0ebda476e", "name": "Stray `console.log` in TS/JS \u2014 app/api/wine/sommelier/route.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/wine/sommelier/route.ts:239"}, "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-b8f1b1f6119ec428", "name": "TODO/FIXME marker in shipping code \u2014 app/api/wine/catalog/route.ts:75", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/wine/catalog/route.ts:75"}, "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-1bed572b10d41d02", "name": "Stray `console.log` in TS/JS \u2014 app/api/agents/status/route.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/agents/status/route.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-4ffeda874a1405b5", "name": "Stray `console.log` in TS/JS \u2014 app/api/test-images/route.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-images/route.ts:6"}, "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-0f487d580439c4fa", "name": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze/route.ts:15"}, "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-0b7be4340f74b2f5", "name": "TODO/FIXME marker in shipping code \u2014 app/api/ordini-fornitori/analyze-today/route.ts:287", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/ordini-fornitori/analyze-today/route.ts:287"}, "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-7d6b11dad47aef5d", "name": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze-today/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze-today/route.ts:40"}, "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-6dc15afd0eab8ced", "name": "Stray `console.log` in TS/JS \u2014 app/api/test-odoo-session/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-odoo-session/route.ts:15"}, "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-fb7e8ba4455897d0", "name": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/route.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/route.ts:153"}, "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-d4e0dddf61c2d187", "name": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/top-products/route.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/top-products/route.ts:90"}, "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-08b2b3b31cf4fbec", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/update-product-rankings/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/update-product-rankings/route.ts:38"}, "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-cfb274dfcf8299f4", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/ocr-attachments/route.ts:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/ocr-attachments/route.ts:342"}, "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-7793858218b5c99f", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/email-monitor/route.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/email-monitor/route.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-3472634a5a423d0a", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/sync-products-rag/route.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/sync-products-rag/route.ts:32"}, "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-662e78c66a053d8a", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-sync/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-sync/route.ts:52"}, "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-537483fed8e81e3b", "name": "Stray `console.log` in TS/JS \u2014 app/api/picking/batches/route.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/batches/route.ts:9"}, "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-9f97d79f2b40c19f", "name": "Stray `console.log` in TS/JS \u2014 app/api/picking/update-quantity/route.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/update-quantity/route.ts:7"}, "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-ea67d675c8c20ae3", "name": "Stray `console.log` in TS/JS \u2014 app/api/picking/operations/route.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/operations/route.ts:9"}, "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-3c404bf49f5c8638", "name": "Stray `console.log` in TS/JS \u2014 app/api/picking/locations/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/locations/route.ts:17"}, "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-61bf241347dea30e", "name": "Stray `console.log` in TS/JS \u2014 app/api/picking/validate/route.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/validate/route.ts:7"}, "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-540d4f89612d1098", "name": "Stray `console.log` in TS/JS \u2014 app/api/setup-supplier-db/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/setup-supplier-db/route.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-55b6bff043466e26", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/route.ts:39"}, "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-08748fc97d50fb3e", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/manual/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/manual/route.ts:18"}, "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-4cc6d75238a3366d", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/route.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/route.ts:121"}, "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-9e6876aa50841416", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/[id]/route.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/[id]/route.ts:79"}, "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-7ef05bf4e3aef529", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/route.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-2620f6f9736bf4bc", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/orders/route.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/orders/route.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-befee80cfd8b4cf2", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/period/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/period/route.ts:26"}, "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-6db2e6b0c93e69fa", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/customers/route.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/customers/route.ts:74"}, "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-6ffef0a61269fcb2", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/avg-order-value/route.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/avg-order-value/route.ts:96"}, "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-93de9973708a8a92", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-sample-order/route.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-sample-order/route.ts:51"}, "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-caee7be4f3e1e4f4", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/route.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/route.ts:55"}, "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-7ce28fe0fef4cfd7", "name": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:81", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:81"}, "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-bf17d13c69f56b83", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:40"}, "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-203cf712c75ed151", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/history/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/history/route.ts:52"}, "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-9c3fe5673ed427a9", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/interactions/route.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/interactions/route.ts:101"}, "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-9075be64f06dfaea", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/avatars/route.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/avatars/route.ts:45"}, "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-806cb475a99468aa", "name": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/avatars/[id]/route.ts:84", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/avatars/[id]/route.ts:84"}, "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-56f266c36db004d4", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/customers/[id]/route.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/customers/[id]/route.ts:46"}, "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-5dd77a44250f5915", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/daily-plan/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/daily-plan/route.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-c0f167ac0aca0cdf", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-quotation/route.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-quotation/route.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-681f954d1f1fb425", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/agent-chat/route.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/agent-chat/route.ts:108"}, "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-622cd86145e05f8c", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/salespeople/route.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/salespeople/route.ts:13"}, "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-be1928c49c1d508e", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analyze-odoo/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analyze-odoo/route.ts:24"}, "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-301515cb0d483795", "name": "Stray `console.log` in TS/JS \u2014 app/api/maestro/products/search/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/products/search/route.ts:43"}, "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-1e1bc9a3fc3af600", "name": "Stray `console.log` in TS/JS \u2014 app/api/transcribe/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/transcribe/route.ts:34"}, "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-151cf689d871f9fb", "name": "Stray `console.log` in TS/JS \u2014 app/api/user/profile/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/user/profile/route.ts:15"}, "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-bf43e7de5b06d66f", "name": "Stray `console.log` in TS/JS \u2014 app/api/profile/update/route.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/profile/update/route.ts:74"}, "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-caac3b0f47a333cf", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/route.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-ae46815f4e760c00", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/route.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-6ccca574ae54898e", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:34"}, "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-83a59032ccf8a060", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/reorder/route.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/reorder/route.ts:28"}, "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-530060c4616c2de4", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/ai-suggest-order/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/ai-suggest-order/route.ts:57"}, "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-69f3a69621dfd4cd", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/route.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/route.ts:78"}, "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-0ca3ba48092d67f5", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/details/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/details/route.ts:15"}, "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-4e4a73ee933c1949", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/route.ts:21"}, "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-755a5dcbf357723e", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/sync-images/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/sync-images/route.ts:17"}, "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-d3379b160a1b7602", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/items/[itemId]/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/items/[itemId]/route.ts:26"}, "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-9df35e9c4007924b", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/checkout/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/checkout/route.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-6043e46c858c0a7b", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/categories/route.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/categories/route.ts:11"}, "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-5b4dedfe66ad12e6", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/route.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/route.ts:23"}, "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-35a3b32e8032709c", "name": "TODO/FIXME marker in shipping code \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:193", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:193"}, "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-04991f380c80f355", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:19"}, "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-2207531e31e30337", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/pdf/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/pdf/route.ts:34"}, "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-2191433c91285bdb", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/profile/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/profile/route.ts:17"}, "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-3ef20f0638f6607f", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/reservations/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/reservations/route.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-2111bdbc8c65b2a7", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/products/route.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/products/route.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-066ceea69e0a5fb2", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/route.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-9fc45d58a32f6e9c", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/route.ts:21"}, "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-3653b77f680387cc", "name": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/pdf/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/pdf/route.ts:34"}, "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-a94316cd840f8f4e", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/update-product-image/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/update-product-image/route.ts:34"}, "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-f86905952d1652c1", "name": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/products/route.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/products/route.ts:13"}, "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-17afc8eb52fa9439", "name": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/route.ts:17"}, "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-b81cf1a1f9a87856", "name": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/extract-pdf/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/extract-pdf/route.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-bebe77d44259ffb5", "name": "TODO/FIXME marker in shipping code \u2014 app/api/smart-ordering/create-orders/route.ts:28", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/smart-ordering/create-orders/route.ts:28"}, "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-4cb71c02d36a6bc9", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering/create-orders/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering/create-orders/route.ts:26"}, "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-9fed7ca3858cdcea", "name": "Stray `console.log` in TS/JS \u2014 app/api/food-news/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/food-news/route.ts:43"}, "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-e3b99bd0bb3cd540", "name": "Stray `console.log` in TS/JS \u2014 app/api/food-news/generate/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/food-news/generate/route.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-8dcced7ae9a4c2e3", "name": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-menu-pdf/route.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-menu-pdf/route.ts:45"}, "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-76a460ce104f94ee", "name": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-caption/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-caption/route.ts:24"}, "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-d2558265dc231117", "name": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-image/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-image/route.ts:24"}, "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-b087b2959414f174", "name": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/upload-photo/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/upload-photo/route.ts:52"}, "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-9180076cfd2bec24", "name": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:57"}, "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-05828de0ad24472a", "name": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-speech/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-speech/route.ts:43"}, "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-8679daf332505fd2", "name": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/download/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/download/route.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-b5d4803c65b320bb", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/generate-reply/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/generate-reply/route.ts:26"}, "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-d1dbefdc1507cfcc", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/settings/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/settings/route.ts:19"}, "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-859f46dc75b82d30", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/disconnect/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/disconnect/route.ts:26"}, "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-37d93481fc96988d", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/sync/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/sync/route.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-b2e9a6b242524e58", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/route.ts:26"}, "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-0ef179ba0e489e11", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/callback/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/callback/route.ts:19"}, "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-c72f399ca9b834b9", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/regenerate-summaries/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/regenerate-summaries/route.ts:21"}, "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-f69bcb6698759b8a", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/send/route.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/send/route.ts:32"}, "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-cc5229cc17186d42", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/agent/route.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/agent/route.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-666ca8d1fff8b344", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/actions/route.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/actions/route.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-a566c9705c3df0ae", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/fetch-emails/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/fetch-emails/route.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-3c8af40980e18172", "name": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/inbox/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/inbox/route.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-fc9c8e77790daea8", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batch/[batchId]/route.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batch/[batchId]/route.ts:39"}, "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-245abd44aba14407", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batches/route.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batches/route.ts:46"}, "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-e5ebb58e91828a4d", "name": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/analyze-video/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/analyze-video/route.ts:52"}, "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-e8b35bdd6cdffc55", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-embeddings/route.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-embeddings/route.ts:70"}, "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-8f6a304cca0e1bd2", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/recognize-banknote/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/recognize-banknote/route.ts:57"}, "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-7ac5526ff0093e0d", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/withdraw/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/withdraw/route.ts:52"}, "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-311a9512961a53b3", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-enroll/route.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-enroll/route.ts:79"}, "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-c3a878ab273b1fab", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/start/route.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/start/route.ts:69"}, "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-06fc9aec55d98929", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/stop/route.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/stop/route.ts:58"}, "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-d1a3aaa6cbf7fcad", "name": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/confirm-deposit/route.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/confirm-deposit/route.ts:139"}, "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-6b74663740fb1f7c", "name": "Stray `console.log` in TS/JS \u2014 app/api/migrations/product-ranking-cache/route.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/migrations/product-ranking-cache/route.ts:12"}, "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-4a75d2b920abbc85", "name": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/product-prices/route.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/product-prices/route.ts:46"}, "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-9ae0baf600355c65", "name": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/transfer/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/transfer/route.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-cfeb062168f041c5", "name": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/counts/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/counts/route.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-c3ee3ed0a9b2e5cf", "name": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/mark-reviewed/route.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/mark-reviewed/route.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-058d66e87f118b44", "name": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/products/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/products/route.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-eb1d6499b399125a", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/delete-preorder-assignments/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/delete-preorder-assignments/route.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-941fa6040bc15640", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/assign-preorder-customers/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/assign-preorder-customers/route.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-ac0016362677e308", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-order-products/route.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-order-products/route.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-1ebd0fbcf769787b", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers-enhanced/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers-enhanced/route.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-99c072d31a183b36", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers/route.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers/route.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-97248e77e54d1e72", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-all-preorders/route.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-all-preorders/route.ts:70"}, "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-116abcef4315cbc3", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pending-orders/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pending-orders/route.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-1fd91de9292c4d08", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/toggle-preorder-tag/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/toggle-preorder-tag/route.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-a57abfe5d1e3afbf", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/analyze-order/[orderId]/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/analyze-order/[orderId]/route.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-ef8893eaae264c38", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-order/route.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-order/route.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-09b8362acca58b90", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-orders-summary/route.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-orders-summary/route.ts:55"}, "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-46484b9334fb5024", "name": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/import/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/import/route.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-8db6f768019a7437", "name": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/parse/route.ts:309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/parse/route.ts:309"}, "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-b0bc93142a52b509", "name": "Stray `console.log` in TS/JS \u2014 app/api/products-catalog/route.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/products-catalog/route.ts:12"}, "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-a960bbf7436fe7d4", "name": "Stray `console.log` in TS/JS \u2014 app/api/jetson/ocr/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/jetson/ocr/route.ts:26"}, "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-b1d692bf37f7dd94", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/classify-documents/route.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/classify-documents/route.ts:85"}, "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-8cd55305958e6df4", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/process-arrival/route.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/process-arrival/route.ts:84"}, "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-5e271fa03b4cc48d", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/read-documents/route.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/read-documents/route.ts:86"}, "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-9ebbf176c8314714", "name": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/list-today/route.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/list-today/route.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-0262c32bcf8416c8", "name": "Stray `console.log` in TS/JS \u2014 app/api/test-web-search/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-web-search/route.ts:15"}, "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-0c8e87def781956e", "name": "Stray `console.log` in TS/JS \u2014 app/api/debug/search-all-contacts/route.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/search-all-contacts/route.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-c2dd4ef3cc193c90", "name": "Stray `console.log` in TS/JS \u2014 app/api/debug/check-visibility-db/route.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/check-visibility-db/route.ts:12"}, "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-70a0817b03312887", "name": "Stray `console.log` in TS/JS \u2014 app/api/debug/test-supplier-sync/route.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/test-supplier-sync/route.ts:11"}, "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-00644af975f5bb6a", "name": "Stray `console.log` in TS/JS \u2014 app/api/debug/batch-fields/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/batch-fields/route.ts:19"}, "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-3b82c15d84a9e85b", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/init-rag/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/init-rag/route.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-91d6f4533b2c8079", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/update-product-embedding/route.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/update-product-embedding/route.ts:34"}, "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-65086ecf542a4650", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/sync-products-rag/route.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/sync-products-rag/route.ts:28"}, "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-329865a3a23c3a71", "name": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/setup-odoo-webhook/route.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/setup-odoo-webhook/route.ts:15"}, "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-3c0048a336a950ac", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/predict/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/predict/route.ts:18"}, "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-89b715dca4eea4e6", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-sales/route.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-sales/route.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-4a24f37eb80a3ded", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/alerts/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/alerts/route.ts:19"}, "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-48a3423c0c534f62", "name": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-supplier/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-supplier/route.ts:21"}, "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-9a7d270376d30a35", "name": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/transfer/route.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/transfer/route.ts:45"}, "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-a587c100c4516fe5", "name": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/check-product/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/check-product/route.ts:53"}, "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-b238045cc7fcd26c", "name": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/buffer-products/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/buffer-products/route.ts:26"}, "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-17aa505451700d7a", "name": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/find-product/route.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/find-product/route.ts:26"}, "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-c7516657affdafee", "name": "Stray `console.log` in TS/JS \u2014 app/api/clienti/search/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/clienti/search/route.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-3c90753a78675e4a", "name": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/contact/route.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/contact/route.ts:70"}, "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-37897482f2d213d5", "name": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/dashboard/route.ts:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/dashboard/route.ts:168"}, "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-fb5145e16e8b4e99", "name": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/employee-stats/route.ts:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/employee-stats/route.ts:150"}, "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-74c0b023497fcd38", "name": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/consent/route.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/consent/route.ts:158"}, "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-5f46a36fa9450008", "name": "TODO/FIXME marker in shipping code \u2014 app/api/time-attendance/export/route.ts:629", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/time-attendance/export/route.ts:629"}, "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-cbb47ced10ebe1e3", "name": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/export/route.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/export/route.ts:84"}, "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-0ce57ef8b804b5fe", "name": "Stray `console.log` in TS/JS \u2014 app/api/margini/route.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/margini/route.ts:141"}, "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-c198a9bf82c64079", "name": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image-gemini/route.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image-gemini/route.ts:42"}, "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-8cb2836902eb689b", "name": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/parse-invoice/route.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/parse-invoice/route.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-c9b4764249300ba1", "name": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image/route.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image/route.ts:24"}, "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-493daac686a08488", "name": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/create-products/route.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/create-products/route.ts:21"}, "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-ede40b313e6a9262", "name": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/enrich-product/route.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/enrich-product/route.ts:68"}, "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-8c824daf35f2f07e", "name": "Stray `console.log` in TS/JS \u2014 app/scarti/page.tsx:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/scarti/page.tsx:104"}, "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-e5c89d9ae3b5006e", "name": "Icon-only button without accessible name \u2014 app/inventario/page.tsx:647", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/inventario/page.tsx:647"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bb91725a746ff45", "name": "Stray `console.log` in TS/JS \u2014 app/inventario/page.tsx:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/inventario/page.tsx:132"}, "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-6c42e7ff881a6275", "name": "`truncate` class without `title=` for hover reveal \u2014 app/inventario/verifica/page.tsx:369", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/inventario/verifica/page.tsx:369"}, "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-ae49cd79c334fc4f", "name": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/page.tsx:1024", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/page.tsx:1024"}, "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-94ad49e510070dd0", "name": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/test/page.tsx:739", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/test/page.tsx:739"}, "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-2d8e342a6935daa2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/widget/page.tsx:714", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/widget/page.tsx:714"}, "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-d30b64a85036a53b", "name": "Stray `console.log` in TS/JS \u2014 app/lapa-ai-agents/widget/page.tsx:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/lapa-ai-agents/widget/page.tsx:70"}, "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-9738be5aac4ff764", "name": "Stray `console.log` in TS/JS \u2014 app/dashboard/page.tsx:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/dashboard/page.tsx: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-1ab64a8faaf99114", "name": "`truncate` class without `title=` for hover reveal \u2014 app/product-photo-manager/page.tsx:575", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/product-photo-manager/page.tsx:575"}, "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-d4d135fb19e708cd", "name": "Stray `console.log` in TS/JS \u2014 app/product-photo-manager/page.tsx:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/product-photo-manager/page.tsx:204"}, "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-e3b24607833cb4fb", "name": "`truncate` class without `title=` for hover reveal \u2014 app/components/JokeBanner.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/components/JokeBanner.tsx:131"}, "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-a3d8a6be3285b967", "name": "Stray `console.log` in TS/JS \u2014 app/centralino-ai/page.tsx:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/centralino-ai/page.tsx: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-c5e96c7b4b4c7510", "name": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-v2/page.tsx:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-v2/page.tsx:221"}, "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-2608c6890a35c5c2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/ordini-smart-v2/prodotti-critici/page.tsx:256", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/ordini-smart-v2/prodotti-critici/page.tsx:256"}, "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-dca90e7378eac6be", "name": "`truncate` class without `title=` for hover reveal \u2014 app/prelievo-zone/page.tsx:1974", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prelievo-zone/page.tsx:1974"}, "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-9cc40d56648cbe1a", "name": "Stray `console.log` in TS/JS \u2014 app/prelievo-zone/page.tsx:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/prelievo-zone/page.tsx:156"}, "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-c888a99a5a25618c", "name": "\"active\" state uses light bg in a dark theme \u2014 app/mappa-consegne/page.tsx:150", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/mappa-consegne/page.tsx:150"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-392caf57dc079fd4", "name": "Stray `console.log` in TS/JS \u2014 app/controllo-diretto/page.tsx:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-diretto/page.tsx:246"}, "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-f6099b7cc7e7f8b4", "name": "Stray `console.log` in TS/JS \u2014 app/valida-fatture/ManageMissingProductsView.tsx:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/valida-fatture/ManageMissingProductsView.tsx:39"}, "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-36a86020baf875bb", "name": "Stray `console.log` in TS/JS \u2014 app/arrivo-merce/page.tsx:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/arrivo-merce/page.tsx:107"}, "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-89cb3527d1af472c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/controllo-prezzi/page.tsx:1407", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/controllo-prezzi/page.tsx:1407"}, "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-6ad22cf94ee70f9f", "name": "Stray `console.log` in TS/JS \u2014 app/controllo-prezzi/imposta-listini/page.tsx:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-prezzi/imposta-listini/page.tsx:84"}, "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-2d304115afbed0e4", "name": "Stray `console.log` in TS/JS \u2014 app/gestione-buste-paga/page.tsx:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-buste-paga/page.tsx:198"}, "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-accc484588e68d42", "name": "`truncate` class without `title=` for hover reveal \u2014 app/email-ai-monitor/page.tsx:1469", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/email-ai-monitor/page.tsx:1469"}, "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-82d5a66f7690d7e6", "name": "Stray `console.log` in TS/JS \u2014 app/email-ai-monitor/page.tsx:944", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/email-ai-monitor/page.tsx:944"}, "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-899d2e701335ae46", "name": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-monitor/page.tsx:253", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-monitor/page.tsx:253"}, "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-00e1e95012dc469b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/silvano/page.tsx:542", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/silvano/page.tsx:542"}, "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-947268103f77abda", "name": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/ordini/page.tsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/ordini/page.tsx:180"}, "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-54f88ce4b8bb2106", "name": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/clienti/page.tsx:81", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/clienti/page.tsx:81"}, "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-ff1bd16fb54adf8a", "name": "`truncate` class without `title=` for hover reveal \u2014 app/smart-route-ai/page.tsx:1566", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/smart-route-ai/page.tsx:1566"}, "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-99c4f9f07b29d9be", "name": "Stray `console.log` in TS/JS \u2014 app/smart-route-ai/page.tsx:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/smart-route-ai/page.tsx:175"}, "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-0683912581a90a20", "name": "Icon-only button without accessible name \u2014 app/delivery/page.tsx:2840", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/delivery/page.tsx:2840"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5adf84e2311190ab", "name": "`truncate` class without `title=` for hover reveal \u2014 app/delivery/page.tsx:2936", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/delivery/page.tsx:2936"}, "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-6753f50f5e0f7d9f", "name": "Stray `console.log` in TS/JS \u2014 app/delivery/page.tsx:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/delivery/page.tsx:198"}, "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-eefa3d2ac2f1e954", "name": "Stray `console.log` in TS/JS \u2014 app/delivery/components/DeliveryMap.tsx:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/delivery/components/DeliveryMap.tsx:132"}, "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-38b0e7882ff082b2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/chat-venditori/page.tsx:1088", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/chat-venditori/page.tsx:1088"}, "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-5a8e0ffb6367f6de", "name": "Stray `console.log` in TS/JS \u2014 app/chat-venditori/page.tsx:520", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/chat-venditori/page.tsx:520"}, "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-69b3f70ee65628cc", "name": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/page.tsx:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/page.tsx:77"}, "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-daa1c60a8a5dbf53", "name": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaRealTime.tsx:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaRealTime.tsx:91"}, "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-39a0399fec4325b8", "name": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx: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-f53d0ded39a13c41", "name": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatarSimple.tsx:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatarSimple.tsx: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-ec657d5c6c7b0fb7", "name": "TODO/FIXME marker in shipping code \u2014 app/stella-assistant/chat/page.tsx:454", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/stella-assistant/chat/page.tsx:454"}, "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-f4e159b24b8f3edf", "name": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/chat/page.tsx:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/chat/page.tsx:182"}, "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-602b10907069b83c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-stats/page.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-stats/page.tsx:136"}, "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-0b14f9579420fa9a", "name": "Stray `console.log` in TS/JS \u2014 app/gestione-scadenze/page.tsx:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-scadenze/page.tsx:91"}, "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-163ce65f92b84cf2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/page.tsx:96", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/page.tsx:96"}, "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-e189dda1f19f1380", "name": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/AdvancedDashboard.tsx:60", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/AdvancedDashboard.tsx:60"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-245fc20e0ae0ba05", "name": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/StatsGrid.tsx:69", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/StatsGrid.tsx:69"}, "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-a47c89d7e2c4357c", "name": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/ClientPopup.tsx:53", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/ClientPopup.tsx:53"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12fc9f83f0aadfa0", "name": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientPopup.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientPopup.tsx:62"}, "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-f709500a8a0231a7", "name": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientGrid.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientGrid.tsx:88"}, "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-bd0b8df91607405d", "name": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/FinancialDashboard.tsx:99", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/FinancialDashboard.tsx:99"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db18c95bbd363e14", "name": "Stray `console.log` in TS/JS \u2014 app/dashboard-venditori/hooks/useOdooData.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/dashboard-venditori/hooks/useOdooData.ts:52"}, "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-f3849a7a60ffd411", "name": "TODO/FIXME marker in shipping code \u2014 app/ordini-fornitori/page.tsx:244", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/ordini-fornitori/page.tsx:244"}, "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-19a46322eff87a27", "name": "Stray `console.log` in TS/JS \u2014 app/analisi-prodotto/page.tsx:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/analisi-prodotto/page.tsx:159"}, "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-5e911cf7a2ca617c", "name": "Stray `console.log` in TS/JS \u2014 app/gestione-visibilita-app/page.tsx:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-visibilita-app/page.tsx:81"}, "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-75c9b2111b6222a3", "name": "Stray `console.log` in TS/JS \u2014 app/test-token/page.tsx:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/test-token/page.tsx: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-2ecb1d4c5ab54b4b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-compensi/page.tsx:671", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-compensi/page.tsx:671"}, "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-f2bba06a81928b27", "name": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-ia-gestionale/page.tsx:921", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-ia-gestionale/page.tsx:921"}, "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-9697362633c63e2b", "name": "Stray `console.log` in TS/JS \u2014 app/agenti-ia-gestionale/page.tsx:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/agenti-ia-gestionale/page.tsx:201"}, "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-4e4bf70bff3ab1bc", "name": "`truncate` class without `title=` for hover reveal \u2014 app/profile/page.tsx:335", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/profile/page.tsx:335"}, "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-10a10d3584cebcfd", "name": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-mancanti/page.tsx:495", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-mancanti/page.tsx:495"}, "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-1e9353b38e74f425", "name": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/catalogo/page.tsx:340", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/catalogo/page.tsx:340"}, "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-787b3edd0b37351f", "name": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/consegne/page.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/consegne/page.tsx:207"}, "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-57b63992888e6155", "name": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/OpenInvoices.tsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/OpenInvoices.tsx:189"}, "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-d4dd45aefdcf9c75", "name": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/RecentOrders.tsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/RecentOrders.tsx:149"}, "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-1e174912605cc668", "name": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/profilo/page.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/profilo/page.tsx:147"}, "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-c892b9549364f776", "name": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/ordini/[id]/page.tsx:138", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/ordini/[id]/page.tsx:138"}, "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-66b323bf2f710fb4", "name": "TODO/FIXME marker in shipping code \u2014 app/portale-clienti/ordini/nuovo/page.tsx:61", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/portale-clienti/ordini/nuovo/page.tsx:61"}, "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-7b220f961c47709f", "name": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/ordini/nuovo/page.tsx:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/ordini/nuovo/page.tsx:131"}, "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-390199e693798619", "name": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/carrello/page.tsx:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/carrello/page.tsx:99"}, "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-b623e7977e69bddd", "name": "Stray `console.log` in TS/JS \u2014 app/menu-pdf-generator/page.tsx:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/menu-pdf-generator/page.tsx: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-65e2b2c6750f8cfe", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-lapa/page.tsx:351", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-lapa/page.tsx:351"}, "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-14e60ea74ec2a078", "name": "Stray `console.log` in TS/JS \u2014 app/catalogo-lapa/page.tsx:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-lapa/page.tsx:90"}, "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-97311a4f99ea9c40", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/page.tsx:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/page.tsx:7"}, "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-8a92b249a9bd85c7", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/[slug]/page.tsx:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/[slug]/page.tsx:17"}, "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-c78447241aa2d422", "name": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-preordine/page.tsx:753", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-preordine/page.tsx:753"}, "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-d9ebe575395897c0", "name": "TODO/FIXME marker in shipping code \u2014 app/prodotti-preordine/page.tsx:327", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/prodotti-preordine/page.tsx:327"}, "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-d8a49fb338015ee4", "name": "Stray `console.log` in TS/JS \u2014 app/prodotti-preordine/page.tsx:268", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/prodotti-preordine/page.tsx:268"}, "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-0f1d89b25916afc5", "name": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-whatsapp/components/TabConversazioni.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-whatsapp/components/TabConversazioni.tsx:131"}, "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-5f5f81dab3cf06ac", "name": "`truncate` class without `title=` for hover reveal \u2014 app/scadenze/page.tsx:951", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/scadenze/page.tsx:951"}, "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-7d72523aef46924c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/import-movimenti-ubs/page.tsx:229", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/import-movimenti-ubs/page.tsx:229"}, "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-53dc0ee17ed9ce92", "name": "Stray `console.log` in TS/JS \u2014 app/stella-setup/page.tsx:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-setup/page.tsx:57"}, "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-8e42693d4d67b952", "name": "Stray `console.log` in TS/JS \u2014 app/inventario-html/page.tsx:563", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/inventario-html/page.tsx:563"}, "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-dc6d6fb5aa6a696d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/inventario-html/page.tsx:569", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/inventario-html/page.tsx:569"}, "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-fb4e952b5da7e54b", "name": "Stray `console.log` in TS/JS \u2014 app/gestione-arrivi/page.tsx:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-arrivi/page.tsx:75"}, "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-b0e21b74235d35ba", "name": "TODO/FIXME marker in shipping code \u2014 app/w/_data.ts:1", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/_data.ts:1"}, "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-0f0e8c631c75fb90", "name": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/chat/page.tsx:52", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/chat/page.tsx:52"}, "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-3e6619afa4c3b099", "name": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/confirm/page.tsx:88", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/confirm/page.tsx:88"}, "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-27ff35e63bfa2816", "name": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/page.tsx:609", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/page.tsx:609"}, "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-1d24778f8d93265e", "name": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/page.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/page.tsx:47"}, "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-cc2a8dfa9111e1b3", "name": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/orders/page.tsx:400", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/orders/page.tsx:400"}, "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-30f3a513a61ff451", "name": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:463", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:463"}, "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-037798cef0bd3f22", "name": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/revenue/page.tsx:451", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/revenue/page.tsx:451"}, "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-290d1c4e8d10c336", "name": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/customers/[id]/page.tsx:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/customers/[id]/page.tsx:91"}, "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-be90acb297c8a7b1", "name": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/daily-plan/page.tsx:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/daily-plan/page.tsx:168"}, "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-5696b58885496adb", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/page.tsx:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/page.tsx:3"}, "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-4b51b1c3dde4d69b", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/carica-menu/page.tsx:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/carica-menu/page.tsx:3"}, "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-765698565cc29ea4", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/ordini/page.tsx:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/ordini/page.tsx:3"}, "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-fe27e84205188ba1", "name": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/cantina/page.tsx:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/cantina/page.tsx:3"}, "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-a069f68ea38162ed", "name": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/page.tsx:943", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/page.tsx:943"}, "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-f559bbda63d7fc54", "name": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/admin/page.tsx:665", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/admin/page.tsx:665"}, "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-5582e75c4ee5a5aa", "name": "Stray `console.log` in TS/JS \u2014 app/time-attendance/admin/page.tsx:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/time-attendance/admin/page.tsx:182"}, "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-565d82e39db861f3", "name": "Stray `console.log` in TS/JS \u2014 app/product-creator/select-products/page.tsx:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/product-creator/select-products/page.tsx:108"}, "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-fd8b3244cdbd1b36", "name": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-foto/page.tsx:647", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-foto/page.tsx:647"}, "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-38ce60c0f0ebfc2d", "name": "TODO/FIXME marker in shipping code \u2014 app/ordini-smart/page.tsx:204", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/ordini-smart/page.tsx:204"}, "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-0c8d11d181eb462c", "name": "Stray `console.log` in TS/JS \u2014 lib/auth-helpers.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/auth-helpers.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-b2d5983f07921869", "name": "Stray `console.log` in TS/JS \u2014 lib/kv.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/kv.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-277e2b5ce94b1f17", "name": "Stray `console.log` in TS/JS \u2014 lib/face-recognition.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/face-recognition.ts:17"}, "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-0a0604601845c926", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo-auth.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo-auth.ts:42"}, "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-bb98776092373099", "name": "TODO/FIXME marker in shipping code \u2014 lib/review-manager/sync-service.ts:264", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/review-manager/sync-service.ts:264"}, "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-c587644d666def54", "name": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.test.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.test.ts:61"}, "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-65cb3b381c91cbd7", "name": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.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-989201f266ef99a2", "name": "TODO/FIXME marker in shipping code \u2014 lib/super-dashboard/hooks/useDashboardData.ts:91", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/super-dashboard/hooks/useDashboardData.ts:91"}, "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-df8867dd78036e32", "name": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/hooks/useDashboardData.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/hooks/useDashboardData.ts:184"}, "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-4ae57799643cd33f", "name": "Stray `console.log` in TS/JS \u2014 lib/notifications/email.ts:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/notifications/email.ts:205"}, "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-1b3abbac09602771", "name": "Stray `console.log` in TS/JS \u2014 lib/notifications/telegram.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/notifications/telegram.ts:38"}, "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-6e8b0bbb22d1e4f1", "name": "Stray `console.log` in TS/JS \u2014 lib/sync/pickingSync.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/sync/pickingSync.ts:34"}, "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-17ac753146ff7dc8", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-client.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-client.ts:127"}, "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-3403b0cea4ec8d47", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher-config.ts:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher-config.ts:191"}, "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-4a5d026d4b1d803c", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/skills-loader.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/skills-loader.ts:316"}, "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-8e20e64de6aed823", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher.example.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher.example.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-fddc5f0ac97a9e36", "name": "TODO/FIXME marker in shipping code \u2014 lib/ai/tools.ts:209", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/tools.ts:209"}, "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-e602190727093559", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/tools.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/tools.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-f2ea240214a4c539", "name": "TODO/FIXME marker in shipping code \u2014 lib/ai/claude-service.ts:376", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/claude-service.ts:376"}, "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-7429f76cb842de92", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-service.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-service.ts:138"}, "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-dcf637010a90c9f0", "name": "TODO/FIXME marker in shipping code \u2014 lib/ai/autonomous-agent.ts:337", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/autonomous-agent.ts:337"}, "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-cde1fc991ab7333a", "name": "Stray `console.log` in TS/JS \u2014 lib/ai/autonomous-agent.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/autonomous-agent.ts:89"}, "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-fc84aaa340a90c78", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/sessionManager.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/sessionManager.ts:50"}, "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-b15c6cda536b05ba", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-helper.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-helper.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-f3ecfb65c3cc6e83", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/admin-session.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/admin-session.ts:38"}, "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-ca118d8e16274a0d", "name": "TODO/FIXME marker in shipping code \u2014 lib/odoo/inventoryClient.ts:406", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/odoo/inventoryClient.ts:406"}, "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-f359d45640a35c38", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/inventoryClient.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/inventoryClient.ts:68"}, "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-a76a4795a12cb2d2", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/client.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/client.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-5531165698938a9e", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/rpcClient.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/rpcClient.ts:19"}, "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-4baea73e9ebab953", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-auth-local.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-auth-local.ts:18"}, "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-ccf05913c2ed1180", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/pickingClient.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/pickingClient.ts:97"}, "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-2af09bcb359b596c", "name": "Stray `console.log` in TS/JS \u2014 lib/odoo/xmlrpc-client.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/xmlrpc-client.ts:66"}, "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-2cca60c6d65300c9", "name": "TODO/FIXME marker in shipping code \u2014 lib/lapa-agents/stats.ts:293", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/lapa-agents/stats.ts:293"}, "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-1b5945888654a528", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/stats.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/stats.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-837f569d50b4c8cf", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/orchestrator.ts:598", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/orchestrator.ts:598"}, "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-e0d742293359a2af", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/product-embedding-service.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/product-embedding-service.ts:91"}, "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-f706d96319a2171f", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/attachment-analyzer.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/attachment-analyzer.ts:87"}, "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-8cb0f2cdfc42b427", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/conversation-store.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/conversation-store.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-e5cb0a291b04df81", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/helpdesk-agent.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/helpdesk-agent.ts:214"}, "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-788eb95970cb4e63", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/example-api-route.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/example-api-route.ts:190"}, "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-a3850bad742ef59a", "name": "Icon-only button without accessible name \u2014 lib/lapa-agents/agents/example-component.tsx:358", "shortDescription": {"text": "Icon-only button without accessible name \u2014 lib/lapa-agents/agents/example-component.tsx:358"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10260146af0d2acd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 lib/lapa-agents/agents/example-component.tsx:396", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 lib/lapa-agents/agents/example-component.tsx:396"}, "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-a14294622888aef5", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/orders-agent.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/orders-agent.ts:143"}, "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-db44ae1cdba57e60", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.example.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.example.ts:11"}, "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-215e37e145837e6a", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/test-helpdesk-agent.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/test-helpdesk-agent.ts:9"}, "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-a3a628be7827dfa3", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.test.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.test.ts:11"}, "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-ea0ad1a132e9a64c", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.ts:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.ts:240"}, "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-cb0e07ce70ef393e", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/invoices-agent.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/invoices-agent.ts:124"}, "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-21021d650536e933", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/memory/conversation-memory.ts:377", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/memory/conversation-memory.ts:377"}, "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-0928551bd8c14f85", "name": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/examples/test-invoices-agent.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/examples/test-invoices-agent.ts:14"}, "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-750fa75820111bd6", "name": "Stray `console.log` in TS/JS \u2014 lib/mcp-tools/odoo-tools.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/mcp-tools/odoo-tools.ts:47"}, "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-38cf3ffd5c14d2c8", "name": "Stray `console.log` in TS/JS \u2014 lib/social-ai/embedding-service.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/social-ai/embedding-service.ts:98"}, "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-6a10961b1b3d1932", "name": "Stray `console.log` in TS/JS \u2014 lib/social-ai/sentiment-analyzer.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/social-ai/sentiment-analyzer.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-2b43c9a45fb8c371", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/stratega-recupero.ts:698", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/stratega-recupero.ts:698"}, "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-5b2bf523add736a4", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/investigatore-societario.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/investigatore-societario.ts:141"}, "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-11bed00a921280c6", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/analista-fallimenti.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/analista-fallimenti.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-e96d8759776d59c3", "name": "TODO/FIXME marker in shipping code \u2014 lib/agents/sales/daily-assistant.ts:356", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/sales/daily-assistant.ts:356"}, "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-81188679f0e6d6d7", "name": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/base-agent.ts:122", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/base-agent.ts:122"}, "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-4367e66e3834598e", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/core/base-agent.ts:364", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/base-agent.ts:364"}, "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-b4dfa2b8e6c52970", "name": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/orchestrator.ts:338", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/orchestrator.ts:338"}, "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-324802ab2cbac5fb", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/core/orchestrator.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/orchestrator.ts:57"}, "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-19f4d9fd209f4d64", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/core/auto-discovery.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/auto-discovery.ts:23"}, "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-a0cad0607477dca2", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/core/agent-factory.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/agent-factory.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-7f63b1d499332345", "name": "TODO/FIXME marker in shipping code \u2014 lib/agents/specialized/specialized-agent.ts:225", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/specialized/specialized-agent.ts:225"}, "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-91248b9a3a7dfee6", "name": "Stray `console.log` in TS/JS \u2014 lib/agents/specialized/specialized-agent.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/specialized/specialized-agent.ts:28"}, "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-852520fe984c1380", "name": "Stray `console.log` in TS/JS \u2014 lib/suppliers/sync-suppliers-odoo.ts:324", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/suppliers/sync-suppliers-odoo.ts:324"}, "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-212940e6dcf61bbd", "name": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner.ts:97"}, "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-a9fb465f943a4090", "name": "Stray `console.log` in TS/JS \u2014 lib/services/web-search.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/web-search.ts:63"}, "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-6f3061ee4578d6b0", "name": "TODO/FIXME marker in shipping code \u2014 lib/services/contact-scanner-service.ts:317", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/services/contact-scanner-service.ts:317"}, "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-23f5c824c7c356b0", "name": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner-service.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner-service.ts:39"}, "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-c02d5b28541ed244", "name": "Stray `console.log` in TS/JS \u2014 lib/services/google-places.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/google-places.ts:107"}, "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-10628296faebde0a", "name": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-video-analysis.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-video-analysis.ts:116"}, "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-0c43ecc0a5611db3", "name": "Stray `console.log` in TS/JS \u2014 lib/services/inventory-ai-analysis.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/inventory-ai-analysis.ts:222"}, "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-1f04c038e2dc7de3", "name": "Stray `console.log` in TS/JS \u2014 lib/services/bank-statement-import-service.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/bank-statement-import-service.ts:104"}, "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-5583181f84fecf82", "name": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-vision.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-vision.ts:137"}, "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-48f2f4a6972f387a", "name": "Stray `console.log` in TS/JS \u2014 lib/services/contact-extraction-service.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-extraction-service.ts:87"}, "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-c4300690b68fa8d6", "name": "Stray `console.log` in TS/JS \u2014 lib/services/price-review-service.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/price-review-service.ts:23"}, "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-154f8b72554ab561", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-engine.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-engine.ts:122"}, "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-facd9e35f7772294", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/ai-service.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/ai-service.ts:61"}, "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-1e261c7d21fb5481", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/vehicle-stock-service.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/vehicle-stock-service.ts:173"}, "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-628bfecaf65447ff", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/period-metrics.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/period-metrics.ts:39"}, "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-f4a7a5d273205b98", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-orders.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-orders.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-73ac9477559b1683", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo-v2.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo-v2.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-7c78d4bb80457439", "name": "TODO/FIXME marker in shipping code \u2014 lib/maestro/sync-odoo.ts:321", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/maestro/sync-odoo.ts:321"}, "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-9665d2dd973b721d", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo.ts:58"}, "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-16e2439fdad32a49", "name": "TODO/FIXME marker in shipping code \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:103", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:103"}, "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-c51cd39dfe139f29", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:32"}, "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-9f0dac73757965c3", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/math-tools.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/math-tools.ts:184"}, "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-9ae1831da2a485ce", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/action-executor-tools.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/action-executor-tools.ts:85"}, "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-e94bcc2201c53cef", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/product-tools.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/product-tools.ts:32"}, "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-95f055b1ba09f92a", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/external-research-tools.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/external-research-tools.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-df57c2ae66a12fff", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/maestro-intelligence-tools.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/maestro-intelligence-tools.ts:32"}, "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-1a7f08e4733d18ac", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/customer-tools.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/customer-tools.ts:32"}, "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-03a219ec99a17bdf", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/churn-tools.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/churn-tools.ts:74"}, "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-5b1c5a26b558dd24", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/analytics-tools.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/analytics-tools.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-1bdbfa3ece98f43d", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/forecasting-tools.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/forecasting-tools.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-9d0e007705fd99b1", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/base-agent.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/base-agent.ts:58"}, "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-5640c89b4eed2469", "name": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/orchestrator.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/orchestrator.ts:50"}, "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-0b1eda6a80053209", "name": "Stray `console.log` in TS/JS \u2014 lib/db/sales-db.ts:528", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/sales-db.ts:528"}, "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-3f2461e52df8d89e", "name": "Stray `console.log` in TS/JS \u2014 lib/db/controlloVideoDB.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/controlloVideoDB.ts:63"}, "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-c0b6489c587e19d1", "name": "Stray `console.log` in TS/JS \u2014 lib/db/inventoryVideoDB.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/inventoryVideoDB.ts:63"}, "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-ff563ef65734a59a", "name": "Stray `console.log` in TS/JS \u2014 lib/db/pickingDB.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/pickingDB.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-9bc7225a61b6f88b", "name": "Stray `console.log` in TS/JS \u2014 lib/store/appStore.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/store/appStore.ts:14"}, "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-a17103afc0f329bd", "name": "Stray `console.log` in TS/JS \u2014 lib/store/authStore.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/store/authStore.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-b8b4b0fd159e225f", "name": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/auth-service.ts:89", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/auth-service.ts:89"}, "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-aa701ffb18c182ad", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/auth-service.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/auth-service.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-03c18eca940d8f84", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/sales-analyzer.ts:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/sales-analyzer.ts:196"}, "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-f347fda927e799f5", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/ai-prediction-engine.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/ai-prediction-engine.ts:156"}, "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-27c178ee03ab6cf8", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/data-service.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/data-service.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-c27c4cdeca47c536", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/prediction-engine.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/prediction-engine.ts:146"}, "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-f6fe8bca09f4c2dc", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/odoo-integration.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/odoo-integration.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-0e0985c7075a57c2", "name": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/smart-alert-system.ts:299", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/smart-alert-system.ts:299"}, "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-b6497042ee645bde", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/smart-alert-system.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/smart-alert-system.ts:171"}, "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-2f378c637c598bac", "name": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/cron-service.ts:132", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/cron-service.ts:132"}, "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-cf693f0e838bcdd7", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/cron-service.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/cron-service.ts:23"}, "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-025f24ee48671c8f", "name": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/lead-time-analyzer.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/lead-time-analyzer.ts:124"}, "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-68c94950248b374c", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/reply-generator.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/reply-generator.ts:143"}, "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-32954440cd554a97", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-summarizer.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-summarizer.ts:124"}, "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-d023961cbf2c9d51", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/embedding-service.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/embedding-service.ts:104"}, "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-b2bf29afc88cf30e", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/gmail-client.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/gmail-client.ts:85"}, "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-553d54cd56817425", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-classifier.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-classifier.ts:165"}, "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-4b76869c1b7d7c20", "name": "TODO/FIXME marker in shipping code \u2014 lib/email-ai/autonomous-agent.ts:430", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/email-ai/autonomous-agent.ts:430"}, "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-14ced140ad01d5ee", "name": "Stray `console.log` in TS/JS \u2014 lib/email-ai/autonomous-agent.ts:349", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/autonomous-agent.ts:349"}, "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-243d178ff1542c2e", "name": "Stray `console.log` in TS/JS \u2014 lib/registro-cassaforte/reolink-service.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/registro-cassaforte/reolink-service.ts:106"}, "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-45ac5f16f1aef352", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/generate-recipes-11-20.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/generate-recipes-11-20.js:87"}, "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-7dba777625c51c67", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.ts:348", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.ts:348"}, "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-12de1f94d8bc1525", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-article-direct.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-article-direct.ts:55"}, "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-a08d2298cb9213df", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.ts:125"}, "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-87ad28f87cdc594a", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-winning-model.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-winning-model.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-6a783a971bba929d", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.ts:348", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.ts:348"}, "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-19244c61f95646f7", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-376.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-376.ts:51"}, "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-85f2f1c6adbb3d60", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.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-3a153c991d2df90a", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.ts:51"}, "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-553f23a2b58ac3bc", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js:51"}, "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-9adc17c4de904905", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:66"}, "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-df07572efe435398", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-article-347.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-article-347.ts:51"}, "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-a99d8f25868756c7", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-115.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-115.ts:5"}, "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-28f15ac4608bccfe", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:289"}, "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-609986530b7231d5", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.ts:28"}, "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-1063cf475fad92c5", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-translations-115.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-translations-115.ts:8"}, "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-87d16c725180c42d", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:81"}, "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-8117f46dbf46f046", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-german-keywords.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-german-keywords.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-8dfde8fdef16d790", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-53-60.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-53-60.ts:167"}, "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-aa2e1e7a7af48865", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.ts:126"}, "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-d79087b15dce4df7", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.ts:124"}, "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-4acc9c8a79b48442", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.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-e62328fa1e9baaa9", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:209"}, "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-a7a146c129d6c0e4", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v6.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v6.ts:182"}, "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-dbe67db4e8177e55", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-12-20.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-12-20.ts:21"}, "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-987ffd2d7d804254", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts:127"}, "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-e8708e2b2b6e3341", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-115.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-115.ts:13"}, "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-5e74d53c45429209", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:263"}, "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-371a3e197cf192c2", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-43-50.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-43-50.ts:167"}, "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-751240bfdbfffc11", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-translations-116.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-translations-116.ts:13"}, "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-52fa0ff0a4e24171", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:156"}, "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-4b107cab9aebe89f", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-public-user.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-public-user.ts:74"}, "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-e2daa685d5bbf5ee", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-german-419.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-german-419.ts:51"}, "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-bde0b78dacc660ca", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:214"}, "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-784ca42198f5ffdb", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.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-68c1a09e39dce9c0", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-users.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-users.ts:54"}, "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-1216f455427257b1", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:131"}, "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-4350feebdda83059", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v2.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v2.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-3706ccbaefd9dd20", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-geolocation.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-geolocation.ts:93"}, "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-06f0784f02e865ed", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-fixed.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-fixed.ts:163"}, "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-f05ba3c62619df1f", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-products-seo.ts:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-products-seo.ts:280"}, "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-d50bec713bf340b8", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fetch-all.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fetch-all.ts:87"}, "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-ca9c7369b668e6cb", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:68"}, "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-837dcdc17322f2bb", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/manual-test-article-1.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/manual-test-article-1.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-85f590e115a909ca", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:101"}, "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-244b195826a52fae", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.ts:51"}, "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-4516b98e845c64b1", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/regenerate-incomplete-articles.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/regenerate-incomplete-articles.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-84a4424d9b8bbf58", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-schema-products.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-schema-products.ts:207"}, "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-f7d08c9de27a412b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:55"}, "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-6c15bb54051f4695", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-translations.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-translations.ts:51"}, "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-da93bf56a8009892", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:130"}, "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-e9743ee61d947f29", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-30-articles.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-30-articles.ts:315"}, "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-536986158ab99f21", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-segments.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-segments.ts:54"}, "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-6b128b1f481fdcaa", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:103"}, "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-a4959cbc80eb4861", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-420.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-420.ts:51"}, "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-78fe7dfad3327992", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-article-properly.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-article-properly.ts:39"}, "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-2b63a1410ac4bcf4", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:87"}, "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-c55e8ed6940815bb", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v7.ts:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v7.ts:253"}, "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-d15e57b3d9ae4a9c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-translation-method.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-translation-method.ts:12"}, "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-11ed8bf7680cc231", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-extraction.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-extraction.ts:42"}, "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-bb6cffaf9bd2efc2", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:117"}, "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-bcf6dd80c939728b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.ts:17"}, "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-9baaa1efd5ac1156", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:234"}, "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-a568e55011b8a2f5", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.ts:75"}, "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-b5065a03cdf90b75", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations.ts:111"}, "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-0214cb61df1c9269", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:144"}, "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-5f1ff96080c8564d", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-perfect.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-perfect.ts:61"}, "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-13825e7cccf98370", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article.ts:41"}, "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-9f1b6478e2616909", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:87"}, "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-e9385142923b93ee", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-89.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-89.ts:9"}, "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-017a6279f209f599", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.ts:70"}, "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-6caafca2902deb03", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:128"}, "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-17de9aebc9a880c4", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-random-articles.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-random-articles.ts:51"}, "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-673a1c3c7a561270", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:143"}, "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-1dabdbaad36881ec", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inject-shop-button.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inject-shop-button.ts:109"}, "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-ace3d3950027f5e3", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:79"}, "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-819c3955152fff81", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-companies-taxes.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-companies-taxes.ts:11"}, "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-8c25e0bea79a217c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-55-60.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-55-60.ts:144"}, "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-e9c216719f374bc3", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-helpdesk.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-helpdesk.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-a812a3eaa7a26fdf", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.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-889c6b46c348c8cb", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:108"}, "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-ba32137739d36e2a", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-homepage-seo.ts:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-homepage-seo.ts:150"}, "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-fad1c45946927308", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.ts:330", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.ts:330"}, "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-68114b756cf0347d", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-random-articles.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-random-articles.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-6bd070940ae14c24", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.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-28ccdf6ea03d371b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v5.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v5.ts:116"}, "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-92f629416d74a8d8", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-60-articles.ts:541", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-60-articles.ts:541"}, "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-aeba715536e709c7", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-article-115.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-article-115.ts:17"}, "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-4ea30c2395ad1d75", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.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-05cae18716e733fc", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicates.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicates.ts:52"}, "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-430ea0891584dc06", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:58"}, "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-07d2cb4160b71879", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.ts:61"}, "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-005006793c6e800d", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.ts:52"}, "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-b431f215ac2db154", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-articles.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-articles.ts:9"}, "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-0cdba359a0ba7e74", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:137"}, "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-19bf833502334e95", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-fix-article-1.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-fix-article-1.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-640d3abc894a6234", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-shop-settings.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-shop-settings.ts:46"}, "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-5b2670530224703a", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-update-field-translations.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-update-field-translations.ts:14"}, "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-62333fdee30ee90b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-translatable-fields.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-translatable-fields.ts:51"}, "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-9a6d3ca1a546c814", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-article.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-article.ts:51"}, "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-9ccc873a36719519", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:104"}, "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-f1166ba57be42cc2", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:130"}, "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-9ae0d8f506ba62dd", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-translations.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-translations.ts:9"}, "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-2d4598d97dc244cc", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-action-plan.ts:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-action-plan.ts:205"}, "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-5c3325048e54a714", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:191"}, "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-8d7ee58556ec736b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.ts:11"}, "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-3c278d21146aef16", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:64"}, "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-2ac92ae5e3fc68d8", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:315"}, "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-d877170f8542ca64", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:118"}, "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-9efbe6f377bd863f", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.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-aadca699462f84c3", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles-final.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles-final.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-9a3f4877b37fbc92", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.ts:51"}, "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-009e22c75eeac53c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-translation-model.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-translation-model.ts:9"}, "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-cc1d5c8853eee516", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-final.ts:355", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-final.ts:355"}, "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-88e5a6afd14a1fd0", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-multiple-articles.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-multiple-articles.ts:71"}, "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-dc72127efcb8d463", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:160"}, "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-ceb4a19ef0bd1fda", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.ts:93"}, "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-1e2336a907a66f24", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.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-3f9b0ba9084a0242", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.ts:11"}, "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-83e6fc11a1bb2a61", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-articles-03-20.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-articles-03-20.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-b3b8addf69218dd4", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:210"}, "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-388e4f2bad0a7cf2", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:459", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:459"}, "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-138149d5f519cad3", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:332", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:332"}, "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-7ed7256a6cdece53", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.ts:51"}, "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-a6e70d1a8c2a7a5c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:104"}, "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-ea56c9b63cb345c6", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:208"}, "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-3877056953c2d32e", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:83"}, "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-4c3852714b13ab4c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v3.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v3.ts:155"}, "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-5287edcd56488182", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-mozzarella.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-mozzarella.ts:45"}, "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-0947df86f6c548bf", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:55"}, "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-ba8c612535f00f92", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.ts:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.ts:218"}, "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-beaf315028a260ca", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:95"}, "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-3a38f11739bf1eb1", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:88"}, "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-3be9d167eb6fa963", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.ts:47"}, "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-5716c55eb8d2c99c", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.ts:18"}, "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-3fb22771d7183b0a", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/cli.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/cli.ts:38"}, "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-60ad3e9b161d2209", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/rag/embedding-service.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/rag/embedding-service.ts:61"}, "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-d4d2746cf0b41d0b", "name": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/agents/base-agent.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/agents/base-agent.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-39032d6cd5acc8e3", "name": "Stray `console.log` in TS/JS \u2014 hooks/useMaestroAI.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useMaestroAI.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-018844bc429af8b1", "name": "Stray `console.log` in TS/JS \u2014 hooks/useAppAccess.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useAppAccess.ts:55"}, "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-8f2b3d12b75c3f3b", "name": "Stray `console.log` in TS/JS \u2014 hooks/useInventoryVideoRecorder.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useInventoryVideoRecorder.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-187bd8268b0ca732", "name": "Stray `console.log` in TS/JS \u2014 hooks/useVideoRecorder.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useVideoRecorder.ts:98"}, "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-22dfdd3cad0c4b7e", "name": "TODO/FIXME marker in shipping code \u2014 hooks/useMaestroChat.ts:205", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 hooks/useMaestroChat.ts:205"}, "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-bde18e68d93b3da9", "name": "Stray `console.log` in TS/JS \u2014 public/sw.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:15"}, "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-df3903983fa3b94c", "name": "Stray `console.log` in TS/JS \u2014 public/lapa-chat-embed.js:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/lapa-chat-embed.js:316"}, "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-6b2a0ec137719f65", "name": "TODO/FIXME marker in shipping code \u2014 public/service-worker-smart-ordering.js:188", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 public/service-worker-smart-ordering.js:188"}, "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-589b6851523b4b6b", "name": "Stray `console.log` in TS/JS \u2014 public/service-worker-smart-ordering.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/service-worker-smart-ordering.js:21"}, "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-3b9ee217e5769392", "name": "Stray `console.log` in TS/JS \u2014 disabled-routes/agents-status/route.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 disabled-routes/agents-status/route.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-2d5075420dd50769", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr.js: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-8ad73716a74d48ee", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/queue.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/queue.js:55"}, "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-c51717ee7d4b5b30", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/face-recognition.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/face-recognition.js: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-6fda8f6d48d43b1c", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier-ollama.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier-ollama.js:49"}, "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-909b7ad5c3677a35", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier.js:55"}, "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-56137aa7477e2003", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier.js: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-748b5581e1f9eb73", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier-example.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier-example.js:90"}, "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-8128e8a18c4c66c5", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr-simple.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr-simple.js:24"}, "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-4d60b9446f94c4a0", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/index.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/index.js:28"}, "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-6a39eaf765bfed37", "name": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/banknote-recognition.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/banknote-recognition.js: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-3a04335357d5aa10", "name": "Dockerfile runs as root: jetson-deployment/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: jetson-deployment/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23a735b5f83092f0", "name": "Docker base image is tag-pinned but not digest-pinned: nvcr.io/nvidia/l4t-base:r35.2.1", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: nvcr.io/nvidia/l4t-base:r35.2.1"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69c1928762417645", "name": "Insecure pattern 'dangerous_innerhtml' in staging-test.html:1", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in staging-test.html:1"}, "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-924d64c5bf27c250", "name": "Insecure pattern 'dangerous_innerhtml' in staging-page.html:1", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in staging-page.html:1"}, "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-319448e8d3c0d33f", "name": "Insecure pattern 'direct_innerhtml_assignment' in pdf-reader-local/public/index.html:283", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pdf-reader-local/public/index.html:283"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb1af5d92de06d78", "name": "Insecure pattern 'subprocess_shell_true' in scripts/infra-collector.py:72", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in scripts/infra-collector.py:72"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba86c702fe926c14", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/super-dashboard/sales-radar-activity/ActivityMap.tsx:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/super-dashboard/sales-radar-activity/ActivityMap.tsx:117"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d2a537589218abc", "name": "Insecure pattern 'dangerous_innerhtml' in app/il-mio-hub/page.tsx:345", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/il-mio-hub/page.tsx:345"}, "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-028b1a9aa59df548", "name": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/AttachmentViewer.tsx:187", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/AttachmentViewer.tsx:187"}, "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-0d5b1e2f53b91f8a", "name": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/DocumentCard.tsx:94", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/DocumentCard.tsx:94"}, "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-eb90eaa96b7408b8", "name": "Insecure pattern 'cors_wildcard' in app/api/chat-gestionale/route.ts:916", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api/chat-gestionale/route.ts:916"}, "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-fed6b1675a141517", "name": "Insecure pattern 'cors_wildcard' in app/api/lapa-agents/chat/route.ts:18", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api/lapa-agents/chat/route.ts:18"}, "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-d333eaafba549317", "name": "Insecure pattern 'cors_wildcard' in app/api/chat-venditori/route.ts:1425", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api/chat-venditori/route.ts:1425"}, "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-c21b4de4819e2029", "name": "Insecure pattern 'cors_wildcard' in app/api/contacts/extract/route.ts:158", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api/contacts/extract/route.ts:158"}, "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-76101b3969ab5909", "name": "Insecure pattern 'cors_wildcard' in app/api/debug/search-all-contacts/route.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api/debug/search-all-contacts/route.ts:8"}, "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-56f32537d614be69", "name": "Insecure pattern 'dangerous_innerhtml' in app/silvano/page.tsx:542", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/silvano/page.tsx:542"}, "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-c757889b3c17f4b7", "name": "Possible secret in app/import-movimenti-ubs/README.md", "shortDescription": {"text": "Possible secret in app/import-movimenti-ubs/README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-67e52147fe8ae9e9", "name": "Insecure pattern 'document_write' in app/time-attendance/admin/page.tsx:322", "shortDescription": {"text": "Insecure pattern 'document_write' in app/time-attendance/admin/page.tsx:322"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fabd633f72277e10", "name": "Insecure pattern 'local_storage_auth_token' in lib/odoo/inventoryClient.ts:179", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in lib/odoo/inventoryClient.ts:179"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9343d35fbbf65c77", "name": "Insecure pattern 'exec_used' in lib/agents/ssh-exec.ts:14", "shortDescription": {"text": "Insecure pattern 'exec_used' in lib/agents/ssh-exec.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac19fb3e34746360", "name": "Insecure pattern 'node_child_process' in lib/agents/ssh-exec.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in lib/agents/ssh-exec.ts:1"}, "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-b92051eebb56ef83", "name": "Insecure pattern 'node_child_process' in lib/services/contact-extraction-service.ts:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in lib/services/contact-extraction-service.ts:7"}, "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-45b25ac5f5a5b36b", "name": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:288", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:288"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e93863c4bd458936", "name": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/setup-chatbot-complete.ts:174", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/setup-chatbot-complete.ts:174"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-73062627c1ac9024", "name": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/update-chatbot-v2.ts:213", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/update-chatbot-v2.ts:213"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c5b9046a27a6fcb", "name": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-all-articles-final.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-all-articles-final.ts:9"}, "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-9c0ea156931b20bb", "name": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-articles-03-20.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-articles-03-20.ts:8"}, "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-4d6e0cdd28cf3358", "name": "Possible secret in odoo_ubs_banking/README.md", "shortDescription": {"text": "Possible secret in odoo_ubs_banking/README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5acf8f0c15953c13", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-chat-embed.js:374", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-chat-embed.js:374"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8af5df050189becc", "name": "Insecure pattern 'local_storage_auth_token' in public/lapa-chat-embed.js:444", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in public/lapa-chat-embed.js:444"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b59d54f9383efcea", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-ai-widget.js:553", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-ai-widget.js:553"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c62ab77265aa7ed", "name": "Insecure pattern 'node_child_process' in jetson-deployment/server/face-recognition.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/face-recognition.js:10"}, "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-cff7826416331925", "name": "Insecure pattern 'node_child_process' in jetson-deployment/server/ocr-simple.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/ocr-simple.js: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-fce6281f30562a44", "name": "Insecure pattern 'node_child_process' in jetson-deployment/server/index.js:772", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/index.js:772"}, "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-eb48cfe723f34860", "name": "Insecure pattern 'cors_wildcard' in jetson-deployment/server/index.js:49", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in jetson-deployment/server/index.js:49"}, "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-ce6c3c937c254c0b", "name": "Very large file: app/scan-contatto/page.tsx (1309 lines)", "shortDescription": {"text": "Very large file: app/scan-contatto/page.tsx (1309 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-a67bf725d3b20ee2", "name": "Very large file: app/social-ai-studio/page.tsx (3702 lines)", "shortDescription": {"text": "Very large file: app/social-ai-studio/page.tsx (3702 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-a1ea177dca06eeed", "name": "Very large file: app/super-dashboard/product-story/page.tsx (1493 lines)", "shortDescription": {"text": "Very large file: app/super-dashboard/product-story/page.tsx (1493 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-ba20e1d3abd35f4d", "name": "Very large file: app/super-dashboard/sales-radar-activity/page.tsx (1174 lines)", "shortDescription": {"text": "Very large file: app/super-dashboard/sales-radar-activity/page.tsx (1174 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-755a266c5684de50", "name": "Very large file: app/catalogo-venditori/review-prices/[orderId]/page.tsx (2228 lines)", "shortDescription": {"text": "Very large file: app/catalogo-venditori/review-prices/[orderId]/page.tsx (2228 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-484436e8067ffc27", "name": "Very large file: app/sales-radar/page.tsx (3486 lines)", "shortDescription": {"text": "Very large file: app/sales-radar/page.tsx (3486 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-82365d3d970ce240", "name": "Very large file: app/convalida-residui/page.tsx (4458 lines)", "shortDescription": {"text": "Very large file: app/convalida-residui/page.tsx (4458 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-633fe909a62e0bb9", "name": "Very large file: app/api/scan-contatto-complete/route.ts (1303 lines)", "shortDescription": {"text": "Very large file: app/api/scan-contatto-complete/route.ts (1303 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-fa957b8daf942249", "name": "Very large file: app/api/chat-venditori/route.ts (1430 lines)", "shortDescription": {"text": "Very large file: app/api/chat-venditori/route.ts (1430 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-972c141ba403ee02", "name": "Very large file: app/api/product-creator/create-products/route.ts (1345 lines)", "shortDescription": {"text": "Very large file: app/api/product-creator/create-products/route.ts (1345 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-c353525ca89959c8", "name": "Very large file: app/lapa-ai-agents/page.tsx (1494 lines)", "shortDescription": {"text": "Very large file: app/lapa-ai-agents/page.tsx (1494 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-5805a6a948fb783c", "name": "Very large file: app/ordini-smart-v2/page.tsx (1988 lines)", "shortDescription": {"text": "Very large file: app/ordini-smart-v2/page.tsx (1988 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-9f811425e0c050fb", "name": "Very large file: app/prelievo-zone/page.tsx (2222 lines)", "shortDescription": {"text": "Very large file: app/prelievo-zone/page.tsx (2222 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-d6af11c18668e49e", "name": "Very large file: app/controllo-diretto/page.tsx (1519 lines)", "shortDescription": {"text": "Very large file: app/controllo-diretto/page.tsx (1519 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-4fe1ea032e0eed37", "name": "Very large file: app/controllo-prezzi/page.tsx (1419 lines)", "shortDescription": {"text": "Very large file: app/controllo-prezzi/page.tsx (1419 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-fb915dd8c7a1239a", "name": "Very large file: app/controllo-prezzi/analisi-mensile/page.tsx (1178 lines)", "shortDescription": {"text": "Very large file: app/controllo-prezzi/analisi-mensile/page.tsx (1178 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-009791851449ab28", "name": "Very large file: app/email-ai-monitor/page.tsx (1851 lines)", "shortDescription": {"text": "Very large file: app/email-ai-monitor/page.tsx (1851 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-eb0a8faa855c2e9c", "name": "Very large file: app/smart-route-ai/page.tsx (2069 lines)", "shortDescription": {"text": "Very large file: app/smart-route-ai/page.tsx (2069 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-69cf41b2e3e461ef", "name": "Very large file: app/delivery/page.tsx (4868 lines)", "shortDescription": {"text": "Very large file: app/delivery/page.tsx (4868 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-21747135ba753bde", "name": "Very large file: app/agenti-ia-gestionale/page.tsx (1941 lines)", "shortDescription": {"text": "Very large file: app/agenti-ia-gestionale/page.tsx (1941 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-3d979bee6c6a7ccc", "name": "Very large file: app/prodotti-preordine/page.tsx (1605 lines)", "shortDescription": {"text": "Very large file: app/prodotti-preordine/page.tsx (1605 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-f5546965eaf90c91", "name": "Very large file: app/scadenze/page.tsx (1254 lines)", "shortDescription": {"text": "Very large file: app/scadenze/page.tsx (1254 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-59ef570cf6b17025", "name": "Very large file: app/maestro-ai/customers/[id]/page.tsx (1056 lines)", "shortDescription": {"text": "Very large file: app/maestro-ai/customers/[id]/page.tsx (1056 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-97e15d9047887586", "name": "Very large file: app/ubicazioni/page.tsx (1391 lines)", "shortDescription": {"text": "Very large file: app/ubicazioni/page.tsx (1391 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-1f5582c475ae7ab8", "name": "Very large file: app/time-attendance/page.tsx (1614 lines)", "shortDescription": {"text": "Very large file: app/time-attendance/page.tsx (1614 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-cb3c340745a80d9e", "name": "Very large file: lib/lapa-agents/orchestrator.ts (6171 lines)", "shortDescription": {"text": "Very large file: lib/lapa-agents/orchestrator.ts (6171 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-83770bd9b7c8b3bf", "name": "Very large file: lib/lapa-agents/agents/orders-agent.ts (2041 lines)", "shortDescription": {"text": "Very large file: lib/lapa-agents/agents/orders-agent.ts (2041 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": "47 test file(s) for 1312 source file(s) (ratio 0.04). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98eecf7aa017d4cb", "name": "96 TODO/FIXME markers", "shortDescription": {"text": "96 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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-56c91ce516455b9c", "name": "Node manifest has dependencies but no lockfile: jetson-deployment/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: jetson-deployment/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 8030 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 492 placeholder/mock markers across 180 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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, lockfile. 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10e97b05629f9e9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test-api-laura.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test-api-laura.ts:20"}, "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-15216a3f6ab13f52", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:157", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:157"}, "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-bf509e50eaec546f", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/catalogo-foto-worker.py:38", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/catalogo-foto-worker.py:38"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-72a570298da0d417", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/layout/AppGrid.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/layout/AppGrid.tsx:33"}, "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-4d6178c90c58ce04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/blog/BatchBlogImageModal.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/blog/BatchBlogImageModal.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-daad9dd1e87f330d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/LotManager.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/LotManager.tsx:76"}, "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-ef5d6822b57b09d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/InventoryAIModal.tsx:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/InventoryAIModal.tsx:222"}, "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-59e4ea68e01c6b59", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/WasteTransferModal.tsx:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/WasteTransferModal.tsx:179"}, "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-192d1e12ee3b3962", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ShareMenu.tsx:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ShareMenu.tsx:106"}, "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-88e69d111b962c7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ProductSelector.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ProductSelector.tsx:63"}, "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-1112e10c83e30d9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/InteractionModal.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/InteractionModal.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-06c50c298b00c096", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/VehicleStockModal.tsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/VehicleStockModal.tsx:99"}, "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-f68226a6e94e2921", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/CustomerSearchInput.tsx:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/CustomerSearchInput.tsx: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-c84a403f95dd91e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/DeliveryTracker.tsx:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/DeliveryTracker.tsx:48"}, "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-63109f595db3cbf0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/ProductCard.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/ProductCard.tsx:83"}, "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-266c8eefff8923db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:73"}, "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-272f98d3afd4b98c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/AIImageModal.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/AIImageModal.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-26fe778990e4e02a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/infra-monitor/page.tsx:464", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/infra-monitor/page.tsx:464"}, "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-e4259988c415925a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-prodotti/page.tsx:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-prodotti/page.tsx:97"}, "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-b4daec6a387a0126", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-gestionale/page.tsx:577", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-gestionale/page.tsx:577"}, "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-8283ce81c9c2c461", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scan-contatto/page.tsx:200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scan-contatto/page.tsx:200"}, "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-5fc2c4edd5d0c6ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/page.tsx:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/page.tsx:240"}, "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-3cd798ee48a9c24d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/autopilot/page.tsx:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/autopilot/page.tsx:142"}, "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-68ee8311c9d2a28b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/review-manager/[businessId]/settings/page.tsx:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/review-manager/[businessId]/settings/page.tsx:104"}, "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-be0e83bce813a2ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/product-story/page.tsx:287", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/product-story/page.tsx:287"}, "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-502231c0e8916f12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:220", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:220"}, "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-73cd15cce3ed9203", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/page.tsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/page.tsx:73"}, "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-81cdeb34e0940530", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:207", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:207"}, "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-e0819544ac3ae955", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/AIOrderInput.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/AIOrderInput.tsx:110"}, "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-cd6026c011c7925f", "name": "Commented-code block (7 lines) in app/catalogo-venditori/review-prices/[orderId]/page.tsx:994", "shortDescription": {"text": "Commented-code block (7 lines) in app/catalogo-venditori/review-prices/[orderId]/page.tsx:994"}, "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-668120fd16b5aef5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:134"}, "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-b75e30fbe564d80f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/sales-radar/page.tsx:565", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/sales-radar/page.tsx:565"}, "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-678f7efe75f09ce0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario-vocale/page.tsx:312", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario-vocale/page.tsx:312"}, "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-f36df0a94f203f3f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/did-stream/route.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/did-stream/route.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-432c7b5d71b590da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/save-conversation/route.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/save-conversation/route.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-379d7b2eecf27335", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/tasks/route.ts:210", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/tasks/route.ts:210"}, "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-0ece87aaeb81f246", "name": "Commented-code block (6 lines) in app/api/scan-contatto/example-usage.ts:430", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/scan-contatto/example-usage.ts:430"}, "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-c217367462490727", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto/example-usage.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto/example-usage.ts:19"}, "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-3d177a591790ec94", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/update-quantity/route.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/update-quantity/route.ts:33"}, "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-7c850cfd1b65f900", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/location/route.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/location/route.ts:76"}, "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-7ba6a0932a99ceaa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/products/route.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/products/route.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-739efc53b76cdf45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/create-van-returns/route.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/create-van-returns/route.ts:59"}, "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-e55d9fe4208c95fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/search-furgoni-locations/route.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/search-furgoni-locations/route.ts: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-1affbb0b77947dbc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/review-manager/oauth/facebook/callback/route.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/review-manager/oauth/facebook/callback/route.ts:59"}, "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-2ce7cbe3b8dc5915", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/super-dashboard/conto-economico/route.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/super-dashboard/conto-economico/route.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-8bf406587499dc30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/il-mio-hub/route.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/il-mio-hub/route.ts:11"}, "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-56976dca3fb620e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-venditori/ai-process-order/route.ts:228", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-venditori/ai-process-order/route.ts:228"}, "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-abf031d6b6d6c6b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/chat/route.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/chat/route.ts: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-52e0764823bb4ac2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/realtime/route.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/realtime/route.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-1d20430772d9aa0e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts: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-ef350115b49ddbf5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo-proxy/route.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo-proxy/route.ts:11"}, "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-04b00e64025bb723", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo/post-message/route.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo/post-message/route.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-0deadce269deb8a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/dashboard/route.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/dashboard/route.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-c292cce50a88ee01", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/generate-order/route.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/generate-order/route.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-2ba73998e27b9063", "name": "Commented-code block (5 lines) in app/api/recupero-clienti/route.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/recupero-clienti/route.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-5122e3b7dbef34b0", "name": "Legacy-named symbol `prepare_values_v2` in app/api/lapa-agents/debug-ticket-create/route.ts:94", "shortDescription": {"text": "Legacy-named symbol `prepare_values_v2` in app/api/lapa-agents/debug-ticket-create/route.ts:94"}, "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-af5ec36512c63a45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/missing-products/route.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/missing-products/route.ts:100"}, "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-4b432161eb9aef00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/arrivo-merce/classify-attachments/route.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/arrivo-merce/classify-attachments/route.ts:95"}, "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-da190fa1b6714f22", "name": "Legacy-named symbol `daysOld` in app/api/arrivo-merce/get-po-attachments/route.ts:117", "shortDescription": {"text": "Legacy-named symbol `daysOld` in app/api/arrivo-merce/get-po-attachments/route.ts:117"}, "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-22c8f0d8b7669782", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/counts/route.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/counts/route.ts:36"}, "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-59f3391371d15ad5", "name": "Commented-code block (5 lines) in app/api/controllo-prezzi/block-requests/route.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/controllo-prezzi/block-requests/route.ts:88"}, "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-88fcd9186fe3c769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/products/route.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/products/route.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-3f9d642435622b71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto-complete/route.ts:1233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto-complete/route.ts:1233"}, "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-936ffadbfe12295f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/transfer/route.ts:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/transfer/route.ts: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-ce17c21a7f741bec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/location-products/route.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/location-products/route.ts:59"}, "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-dbcd9722ed5709ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/fattura/[id]/pdf/route.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/fattura/[id]/pdf/route.ts:20"}, "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-09a7e6f6f4d85fcc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/ordine/[id]/pdf/route.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/ordine/[id]/pdf/route.ts:20"}, "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-ae66ab01153112d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/smart-route-ai/vehicles/route.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/smart-route-ai/vehicles/route.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-b934ec314fc9670d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/print/route.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/print/route.ts:11"}, "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-bc27e0be96bb08e5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/calculate-eta/route.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/calculate-eta/route.ts:27"}, "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-ff19b140caa01119", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/optimize-route/route.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/optimize-route/route.ts:48"}, "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-1d29871d12840a75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/avatar-generator/generate-video/route.ts:422", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/avatar-generator/generate-video/route.ts:422"}, "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-6f5fea13f7accec6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/list/route.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/list/route.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-151b93df36c323ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-sales-order-id/route.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-sales-order-id/route.ts:9"}, "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-d5b9ce06b6f11cb5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-picking-id/route.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-picking-id/route.ts:9"}, "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-966d5d7f32769832", "name": "Commented-code block (6 lines) in app/api/scarichi-parziali/process-product/route.ts:85", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/scarichi-parziali/process-product/route.ts:85"}, "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-63d330a7e7efb5ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/create-return/route.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/create-return/route.ts:9"}, "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-e5b567e721bd95e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/gestione-scadenze/save-expiry/route.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/gestione-scadenze/save-expiry/route.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-56d399e017c05e29", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-story/route.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-story/route.ts:111"}, "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-7962dc6814434959", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/product-intelligence/route.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/product-intelligence/route.ts:22"}, "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-36e2b01a949c5d5c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/generate-post/route.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/generate-post/route.ts:103"}, "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-997cdf4f1c56b93e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/approve/route.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/approve/route.ts:26"}, "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-6b8551ba8b74a304", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-youtube/route.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-youtube/route.ts: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-0ed45bca1d769b0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-recipe/route.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-recipe/route.ts:106"}, "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-d707ded23a869472", "name": "Commented-code block (5 lines) in app/api/social-ai/publish-story/route.ts:346", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-story/route.ts:346"}, "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-9a86faefab6d721b", "name": "Commented-code block (5 lines) in app/api/social-ai/publish-to-odoo/route.ts:270", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-to-odoo/route.ts:270"}, "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-0dcb1ebb2795e994", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-to-odoo/route.ts:226", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-to-odoo/route.ts:226"}, "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-96947002655e6938", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/check-video-status/route.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/check-video-status/route.ts:109"}, "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-a67b312c45a99302", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/free-article/route.ts:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/free-article/route.ts:138"}, "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-8c0433b16ea37d30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/food-curiosity/route.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/food-curiosity/route.ts: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-c896645ce38cf6b6", "name": "Commented-code block (5 lines) in app/api/social-ai/publish-recipe/route.ts:269", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-recipe/route.ts:269"}, "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-140bb32d021cee76", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/test-lot-trace/route.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/test-lot-trace/route.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-3cb9bffa72600ac1", "name": "Commented-code block (5 lines) in app/api/maestro/analytics/route.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/maestro/analytics/route.ts:124"}, "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-df1a108888e8407e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/create-sample-order/route.ts:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/create-sample-order/route.ts:115"}, "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-ccf893254aebdcf8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/route.ts:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/route.ts: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-2ea88193e7867d1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:104"}, "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-5b53acb2e5a69aa6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:162", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:162"}, "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-ef92d84ac422cfbf", "name": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/route.ts:199", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/route.ts:199"}, "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-72359e3d9c894c05", "name": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/[id]/route.ts:232", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/[id]/route.ts:232"}, "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-5b738c263d17f262", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-lapa/products/route.ts:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-lapa/products/route.ts: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-e96976a94bb74c0c", "name": "Commented-code block (5 lines) in app/api/hr-payslip/route.ts:739", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/hr-payslip/route.ts:739"}, "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-ec541d54727500e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/hr-payslip/route.ts:280", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/hr-payslip/route.ts:280"}, "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-c83280bd3fc7e12b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/food-news/route.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/food-news/route.ts:61"}, "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-d17a5968c140f468", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/check-status/route.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/check-status/route.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-aef1a374773ba116", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:155"}, "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-570356b7a9e6a447", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/download/route.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/download/route.ts:29"}, "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-b7dd83a25fec43bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scadenze/transfer/route.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scadenze/transfer/route.ts:54"}, "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-a925f6483d5c54c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/products-catalog/route.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/products-catalog/route.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-3947df09661d0326", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/jetson/ocr/route.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/jetson/ocr/route.ts: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-f053f3894b75c0d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug/batch-fields/route.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug/batch-fields/route.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-70eec52ba24fe0db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug-move-line-fields/route.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug-move-line-fields/route.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-380d84863b6fb17a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/website-analytics/route.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/website-analytics/route.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-b6ac33e296cca177", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/transfer/route.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/transfer/route.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-c34a2e2b224d5869", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/check-product/route.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/check-product/route.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-6051e865660c310d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-products/route.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-products/route.ts:29"}, "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-7ab090e2d141e584", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-count/route.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-count/route.ts:27"}, "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-e07e147061a006a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/find-product/route.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/find-product/route.ts:29"}, "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-806494ff735c619b", "name": "Commented-code block (5 lines) in app/api/clienti/search/route.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/clienti/search/route.ts:113"}, "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-55579ac2d4f498a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/margini/example-frontend.tsx:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/margini/example-frontend.tsx:123"}, "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-44daeb7527e73e9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/generate-image/route.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/generate-image/route.ts:27"}, "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-b30bb76fb5fc2732", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/create-products/route.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/create-products/route.ts:76"}, "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-9300d6f04fbbb671", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/enrich-product/route.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/enrich-product/route.ts: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-a6cc08fd79efb4c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-foto/location-products/route.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-foto/location-products/route.ts:20"}, "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-e59cf1a2a8e00e46", "name": "Legacy-named symbol `is_legacy` in app/api/catalogo-foto/jobs/route.ts:84", "shortDescription": {"text": "Legacy-named symbol `is_legacy` in app/api/catalogo-foto/jobs/route.ts:84"}, "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-104101de5041891b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario/verifica/page.tsx:238", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario/verifica/page.tsx:238"}, "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-287e7f0c4226cb2c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-diretto/page.tsx:488", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-diretto/page.tsx:488"}, "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-0114121b7a02f311", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/page.tsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/page.tsx: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-05bfcbe2fde66052", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/ManageMissingProductsView.tsx:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/ManageMissingProductsView.tsx:115"}, "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-9fa19b31a28a7e94", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-prezzi/page.tsx:346", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-prezzi/page.tsx:346"}, "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-ffcffe40b65f29e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-buste-paga/page.tsx:347", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-buste-paga/page.tsx:347"}, "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-fee2bc66cb9bfdd0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/page.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/page.tsx:76"}, "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-76df9847cbcce28f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/dashboard/page.tsx:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/dashboard/page.tsx: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-b4d44bd8598dcd7b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/ordini/page.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/ordini/page.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-6c4d6df3224d20fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/clienti/page.tsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/clienti/page.tsx: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-4bb119689f58d444", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/smart-route-ai/page.tsx:533", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/smart-route-ai/page.tsx:533"}, "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-2b121a077b8f1f75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/delivery/page.tsx:821", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/delivery/page.tsx:821"}, "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-7e3621d72ba0d9a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scarichi-parziali/page.tsx:190", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scarichi-parziali/page.tsx:190"}, "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-189c66398eb74dbc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-venditori/page.tsx:585", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-venditori/page.tsx:585"}, "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-8785373c042ff0e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaRealTime.tsx:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaRealTime.tsx: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-5da4935eebc11f15", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx:91"}, "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-09b576df540f4339", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/ai-image-studio/page.tsx:330", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ai-image-studio/page.tsx:330"}, "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-e2d0fbc2ecc64603", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-scadenze/page.tsx:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-scadenze/page.tsx:165"}, "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-62e903dacab834d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-cadenze-fornitori/page.tsx:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-cadenze-fornitori/page.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-52553bdadcf497f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/ordini-fornitori/page.tsx:202", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ordini-fornitori/page.tsx:202"}, "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-2bb5d87ce2c9b829", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-visibilita-app/page.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-visibilita-app/page.tsx:76"}, "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-eac2e5fc1a45d3c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-ia-gestionale/page.tsx:338", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-ia-gestionale/page.tsx:338"}, "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-641e2ebc587bb611", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/catalogo/page.tsx:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/catalogo/page.tsx:171"}, "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-8c0df0b717287d36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/consegne/page.tsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/consegne/page.tsx:42"}, "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-0fda8bb96ff05f55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/fatture/page.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/fatture/page.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-4366d63457fa348e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/components/QuickActions.tsx:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/components/QuickActions.tsx:37"}, "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-3ea2f79ad75b9bbe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/page.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/page.tsx:86"}, "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-ceeb909d88c07272", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/nuovo/page.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/nuovo/page.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-60f7ff31c8f8ef8c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/carrello/page.tsx:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/carrello/page.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-772cd022750d5b88", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/page.tsx:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/page.tsx:41"}, "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-f6642d1e3fe2c7bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/admin/page.tsx:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/admin/page.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-14b218500a58b937", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/prelievo/page.tsx:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/prelievo/page.tsx:142"}, "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-77b24045a4390bb5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/prodotti-preordine/page.tsx:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/prodotti-preordine/page.tsx:145"}, "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-83735a4b7e4d6602", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabStatistiche.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabStatistiche.tsx:33"}, "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-0d3633dc17ceab64", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabErrori.tsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabErrori.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-47d3fc52072b0862", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/alerts/page.tsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/alerts/page.tsx:26"}, "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-b6f7c542ec2ef9bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scadenze/page.tsx:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scadenze/page.tsx:148"}, "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-3bca4f8d1fb0f649", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-arrivi/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-arrivi/page.tsx:108"}, "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-1eb8fcb97cb1cc23", "name": "Commented-code block (6 lines) in app/w/[slug]/[tavolo]/chat/page.tsx:88", "shortDescription": {"text": "Commented-code block (6 lines) in app/w/[slug]/[tavolo]/chat/page.tsx:88"}, "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-c37d52c14de925db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/orders/page.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/orders/page.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-106ad64a1a1640d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/customers/page.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/customers/page.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-9dfbbc0af88b62a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:105"}, "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-330effe672156725", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/customers/[id]/page.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/customers/[id]/page.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-cfcfcd59f221af5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/ubicazioni/page.tsx:402", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ubicazioni/page.tsx:402"}, "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-977f44614097c0ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/my-reviews/page.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/my-reviews/page.tsx:86"}, "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-9a02920332c13fb1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/page.tsx:455", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/page.tsx:455"}, "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-12a14e1efdc8bc86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/admin/page.tsx:429", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/admin/page.tsx:429"}, "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-da3aacd92c312830", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-foto/page.tsx:190", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-foto/page.tsx:190"}, "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-e05790dee1b8b83c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-xmlrpc.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-xmlrpc.ts:26"}, "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-03e19f76eb70876f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-client.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-client.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-dc398e19f6337d90", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/facebook.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/facebook.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-45d4821716a338f8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/tiktok.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/tiktok.ts:48"}, "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-c3b3ac502d3d2a78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/instagram.ts:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/instagram.ts:121"}, "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-2345561a45d17737", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/trustpilot.ts:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/trustpilot.ts:131"}, "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-e0987edad7692cba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/google.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/google.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-b88717c9ab4508ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/super-dashboard/hooks/useDashboardData.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/super-dashboard/hooks/useDashboardData.ts:92"}, "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-e96d2557e8e28d60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ai/autonomous-agent.ts:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ai/autonomous-agent.ts:136"}, "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-08893e516c3df7c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/auth/google-oauth.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/auth/google-oauth.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-5cd32427c7c6e266", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/odoo-helper.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/odoo-helper.ts:112"}, "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-595fa9a2c69bd81e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/admin-session.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/admin-session.ts:160"}, "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-ffa3007f5e1ef977", "name": "Commented-code block (9 lines) in lib/odoo/inventoryClient.ts:406", "shortDescription": {"text": "Commented-code block (9 lines) in lib/odoo/inventoryClient.ts:406"}, "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-393a172ad0df5434", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/inventoryClient.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/inventoryClient.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-8621a89aca3abefe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/client.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/client.ts:113"}, "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-9a22c809075177d3", "name": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/orchestrator.ts:4728", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/orchestrator.ts:4728"}, "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-e179ac45ed98e73b", "name": "Commented-code block (5 lines) in lib/lapa-agents/orchestrator.ts:1066", "shortDescription": {"text": "Commented-code block (5 lines) in lib/lapa-agents/orchestrator.ts:1066"}, "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-c12cea913cb4bd2c", "name": "Commented-code block (5 lines) in lib/lapa-agents/product-embedding-service.ts:154", "shortDescription": {"text": "Commented-code block (5 lines) in lib/lapa-agents/product-embedding-service.ts:154"}, "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-6d39699176075296", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/lapa-agents/agents/example-api-route.ts:175", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/lapa-agents/agents/example-api-route.ts:175"}, "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-d49ea3f563112857", "name": "Commented-code block (6 lines) in lib/lapa-agents/agents/products-agent.ts:242", "shortDescription": {"text": "Commented-code block (6 lines) in lib/lapa-agents/agents/products-agent.ts:242"}, "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-26f7241ed5f0eaee", "name": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/agents/invoices-agent.ts:34", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/agents/invoices-agent.ts:34"}, "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-6e1c604ce61f319a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/agents/whatsapp-api-proxy.ts:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/agents/whatsapp-api-proxy.ts:6"}, "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-c12229eb48abf9ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/suppliers/sync-suppliers-odoo.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/suppliers/sync-suppliers-odoo.ts:63"}, "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-97a1f23bcbe48995", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useSupplierCadence.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useSupplierCadence.ts: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-7423a97d1e1de8f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useOrderTimeline.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useOrderTimeline.ts:43"}, "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-e9a32f9c0223d754", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/web-search.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/web-search.ts: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-b43b5b9de60d4f9a", "name": "Commented-code block (5 lines) in lib/services/contact-scanner-service.ts:317", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/contact-scanner-service.ts:317"}, "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-8674c8eb7572e7ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/gemini-video-analysis.ts:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/gemini-video-analysis.ts:124"}, "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-0d077e0e1ad2125c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/inventory-ai-analysis.ts:228", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/inventory-ai-analysis.ts:228"}, "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-b32bc4383f074cf7", "name": "Commented-code block (5 lines) in lib/maestro-agents/tools/external-research-tools.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in lib/maestro-agents/tools/external-research-tools.ts:37"}, "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-68502894183dde76", "name": "Legacy-named symbol `minutesOld` in lib/db/pickingDB.ts:347", "shortDescription": {"text": "Legacy-named symbol `minutesOld` in lib/db/pickingDB.ts:347"}, "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-a9cdae07b33f311f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/appStore.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/appStore.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-e826cff9eef312d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/authStore.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/authStore.ts: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-2d5c7172ebb556b6", "name": "Commented-code block (5 lines) in lib/smart-ordering/prediction-engine.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in lib/smart-ordering/prediction-engine.ts:91"}, "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-23fd670149ad5788", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/smart-ordering/odoo-integration.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/smart-ordering/odoo-integration.ts:103"}, "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-7bcc263ce2d371fa", "name": "Legacy-named symbol `gmail_v1` in lib/email-ai/gmail-client.ts:7", "shortDescription": {"text": "Legacy-named symbol `gmail_v1` in lib/email-ai/gmail-client.ts:7"}, "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-492c00e17c4bc2f7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/registro-cassaforte/reolink-service.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/registro-cassaforte/reolink-service.ts:84"}, "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-d42be994855cce15", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ocr/attachments-pipeline.ts:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ocr/attachments-pipeline.ts:163"}, "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-b551324eadd337de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.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-4728235e6e36059a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.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-78f7baa9579856bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-winning-model.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-winning-model.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-42c9d9d58b9ba5f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-test-articles.cjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-test-articles.cjs: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-f2922a152a144e38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.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-3229bc6a0d651fa6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-376.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-376.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-e145b67cc5eb24a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.ts:27"}, "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-c5aa19d8f8ae5939", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.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-fd7cb56159f12723", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js: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-c8209cbd3d879e1c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:28"}, "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-96d893f9d6e940e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-347.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-347.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-2d750b4e97b250f9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:220", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:220"}, "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-2938d89c0335c835", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.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-baf9f94e9f06a08b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:24"}, "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-1d93f8fb0e1fa114", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-german-keywords.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-german-keywords.ts:19"}, "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-dd6cd2fd4471f893", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-full-article.cjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-full-article.cjs: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-eeb683fb4bc27da4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.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-255b60b5d223d4ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.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-b898487159542da0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.ts:29"}, "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-ea78e137398760e5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:42"}, "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-563f797dcf5eec14", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v6.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v6.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-e4896f46fda9e701", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts: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-8b8bcac647cfd1e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249"}, "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-9bc7e6e849ff58a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:28"}, "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-47eb7158b7a1c606", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/investigate-public-user.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/investigate-public-user.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-b819a93abcdbca54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-german-419.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-german-419.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-dbb95071b5d1d645", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:28"}, "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-1d30e3d3259f3768", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-all-langs.cjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-all-langs.cjs: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-081f0f5a1ce3a9bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.ts:27"}, "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-10268dc3cb2f790f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-users.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-users.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-89eec57140a4954b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:88"}, "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-c0d2c3c6b8002fc1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-all-test-articles.cjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-all-test-articles.cjs: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-fb5c566ff4a42ea2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v2.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v2.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-6628c589f3ca8f0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-fixed.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-fixed.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-b382c9164c4a2d4a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-products-seo.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-products-seo.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-f1668502f711b882", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:20"}, "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-c8224292358e1785", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/manual-test-article-1.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/manual-test-article-1.ts:27"}, "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-7f0030dea1b710ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:33"}, "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-f479db87759de5fc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.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-bdd5d1e15f3243ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.cjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.cjs: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-9832a4305e0abd13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:17"}, "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-cad1516d3c7834c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-translations.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-translations.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-0bdd597902472b9a", "name": "Commented-code block (6 lines) in seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:18"}, "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-439a60bc521c7e24", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts: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-febc3445a362269f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.ts: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-03a5aec485a4f80c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:33"}, "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-a6461279801701d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-420.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-420.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-7f7b35459d8c2949", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:28"}, "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-39aec27d434b0359", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v7.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v7.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-179ca8ec7a1ad8a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:27"}, "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-c5537704ad6ecee8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.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-8ccf74cb81b3a7a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:28"}, "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-7fe5d3200d32f1b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.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-df73f59a9bef9a1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations.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-3ef93885020f63bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:22"}, "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-0cb579397ea0461a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-perfect.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-perfect.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-7da360269a0c050f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-27-articles-final.cjs:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-27-articles-final.cjs: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-373dfc60c611a618", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:28"}, "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-516540b0d3de476b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.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-c4b464bf241dc0a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:27"}, "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-b35bb5b6d6bb30b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-random-articles.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-random-articles.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-c877fd57ea6bf12f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:27"}, "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-239617285ac4c956", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inject-shop-button.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inject-shop-button.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-0f05ff128ae2ec29", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:28"}, "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-4543638967cb60ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-companies-taxes.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-companies-taxes.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-5d8c15af2e0adced", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-helpdesk.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-helpdesk.ts:22"}, "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-7d099f1a7bb90642", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230"}, "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-56bb4181be1db3ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:27"}, "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-503a2f75ea1d267b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.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-e9399adc85d243aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-random-articles.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-random-articles.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-56f189f394290f56", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.ts:37"}, "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-9f2c01507de2fcef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v5.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v5.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-b349b888eb99adb8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.ts:28"}, "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-419038d2b4277f48", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicates.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicates.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-548ef9a3c7adc4fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-untranslated.cjs:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-untranslated.cjs: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-2cc6f2c442599ce3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:20"}, "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-22dfe489d1f71039", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.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-a9e07f17d18ddaf6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.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-3c763c879d9f25a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:138"}, "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-03f28ebd975ef137", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-fix-article-1.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-fix-article-1.ts:27"}, "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-0ac34feabe0ab901", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-shop-settings.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-shop-settings.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-77c588f9dea7a076", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-translatable-fields.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-translatable-fields.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-ae877b7f5344462f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-existing-article.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-existing-article.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-729ea842870287bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:19"}, "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-f3eb19fce7b0c2ca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:22"}, "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-5fdcff02cb9a5303", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:83"}, "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-b16b00cc72c67908", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.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-657f45cec6993589", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:42"}, "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-ce87a48f8dbaa3cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:273", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:273"}, "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-2ee58f14e58bd3d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:28"}, "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-f2bb2746d7f036d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.ts:27"}, "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-e99eadbcd7600b19", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.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-b76d1f1b13625cd3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-final.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-final.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-158f74e7bfb27185", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-multiple-articles.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-multiple-articles.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-c5d68ede83a375c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:28"}, "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-70740f86b838e3ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.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-ebec336204461f32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.ts:27"}, "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-9de22297eebac0fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.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-e851024dd26d3a88", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:97"}, "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-6b59a44e0c2dc43e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:156", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:156"}, "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-ee8746587a17332c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:29"}, "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-d51699bc0d463904", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.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-6ed228d36c487d86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.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-d9b66846eef64944", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:28"}, "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-af6c47fc358aeb87", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:19"}, "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-35eefcfb91a33633", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v3.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v3.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-c84454105d5b8dea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-mozzarella.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-mozzarella.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-ed896b2a51b27075", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:17"}, "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-a702806ca58146c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.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-6e4034f7234bc46c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:25"}, "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-e3f1aee1c7cba033", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:24"}, "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-fbaafcb24559e604", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.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-a9e1ba3f247e789d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.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-b2aef4169aea9d4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/src/connectors/odoo-rpc.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/src/connectors/odoo-rpc.ts:107"}, "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-6b524f4bd6f87c33", "name": "`fetch()` without try/.catch or AbortSignal \u2014 hooks/useMaestroAI.ts:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 hooks/useMaestroAI.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-20cc339bb992e3b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js: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-ea166bef359804da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier-ollama.js:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier-ollama.js: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-67bc82ac31dfad96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/contact-classifier.js:205", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/contact-classifier.js:205"}, "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-cc9c61da7e0b7269", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier.js:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier.js:154"}, "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-9275188710f56d00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/banknote-recognition.js:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/banknote-recognition.js:106"}, "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-106b24f0f865e534", "name": "90 env vars used in code but missing from .env.example", "shortDescription": {"text": "90 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AGENTS_INGEST_KEY`, `ANTHROPIC_API_BASE`, `BRAVE_SEARCH_API_KEY`, `CASSAFORTE_API_KEY`, `CASSAFORTE_CASH_JOURNAL_ID`, `CATALOGO_WORKER_KEY`, `CONTACT_ENRICHER_CACHE_MAX_SIZE`, `CONTACT_ENRICHER_CACHE_TTL` + 82 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-7964f79f28fc305a", "name": "Dangling fetch: POST /web/session/get_session_info (public/lapa-chat-embed.js:299)", "shortDescription": {"text": "Dangling fetch: POST /web/session/get_session_info (public/lapa-chat-embed.js:299)"}, "fullDescription": {"text": "`public/lapa-chat-embed.js:299` calls `POST /web/session/get_session_info` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/session/get_session_info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d9d03bf320069ed", "name": "Dangling fetch: POST /api/smart-ordering/create-orders (public/service-worker-smart-ordering.js:115)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering/create-orders (public/service-worker-smart-ordering.js:115)"}, "fullDescription": {"text": "`public/service-worker-smart-ordering.js:115` calls `POST /api/smart-ordering/create-orders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering/create-orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40831c8145eda85f", "name": "Dangling fetch: GET http://localhost:3000/api/maestro/customers/2421 (test-api-now.ts:7)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:3000/api/maestro/customers/2421 (test-api-now.ts:7)"}, "fullDescription": {"text": "`test-api-now.ts:7` calls `GET http://localhost:3000/api/maestro/customers/2421` 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:3000/api/maestro/customers/<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-c22964f7648d8930", "name": "Dangling fetch: GET /api/apps/visibility?${params.toString()} (components/layout/AppGrid.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/apps/visibility?${params.toString()} (components/layout/AppGrid.tsx:33)"}, "fullDescription": {"text": "`components/layout/AppGrid.tsx:33` calls `GET /api/apps/visibility?${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: `/apps/visibility`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9972681db336887", "name": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BatchBlogImageModal.tsx:71)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BatchBlogImageModal.tsx:71)"}, "fullDescription": {"text": "`components/blog/BatchBlogImageModal.tsx:71` calls `POST /api/gemini/generate-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70d30e47df04124d", "name": "Dangling fetch: POST /api/blog/upload-image (components/blog/BatchBlogImageModal.tsx:206)", "shortDescription": {"text": "Dangling fetch: POST /api/blog/upload-image (components/blog/BatchBlogImageModal.tsx:206)"}, "fullDescription": {"text": "`components/blog/BatchBlogImageModal.tsx:206` calls `POST /api/blog/upload-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/blog/upload-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b464a89f71effa70", "name": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BlogAIImageModal.tsx:42)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BlogAIImageModal.tsx:42)"}, "fullDescription": {"text": "`components/blog/BlogAIImageModal.tsx:42` calls `POST /api/gemini/generate-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-306efddc8d85767a", "name": "Dangling fetch: POST /api/blog/upload-image (components/blog/BlogAIImageModal.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/blog/upload-image (components/blog/BlogAIImageModal.tsx:99)"}, "fullDescription": {"text": "`components/blog/BlogAIImageModal.tsx:99` calls `POST /api/blog/upload-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/blog/upload-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bad2eaa9df8ceb56", "name": "Dangling fetch: GET /api/website-analytics (components/super-dashboard/WebsiteAnalyticsSection.tsx:68)", "shortDescription": {"text": "Dangling fetch: GET /api/website-analytics (components/super-dashboard/WebsiteAnalyticsSection.tsx:68)"}, "fullDescription": {"text": "`components/super-dashboard/WebsiteAnalyticsSection.tsx:68` calls `GET /api/website-analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/website-analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19f525935d1e9b3b", "name": "Dangling fetch: GET /api/search-console (components/super-dashboard/WebsiteAnalyticsSection.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/search-console (components/super-dashboard/WebsiteAnalyticsSection.tsx:69)"}, "fullDescription": {"text": "`components/super-dashboard/WebsiteAnalyticsSection.tsx:69` calls `GET /api/search-console` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/search-console`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fab30e11085e7bb1", "name": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:163)", "shortDescription": {"text": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:163)"}, "fullDescription": {"text": "`components/super-dashboard/KPISummarySection.tsx:163` calls `GET /api/recurring-products-lost` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/recurring-products-lost`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d376f1d6e76a860", "name": "Dangling fetch: GET /api/super-dashboard/kpi?period=${period} (components/super-dashboard/KPISummarySection.tsx:352)", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/kpi?period=${period} (components/super-dashboard/KPISummarySection.tsx:352)"}, "fullDescription": {"text": "`components/super-dashboard/KPISummarySection.tsx:352` calls `GET /api/super-dashboard/kpi?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/kpi`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae9d38fe1b68ca26", "name": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:378)", "shortDescription": {"text": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:378)"}, "fullDescription": {"text": "`components/super-dashboard/KPISummarySection.tsx:378` calls `GET /api/recurring-products-lost` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/recurring-products-lost`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a47d642378e06cff", "name": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=week (components/super-dashboard/KPISummarySection.", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=week (components/super-dashboard/KPISummarySection.tsx:393)"}, "fullDescription": {"text": "`components/super-dashboard/KPISummarySection.tsx:393` calls `GET /api/super-dashboard/sales-radar-activity?period=week` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/sales-radar-activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0706576cbd3dbd2c", "name": "Dangling fetch: GET /api/super-dashboard/cassaforte (components/super-dashboard/KPISummarySection.tsx:408)", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/cassaforte (components/super-dashboard/KPISummarySection.tsx:408)"}, "fullDescription": {"text": "`components/super-dashboard/KPISummarySection.tsx:408` calls `GET /api/super-dashboard/cassaforte` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/cassaforte`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f48145a4489c79a", "name": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (components/super-dashboard/SalesRadarAct", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (components/super-dashboard/SalesRadarActivityModal.tsx:32)"}, "fullDescription": {"text": "`components/super-dashboard/SalesRadarActivityModal.tsx:32` calls `GET /api/super-dashboard/sales-radar-activity?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/sales-radar-activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4d4c3e173ca8931", "name": "Dangling fetch: POST /api/inventory/lot (components/inventario/LotManager.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/lot (components/inventario/LotManager.tsx:76)"}, "fullDescription": {"text": "`components/inventario/LotManager.tsx:76` calls `POST /api/inventory/lot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/lot`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-590b906e265c4ebb", "name": "Dangling fetch: POST /api/inventory/analyze-video (components/inventario/InventoryAIModal.tsx:222)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/analyze-video (components/inventario/InventoryAIModal.tsx:222)"}, "fullDescription": {"text": "`components/inventario/InventoryAIModal.tsx:222` calls `POST /api/inventory/analyze-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/analyze-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85dce5760ce6b41b", "name": "Dangling fetch: POST /api/verification-requests/complete (components/inventario/VerificationListModal.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/verification-requests/complete (components/inventario/VerificationListModal.tsx:88)"}, "fullDescription": {"text": "`components/inventario/VerificationListModal.tsx:88` calls `POST /api/verification-requests/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests/complete`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-843c043db9c52cbf", "name": "Dangling fetch: GET /api/waste/location-products?locationId=${selectedLocation.id} (components/inventario/WasteTransferM", "shortDescription": {"text": "Dangling fetch: GET /api/waste/location-products?locationId=${selectedLocation.id} (components/inventario/WasteTransferModal.tsx:73)"}, "fullDescription": {"text": "`components/inventario/WasteTransferModal.tsx:73` calls `GET /api/waste/location-products?locationId=${selectedLocation.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/waste/location-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f1e9f531cc9b6e4", "name": "Dangling fetch: POST /api/inventory/location (components/inventario/WasteTransferModal.tsx:94)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/location (components/inventario/WasteTransferModal.tsx:94)"}, "fullDescription": {"text": "`components/inventario/WasteTransferModal.tsx:94` calls `POST /api/inventory/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27d21c18e440ca33", "name": "Dangling fetch: POST /api/waste/transfer (components/inventario/WasteTransferModal.tsx:179)", "shortDescription": {"text": "Dangling fetch: POST /api/waste/transfer (components/inventario/WasteTransferModal.tsx:179)"}, "fullDescription": {"text": "`components/inventario/WasteTransferModal.tsx:179` calls `POST /api/waste/transfer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/waste/transfer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0d56e00effe5ed5", "name": "Dangling fetch: HEAD /api/health (components/inventario/ConnectionStatus.tsx:15)", "shortDescription": {"text": "Dangling fetch: HEAD /api/health (components/inventario/ConnectionStatus.tsx:15)"}, "fullDescription": {"text": "`components/inventario/ConnectionStatus.tsx:15` calls `HEAD /api/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c671a3245b53692", "name": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (components/arrivo-merce/UnmatchedProductsHandler.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (components/arrivo-merce/UnmatchedProductsHandler.tsx:55)"}, "fullDescription": {"text": "`components/arrivo-merce/UnmatchedProductsHandler.tsx:55` calls `POST /api/arrivo-merce/add-product-to-picking` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/add-product-to-picking`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-131006bef0c3db70", "name": "Dangling fetch: POST /api/arrivo-merce/download-attachment (components/arrivo-merce/AttachmentSelector.tsx:96)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/download-attachment (components/arrivo-merce/AttachmentSelector.tsx:96)"}, "fullDescription": {"text": "`components/arrivo-merce/AttachmentSelector.tsx:96` calls `POST /api/arrivo-merce/download-attachment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/download-attachment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aba3d028d90dd2bf", "name": "Dangling fetch: POST /api/arrivo-merce/search-products (components/arrivo-merce/SearchProductModal.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/search-products (components/arrivo-merce/SearchProductModal.tsx:55)"}, "fullDescription": {"text": "`components/arrivo-merce/SearchProductModal.tsx:55` calls `POST /api/arrivo-merce/search-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/search-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb8ba178ef20bb38", "name": "Dangling fetch: GET /api/arrivo-merce/list-today (components/arrivo-merce/TodayArrivalsList.tsx:56)", "shortDescription": {"text": "Dangling fetch: GET /api/arrivo-merce/list-today (components/arrivo-merce/TodayArrivalsList.tsx:56)"}, "fullDescription": {"text": "`components/arrivo-merce/TodayArrivalsList.tsx:56` calls `GET /api/arrivo-merce/list-today` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/list-today`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a69b8a52c5edacc3", "name": "Dangling fetch: POST /api/arrivo-merce/classify-attachments (components/arrivo-merce/TodayArrivalsList.tsx:100)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/classify-attachments (components/arrivo-merce/TodayArrivalsList.tsx:100)"}, "fullDescription": {"text": "`components/arrivo-merce/TodayArrivalsList.tsx:100` calls `POST /api/arrivo-merce/classify-attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/classify-attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-379d576da025246d", "name": "Dangling fetch: GET /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:42)"}, "fullDescription": {"text": "`components/controllo-prezzi/AlertTab.tsx:42` calls `GET /api/controllo-prezzi/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aac3ed523edf3489", "name": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:69)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:69)"}, "fullDescription": {"text": "`components/controllo-prezzi/AlertTab.tsx:69` calls `POST /api/controllo-prezzi/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2f8d2ff1e64514b", "name": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:93)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:93)"}, "fullDescription": {"text": "`components/controllo-prezzi/AlertTab.tsx:93` calls `POST /api/controllo-prezzi/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7947eaab23d4aeb", "name": "Dangling fetch: GET /api/controllo-prezzi/fatture-bozza (components/controllo-prezzi/FattureBozzaTab.tsx:34)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/fatture-bozza (components/controllo-prezzi/FattureBozzaTab.tsx:34)"}, "fullDescription": {"text": "`components/controllo-prezzi/FattureBozzaTab.tsx:34` calls `GET /api/controllo-prezzi/fatture-bozza` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/fatture-bozza`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3bcce267693942d", "name": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:198)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:198)"}, "fullDescription": {"text": "`components/social-ai/ShareMenu.tsx:198` calls `POST /api/social-ai/publish-to-odoo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-to-odoo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65b149e2e0c37fe3", "name": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:243)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:243)"}, "fullDescription": {"text": "`components/social-ai/ShareMenu.tsx:243` calls `POST /api/social-ai/publish-to-odoo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-to-odoo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6a0ecc1894fb1f1", "name": "Dangling fetch: GET /api/portale-clienti/products?${params} (components/social-ai/ProductSelector.tsx:63)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/products?${params} (components/social-ai/ProductSelector.tsx:63)"}, "fullDescription": {"text": "`components/social-ai/ProductSelector.tsx:63` calls `GET /api/portale-clienti/products?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75a68a151e4d15d5", "name": "Dangling fetch: POST /api/social-ai/refine-video (components/social-ai/video/VideoEditor.tsx:74)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/refine-video (components/social-ai/video/VideoEditor.tsx:74)"}, "fullDescription": {"text": "`components/social-ai/video/VideoEditor.tsx:74` calls `POST /api/social-ai/refine-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/refine-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-787e2f06301a4861", "name": "Dangling fetch: POST /api/social-ai/check-video-status (components/social-ai/video/VideoEditor.tsx:126)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (components/social-ai/video/VideoEditor.tsx:126)"}, "fullDescription": {"text": "`components/social-ai/video/VideoEditor.tsx:126` calls `POST /api/social-ai/check-video-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/check-video-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-eae03b9ac139e32e", "name": "Dangling fetch: POST /api/maestro/create-sample-order (components/maestro/InteractionModal.tsx:70)", "shortDescription": {"text": "Dangling fetch: POST /api/maestro/create-sample-order (components/maestro/InteractionModal.tsx:70)"}, "fullDescription": {"text": "`components/maestro/InteractionModal.tsx:70` calls `POST /api/maestro/create-sample-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/create-sample-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a985225962417fa7", "name": "Dangling fetch: POST /api/maestro/interactions (components/maestro/InteractionModal.tsx:134)", "shortDescription": {"text": "Dangling fetch: POST /api/maestro/interactions (components/maestro/InteractionModal.tsx:134)"}, "fullDescription": {"text": "`components/maestro/InteractionModal.tsx:134` calls `POST /api/maestro/interactions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/interactions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddaf8a969289e9ac", "name": "Dangling fetch: GET /api/urgent-products (components/maestro/UrgentProductsModal.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (components/maestro/UrgentProductsModal.tsx:48)"}, "fullDescription": {"text": "`components/maestro/UrgentProductsModal.tsx:48` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ad792c2671977b4", "name": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/UrgentProductsModal.tsx:67)", "shortDescription": {"text": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/UrgentProductsModal.tsx:67)"}, "fullDescription": {"text": "`components/maestro/UrgentProductsModal.tsx:67` calls `DELETE /api/urgent-products?id=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd0ce817ed85c7c0", "name": "Dangling fetch: GET /api/offer-products (components/maestro/OfferProductsModal.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/offer-products (components/maestro/OfferProductsModal.tsx:48)"}, "fullDescription": {"text": "`components/maestro/OfferProductsModal.tsx:48` calls `GET /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84c0482acb3b7e6d", "name": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/OfferProductsModal.tsx:67)", "shortDescription": {"text": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/OfferProductsModal.tsx:67)"}, "fullDescription": {"text": "`components/maestro/OfferProductsModal.tsx:67` calls `DELETE /api/offer-products?id=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ade76caebe3d7adb", "name": "Dangling fetch: GET /api/maestro/avatars?${params.toString()} (components/maestro/CustomerSearchInput.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/avatars?${params.toString()} (components/maestro/CustomerSearchInput.tsx:52)"}, "fullDescription": {"text": "`components/maestro/CustomerSearchInput.tsx:52` calls `GET /api/maestro/avatars?${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: `/maestro/avatars`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ffb60b83508fd80", "name": "Dangling fetch: GET /api/urgent-products (components/maestro/ProductManagementModal.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (components/maestro/ProductManagementModal.tsx:49)"}, "fullDescription": {"text": "`components/maestro/ProductManagementModal.tsx:49` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14198b823d3cf011", "name": "Dangling fetch: GET /api/offer-products (components/maestro/ProductManagementModal.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/offer-products (components/maestro/ProductManagementModal.tsx:50)"}, "fullDescription": {"text": "`components/maestro/ProductManagementModal.tsx:50` calls `GET /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c28acd4c7e9b35c", "name": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/ProductManagementModal.tsx:73)", "shortDescription": {"text": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/ProductManagementModal.tsx:73)"}, "fullDescription": {"text": "`components/maestro/ProductManagementModal.tsx:73` calls `DELETE /api/urgent-products?id=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8d407185627416f", "name": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/ProductManagementModal.tsx:95)", "shortDescription": {"text": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/ProductManagementModal.tsx:95)"}, "fullDescription": {"text": "`components/maestro/ProductManagementModal.tsx:95` calls `DELETE /api/offer-products?id=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84b77d51230413ba", "name": "Dangling fetch: POST /api/portale-clienti/reservations (components/portale-clienti/ProductCard.tsx:83)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/reservations (components/portale-clienti/ProductCard.tsx:83)"}, "fullDescription": {"text": "`components/portale-clienti/ProductCard.tsx:83` calls `POST /api/portale-clienti/reservations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/reservations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-488980cde1641582", "name": "Dangling fetch: POST /api/portale-clienti/orders/${order.id}/reorder (components/portale-clienti/OrderCard.tsx:151)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/orders/${order.id}/reorder (components/portale-clienti/OrderCard.tsx:151)"}, "fullDescription": {"text": "`components/portale-clienti/OrderCard.tsx:151` calls `POST /api/portale-clienti/orders/${order.id}/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/orders/<p>/reorder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96f86e2497df7c17", "name": "Dangling fetch: POST /api/portale-clienti/cart (components/portale-clienti/OrderCard.tsx:168)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart (components/portale-clienti/OrderCard.tsx:168)"}, "fullDescription": {"text": "`components/portale-clienti/OrderCard.tsx:168` calls `POST /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3991630ce01d83cb", "name": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/BatchAIImageModal.tsx:73)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/BatchAIImageModal.tsx:73)"}, "fullDescription": {"text": "`components/catalogo-lapa/BatchAIImageModal.tsx:73` calls `POST /api/gemini/generate-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8206c2f1170975f", "name": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (components/catalogo-lapa/BatchAIImageModal.tsx:92)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (components/catalogo-lapa/BatchAIImageModal.tsx:92)"}, "fullDescription": {"text": "`components/catalogo-lapa/BatchAIImageModal.tsx:92` calls `POST /api/catalogo-lapa/update-product-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/update-product-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2cdb803521241460", "name": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/AIImageModal.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/AIImageModal.tsx:50)"}, "fullDescription": {"text": "`components/catalogo-lapa/AIImageModal.tsx:50` calls `POST /api/gemini/generate-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2192c37b7c4e1f9", "name": "Dangling fetch: POST /api/time-attendance/qr/validate (components/time-attendance/QRScanner.tsx:109)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/qr/validate (components/time-attendance/QRScanner.tsx:109)"}, "fullDescription": {"text": "`components/time-attendance/QRScanner.tsx:109` calls `POST /api/time-attendance/qr/validate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/qr/validate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d16d6a62dfd77fa", "name": "Dangling fetch: GET /api/inventory/search-furgoni-locations (app/resi-furgoni/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/inventory/search-furgoni-locations (app/resi-furgoni/page.tsx:91)"}, "fullDescription": {"text": "`app/resi-furgoni/page.tsx:91` calls `GET /api/inventory/search-furgoni-locations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/search-furgoni-locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8bb683ef26a91198", "name": "Dangling fetch: POST /api/inventory/create-van-returns (app/resi-furgoni/page.tsx:188)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/create-van-returns (app/resi-furgoni/page.tsx:188)"}, "fullDescription": {"text": "`app/resi-furgoni/page.tsx:188` calls `POST /api/inventory/create-van-returns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/create-van-returns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0a32fbf71e34212", "name": "Dangling fetch: GET /api/infra-monitor/status (app/infra-monitor/page.tsx:437)", "shortDescription": {"text": "Dangling fetch: GET /api/infra-monitor/status (app/infra-monitor/page.tsx:437)"}, "fullDescription": {"text": "`app/infra-monitor/page.tsx:437` calls `GET /api/infra-monitor/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/infra-monitor/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-3121f19331b09540", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/infra-monitor/page.tsx:464)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/infra-monitor/page.tsx:464)"}, "fullDescription": {"text": "`app/infra-monitor/page.tsx:464` calls `GET /api/agenti-whatsapp/${slug}/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-e212fee57145dbf1", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/infra-monitor/page.tsx:465)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/infra-monitor/page.tsx:465)"}, "fullDescription": {"text": "`app/infra-monitor/page.tsx:465` calls `GET /api/agenti-whatsapp/${slug}/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/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-0d10c45a8503217d", "name": "Dangling fetch: GET /api/products-catalog (app/catalogo-prodotti/page.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/products-catalog (app/catalogo-prodotti/page.tsx:65)"}, "fullDescription": {"text": "`app/catalogo-prodotti/page.tsx:65` calls `GET /api/products-catalog` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products-catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb65ed810a0d9f77", "name": "Dangling fetch: POST /api/chat-gestionale (app/chat-gestionale/page.tsx:577)", "shortDescription": {"text": "Dangling fetch: POST /api/chat-gestionale (app/chat-gestionale/page.tsx:577)"}, "fullDescription": {"text": "`app/chat-gestionale/page.tsx:577` calls `POST /api/chat-gestionale` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat-gestionale`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09e8c5ed236e8c8b", "name": "Dangling fetch: POST /api/transcribe (app/scan-contatto/VoiceContactCreator.tsx:207)", "shortDescription": {"text": "Dangling fetch: POST /api/transcribe (app/scan-contatto/VoiceContactCreator.tsx:207)"}, "fullDescription": {"text": "`app/scan-contatto/VoiceContactCreator.tsx:207` calls `POST /api/transcribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/transcribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d85a223ebee002ed", "name": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:200)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:200)"}, "fullDescription": {"text": "`app/scan-contatto/page.tsx:200` calls `POST /api/scan-contatto-complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto-complete`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-123206a3d21c0b99", "name": "Dangling fetch: PUT /api/odoo/contacts/${createdContact.id} (app/scan-contatto/page.tsx:304)", "shortDescription": {"text": "Dangling fetch: PUT /api/odoo/contacts/${createdContact.id} (app/scan-contatto/page.tsx:304)"}, "fullDescription": {"text": "`app/scan-contatto/page.tsx:304` calls `PUT /api/odoo/contacts/${createdContact.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/contacts/<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-2462e175e82a7e08", "name": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:369)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:369)"}, "fullDescription": {"text": "`app/scan-contatto/page.tsx:369` calls `POST /api/scan-contatto-complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto-complete`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f81434df0060dcc1", "name": "Dangling fetch: POST /api/odoo-proxy (app/ordini-smart-ai/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo-proxy (app/ordini-smart-ai/page.tsx:48)"}, "fullDescription": {"text": "`app/ordini-smart-ai/page.tsx:48` calls `POST /api/odoo-proxy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo-proxy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-642c46c75461acae", "name": "Dangling fetch: GET /api/smart-ordering-ai/analyze-supplier?supplierId=${supplierId}&months=6 (app/ordini-smart-ai/page.", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-ai/analyze-supplier?supplierId=${supplierId}&months=6 (app/ordini-smart-ai/page.tsx:87)"}, "fullDescription": {"text": "`app/ordini-smart-ai/page.tsx:87` calls `GET /api/smart-ordering-ai/analyze-supplier?supplierId=${supplierId}&months=6` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-ai/analyze-supplier`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-777400dd9a8600c1", "name": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:320)", "shortDescription": {"text": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:320)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:320` calls `GET /logo-lapa.png` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-lapa.png`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa3f86b8faf72486", "name": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:356)", "shortDescription": {"text": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:356)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:356` calls `GET /logo-lapa.png` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-lapa.png`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9b9f93e55a7451e", "name": "Dangling fetch: POST /api/social-ai/product-recipe (app/social-ai-studio/page.tsx:391)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/product-recipe (app/social-ai-studio/page.tsx:391)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:391` calls `POST /api/social-ai/product-recipe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/product-recipe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14dd7787cb841872", "name": "Dangling fetch: POST /api/social-ai/publish-recipe (app/social-ai-studio/page.tsx:443)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-recipe (app/social-ai-studio/page.tsx:443)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:443` calls `POST /api/social-ai/publish-recipe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-recipe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60d2a3201200ca68", "name": "Dangling fetch: POST /api/social-ai/product-story (app/social-ai-studio/page.tsx:540)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/product-story (app/social-ai-studio/page.tsx:540)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:540` calls `POST /api/social-ai/product-story` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/product-story`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c195f868b2dcc49", "name": "Dangling fetch: POST /api/social-ai/publish-story (app/social-ai-studio/page.tsx:599)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-story (app/social-ai-studio/page.tsx:599)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:599` calls `POST /api/social-ai/publish-story` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-story`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c95f6ca1f89e2df7", "name": "Dangling fetch: POST /api/social-ai/food-curiosity (app/social-ai-studio/page.tsx:655)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/food-curiosity (app/social-ai-studio/page.tsx:655)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:655` calls `POST /api/social-ai/food-curiosity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/food-curiosity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7439cfd26d1adde", "name": "Dangling fetch: POST /api/social-ai/generate-curiosity-image (app/social-ai-studio/page.tsx:696)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/generate-curiosity-image (app/social-ai-studio/page.tsx:696)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:696` calls `POST /api/social-ai/generate-curiosity-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/generate-curiosity-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06c4ee42c0ccea41", "name": "Dangling fetch: POST /api/social-ai/translate-content (app/social-ai-studio/page.tsx:741)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/translate-content (app/social-ai-studio/page.tsx:741)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:741` calls `POST /api/social-ai/translate-content` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/translate-content`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4f3168dfdb4e860", "name": "Dangling fetch: POST /api/social-ai/publish-curiosity (app/social-ai-studio/page.tsx:816)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-curiosity (app/social-ai-studio/page.tsx:816)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:816` calls `POST /api/social-ai/publish-curiosity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-curiosity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-baf71ca033ce2511", "name": "Dangling fetch: POST /api/social-ai/free-article (app/social-ai-studio/page.tsx:991)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/free-article (app/social-ai-studio/page.tsx:991)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:991` calls `POST /api/social-ai/free-article` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/free-article`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b305f5addeab45cb", "name": "Dangling fetch: POST /api/social-ai/publish-article (app/social-ai-studio/page.tsx:1038)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-article (app/social-ai-studio/page.tsx:1038)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1038` calls `POST /api/social-ai/publish-article` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-article`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f60eb90966c61c21", "name": "Dangling fetch: POST /api/social-ai/regenerate-article-image (app/social-ai-studio/page.tsx:1106)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/regenerate-article-image (app/social-ai-studio/page.tsx:1106)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1106` calls `POST /api/social-ai/regenerate-article-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/regenerate-article-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd803af415b8107c", "name": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1185)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1185)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1185` calls `POST /api/social-ai/generate-marketing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/generate-marketing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8bb8f01dfd05038c", "name": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1243)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1243)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1243` calls `POST /api/social-ai/check-video-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/check-video-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-24a2d2d7c9b05550", "name": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1327)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1327)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1327` calls `POST /api/social-ai/publish-youtube` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-youtube`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fab6516d7008de4e", "name": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1398)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1398)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1398` calls `POST /api/social-ai/generate-marketing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/generate-marketing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d251080c7518461", "name": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1481)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1481)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1481` calls `POST /api/social-ai/check-video-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/check-video-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-d7f40b1b45761af5", "name": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1575)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1575)"}, "fullDescription": {"text": "`app/social-ai-studio/page.tsx:1575` calls `POST /api/social-ai/publish-youtube` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/publish-youtube`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fa6d52a5e857179", "name": "Dangling fetch: GET /api/social-ai/analytics/summary?period=${period} (app/social-ai-studio/analytics/page.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/social-ai/analytics/summary?period=${period} (app/social-ai-studio/analytics/page.tsx:61)"}, "fullDescription": {"text": "`app/social-ai-studio/analytics/page.tsx:61` calls `GET /api/social-ai/analytics/summary?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/analytics/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30b7fa31fadff89e", "name": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/autopilot/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/autopilot/page.tsx:52)"}, "fullDescription": {"text": "`app/social-ai-studio/autopilot/page.tsx:52` calls `POST /api/social-ai/check-video-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/check-video-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-08b49bbed66916e2", "name": "Dangling fetch: GET /api/social-ai/autopilot/product-intelligence (app/social-ai-studio/autopilot/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: GET /api/social-ai/autopilot/product-intelligence (app/social-ai-studio/autopilot/page.tsx:99)"}, "fullDescription": {"text": "`app/social-ai-studio/autopilot/page.tsx:99` calls `GET /api/social-ai/autopilot/product-intelligence` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/autopilot/product-intelligence`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9fd9b2da739628c", "name": "Dangling fetch: POST /api/social-ai/autopilot/generate-queue (app/social-ai-studio/autopilot/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/autopilot/generate-queue (app/social-ai-studio/autopilot/page.tsx:142)"}, "fullDescription": {"text": "`app/social-ai-studio/autopilot/page.tsx:142` calls `POST /api/social-ai/autopilot/generate-queue` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/autopilot/generate-queue`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-024ba8671e5a3a69", "name": "Dangling fetch: POST /api/social-ai/autopilot/generate-post (app/social-ai-studio/autopilot/page.tsx:250)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/autopilot/generate-post (app/social-ai-studio/autopilot/page.tsx:250)"}, "fullDescription": {"text": "`app/social-ai-studio/autopilot/page.tsx:250` calls `POST /api/social-ai/autopilot/generate-post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/autopilot/generate-post`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9414dbda89093d8c", "name": "Dangling fetch: POST /api/social-ai/autopilot/approve (app/social-ai-studio/autopilot/page.tsx:319)", "shortDescription": {"text": "Dangling fetch: POST /api/social-ai/autopilot/approve (app/social-ai-studio/autopilot/page.tsx:319)"}, "fullDescription": {"text": "`app/social-ai-studio/autopilot/page.tsx:319` calls `POST /api/social-ai/autopilot/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-ai/autopilot/approve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4a745e0b6833796", "name": "Dangling fetch: GET /api/review-manager/businesses (app/review-manager/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/businesses (app/review-manager/page.tsx:55)"}, "fullDescription": {"text": "`app/review-manager/page.tsx:55` calls `GET /api/review-manager/businesses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/businesses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-274cee4081a0769d", "name": "Dangling fetch: POST /api/review-manager/businesses (app/review-manager/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/businesses (app/review-manager/page.tsx:71)"}, "fullDescription": {"text": "`app/review-manager/page.tsx:71` calls `POST /api/review-manager/businesses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/businesses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-628f648762a79e2c", "name": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/page.tsx:101)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/page.tsx:101)"}, "fullDescription": {"text": "`app/review-manager/page.tsx:101` calls `POST /api/review-manager/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/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-2fee7926a226b69f", "name": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/page.tsx:88)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:88` calls `GET /api/review-manager/businesses/${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/businesses/<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-ff61a49f0a474e7e", "name": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId}&pageSize=100 (app/review-manager/[businessId]/p", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId}&pageSize=100 (app/review-manager/[businessId]/page.tsx:95)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:95` calls `GET /api/review-manager/reviews?businessId=${businessId}&pageSize=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a82e99fb2c24b82", "name": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:110)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:110` calls `POST /api/review-manager/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/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-16732ec2f3ac3ffe", "name": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:130)", "shortDescription": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:130)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:130` calls `PUT /api/review-manager/reviews/${reviewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<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-d68293a95c135237", "name": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:150)", "shortDescription": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:150)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:150` calls `PUT /api/review-manager/reviews/${reviewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<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-1a33fe5d0198a94c", "name": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:173)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:173)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:173` calls `POST /api/review-manager/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/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-13481984679bd657", "name": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:196)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/page.tsx:196` calls `PUT /api/review-manager/reviews/${reviewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<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-611eee47b9a8d97e", "name": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:86)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/settings/page.tsx:86` calls `GET /api/review-manager/businesses/${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/businesses/<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-3b982baab9cbb288", "name": "Dangling fetch: GET /api/review-manager/platforms?businessId=${businessId} (app/review-manager/[businessId]/settings/pag", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/platforms?businessId=${businessId} (app/review-manager/[businessId]/settings/page.tsx:104)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/settings/page.tsx:104` calls `GET /api/review-manager/platforms?businessId=${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/platforms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90220f20638c431f", "name": "Dangling fetch: PUT /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: PUT /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:135)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/settings/page.tsx:135` calls `PUT /api/review-manager/businesses/${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/businesses/<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-6c761a7b8c7bdf8c", "name": "Dangling fetch: POST /api/review-manager/platforms (app/review-manager/[businessId]/settings/page.tsx:162)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/platforms (app/review-manager/[businessId]/settings/page.tsx:162)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/settings/page.tsx:162` calls `POST /api/review-manager/platforms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/platforms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e815ca498ef23f03", "name": "Dangling fetch: DELETE /api/review-manager/platforms?businessId=${businessId}&platform=${platform} (app/review-manager/[", "shortDescription": {"text": "Dangling fetch: DELETE /api/review-manager/platforms?businessId=${businessId}&platform=${platform} (app/review-manager/[businessId]/settings/page.tsx:194)"}, "fullDescription": {"text": "`app/review-manager/[businessId]/settings/page.tsx:194` calls `DELETE /api/review-manager/platforms?businessId=${businessId}&platform=${platform}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/platforms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2c54e7c40af6b98", "name": "Dangling fetch: POST /api/lapa-agents/chat (app/test-chat-agenti/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/test-chat-agenti/page.tsx:51)"}, "fullDescription": {"text": "`app/test-chat-agenti/page.tsx:51` calls `POST /api/lapa-agents/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-986cb398cf038fca", "name": "Dangling fetch: GET /api/odoo/customers (app/analisi-clienti/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/odoo/customers (app/analisi-clienti/page.tsx:59)"}, "fullDescription": {"text": "`app/analisi-clienti/page.tsx:59` calls `GET /api/odoo/customers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2e8b45a5c14b02c", "name": "Dangling fetch: POST /api/analisi-clienti (app/analisi-clienti/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: POST /api/analisi-clienti (app/analisi-clienti/page.tsx:127)"}, "fullDescription": {"text": "`app/analisi-clienti/page.tsx:127` calls `POST /api/analisi-clienti` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analisi-clienti`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3cc9eff0f5fdff3", "name": "Dangling fetch: GET /api/super-dashboard/cassaforte (app/super-dashboard/cassaforte/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/cassaforte (app/super-dashboard/cassaforte/page.tsx:99)"}, "fullDescription": {"text": "`app/super-dashboard/cassaforte/page.tsx:99` calls `GET /api/super-dashboard/cassaforte` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/cassaforte`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf16b84b60a668dc", "name": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/super-dashboard/cassaforte/page.tsx:133)", "shortDescription": {"text": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/super-dashboard/cassaforte/page.tsx:133)"}, "fullDescription": {"text": "`app/super-dashboard/cassaforte/page.tsx:133` calls `POST /api/registro-cassaforte/withdraw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/withdraw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f73be732229d771", "name": "Dangling fetch: GET /api/super-dashboard/product-story/search?q=${encodeURIComponent(query)} (app/super-dashboard/produc", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/product-story/search?q=${encodeURIComponent(query)} (app/super-dashboard/product-story/page.tsx:251)"}, "fullDescription": {"text": "`app/super-dashboard/product-story/page.tsx:251` calls `GET /api/super-dashboard/product-story/search?q=${encodeURIComponent(query)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/product-story/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f463c94c3b9a5da8", "name": "Dangling fetch: GET /api/super-dashboard/product-story?${params} (app/super-dashboard/product-story/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/product-story?${params} (app/super-dashboard/product-story/page.tsx:287)"}, "fullDescription": {"text": "`app/super-dashboard/product-story/page.tsx:287` calls `GET /api/super-dashboard/product-story?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/product-story`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81ad0f97eb450a5f", "name": "Dangling fetch: GET /api/super-dashboard/product-story/detective?productId=${productId} (app/super-dashboard/product-sto", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/product-story/detective?productId=${productId} (app/super-dashboard/product-story/page.tsx:329)"}, "fullDescription": {"text": "`app/super-dashboard/product-story/page.tsx:329` calls `GET /api/super-dashboard/product-story/detective?productId=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/product-story/detective`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3afad5d6a94cd209", "name": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (app/super-dashboard/sales-radar-activity", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (app/super-dashboard/sales-radar-activity/page.tsx:50)"}, "fullDescription": {"text": "`app/super-dashboard/sales-radar-activity/page.tsx:50` calls `GET /api/super-dashboard/sales-radar-activity?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/sales-radar-activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c43e1f1574685bd6", "name": "Dangling fetch: GET /api/controllo-picking/batches?date=${date} (app/super-dashboard/controllo-picking/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-picking/batches?date=${date} (app/super-dashboard/controllo-picking/page.tsx:55)"}, "fullDescription": {"text": "`app/super-dashboard/controllo-picking/page.tsx:55` calls `GET /api/controllo-picking/batches?date=${date}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-picking/batches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae208bce103ce4c5", "name": "Dangling fetch: GET /api/controllo-picking/batch/${batchId} (app/super-dashboard/controllo-picking/[batchId]/page.tsx:11", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-picking/batch/${batchId} (app/super-dashboard/controllo-picking/[batchId]/page.tsx:117)"}, "fullDescription": {"text": "`app/super-dashboard/controllo-picking/[batchId]/page.tsx:117` calls `GET /api/controllo-picking/batch/${batchId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-picking/batch/<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-88934058632dc483", "name": "Dangling fetch: POST /api/controllo-picking/analyze-video (app/super-dashboard/controllo-picking/[batchId]/page.tsx:220)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-picking/analyze-video (app/super-dashboard/controllo-picking/[batchId]/page.tsx:220)"}, "fullDescription": {"text": "`app/super-dashboard/controllo-picking/[batchId]/page.tsx:220` calls `POST /api/controllo-picking/analyze-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-picking/analyze-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fadafbcf679eb1fa", "name": "Dangling fetch: GET /api/usage-stats?days=${days} (app/super-dashboard/app-usage/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/usage-stats?days=${days} (app/super-dashboard/app-usage/page.tsx:78)"}, "fullDescription": {"text": "`app/super-dashboard/app-usage/page.tsx:78` calls `GET /api/usage-stats?days=${days}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/usage-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-7a5498daa728f399", "name": "Dangling fetch: GET /api/super-dashboard/margini?period=${period} (app/super-dashboard/margini/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/super-dashboard/margini?period=${period} (app/super-dashboard/margini/page.tsx:67)"}, "fullDescription": {"text": "`app/super-dashboard/margini/page.tsx:67` calls `GET /api/super-dashboard/margini?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/super-dashboard/margini`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-901cee7bb1b520bf", "name": "Dangling fetch: GET /api/il-mio-hub (app/il-mio-hub/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: GET /api/il-mio-hub (app/il-mio-hub/page.tsx:123)"}, "fullDescription": {"text": "`app/il-mio-hub/page.tsx:123` calls `GET /api/il-mio-hub` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/il-mio-hub`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d0c89b6ace157cd", "name": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/page.tsx:66)"}, "fullDescription": {"text": "`app/catalogo-venditori/page.tsx:66` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30f1eafc1245c74b", "name": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/page.tsx:73)"}, "fullDescription": {"text": "`app/catalogo-venditori/page.tsx:73` calls `GET /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa9b8128887a4c2e", "name": "Dangling fetch: POST /api/catalogo-venditori/create-order (app/catalogo-venditori/page.tsx:256)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/create-order (app/catalogo-venditori/page.tsx:256)"}, "fullDescription": {"text": "`app/catalogo-venditori/page.tsx:256` calls `POST /api/catalogo-venditori/create-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/create-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fafc1240bb4a7a82", "name": "Dangling fetch: GET /api/catalogo-venditori/customer-orders/${selectedCustomerId} (app/catalogo-venditori/page.tsx:351)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-orders/${selectedCustomerId} (app/catalogo-venditori/page.tsx:351)"}, "fullDescription": {"text": "`app/catalogo-venditori/page.tsx:351` calls `GET /api/catalogo-venditori/customer-orders/${selectedCustomerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/customer-orders/<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-ffa74c01cb54b37e", "name": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/catalogo-venditori/components/ManualProductSearch.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/catalogo-venditori/components/ManualProductSearch.tsx:66)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/ManualProductSearch.tsx:66` calls `POST /api/catalogo-venditori/search-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/search-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66b90744cf12e8d7", "name": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:186)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:186)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/ManualProductSearch.tsx:186` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8dd230fa81ba918", "name": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:207)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:207)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/ManualProductSearch.tsx:207` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7961507136e9fb36", "name": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:230)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:230)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/ManualProductSearch.tsx:230` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71a54c64176ed38f", "name": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:110)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:110)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/AIOrderInput.tsx:110` calls `POST /api/catalogo-venditori/ai-process-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/ai-process-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9cc71ce44f84e392", "name": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:117)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:117)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/AIOrderInput.tsx:117` calls `POST /api/catalogo-venditori/ai-process-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/ai-process-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf0b89928fd7e7d1", "name": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/catalogo-venditori/components/Custom", "shortDescription": {"text": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/catalogo-venditori/components/CustomerSelector.tsx:68)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/CustomerSelector.tsx:68` calls `GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clienti/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-119c666f8afa94bf", "name": "Dangling fetch: POST /api/catalogo-venditori/customer-addresses (app/catalogo-venditori/components/CustomerSelector.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/customer-addresses (app/catalogo-venditori/components/CustomerSelector.tsx:146)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/CustomerSelector.tsx:146` calls `POST /api/catalogo-venditori/customer-addresses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/customer-addresses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97d828702de81ebc", "name": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/components/CustomerSelector.tsx:189)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/components/CustomerSelector.tsx:189)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/CustomerSelector.tsx:189` calls `GET /api/catalogo-venditori/global-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/global-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-14a0e6d7d1d1d54d", "name": "Dangling fetch: GET /api/catalogo-venditori/customer-stats?customerId=${customerId} (app/catalogo-venditori/components/C", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-stats?customerId=${customerId} (app/catalogo-venditori/components/CustomerSelector.tsx:208)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/CustomerSelector.tsx:208` calls `GET /api/catalogo-venditori/customer-stats?customerId=${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/customer-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-16477077e225777c", "name": "Dangling fetch: GET /api/catalogo-venditori/last-delivery?customerId=${customerId} (app/catalogo-venditori/components/De", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/last-delivery?customerId=${customerId} (app/catalogo-venditori/components/DeliveryDatePicker.tsx:25)"}, "fullDescription": {"text": "`app/catalogo-venditori/components/DeliveryDatePicker.tsx:25` calls `GET /api/catalogo-venditori/last-delivery?customerId=${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/last-delivery`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aba41ed9d3735053", "name": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:127)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:127` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-503dd6902b8582c3", "name": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:134)", "shortDescription": {"text": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:134)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:134` calls `GET /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b01511ef6a4d403", "name": "Dangling fetch: POST /api/catalogo-venditori/add-order-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:161", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/add-order-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:161)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:161` calls `POST /api/catalogo-venditori/add-order-line` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/add-order-line`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bce4c46c4d02d313", "name": "Dangling fetch: GET /api/catalogo-venditori/order-prices/${orderId} (app/catalogo-venditori/review-prices/[orderId]/page", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/order-prices/${orderId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:200)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:200` calls `GET /api/catalogo-venditori/order-prices/${orderId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<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-413f5f503118f20e", "name": "Dangling fetch: GET /api/catalogo-venditori/customer-stats/${customerId} (app/catalogo-venditori/review-prices/[orderId]", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-stats/${customerId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:243)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:243` calls `GET /api/catalogo-venditori/customer-stats/${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/customer-stats/<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-140329de55b3ec97", "name": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/review-prices/[orderId]/page.tsx:261)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/review-prices/[orderId]/page.tsx:261)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:261` calls `GET /api/catalogo-venditori/global-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/global-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-047dae2bf31a2d69", "name": "Dangling fetch: GET /api/catalogo-venditori/product-history/${productId} (app/catalogo-venditori/review-prices/[orderId]", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/product-history/${productId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:282)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:282` calls `GET /api/catalogo-venditori/product-history/${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/product-history/<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-be64c3485375b8ee", "name": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/delete-line (app/catalogo-venditori/review-pri", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/delete-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:438)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:438` calls `POST /api/catalogo-venditori/order-prices/${orderData.id}/delete-line` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<p>/delete-line`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-003fd4b974849a94", "name": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/add-line (app/catalogo-venditori/review-prices", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/add-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:484)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:484` calls `POST /api/catalogo-venditori/order-prices/${orderData.id}/add-line` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<p>/add-line`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e8379de37c5ccaa", "name": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/create-task (app/catalogo-venditori/review-pri", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/create-task (app/catalogo-venditori/review-prices/[orderId]/page.tsx:539)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:539` calls `POST /api/catalogo-venditori/order-prices/${orderData.id}/create-task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<p>/create-task`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e89aa2cebc09aa5", "name": "Dangling fetch: POST /api/catalogo-venditori/update-quantities (app/catalogo-venditori/review-prices/[orderId]/page.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/update-quantities (app/catalogo-venditori/review-prices/[orderId]/page.tsx:737)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:737` calls `POST /api/catalogo-venditori/update-quantities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/update-quantities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70116a33e9606a0b", "name": "Dangling fetch: POST /api/catalogo-venditori/update-prices (app/catalogo-venditori/review-prices/[orderId]/page.tsx:765)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/update-prices (app/catalogo-venditori/review-prices/[orderId]/page.tsx:765)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:765` calls `POST /api/catalogo-venditori/update-prices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/update-prices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eeba828065549698", "name": "Dangling fetch: POST /api/catalogo-venditori/add-order-message (app/catalogo-venditori/review-prices/[orderId]/page.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/add-order-message (app/catalogo-venditori/review-prices/[orderId]/page.tsx:812)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:812` calls `POST /api/catalogo-venditori/add-order-message` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/add-order-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-a494645fd0a59cea", "name": "Dangling fetch: POST /api/catalogo-venditori/confirm-order (app/catalogo-venditori/review-prices/[orderId]/page.tsx:857)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/confirm-order (app/catalogo-venditori/review-prices/[orderId]/page.tsx:857)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:857` calls `POST /api/catalogo-venditori/confirm-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/confirm-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8dbeaddd924893fa", "name": "Dangling fetch: PATCH /api/catalogo-venditori/order-prices/${orderId}/update-delivery (app/catalogo-venditori/review-pri", "shortDescription": {"text": "Dangling fetch: PATCH /api/catalogo-venditori/order-prices/${orderId}/update-delivery (app/catalogo-venditori/review-prices/[orderId]/page.tsx:896)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:896` calls `PATCH /api/catalogo-venditori/order-prices/${orderId}/update-delivery` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<p>/update-delivery`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd347565a0a35b26", "name": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderId}/cancel (app/catalogo-venditori/review-prices/[order", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderId}/cancel (app/catalogo-venditori/review-prices/[orderId]/page.tsx:928)"}, "fullDescription": {"text": "`app/catalogo-venditori/review-prices/[orderId]/page.tsx:928` calls `POST /api/catalogo-venditori/order-prices/${orderId}/cancel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/order-prices/<p>/cancel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-188e7ec8d52f42d5", "name": "Dangling fetch: GET /api/catalogo-venditori/orders?period=${period} (app/catalogo-venditori/ordini/page.tsx:44)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-venditori/orders?period=${period} (app/catalogo-venditori/ordini/page.tsx:44)"}, "fullDescription": {"text": "`app/catalogo-venditori/ordini/page.tsx:44` calls `GET /api/catalogo-venditori/orders?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40188d48e7e99de5", "name": "Dangling fetch: POST /api/sales-radar/search (app/sales-radar/page.tsx:431)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/search (app/sales-radar/page.tsx:431)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:431` calls `POST /api/sales-radar/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13ddbe7cc65f0c26", "name": "Dangling fetch: POST /api/sales-radar/save-leads (app/sales-radar/page.tsx:498)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/save-leads (app/sales-radar/page.tsx:498)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:498` calls `POST /api/sales-radar/save-leads` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/save-leads`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5c0ed110501ff35", "name": "Dangling fetch: GET /api/sales-radar/check-customer?${params} (app/sales-radar/page.tsx:565)", "shortDescription": {"text": "Dangling fetch: GET /api/sales-radar/check-customer?${params} (app/sales-radar/page.tsx:565)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:565` calls `GET /api/sales-radar/check-customer?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/check-customer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f72bd7858625d0e6", "name": "Dangling fetch: POST /api/sales-radar/create-contact (app/sales-radar/page.tsx:615)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/create-contact (app/sales-radar/page.tsx:615)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:615` calls `POST /api/sales-radar/create-contact` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/create-contact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99592a17bd7db32b", "name": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:689)", "shortDescription": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:689)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:689` calls `GET /api/sales-radar/load-from-odoo?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/load-from-odoo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3edf864227757fb7", "name": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:714)", "shortDescription": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:714)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:714` calls `GET /api/sales-radar/load-from-odoo?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/load-from-odoo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c323ce19c6b2d72", "name": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:746)", "shortDescription": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:746)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:746` calls `GET /api/sales-radar/load-from-odoo?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/load-from-odoo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1cebd2454875e0a", "name": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:832)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:832)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:832` calls `POST /api/sales-radar/voice-note` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/voice-note`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7a76652de670cd0", "name": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:898)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:898)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:898` calls `POST /api/sales-radar/voice-note` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/voice-note`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-353d54a7719472cf", "name": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:956)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:956)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:956` calls `POST /api/sales-radar/voice-note` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/voice-note`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a02203aa3fab3dc", "name": "Dangling fetch: POST /api/sales-radar/create-appointment (app/sales-radar/page.tsx:1018)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/create-appointment (app/sales-radar/page.tsx:1018)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1018` calls `POST /api/sales-radar/create-appointment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/create-appointment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4deacb85b2e243a1", "name": "Dangling fetch: POST /api/sales-radar/create-activity (app/sales-radar/page.tsx:1068)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/create-activity (app/sales-radar/page.tsx:1068)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1068` calls `POST /api/sales-radar/create-activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/create-activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5bed030989fa980a", "name": "Dangling fetch: POST /api/sales-radar/mark-not-target (app/sales-radar/page.tsx:1097)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/mark-not-target (app/sales-radar/page.tsx:1097)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1097` calls `POST /api/sales-radar/mark-not-target` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/mark-not-target`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8acef5101d9ca4c", "name": "Dangling fetch: POST /api/sales-radar/reactivate-lead (app/sales-radar/page.tsx:1136)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/reactivate-lead (app/sales-radar/page.tsx:1136)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1136` calls `POST /api/sales-radar/reactivate-lead` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/reactivate-lead`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e81297592c90274a", "name": "Dangling fetch: POST /api/sales-radar/convert-lead-to-contact (app/sales-radar/page.tsx:1183)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/convert-lead-to-contact (app/sales-radar/page.tsx:1183)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1183` calls `POST /api/sales-radar/convert-lead-to-contact` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/convert-lead-to-contact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ba15b5f7f2ad1a4", "name": "Dangling fetch: POST /api/sales-radar/check-in (app/sales-radar/page.tsx:1241)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/check-in (app/sales-radar/page.tsx:1241)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1241` calls `POST /api/sales-radar/check-in` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/check-in`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfee8ea1bf1417bc", "name": "Dangling fetch: POST /api/sales-radar/analyze-client (app/sales-radar/page.tsx:1367)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-radar/analyze-client (app/sales-radar/page.tsx:1367)"}, "fullDescription": {"text": "`app/sales-radar/page.tsx:1367` calls `POST /api/sales-radar/analyze-client` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-radar/analyze-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-39a325eb7ce85387", "name": "Dangling fetch: GET /api/jetson/ocr (app/jetson-ocr/page.tsx:24)", "shortDescription": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-ocr/page.tsx:24)"}, "fullDescription": {"text": "`app/jetson-ocr/page.tsx:24` calls `GET /api/jetson/ocr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/ocr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-121c1491bb90dee3", "name": "Dangling fetch: POST /api/jetson/chat (app/jetson-ocr/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/jetson/chat (app/jetson-ocr/page.tsx:52)"}, "fullDescription": {"text": "`app/jetson-ocr/page.tsx:52` calls `POST /api/jetson/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a192195167cf7e42", "name": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:143)", "shortDescription": {"text": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:143)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:143` calls `GET /api/inventario-vocale/history` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/history`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab7cee628b4c4f8e", "name": "Dangling fetch: POST /api/inventario-vocale/transcribe (app/inventario-vocale/page.tsx:312)", "shortDescription": {"text": "Dangling fetch: POST /api/inventario-vocale/transcribe (app/inventario-vocale/page.tsx:312)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:312` calls `POST /api/inventario-vocale/transcribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/transcribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b09108633876e44", "name": "Dangling fetch: POST /api/inventario-vocale/extract-products (app/inventario-vocale/page.tsx:328)", "shortDescription": {"text": "Dangling fetch: POST /api/inventario-vocale/extract-products (app/inventario-vocale/page.tsx:328)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:328` calls `POST /api/inventario-vocale/extract-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/extract-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb5f175979c8ef3e", "name": "Dangling fetch: POST /api/inventario-vocale/save (app/inventario-vocale/page.tsx:365)", "shortDescription": {"text": "Dangling fetch: POST /api/inventario-vocale/save (app/inventario-vocale/page.tsx:365)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:365` calls `POST /api/inventario-vocale/save` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/save`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dff8476c6e9b7ca4", "name": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:384)", "shortDescription": {"text": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:384)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:384` calls `GET /api/inventario-vocale/history` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/history`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6126d0d72b7e424e", "name": "Dangling fetch: POST /api/inventario-vocale/export/pdf (app/inventario-vocale/page.tsx:413)", "shortDescription": {"text": "Dangling fetch: POST /api/inventario-vocale/export/pdf (app/inventario-vocale/page.tsx:413)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:413` calls `POST /api/inventario-vocale/export/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/export/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efc3eda779337166", "name": "Dangling fetch: POST /api/inventario-vocale/export/excel (app/inventario-vocale/page.tsx:437)", "shortDescription": {"text": "Dangling fetch: POST /api/inventario-vocale/export/excel (app/inventario-vocale/page.tsx:437)"}, "fullDescription": {"text": "`app/inventario-vocale/page.tsx:437` calls `POST /api/inventario-vocale/export/excel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventario-vocale/export/excel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b1cc049630120e8", "name": "Dangling fetch: GET /api/spese/submit?action=categories (app/spese/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: GET /api/spese/submit?action=categories (app/spese/page.tsx:146)"}, "fullDescription": {"text": "`app/spese/page.tsx:146` calls `GET /api/spese/submit?action=categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/spese/submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2fdba07b81461b7", "name": "Dangling fetch: POST /api/spese/analyze (app/spese/page.tsx:216)", "shortDescription": {"text": "Dangling fetch: POST /api/spese/analyze (app/spese/page.tsx:216)"}, "fullDescription": {"text": "`app/spese/page.tsx:216` calls `POST /api/spese/analyze` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/spese/analyze`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b0821308bca83902", "name": "Dangling fetch: POST /api/spese/submit (app/spese/page.tsx:259)", "shortDescription": {"text": "Dangling fetch: POST /api/spese/submit (app/spese/page.tsx:259)"}, "fullDescription": {"text": "`app/spese/page.tsx:259` calls `POST /api/spese/submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/spese/submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-024cfd2010c15b7c", "name": "Dangling fetch: POST /api/odoo/rpc (app/convalida-residui/page.tsx:147)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/convalida-residui/page.tsx:147)"}, "fullDescription": {"text": "`app/convalida-residui/page.tsx:147` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-268d7f5d769220dd", "name": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/convalida-residui/page.tsx:1773)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/convalida-residui/page.tsx:1773)"}, "fullDescription": {"text": "`app/convalida-residui/page.tsx:1773` calls `POST /api/catalogo-venditori/search-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-venditori/search-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b33dbf7de248204d", "name": "Dangling fetch: POST https://api.d-id.com/talks/streams (app/api/stella/did-stream/route.ts:35)", "shortDescription": {"text": "Dangling fetch: POST https://api.d-id.com/talks/streams (app/api/stella/did-stream/route.ts:35)"}, "fullDescription": {"text": "`app/api/stella/did-stream/route.ts:35` calls `POST https://api.d-id.com/talks/streams` 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.d-id.com/talks/streams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c771e7759ce0548d", "name": "Dangling fetch: DELETE https://api.d-id.com/talks/streams/${streamId}/${sessionId} (app/api/stella/did-stream/route.ts:8", "shortDescription": {"text": "Dangling fetch: DELETE https://api.d-id.com/talks/streams/${streamId}/${sessionId} (app/api/stella/did-stream/route.ts:86)"}, "fullDescription": {"text": "`app/api/stella/did-stream/route.ts:86` calls `DELETE https://api.d-id.com/talks/streams/${streamId}/${sessionId}` 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.d-id.com/talks/streams/<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-92b377e28a4f16d0", "name": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:19)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:19)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:19` calls `POST /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b2bbe5aeb811b6e", "name": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:71)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:71)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:71` calls `POST /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f913c5c1fd0f1bd", "name": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:242)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:242)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:242` calls `POST /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2f52beca20d4d1eb", "name": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:327)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:327)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:327` calls `POST /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6024b54127a2217b", "name": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:357)", "shortDescription": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:357)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:357` calls `POST /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03ec230369eda3dd", "name": "Dangling fetch: GET /api/scan-contatto (app/api/scan-contatto/example-usage.ts:381)", "shortDescription": {"text": "Dangling fetch: GET /api/scan-contatto (app/api/scan-contatto/example-usage.ts:381)"}, "fullDescription": {"text": "`app/api/scan-contatto/example-usage.ts:381` calls `GET /api/scan-contatto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scan-contatto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5758c31737fca115", "name": "Dangling fetch: POST http://localhost:3002/api/inventory/location (app/api/inventory/test-all/route.ts:65)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3002/api/inventory/location (app/api/inventory/test-all/route.ts:65)"}, "fullDescription": {"text": "`app/api/inventory/test-all/route.ts:65` calls `POST http://localhost:3002/api/inventory/location` 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:3002/api/inventory/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29647981b14f3a51", "name": "Dangling fetch: POST http://localhost:3002/api/inventory/products (app/api/inventory/test-all/route.ts:89)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3002/api/inventory/products (app/api/inventory/test-all/route.ts:89)"}, "fullDescription": {"text": "`app/api/inventory/test-all/route.ts:89` calls `POST http://localhost:3002/api/inventory/products` 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:3002/api/inventory/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f95a5c0747e5d48", "name": "Dangling fetch: GET http://localhost:3002/api/inventory/html-app (app/api/inventory/test-all/route.ts:113)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:3002/api/inventory/html-app (app/api/inventory/test-all/route.ts:113)"}, "fullDescription": {"text": "`app/api/inventory/test-all/route.ts:113` calls `GET http://localhost:3002/api/inventory/html-app` 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:3002/api/inventory/html-app`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7aa684073a2874ea", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/catalogo-venditori/ai-process-order/route.ts:13", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/catalogo-venditori/ai-process-order/route.ts:131)"}, "fullDescription": {"text": "`app/api/catalogo-venditori/ai-process-order/route.ts:131` calls `POST https://api.openai.com/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:/api.openai.com/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-416d547f1a828a74", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/catalogo-venditori/ai-process-order/route.t", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/catalogo-venditori/ai-process-order/route.ts:228)"}, "fullDescription": {"text": "`app/api/catalogo-venditori/ai-process-order/route.ts:228` calls `POST https://api.openai.com/v1/audio/transcriptions` 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.openai.com/v1/audio/transcriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18fb2425263c8f2a", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/openai/chat/route.ts:78)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/openai/chat/route.ts:78)"}, "fullDescription": {"text": "`app/api/openai/chat/route.ts:78` calls `POST https://api.openai.com/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:/api.openai.com/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-e1b968cba57531cc", "name": "Dangling fetch: POST https://api.openai.com/v1/realtime/sessions (app/api/openai/realtime/route.ts:184)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/realtime/sessions (app/api/openai/realtime/route.ts:184)"}, "fullDescription": {"text": "`app/api/openai/realtime/route.ts:184` calls `POST https://api.openai.com/v1/realtime/sessions` 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.openai.com/v1/realtime/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c33faaff8a7c1bf0", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/delivery/save-partial-justification/route.t", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/delivery/save-partial-justification/route.ts:27)"}, "fullDescription": {"text": "`app/api/delivery/save-partial-justification/route.ts:27` calls `POST https://api.openai.com/v1/audio/transcriptions` 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.openai.com/v1/audio/transcriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a410f3e8e341a81", "name": "Dangling fetch: POST https://api.openai.com/v1/videos/generations (app/api/avatar-generator/generate-video/route.ts:364)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/videos/generations (app/api/avatar-generator/generate-video/route.ts:364)"}, "fullDescription": {"text": "`app/api/avatar-generator/generate-video/route.ts:364` calls `POST https://api.openai.com/v1/videos/generations` 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.openai.com/v1/videos/generations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad2d1714007eb9a8", "name": "Dangling fetch: GET https://api.openai.com/v1/videos/${videoId} (app/api/avatar-generator/generate-video/route.ts:422)", "shortDescription": {"text": "Dangling fetch: GET https://api.openai.com/v1/videos/${videoId} (app/api/avatar-generator/generate-video/route.ts:422)"}, "fullDescription": {"text": "`app/api/avatar-generator/generate-video/route.ts:422` calls `GET https://api.openai.com/v1/videos/${videoId}` 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.openai.com/v1/videos/<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-c26369dc5b9a58e6", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning?key=${process.env.GEMINI_API_KEY} (app/api/avatar-generator/generate-video/route.ts:466)"}, "fullDescription": {"text": "`app/api/avatar-generator/generate-video/route.ts:466` calls `POST https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview/<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-2e17bf778c59f733", "name": "Dangling fetch: POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status (app/a", "shortDescription": {"text": "Dangling fetch: POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status (app/api/social-ai/publish-youtube/route.ts:79)"}, "fullDescription": {"text": "`app/api/social-ai/publish-youtube/route.ts:79` calls `POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status` 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.googleapis.com/upload/youtube/v3/videos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0c65cb25d7371aa", "name": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (app/api/cron/agents-healthcheck/route.ts:23)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (app/api/cron/agents-healthcheck/route.ts:23)"}, "fullDescription": {"text": "`app/api/cron/agents-healthcheck/route.ts:23` calls `POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage` 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.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d743379a232c162", "name": "Dangling fetch: POST https://api.openai.com/v1/images/generations (app/api/product-creator/generate-image/route.ts:27)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/images/generations (app/api/product-creator/generate-image/route.ts:27)"}, "fullDescription": {"text": "`app/api/product-creator/generate-image/route.ts:27` calls `POST https://api.openai.com/v1/images/generations` 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.openai.com/v1/images/generations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-098fb8e708ffa747", "name": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(retailQuery)}&count=5 (app/api", "shortDescription": {"text": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(retailQuery)}&count=5 (app/api/product-creator/enrich-product/route.ts:100)"}, "fullDescription": {"text": "`app/api/product-creator/enrich-product/route.ts:100` calls `GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(retailQuery)}&count=5` 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.search.brave.com/res/v1/web/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f0d56d98f11bf33", "name": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(wholesaleQuery)}&count=3 (app/", "shortDescription": {"text": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(wholesaleQuery)}&count=3 (app/api/product-creator/enrich-product/route.ts:133)"}, "fullDescription": {"text": "`app/api/product-creator/enrich-product/route.ts:133` calls `GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(wholesaleQuery)}&count=3` 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.search.brave.com/res/v1/web/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5bb9657ca9cdaaa4", "name": "Dangling fetch: GET /api/scarti/dashboard (app/scarti/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/scarti/dashboard (app/scarti/page.tsx:94)"}, "fullDescription": {"text": "`app/scarti/page.tsx:94` calls `GET /api/scarti/dashboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarti/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc670986ecbcfcce", "name": "Dangling fetch: POST /api/scarti/generate-order (app/scarti/page.tsx:125)", "shortDescription": {"text": "Dangling fetch: POST /api/scarti/generate-order (app/scarti/page.tsx:125)"}, "fullDescription": {"text": "`app/scarti/page.tsx:125` calls `POST /api/scarti/generate-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarti/generate-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fb23f577c24ce0e", "name": "Dangling fetch: POST /api/sales-agents/chat (app/sales-ai-hub/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-agents/chat (app/sales-ai-hub/page.tsx:64)"}, "fullDescription": {"text": "`app/sales-ai-hub/page.tsx:64` calls `POST /api/sales-agents/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-agents/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb38ff1e8ffbd69b", "name": "Dangling fetch: GET /api/verification-requests (app/inventario/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/verification-requests (app/inventario/page.tsx:91)"}, "fullDescription": {"text": "`app/inventario/page.tsx:91` calls `GET /api/verification-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-092667f7793ea1d9", "name": "Dangling fetch: GET /api/inventory/test-connection (app/inventario/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: GET /api/inventory/test-connection (app/inventario/page.tsx:111)"}, "fullDescription": {"text": "`app/inventario/page.tsx:111` calls `GET /api/inventory/test-connection` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/test-connection`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00df0ce3ca68ca38", "name": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:364)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:364)"}, "fullDescription": {"text": "`app/inventario/page.tsx:364` calls `POST /api/inventory/update-quantity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/update-quantity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a429726b32ac186", "name": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:792)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:792)"}, "fullDescription": {"text": "`app/inventario/page.tsx:792` calls `POST /api/inventory/update-quantity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/update-quantity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-644465f8ee77dc05", "name": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:911)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:911)"}, "fullDescription": {"text": "`app/inventario/page.tsx:911` calls `POST /api/inventory/update-quantity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/update-quantity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24f20e9dd664975b", "name": "Dangling fetch: GET /api/verification-requests (app/inventario/verifica/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/verification-requests (app/inventario/verifica/page.tsx:94)"}, "fullDescription": {"text": "`app/inventario/verifica/page.tsx:94` calls `GET /api/verification-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c51fae6123d5fab", "name": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/verifica/page.tsx:218)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/verifica/page.tsx:218)"}, "fullDescription": {"text": "`app/inventario/verifica/page.tsx:218` calls `POST /api/inventory/update-quantity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/update-quantity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-541730f4bba17308", "name": "Dangling fetch: POST /api/verification-requests/complete (app/inventario/verifica/page.tsx:238)", "shortDescription": {"text": "Dangling fetch: POST /api/verification-requests/complete (app/inventario/verifica/page.tsx:238)"}, "fullDescription": {"text": "`app/inventario/verifica/page.tsx:238` calls `POST /api/verification-requests/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests/complete`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91888d6867b1b937", "name": "Dangling fetch: GET /api/lapa-agents/status (app/lapa-ai-agents/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: GET /api/lapa-agents/status (app/lapa-ai-agents/page.tsx:287)"}, "fullDescription": {"text": "`app/lapa-ai-agents/page.tsx:287` calls `GET /api/lapa-agents/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/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-43845dbfd8e4dd60", "name": "Dangling fetch: GET /api/lapa-ai/rag-stats (app/lapa-ai-agents/page.tsx:312)", "shortDescription": {"text": "Dangling fetch: GET /api/lapa-ai/rag-stats (app/lapa-ai-agents/page.tsx:312)"}, "fullDescription": {"text": "`app/lapa-ai-agents/page.tsx:312` calls `GET /api/lapa-ai/rag-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-ai/rag-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-70db5e075de07acc", "name": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/page.tsx:356)", "shortDescription": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/page.tsx:356)"}, "fullDescription": {"text": "`app/lapa-ai-agents/page.tsx:356` calls `POST /api/lapa-agents/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-733039c413d44a7f", "name": "Dangling fetch: GET /api/lapa-agents/conversations?limit=50 (app/lapa-ai-agents/page.tsx:928)", "shortDescription": {"text": "Dangling fetch: GET /api/lapa-agents/conversations?limit=50 (app/lapa-ai-agents/page.tsx:928)"}, "fullDescription": {"text": "`app/lapa-ai-agents/page.tsx:928` calls `GET /api/lapa-agents/conversations?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/conversations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9e3d38235bc297d", "name": "Dangling fetch: POST /api/debug/search-all-contacts (app/lapa-ai-agents/test/page.tsx:132)", "shortDescription": {"text": "Dangling fetch: POST /api/debug/search-all-contacts (app/lapa-ai-agents/test/page.tsx:132)"}, "fullDescription": {"text": "`app/lapa-ai-agents/test/page.tsx:132` calls `POST /api/debug/search-all-contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/debug/search-all-contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7168f5a398302a45", "name": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/test/page.tsx:417)", "shortDescription": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/test/page.tsx:417)"}, "fullDescription": {"text": "`app/lapa-ai-agents/test/page.tsx:417` calls `POST /api/lapa-agents/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76875826abf1e780", "name": "Dangling fetch: GET /api/lapa-agents/conversations?sessionId=${conversationId} (app/lapa-ai-agents/widget/page.tsx:191)", "shortDescription": {"text": "Dangling fetch: GET /api/lapa-agents/conversations?sessionId=${conversationId} (app/lapa-ai-agents/widget/page.tsx:191)"}, "fullDescription": {"text": "`app/lapa-ai-agents/widget/page.tsx:191` calls `GET /api/lapa-agents/conversations?sessionId=${conversationId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lapa-agents/conversations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc984f37300862a4", "name": "Dangling fetch: GET /api/recupero-clienti (app/recupero-clienti/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: GET /api/recupero-clienti (app/recupero-clienti/page.tsx:96)"}, "fullDescription": {"text": "`app/recupero-clienti/page.tsx:96` calls `GET /api/recupero-clienti` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/recupero-clienti`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0984fb966c518fdc", "name": "Dangling fetch: POST /api/recupero-clienti/nota (app/recupero-clienti/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: POST /api/recupero-clienti/nota (app/recupero-clienti/page.tsx:110)"}, "fullDescription": {"text": "`app/recupero-clienti/page.tsx:110` calls `POST /api/recupero-clienti/nota` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/recupero-clienti/nota`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52cef56f4618179f", "name": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (app/product-photo-manager/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (app/product-photo-manager/page.tsx:131)"}, "fullDescription": {"text": "`app/product-photo-manager/page.tsx:131` calls `POST /api/catalogo-lapa/update-product-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/update-product-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49d122e19d727fee", "name": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:165)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:165)"}, "fullDescription": {"text": "`app/product-photo-manager/page.tsx:165` calls `POST /api/catalogo-lapa/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-621fee46c4e0f653", "name": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:205)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:205)"}, "fullDescription": {"text": "`app/product-photo-manager/page.tsx:205` calls `POST /api/catalogo-lapa/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8413797f7d70ffd0", "name": "Dangling fetch: GET /api/jokes (app/components/JokeBanner.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/jokes (app/components/JokeBanner.tsx:62)"}, "fullDescription": {"text": "`app/components/JokeBanner.tsx:62` calls `GET /api/jokes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jokes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-201d8eabfbbbec6d", "name": "Dangling fetch: POST /api/test-ocr/gemini-flash (app/test-ocr/page.tsx:30)", "shortDescription": {"text": "Dangling fetch: POST /api/test-ocr/gemini-flash (app/test-ocr/page.tsx:30)"}, "fullDescription": {"text": "`app/test-ocr/page.tsx:30` calls `POST /api/test-ocr/gemini-flash` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/test-ocr/gemini-flash`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9369cac603bcc57c", "name": "Dangling fetch: POST /api/odoo/rpc (app/centralino-ai/page.tsx:37)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/centralino-ai/page.tsx:37)"}, "fullDescription": {"text": "`app/centralino-ai/page.tsx:37` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e1123ae4866587b", "name": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/page.tsx:115)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/page.tsx:115)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:115` calls `GET /api/smart-ordering-v2/suppliers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/suppliers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed35c9e963addd3c", "name": "Dangling fetch: GET /api/smart-ordering-v2/pre-orders-summary (app/ordini-smart-v2/page.tsx:133)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pre-orders-summary (app/ordini-smart-v2/page.tsx:133)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:133` calls `GET /api/smart-ordering-v2/pre-orders-summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/pre-orders-summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b91eb10a9fd18f76", "name": "Dangling fetch: GET /api/supplier-cadence (app/ordini-smart-v2/page.tsx:149)", "shortDescription": {"text": "Dangling fetch: GET /api/supplier-cadence (app/ordini-smart-v2/page.tsx:149)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:149` calls `GET /api/supplier-cadence` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34aac8db0714f264", "name": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/ordini-smart-v2/page.tsx:213)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/ordini-smart-v2/page.tsx:213)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:213` calls `POST /api/smart-ordering-v2/toggle-preorder-tag` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/toggle-preorder-tag`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a7199ff5bbe6810", "name": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/page.tsx:347)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/page.tsx:347)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:347` calls `GET /api/smart-ordering-v2/product-analytics/${product.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/product-analytics/<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-6a989e3303a5f589", "name": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/page.tsx:368)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/page.tsx:368)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:368` calls `POST /api/smart-ordering-v2/create-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/create-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee90f439b36017b7", "name": "Dangling fetch: POST /api/ordini-fornitori/analyze-today?ai=${useAI} (app/ordini-smart-v2/page.tsx:396)", "shortDescription": {"text": "Dangling fetch: POST /api/ordini-fornitori/analyze-today?ai=${useAI} (app/ordini-smart-v2/page.tsx:396)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:396` calls `POST /api/ordini-fornitori/analyze-today?ai=${useAI}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ordini-fornitori/analyze-today`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05dc19bf9fa8d8f6", "name": "Dangling fetch: DELETE /api/smart-ordering-v2/delete-preorder-assignments (app/ordini-smart-v2/page.tsx:1889)", "shortDescription": {"text": "Dangling fetch: DELETE /api/smart-ordering-v2/delete-preorder-assignments (app/ordini-smart-v2/page.tsx:1889)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:1889` calls `DELETE /api/smart-ordering-v2/delete-preorder-assignments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/delete-preorder-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-aa3f165bae8edfbc", "name": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/ordini-smart-v2/page.tsx:1921)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/ordini-smart-v2/page.tsx:1921)"}, "fullDescription": {"text": "`app/ordini-smart-v2/page.tsx:1921` calls `POST /api/smart-ordering-v2/create-all-preorders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/create-all-preorders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ec835fc365b87d0", "name": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/prodotti-critici/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/prodotti-critici/page.tsx:124)"}, "fullDescription": {"text": "`app/ordini-smart-v2/prodotti-critici/page.tsx:124` calls `GET /api/smart-ordering-v2/suppliers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/suppliers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bb136159856a25a", "name": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/prodotti-critici/page.ts", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/prodotti-critici/page.tsx:174)"}, "fullDescription": {"text": "`app/ordini-smart-v2/prodotti-critici/page.tsx:174` calls `GET /api/smart-ordering-v2/product-analytics/${product.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/product-analytics/<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-6bbdd263eb91b416", "name": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/prodotti-critici/page.tsx:191)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/prodotti-critici/page.tsx:191)"}, "fullDescription": {"text": "`app/ordini-smart-v2/prodotti-critici/page.tsx:191` calls `POST /api/smart-ordering-v2/create-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/create-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9bbb06a9980a3a3d", "name": "Dangling fetch: GET /api/smart-ordering-v2/pending-orders (app/ordini-smart-v2/ordini-in-corso/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pending-orders (app/ordini-smart-v2/ordini-in-corso/page.tsx:117)"}, "fullDescription": {"text": "`app/ordini-smart-v2/ordini-in-corso/page.tsx:117` calls `GET /api/smart-ordering-v2/pending-orders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/pending-orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-869f89adad597769", "name": "Dangling fetch: GET /api/smart-ordering-v2/analyze-order/${order.id} (app/ordini-smart-v2/ordini-in-corso/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/analyze-order/${order.id} (app/ordini-smart-v2/ordini-in-corso/page.tsx:136)"}, "fullDescription": {"text": "`app/ordini-smart-v2/ordini-in-corso/page.tsx:136` calls `GET /api/smart-ordering-v2/analyze-order/${order.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/analyze-order/<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-f4802817b97ce0a0", "name": "Dangling fetch: GET /api/mappa-consegne?from=${from}&to=${to} (app/mappa-consegne/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/mappa-consegne?from=${from}&to=${to} (app/mappa-consegne/page.tsx:43)"}, "fullDescription": {"text": "`app/mappa-consegne/page.tsx:43` calls `GET /api/mappa-consegne?from=${from}&to=${to}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mappa-consegne`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f99f33856d1088c8", "name": "Dangling fetch: PUT /api/controllo-diretto/upload-video (app/controllo-diretto/page.tsx:488)", "shortDescription": {"text": "Dangling fetch: PUT /api/controllo-diretto/upload-video (app/controllo-diretto/page.tsx:488)"}, "fullDescription": {"text": "`app/controllo-diretto/page.tsx:488` calls `PUT /api/controllo-diretto/upload-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-diretto/upload-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1c2258fd8f0943f", "name": "Dangling fetch: POST /api/valida-fatture/get-invoice-detail (app/valida-fatture/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/get-invoice-detail (app/valida-fatture/page.tsx:78)"}, "fullDescription": {"text": "`app/valida-fatture/page.tsx:78` calls `POST /api/valida-fatture/get-invoice-detail` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/get-invoice-detail`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de7957a3011c1121", "name": "Dangling fetch: POST /api/valida-fatture/analyze-and-compare (app/valida-fatture/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/analyze-and-compare (app/valida-fatture/page.tsx:113)"}, "fullDescription": {"text": "`app/valida-fatture/page.tsx:113` calls `POST /api/valida-fatture/analyze-and-compare` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/analyze-and-compare`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b51422bdbf85d05", "name": "Dangling fetch: POST /api/valida-fatture/apply-corrections (app/valida-fatture/page.tsx:192)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/apply-corrections (app/valida-fatture/page.tsx:192)"}, "fullDescription": {"text": "`app/valida-fatture/page.tsx:192` calls `POST /api/valida-fatture/apply-corrections` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/apply-corrections`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82bfb98df32b9e02", "name": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:67)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:67)"}, "fullDescription": {"text": "`app/valida-fatture/ManageMissingProductsView.tsx:67` calls `POST /api/valida-fatture/search-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/search-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9f600e6dd3e48b6", "name": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:115)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:115)"}, "fullDescription": {"text": "`app/valida-fatture/ManageMissingProductsView.tsx:115` calls `POST /api/valida-fatture/search-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/search-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a60c408d0ac1be5d", "name": "Dangling fetch: POST /api/valida-fatture/add-product-line (app/valida-fatture/ManageMissingProductsView.tsx:163)", "shortDescription": {"text": "Dangling fetch: POST /api/valida-fatture/add-product-line (app/valida-fatture/ManageMissingProductsView.tsx:163)"}, "fullDescription": {"text": "`app/valida-fatture/ManageMissingProductsView.tsx:163` calls `POST /api/valida-fatture/add-product-line` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/valida-fatture/add-product-line`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5c8ff6b7595c96e", "name": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (app/arrivo-merce/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (app/arrivo-merce/page.tsx:120)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:120` calls `POST /api/arrivo-merce/add-product-to-picking` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/add-product-to-picking`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23f0493403cd544f", "name": "Dangling fetch: POST /api/arrivo-merce/parse-invoice (app/arrivo-merce/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-invoice (app/arrivo-merce/page.tsx:207)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:207` calls `POST /api/arrivo-merce/parse-invoice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/parse-invoice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b99b0ec66168fa1f", "name": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:238)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:238)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:238` calls `POST /api/arrivo-merce/find-reception` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/find-reception`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8146694ab88fb2be", "name": "Dangling fetch: POST /api/arrivo-merce/find-receptions-by-supplier (app/arrivo-merce/page.tsx:280)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/find-receptions-by-supplier (app/arrivo-merce/page.tsx:280)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:280` calls `POST /api/arrivo-merce/find-receptions-by-supplier` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/find-receptions-by-supplier`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94316f1bdb5b4ae8", "name": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:328)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:328)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:328` calls `POST /api/arrivo-merce/find-reception` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/find-reception`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec85710b200b67c3", "name": "Dangling fetch: POST /api/arrivo-merce/process-reception (app/arrivo-merce/page.tsx:365)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/process-reception (app/arrivo-merce/page.tsx:365)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:365` calls `POST /api/arrivo-merce/process-reception` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/process-reception`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12eacedd5b3eb85a", "name": "Dangling fetch: POST /api/arrivo-merce/get-po-attachments (app/arrivo-merce/page.tsx:541)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/get-po-attachments (app/arrivo-merce/page.tsx:541)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:541` calls `POST /api/arrivo-merce/get-po-attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/get-po-attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efa5ff7e0b23cf05", "name": "Dangling fetch: POST /api/arrivo-merce/parse-attachment (app/arrivo-merce/page.tsx:619)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-attachment (app/arrivo-merce/page.tsx:619)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:619` calls `POST /api/arrivo-merce/parse-attachment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/parse-attachment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cda78e68a711b8c2", "name": "Dangling fetch: POST /api/arrivo-merce/parse-multiple-attachments (app/arrivo-merce/page.tsx:669)", "shortDescription": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-multiple-attachments (app/arrivo-merce/page.tsx:669)"}, "fullDescription": {"text": "`app/arrivo-merce/page.tsx:669` calls `POST /api/arrivo-merce/parse-multiple-attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/arrivo-merce/parse-multiple-attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-586984120a2e184e", "name": "Dangling fetch: GET /api/controllo-prezzi/counts (app/controllo-prezzi/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/counts (app/controllo-prezzi/page.tsx:84)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:84` calls `GET /api/controllo-prezzi/counts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/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-82a64dcd4dbbe4bd", "name": "Dangling fetch: GET /api/controllo-prezzi/block-requests (app/controllo-prezzi/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/block-requests (app/controllo-prezzi/page.tsx:107)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:107` calls `GET /api/controllo-prezzi/block-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/block-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfecbb50ec5fcaf7", "name": "Dangling fetch: GET /api/controllo-prezzi/products?category=${category}&days=90 (app/controllo-prezzi/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/products?category=${category}&days=90 (app/controllo-prezzi/page.tsx:148)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:148` calls `GET /api/controllo-prezzi/products?category=${category}&days=90` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-381dd355feba61a0", "name": "Dangling fetch: POST /api/controllo-prezzi/update-price (app/controllo-prezzi/page.tsx:346)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/update-price (app/controllo-prezzi/page.tsx:346)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:346` calls `POST /api/controllo-prezzi/update-price` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/update-price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2191a84293f1e1bd", "name": "Dangling fetch: POST /api/controllo-prezzi/approve-block (app/controllo-prezzi/page.tsx:403)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/approve-block (app/controllo-prezzi/page.tsx:403)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:403` calls `POST /api/controllo-prezzi/approve-block` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/approve-block`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec19bd77c3e75d75", "name": "Dangling fetch: POST /api/controllo-prezzi/reject-block (app/controllo-prezzi/page.tsx:443)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/reject-block (app/controllo-prezzi/page.tsx:443)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:443` calls `POST /api/controllo-prezzi/reject-block` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/reject-block`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c29369d14e99b8c9", "name": "Dangling fetch: POST /api/controllo-prezzi/mark-reviewed (app/controllo-prezzi/page.tsx:474)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/mark-reviewed (app/controllo-prezzi/page.tsx:474)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:474` calls `POST /api/controllo-prezzi/mark-reviewed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/mark-reviewed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76f3318268392fe2", "name": "Dangling fetch: POST /api/controllo-prezzi/block-price (app/controllo-prezzi/page.tsx:504)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/block-price (app/controllo-prezzi/page.tsx:504)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:504` calls `POST /api/controllo-prezzi/block-price` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/block-price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d711246e3b90d28", "name": "Dangling fetch: POST /api/controllo-prezzi/mark-pending (app/controllo-prezzi/page.tsx:535)", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/mark-pending (app/controllo-prezzi/page.tsx:535)"}, "fullDescription": {"text": "`app/controllo-prezzi/page.tsx:535` calls `POST /api/controllo-prezzi/mark-pending` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/mark-pending`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed11257159a4972c", "name": "Dangling fetch: GET /api/controllo-prezzi/analisi-mensile?month=${month} (app/controllo-prezzi/analisi-mensile/page.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/analisi-mensile?month=${month} (app/controllo-prezzi/analisi-mensile/page.tsx:77)"}, "fullDescription": {"text": "`app/controllo-prezzi/analisi-mensile/page.tsx:77` calls `GET /api/controllo-prezzi/analisi-mensile?month=${month}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/analisi-mensile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c34fd8baaed2583b", "name": "Dangling fetch: GET /api/controllo-prezzi/main-pricelists (app/controllo-prezzi/imposta-listini/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/main-pricelists (app/controllo-prezzi/imposta-listini/page.tsx:77)"}, "fullDescription": {"text": "`app/controllo-prezzi/imposta-listini/page.tsx:77` calls `GET /api/controllo-prezzi/main-pricelists` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/main-pricelists`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35c36ce1d5c865d6", "name": "Dangling fetch: GET /api/controllo-prezzi/products-without-rules?pricelistIds=${pricelistIds}&filter=${filter} (app/cont", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/products-without-rules?pricelistIds=${pricelistIds}&filter=${filter} (app/controllo-prezzi/imposta-listini/page.tsx:97)"}, "fullDescription": {"text": "`app/controllo-prezzi/imposta-listini/page.tsx:97` calls `GET /api/controllo-prezzi/products-without-rules?pricelistIds=${pricelistIds}&filter=${filter}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/products-without-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b3ad364d6c9e5d2", "name": "Dangling fetch: GET /api/controllo-prezzi/product-pricelist-rules?productId=${product.id} (app/controllo-prezzi/imposta-", "shortDescription": {"text": "Dangling fetch: GET /api/controllo-prezzi/product-pricelist-rules?productId=${product.id} (app/controllo-prezzi/imposta-listini/page.tsx:132)"}, "fullDescription": {"text": "`app/controllo-prezzi/imposta-listini/page.tsx:132` calls `GET /api/controllo-prezzi/product-pricelist-rules?productId=${product.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/product-pricelist-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e40d6ed043245e15", "name": "Dangling fetch: POST /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:167", "shortDescription": {"text": "Dangling fetch: POST /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:167)"}, "fullDescription": {"text": "`app/controllo-prezzi/imposta-listini/page.tsx:167` calls `POST /api/controllo-prezzi/set-product-pricelist-rule` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/set-product-pricelist-rule`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a704627b1ee4a40a", "name": "Dangling fetch: DELETE /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:1", "shortDescription": {"text": "Dangling fetch: DELETE /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:194)"}, "fullDescription": {"text": "`app/controllo-prezzi/imposta-listini/page.tsx:194` calls `DELETE /api/controllo-prezzi/set-product-pricelist-rule` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/controllo-prezzi/set-product-pricelist-rule`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b58a6503f0ca7f4b", "name": "Dangling fetch: POST /api/sales-alert/note (app/sales-alert/page.tsx:544)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-alert/note (app/sales-alert/page.tsx:544)"}, "fullDescription": {"text": "`app/sales-alert/page.tsx:544` calls `POST /api/sales-alert/note` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-alert/note`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23343766b7819c49", "name": "Dangling fetch: POST /api/sales-alert/analyze (app/sales-alert/page.tsx:661)", "shortDescription": {"text": "Dangling fetch: POST /api/sales-alert/analyze (app/sales-alert/page.tsx:661)"}, "fullDescription": {"text": "`app/sales-alert/page.tsx:661` calls `POST /api/sales-alert/analyze` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-alert/analyze`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9690bbbb9134aae9", "name": "Dangling fetch: GET /api/sales-alert (app/sales-alert/page.tsx:793)", "shortDescription": {"text": "Dangling fetch: GET /api/sales-alert (app/sales-alert/page.tsx:793)"}, "fullDescription": {"text": "`app/sales-alert/page.tsx:793` calls `GET /api/sales-alert` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sales-alert`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdc13bb6d99ace23", "name": "Dangling fetch: GET /api/hr-payslip?action=employees (app/gestione-buste-paga/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=employees (app/gestione-buste-paga/page.tsx:120)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:120` calls `GET /api/hr-payslip?action=employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6aa6f030b645d0b3", "name": "Dangling fetch: GET /api/hr-payslip?action=salary-rules (app/gestione-buste-paga/page.tsx:121)", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=salary-rules (app/gestione-buste-paga/page.tsx:121)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:121` calls `GET /api/hr-payslip?action=salary-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b62a61b1e359947", "name": "Dangling fetch: GET /api/hr-payslip?action=payslip-lines&payslipId=${payslipId} (app/gestione-buste-paga/page.tsx:165)", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=payslip-lines&payslipId=${payslipId} (app/gestione-buste-paga/page.tsx:165)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:165` calls `GET /api/hr-payslip?action=payslip-lines&payslipId=${payslipId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f65068b75f3ca14", "name": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:184)", "shortDescription": {"text": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:184)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:184` calls `POST /api/hr-payslip` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60997b5e0c5c1cb5", "name": "Dangling fetch: GET /api/hr-payslip?action=employee-bonus&employeeId=${employeeId}&month=${month} (app/gestione-buste-pa", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=employee-bonus&employeeId=${employeeId}&month=${month} (app/gestione-buste-paga/page.tsx:231)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:231` calls `GET /api/hr-payslip?action=employee-bonus&employeeId=${employeeId}&month=${month}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1186650e6ec3868", "name": "Dangling fetch: POST /api/hr-payslip/extract-pdf (app/gestione-buste-paga/page.tsx:286)", "shortDescription": {"text": "Dangling fetch: POST /api/hr-payslip/extract-pdf (app/gestione-buste-paga/page.tsx:286)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:286` calls `POST /api/hr-payslip/extract-pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip/extract-pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49c00297fe9baee8", "name": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:347)", "shortDescription": {"text": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:347)"}, "fullDescription": {"text": "`app/gestione-buste-paga/page.tsx:347` calls `POST /api/hr-payslip` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fca142eef5ee04aa", "name": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:549)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:549)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:549` calls `POST /api/email-ai/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/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-072b5fb613cb4156", "name": "Dangling fetch: POST /api/email-ai/disconnect (app/email-ai-monitor/page.tsx:596)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/disconnect (app/email-ai-monitor/page.tsx:596)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:596` calls `POST /api/email-ai/disconnect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/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-6ed3a64e4f45432a", "name": "Dangling fetch: POST /api/email-ai/fetch-emails (app/email-ai-monitor/page.tsx:634)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/fetch-emails (app/email-ai-monitor/page.tsx:634)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:634` calls `POST /api/email-ai/fetch-emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/fetch-emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aacbb2247a46700e", "name": "Dangling fetch: POST /api/email-ai/regenerate-summaries (app/email-ai-monitor/page.tsx:671)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/regenerate-summaries (app/email-ai-monitor/page.tsx:671)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:671` calls `POST /api/email-ai/regenerate-summaries` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/regenerate-summaries`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5512c5fe7807efc", "name": "Dangling fetch: GET /api/email-ai/settings?connectionId=${connectionId} (app/email-ai-monitor/page.tsx:697)", "shortDescription": {"text": "Dangling fetch: GET /api/email-ai/settings?connectionId=${connectionId} (app/email-ai-monitor/page.tsx:697)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:697` calls `GET /api/email-ai/settings?connectionId=${connectionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82461c6dca1bc6bc", "name": "Dangling fetch: PUT /api/email-ai/settings (app/email-ai-monitor/page.tsx:719)", "shortDescription": {"text": "Dangling fetch: PUT /api/email-ai/settings (app/email-ai-monitor/page.tsx:719)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:719` calls `PUT /api/email-ai/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e89686cb1ee7d96", "name": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:769)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:769)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:769` calls `POST /api/email-ai/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e76137ffab6716b", "name": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:831)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:831)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:831` calls `POST /api/email-ai/generate-reply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/generate-reply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2c6cedf09e04d7b", "name": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:853)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:853)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:853` calls `POST /api/email-ai/generate-reply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/generate-reply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-469186fa517a8dbc", "name": "Dangling fetch: POST /api/email-ai/send (app/email-ai-monitor/page.tsx:885)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/send (app/email-ai-monitor/page.tsx:885)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:885` calls `POST /api/email-ai/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/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-3059730f4dc098fb", "name": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:921)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:921)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:921` calls `POST /api/email-ai/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/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-cf717c7a9c506b10", "name": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:984)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:984)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:984` calls `POST /api/email-ai/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c23df434b3f2de6", "name": "Dangling fetch: POST /api/email-ai/agent (app/email-ai-monitor/page.tsx:1012)", "shortDescription": {"text": "Dangling fetch: POST /api/email-ai/agent (app/email-ai-monitor/page.tsx:1012)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:1012` calls `POST /api/email-ai/agent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/agent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0c69c3a6bbebf4f", "name": "Dangling fetch: GET /api/email-ai/agent?connectionId=${connectionId}&action=stats (app/email-ai-monitor/page.tsx:1039)", "shortDescription": {"text": "Dangling fetch: GET /api/email-ai/agent?connectionId=${connectionId}&action=stats (app/email-ai-monitor/page.tsx:1039)"}, "fullDescription": {"text": "`app/email-ai-monitor/page.tsx:1039` calls `GET /api/email-ai/agent?connectionId=${connectionId}&action=stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-ai/agent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-326f49334ddecaab", "name": "Dangling fetch: GET /api/jetson/ocr (app/jetson-monitor/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-monitor/page.tsx:50)"}, "fullDescription": {"text": "`app/jetson-monitor/page.tsx:50` calls `GET /api/jetson/ocr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/ocr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4364d0e867e0ecd1", "name": "Dangling fetch: POST /api/jetson/chat (app/jetson-monitor/page.tsx:122)", "shortDescription": {"text": "Dangling fetch: POST /api/jetson/chat (app/jetson-monitor/page.tsx:122)"}, "fullDescription": {"text": "`app/jetson-monitor/page.tsx:122` calls `POST /api/jetson/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e962f13dccaea953", "name": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(clientiQ)} (app/silvano/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(clientiQ)} (app/silvano/page.tsx:76)"}, "fullDescription": {"text": "`app/silvano/page.tsx:76` calls `GET /api/silvano/clienti?q=${encodeURIComponent(clientiQ)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/clienti`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b499d5e5c3e23c85", "name": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/page.tsx:92)"}, "fullDescription": {"text": "`app/silvano/page.tsx:92` calls `GET /api/silvano/catalog?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3837dfe15897b45b", "name": "Dangling fetch: GET /api/silvano/categorie (app/silvano/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/categorie (app/silvano/page.tsx:108)"}, "fullDescription": {"text": "`app/silvano/page.tsx:108` calls `GET /api/silvano/categorie` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/categorie`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf55a4d872f0b897", "name": "Dangling fetch: GET /api/silvano/prodotti-cliente/${c.id} (app/silvano/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/prodotti-cliente/${c.id} (app/silvano/page.tsx:113)"}, "fullDescription": {"text": "`app/silvano/page.tsx:113` calls `GET /api/silvano/prodotti-cliente/${c.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/prodotti-cliente/<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-5769d163fa5d07e5", "name": "Dangling fetch: GET /api/silvano/clienti/${c.id} (app/silvano/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/clienti/${c.id} (app/silvano/page.tsx:124)"}, "fullDescription": {"text": "`app/silvano/page.tsx:124` calls `GET /api/silvano/clienti/${c.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/clienti/<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-ee6793286da35996", "name": "Dangling fetch: POST /api/silvano/crea-ordine (app/silvano/page.tsx:162)", "shortDescription": {"text": "Dangling fetch: POST /api/silvano/crea-ordine (app/silvano/page.tsx:162)"}, "fullDescription": {"text": "`app/silvano/page.tsx:162` calls `POST /api/silvano/crea-ordine` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/crea-ordine`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28763424432d8341", "name": "Dangling fetch: GET /api/silvano/ultimo-acquisto?clientId=${clientId}&productId=${p.id} (app/silvano/page.tsx:416)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/ultimo-acquisto?clientId=${clientId}&productId=${p.id} (app/silvano/page.tsx:416)"}, "fullDescription": {"text": "`app/silvano/page.tsx:416` calls `GET /api/silvano/ultimo-acquisto?clientId=${clientId}&productId=${p.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ultimo-acquisto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b31d0912b3a0348", "name": "Dangling fetch: GET /api/silvano/prodotto-info/${productId} (app/silvano/page.tsx:518)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/prodotto-info/${productId} (app/silvano/page.tsx:518)"}, "fullDescription": {"text": "`app/silvano/page.tsx:518` calls `GET /api/silvano/prodotto-info/${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/prodotto-info/<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-f39b1338f09fbdd6", "name": "Dangling fetch: GET /api/silvano/dashboard?from=${from}&to=${to} (app/silvano/dashboard/page.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/dashboard?from=${from}&to=${to} (app/silvano/dashboard/page.tsx:49)"}, "fullDescription": {"text": "`app/silvano/dashboard/page.tsx:49` calls `GET /api/silvano/dashboard?from=${from}&to=${to}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8ccfef7691ff9f7", "name": "Dangling fetch: GET /api/silvano/mappa (app/silvano/mappa/page.tsx:21)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/mappa (app/silvano/mappa/page.tsx:21)"}, "fullDescription": {"text": "`app/silvano/mappa/page.tsx:21` calls `GET /api/silvano/mappa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/mappa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4dc8743c570b47b1", "name": "Dangling fetch: GET /api/silvano/ordini?date=${date} (app/silvano/ordini/page.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/ordini?date=${date} (app/silvano/ordini/page.tsx:62)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:62` calls `GET /api/silvano/ordini?date=${date}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ordini`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c5593573c0bcf06", "name": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:73)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:73` calls `GET /api/silvano/ordine/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ordine/<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-c17647351afbbb74", "name": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:81)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:81` calls `GET /api/silvano/ordine/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ordine/<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-734f6128b5d2dcc6", "name": "Dangling fetch: GET /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:98)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:98` calls `GET /api/silvano/ordine/${sel.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ordine/<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-728572fadc2ffc0d", "name": "Dangling fetch: DELETE /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:121)", "shortDescription": {"text": "Dangling fetch: DELETE /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:121)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:121` calls `DELETE /api/silvano/ordine/${sel.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/ordine/<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-4f1b124ba0369291", "name": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/ordini/page.tsx:386)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/ordini/page.tsx:386)"}, "fullDescription": {"text": "`app/silvano/ordini/page.tsx:386` calls `GET /api/silvano/catalog?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3f5bdd4f9e0b939", "name": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(q)} (app/silvano/clienti/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(q)} (app/silvano/clienti/page.tsx:46)"}, "fullDescription": {"text": "`app/silvano/clienti/page.tsx:46` calls `GET /api/silvano/clienti?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: `/silvano/clienti`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23ec6db851a17efb", "name": "Dangling fetch: GET /api/silvano/cliente/${id} (app/silvano/clienti/page.tsx:56)", "shortDescription": {"text": "Dangling fetch: GET /api/silvano/cliente/${id} (app/silvano/clienti/page.tsx:56)"}, "fullDescription": {"text": "`app/silvano/clienti/page.tsx:56` calls `GET /api/silvano/cliente/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/silvano/cliente/<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-534d1fc06994c17d", "name": "Dangling fetch: POST /api/test-ai-matching (app/test-ai-matching/page.tsx:23)", "shortDescription": {"text": "Dangling fetch: POST /api/test-ai-matching (app/test-ai-matching/page.tsx:23)"}, "fullDescription": {"text": "`app/test-ai-matching/page.tsx:23` calls `POST /api/test-ai-matching` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/test-ai-matching`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91f165942ed9f075", "name": "Dangling fetch: GET /api/smart-route-ai/session (app/smart-route-ai/page.tsx:216)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-route-ai/session (app/smart-route-ai/page.tsx:216)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:216` calls `GET /api/smart-route-ai/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f770b2f9586f594", "name": "Dangling fetch: GET /api/smart-route-ai/vehicles (app/smart-route-ai/page.tsx:240)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-route-ai/vehicles (app/smart-route-ai/page.tsx:240)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:240` calls `GET /api/smart-route-ai/vehicles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/vehicles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da9e09e67d4c7a2b", "name": "Dangling fetch: POST /api/smart-route-ai/pickings (app/smart-route-ai/page.tsx:268)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/pickings (app/smart-route-ai/page.tsx:268)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:268` calls `POST /api/smart-route-ai/pickings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/pickings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f72e73d7ef6f6581", "name": "Dangling fetch: GET /api/smart-route-ai/batches?date=${date} (app/smart-route-ai/page.tsx:306)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-route-ai/batches?date=${date} (app/smart-route-ai/page.tsx:306)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:306` calls `GET /api/smart-route-ai/batches?date=${date}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6fb022eadf6fbbc8", "name": "Dangling fetch: POST /api/smart-route-ai/batches (app/smart-route-ai/page.tsx:324)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches (app/smart-route-ai/page.tsx:324)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:324` calls `POST /api/smart-route-ai/batches` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97ab3ff1720f492f", "name": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:383)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:383)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:383` calls `POST /api/smart-route-ai/batches/assign-vehicle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches/assign-vehicle`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa5c5e99522be084", "name": "Dangling fetch: GET /api/smart-route-ai/quotations${qs} (app/smart-route-ai/page.tsx:426)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-route-ai/quotations${qs} (app/smart-route-ai/page.tsx:426)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:426` calls `GET /api/smart-route-ai/quotations${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/quotations/<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-0c9fa782329b1a3a", "name": "Dangling fetch: POST /api/smart-route-ai/quotations (app/smart-route-ai/page.tsx:442)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/quotations (app/smart-route-ai/page.tsx:442)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:442` calls `POST /api/smart-route-ai/quotations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/quotations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba4d34fa0516ef7d", "name": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:533)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:533)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:533` calls `POST /api/smart-route-ai/batches/update-state` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches/update-state`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-118272909013bb00", "name": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:595)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:595)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:595` calls `POST /api/smart-route-ai/batches/assign-vehicle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches/assign-vehicle`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00ba7d999c50708a", "name": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:611)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:611)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:611` calls `POST /api/smart-route-ai/batches/update-state` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches/update-state`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7a5a38f7ef7306e", "name": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/smart-route-ai/page.tsx:672)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/smart-route-ai/page.tsx:672)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:672` calls `POST /api/gestione-scadenze/save-expiry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-scadenze/save-expiry`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f7ee2bd258e7854", "name": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:713)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:713)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:713` calls `POST /api/smart-route-ai/batches/update-state` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/batches/update-state`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-775efa1da249df83", "name": "Dangling fetch: POST /api/smart-route-ai/optimize (app/smart-route-ai/page.tsx:767)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/optimize (app/smart-route-ai/page.tsx:767)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:767` calls `POST /api/smart-route-ai/optimize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/optimize`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2f8fa57b506460a", "name": "Dangling fetch: POST /api/smart-route-ai/create-batches (app/smart-route-ai/page.tsx:814)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-route-ai/create-batches (app/smart-route-ai/page.tsx:814)"}, "fullDescription": {"text": "`app/smart-route-ai/page.tsx:814` calls `POST /api/smart-route-ai/create-batches` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-route-ai/create-batches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a7dd5280629b8f0", "name": "Dangling fetch: GET /api/delivery/van-pending?t=${Date.now()} (app/delivery/page.tsx:219)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery/van-pending?t=${Date.now()} (app/delivery/page.tsx:219)"}, "fullDescription": {"text": "`app/delivery/page.tsx:219` calls `GET /api/delivery/van-pending?t=${Date.now()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/delivery/van-pending`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-320532a6a8a1a7e2", "name": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/delivery/page.tsx:259)", "shortDescription": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/delivery/page.tsx:259)"}, "fullDescription": {"text": "`app/delivery/page.tsx:259` calls `POST /api/scarichi-parziali/process-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/process-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-86426ef340bfceb5", "name": "Dangling fetch: GET /api/delivery/list${cacheBuster} (app/delivery/page.tsx:397)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery/list${cacheBuster} (app/delivery/page.tsx:397)"}, "fullDescription": {"text": "`app/delivery/page.tsx:397` calls `GET /api/delivery/list${cacheBuster}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/delivery/list/<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-4963018ebc4029c1", "name": "Dangling fetch: GET /api/vehicle-check/get-info (app/delivery/page.tsx:696)", "shortDescription": {"text": "Dangling fetch: GET /api/vehicle-check/get-info (app/delivery/page.tsx:696)"}, "fullDescription": {"text": "`app/delivery/page.tsx:696` calls `GET /api/vehicle-check/get-info` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vehicle-check/get-info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e517a3f187769ff", "name": "Dangling fetch: POST /api/vehicle-check/save (app/delivery/page.tsx:821)", "shortDescription": {"text": "Dangling fetch: POST /api/vehicle-check/save (app/delivery/page.tsx:821)"}, "fullDescription": {"text": "`app/delivery/page.tsx:821` calls `POST /api/vehicle-check/save` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vehicle-check/save`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a2bc5b6f490aa74", "name": "Dangling fetch: POST /api/vehicle-check/resolve-issue (app/delivery/page.tsx:858)", "shortDescription": {"text": "Dangling fetch: POST /api/vehicle-check/resolve-issue (app/delivery/page.tsx:858)"}, "fullDescription": {"text": "`app/delivery/page.tsx:858` calls `POST /api/vehicle-check/resolve-issue` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vehicle-check/resolve-issue`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ccadeee7006e3ee", "name": "Dangling fetch: POST /api/delivery/print (app/delivery/page.tsx:2125)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery/print (app/delivery/page.tsx:2125)"}, "fullDescription": {"text": "`app/delivery/page.tsx:2125` calls `POST /api/delivery/print` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/delivery/print`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0660059e7b18e7d", "name": "Dangling fetch: POST /api/delivery/calculate-eta (app/delivery/page.tsx:2328)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery/calculate-eta (app/delivery/page.tsx:2328)"}, "fullDescription": {"text": "`app/delivery/page.tsx:2328` calls `POST /api/delivery/calculate-eta` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/delivery/calculate-eta`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b5ec5c4f6947d8f", "name": "Dangling fetch: POST /api/delivery/optimize-route (app/delivery/page.tsx:2351)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery/optimize-route (app/delivery/page.tsx:2351)"}, "fullDescription": {"text": "`app/delivery/page.tsx:2351` calls `POST /api/delivery/optimize-route` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/delivery/optimize-route`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a452e05c1d028cfd", "name": "Dangling fetch: GET /api/scarichi-parziali/list (app/scarichi-parziali/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/scarichi-parziali/list (app/scarichi-parziali/page.tsx:78)"}, "fullDescription": {"text": "`app/scarichi-parziali/page.tsx:78` calls `GET /api/scarichi-parziali/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e2f32b519e5c9a3", "name": "Dangling fetch: POST /api/scarichi-parziali/get-picking-id (app/scarichi-parziali/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/scarichi-parziali/get-picking-id (app/scarichi-parziali/page.tsx:99)"}, "fullDescription": {"text": "`app/scarichi-parziali/page.tsx:99` calls `POST /api/scarichi-parziali/get-picking-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/get-picking-id`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b45fefdfd24187cc", "name": "Dangling fetch: POST /api/scarichi-parziali/get-sales-order-id (app/scarichi-parziali/page.tsx:129)", "shortDescription": {"text": "Dangling fetch: POST /api/scarichi-parziali/get-sales-order-id (app/scarichi-parziali/page.tsx:129)"}, "fullDescription": {"text": "`app/scarichi-parziali/page.tsx:129` calls `POST /api/scarichi-parziali/get-sales-order-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/get-sales-order-id`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0bac28db8836c4d3", "name": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:190)", "shortDescription": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:190)"}, "fullDescription": {"text": "`app/scarichi-parziali/page.tsx:190` calls `POST /api/scarichi-parziali/process-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/process-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-7b2f00ce674a571c", "name": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:227)"}, "fullDescription": {"text": "`app/scarichi-parziali/page.tsx:227` calls `POST /api/scarichi-parziali/process-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scarichi-parziali/process-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-17a587fc3dba3778", "name": "Dangling fetch: POST /api/chat-venditori (app/chat-venditori/page.tsx:585)", "shortDescription": {"text": "Dangling fetch: POST /api/chat-venditori (app/chat-venditori/page.tsx:585)"}, "fullDescription": {"text": "`app/chat-venditori/page.tsx:585` calls `POST /api/chat-venditori` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat-venditori`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4abca607ea0e4d0", "name": "Dangling fetch: GET /api/user/profile (app/stella-assistant/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/user/profile (app/stella-assistant/page.tsx:78)"}, "fullDescription": {"text": "`app/stella-assistant/page.tsx:78` calls `GET /api/user/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/user/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53b7a68e45286174", "name": "Dangling fetch: POST /api/openai/realtime (app/stella-assistant/components/StellaRealTime.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/openai/realtime (app/stella-assistant/components/StellaRealTime.tsx:55)"}, "fullDescription": {"text": "`app/stella-assistant/components/StellaRealTime.tsx:55` calls `POST /api/openai/realtime` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/openai/realtime`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77a13dc403a7bde6", "name": "Dangling fetch: POST https://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17 (app/stella-assistant/c", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17 (app/stella-assistant/components/StellaRealTime.tsx:141)"}, "fullDescription": {"text": "`app/stella-assistant/components/StellaRealTime.tsx:141` calls `POST https://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17` 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.openai.com/v1/realtime`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe8d9a492bc993b8", "name": "Dangling fetch: POST /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:40)"}, "fullDescription": {"text": "`app/stella-assistant/components/StellaVideoAvatar.tsx:40` calls `POST /api/stella/did-stream` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/did-stream`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be2a4679c8d9ec50", "name": "Dangling fetch: POST https://api.d-id.com/talks/streams/${didStreamIdRef.current}/sdp (app/stella-assistant/components/S", "shortDescription": {"text": "Dangling fetch: POST https://api.d-id.com/talks/streams/${didStreamIdRef.current}/sdp (app/stella-assistant/components/StellaVideoAvatar.tsx:91)"}, "fullDescription": {"text": "`app/stella-assistant/components/StellaVideoAvatar.tsx:91` calls `POST https://api.d-id.com/talks/streams/${didStreamIdRef.current}/sdp` 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.d-id.com/talks/streams/<p>/sdp`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e772b8b1122bfd7", "name": "Dangling fetch: DELETE /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:120)", "shortDescription": {"text": "Dangling fetch: DELETE /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:120)"}, "fullDescription": {"text": "`app/stella-assistant/components/StellaVideoAvatar.tsx:120` calls `DELETE /api/stella/did-stream` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/did-stream`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8f4f1ae7f5482bd", "name": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:183)", "shortDescription": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:183)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:183` calls `POST /api/stella/save-conversation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/save-conversation`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddc1c76b397c6dda", "name": "Dangling fetch: GET /api/user/profile (app/stella-assistant/chat/page.tsx:212)", "shortDescription": {"text": "Dangling fetch: GET /api/user/profile (app/stella-assistant/chat/page.tsx:212)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:212` calls `GET /api/user/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/user/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0fae5784690d3664", "name": "Dangling fetch: GET /api/stella/tasks?action_id=${selectedAction.id} (app/stella-assistant/chat/page.tsx:245)", "shortDescription": {"text": "Dangling fetch: GET /api/stella/tasks?action_id=${selectedAction.id} (app/stella-assistant/chat/page.tsx:245)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:245` calls `GET /api/stella/tasks?action_id=${selectedAction.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5befc7f2e8addffd", "name": "Dangling fetch: POST /api/openai/chat (app/stella-assistant/chat/page.tsx:389)", "shortDescription": {"text": "Dangling fetch: POST /api/openai/chat (app/stella-assistant/chat/page.tsx:389)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:389` calls `POST /api/openai/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/openai/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb2e11a6830791e9", "name": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:465)", "shortDescription": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:465)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:465` calls `POST /api/stella/save-conversation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/save-conversation`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc02e1615bd784be", "name": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:497)", "shortDescription": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:497)"}, "fullDescription": {"text": "`app/stella-assistant/chat/page.tsx:497` calls `POST /api/stella/save-conversation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/save-conversation`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-224867cfbaef693b", "name": "Dangling fetch: POST /api/gemini/generate-image (app/ai-image-studio/page.tsx:163)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-image (app/ai-image-studio/page.tsx:163)"}, "fullDescription": {"text": "`app/ai-image-studio/page.tsx:163` calls `POST /api/gemini/generate-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f2963fca6b3900e", "name": "Dangling fetch: POST /api/gemini/generate-caption (app/ai-image-studio/page.tsx:330)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-caption (app/ai-image-studio/page.tsx:330)"}, "fullDescription": {"text": "`app/ai-image-studio/page.tsx:330` calls `POST /api/gemini/generate-caption` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-caption`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9cdf6508ae5e15c", "name": "Dangling fetch: GET /api/jetson/ocr (app/jetson-stats/page.tsx:11)", "shortDescription": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-stats/page.tsx:11)"}, "fullDescription": {"text": "`app/jetson-stats/page.tsx:11` calls `GET /api/jetson/ocr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/ocr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-995f2ac17bd02026", "name": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:165)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:165)"}, "fullDescription": {"text": "`app/gestione-scadenze/page.tsx:165` calls `POST /api/gestione-scadenze/save-expiry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-scadenze/save-expiry`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0687a6968c857a96", "name": "Dangling fetch: POST /api/gestione-scadenze/extract-expiry (app/gestione-scadenze/page.tsx:223)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-scadenze/extract-expiry (app/gestione-scadenze/page.tsx:223)"}, "fullDescription": {"text": "`app/gestione-scadenze/page.tsx:223` calls `POST /api/gestione-scadenze/extract-expiry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-scadenze/extract-expiry`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-569084b29a4b34d2", "name": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:268)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:268)"}, "fullDescription": {"text": "`app/gestione-scadenze/page.tsx:268` calls `POST /api/gestione-scadenze/save-expiry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-scadenze/save-expiry`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77f0515d45850e94", "name": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:295)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:295)"}, "fullDescription": {"text": "`app/gestione-scadenze/page.tsx:295` calls `POST /api/gestione-scadenze/save-expiry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-scadenze/save-expiry`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a6a4f7cb524d62a", "name": "Dangling fetch: GET /api/supplier-cadence (app/gestione-cadenze-fornitori/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/supplier-cadence (app/gestione-cadenze-fornitori/page.tsx:55)"}, "fullDescription": {"text": "`app/gestione-cadenze-fornitori/page.tsx:55` calls `GET /api/supplier-cadence` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6259114e24bf8b5a", "name": "Dangling fetch: PATCH /api/supplier-cadence/${supplierId} (app/gestione-cadenze-fornitori/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: PATCH /api/supplier-cadence/${supplierId} (app/gestione-cadenze-fornitori/page.tsx:170)"}, "fullDescription": {"text": "`app/gestione-cadenze-fornitori/page.tsx:170` calls `PATCH /api/supplier-cadence/${supplierId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/<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-f2e1d8a70f5a22c7", "name": "Dangling fetch: POST /api/odoo/rpc (app/dashboard-venditori/hooks/useOdooData.ts:231)", "shortDescription": {"text": "Dangling fetch: POST /api/odoo/rpc (app/dashboard-venditori/hooks/useOdooData.ts:231)"}, "fullDescription": {"text": "`app/dashboard-venditori/hooks/useOdooData.ts:231` calls `POST /api/odoo/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5c0e959d5e75df8", "name": "Dangling fetch: GET /api/ferie/me (app/ferie/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: GET /api/ferie/me (app/ferie/page.tsx:108)"}, "fullDescription": {"text": "`app/ferie/page.tsx:108` calls `GET /api/ferie/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/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-fd6a9549bedd8053", "name": "Dangling fetch: GET /api/ferie/calendario?from=${from}&to=${to} (app/ferie/page.tsx:125)", "shortDescription": {"text": "Dangling fetch: GET /api/ferie/calendario?from=${from}&to=${to} (app/ferie/page.tsx:125)"}, "fullDescription": {"text": "`app/ferie/page.tsx:125` calls `GET /api/ferie/calendario?from=${from}&to=${to}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/calendario`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f018858c95a392ce", "name": "Dangling fetch: POST /api/ferie/me (app/ferie/page.tsx:199)", "shortDescription": {"text": "Dangling fetch: POST /api/ferie/me (app/ferie/page.tsx:199)"}, "fullDescription": {"text": "`app/ferie/page.tsx:199` calls `POST /api/ferie/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/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-6ff283a684f656e9", "name": "Dangling fetch: DELETE /api/ferie/me (app/ferie/page.tsx:225)", "shortDescription": {"text": "Dangling fetch: DELETE /api/ferie/me (app/ferie/page.tsx:225)"}, "fullDescription": {"text": "`app/ferie/page.tsx:225` calls `DELETE /api/ferie/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/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-ab4b7c782ea31fe6", "name": "Dangling fetch: GET /api/ferie/admin?filter=${tab} (app/ferie/admin/page.tsx:82)", "shortDescription": {"text": "Dangling fetch: GET /api/ferie/admin?filter=${tab} (app/ferie/admin/page.tsx:82)"}, "fullDescription": {"text": "`app/ferie/admin/page.tsx:82` calls `GET /api/ferie/admin?filter=${tab}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/admin`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3eb7031c22e0ce7", "name": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:102)"}, "fullDescription": {"text": "`app/ferie/admin/page.tsx:102` calls `POST /api/ferie/admin` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/admin`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-affa751f681f32d1", "name": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:122)", "shortDescription": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:122)"}, "fullDescription": {"text": "`app/ferie/admin/page.tsx:122` calls `POST /api/ferie/admin` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/admin`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7f2af45eeca1f05", "name": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:152)", "shortDescription": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:152)"}, "fullDescription": {"text": "`app/ferie/admin/page.tsx:152` calls `POST /api/ferie/admin` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ferie/admin`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c16bd443aba2e5c", "name": "Dangling fetch: GET /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:160)", "shortDescription": {"text": "Dangling fetch: GET /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:160)"}, "fullDescription": {"text": "`app/ordini-fornitori/page.tsx:160` calls `GET /api/ordini-fornitori/cache` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ordini-fornitori/cache`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0227983932c97db1", "name": "Dangling fetch: POST /api/ordini-fornitori/analyze (app/ordini-fornitori/page.tsx:189)", "shortDescription": {"text": "Dangling fetch: POST /api/ordini-fornitori/analyze (app/ordini-fornitori/page.tsx:189)"}, "fullDescription": {"text": "`app/ordini-fornitori/page.tsx:189` calls `POST /api/ordini-fornitori/analyze` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ordini-fornitori/analyze`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60fcb87f5c514c4a", "name": "Dangling fetch: POST /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:202)", "shortDescription": {"text": "Dangling fetch: POST /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:202)"}, "fullDescription": {"text": "`app/ordini-fornitori/page.tsx:202` calls `POST /api/ordini-fornitori/cache` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ordini-fornitori/cache`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8755aa7c32c674b3", "name": "Dangling fetch: GET /api/analisi-prodotto/top-products?${params} (app/analisi-prodotto/page.tsx:156)", "shortDescription": {"text": "Dangling fetch: GET /api/analisi-prodotto/top-products?${params} (app/analisi-prodotto/page.tsx:156)"}, "fullDescription": {"text": "`app/analisi-prodotto/page.tsx:156` calls `GET /api/analisi-prodotto/top-products?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analisi-prodotto/top-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-730a710137777e37", "name": "Dangling fetch: GET /api/analisi-prodotto?${params} (app/analisi-prodotto/page.tsx:202)", "shortDescription": {"text": "Dangling fetch: GET /api/analisi-prodotto?${params} (app/analisi-prodotto/page.tsx:202)"}, "fullDescription": {"text": "`app/analisi-prodotto/page.tsx:202` calls `GET /api/analisi-prodotto?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analisi-prodotto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a26966bf2a6aecac", "name": "Dangling fetch: GET /api/auth/me (app/gestione-visibilita-app/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (app/gestione-visibilita-app/page.tsx:64)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:64` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-24da0b67c42ee535", "name": "Dangling fetch: GET /api/apps/visibility (app/gestione-visibilita-app/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/apps/visibility (app/gestione-visibilita-app/page.tsx:76)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:76` calls `GET /api/apps/visibility` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/apps/visibility`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6091c04082f1f845", "name": "Dangling fetch: GET /api/odoo/employees (app/gestione-visibilita-app/page.tsx:152)", "shortDescription": {"text": "Dangling fetch: GET /api/odoo/employees (app/gestione-visibilita-app/page.tsx:152)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:152` calls `GET /api/odoo/employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/employees`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b161a1dbf762b52", "name": "Dangling fetch: GET /api/odoo/customers (app/gestione-visibilita-app/page.tsx:173)", "shortDescription": {"text": "Dangling fetch: GET /api/odoo/customers (app/gestione-visibilita-app/page.tsx:173)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:173` calls `GET /api/odoo/customers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43101c9e02fab5b2", "name": "Dangling fetch: POST /api/apps/visibility (app/gestione-visibilita-app/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: POST /api/apps/visibility (app/gestione-visibilita-app/page.tsx:287)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:287` calls `POST /api/apps/visibility` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/apps/visibility`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41195a59d9421694", "name": "Dangling fetch: POST /api/maestro/sync/manual (app/gestione-visibilita-app/page.tsx:312)", "shortDescription": {"text": "Dangling fetch: POST /api/maestro/sync/manual (app/gestione-visibilita-app/page.tsx:312)"}, "fullDescription": {"text": "`app/gestione-visibilita-app/page.tsx:312` calls `POST /api/maestro/sync/manual` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/sync/manual`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-706ea0da0edd2ed5", "name": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-withdrawn&teamId=${teamId} (app/dashboard-compensi/page.tsx:175)", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-withdrawn&teamId=${teamId} (app/dashboard-compensi/page.tsx:175)"}, "fullDescription": {"text": "`app/dashboard-compensi/page.tsx:175` calls `GET /api/hr-payslip?action=team-bonus-withdrawn&teamId=${teamId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6a35f176d2a38bd", "name": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-cumulative&teamId=${teamId} (app/dashboard-compensi/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-cumulative&teamId=${teamId} (app/dashboard-compensi/page.tsx:196)"}, "fullDescription": {"text": "`app/dashboard-compensi/page.tsx:196` calls `GET /api/hr-payslip?action=team-bonus-cumulative&teamId=${teamId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hr-payslip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-087fc20b8b041497", "name": "Dangling fetch: GET /api/compensi-venditori?monthsBack=${monthsBack} (app/dashboard-compensi/page.tsx:221)", "shortDescription": {"text": "Dangling fetch: GET /api/compensi-venditori?monthsBack=${monthsBack} (app/dashboard-compensi/page.tsx:221)"}, "fullDescription": {"text": "`app/dashboard-compensi/page.tsx:221` calls `GET /api/compensi-venditori?monthsBack=${monthsBack}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compensi-venditori`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f66331b982b6e59", "name": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user.email)} (app/profile/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user.email)} (app/profile/page.tsx:75)"}, "fullDescription": {"text": "`app/profile/page.tsx:75` calls `GET /api/time-attendance/contact?email=${encodeURIComponent(user.email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/contact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de499f92c2b8306f", "name": "Dangling fetch: POST /api/profile/update (app/profile/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: POST /api/profile/update (app/profile/page.tsx:131)"}, "fullDescription": {"text": "`app/profile/page.tsx:131` calls `POST /api/profile/update` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/profile/update`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abbc8461f8c56028", "name": "Dangling fetch: GET /api/missing-products?date=${selectedDate}&group_by=${groupBy} (app/prodotti-mancanti/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/missing-products?date=${selectedDate}&group_by=${groupBy} (app/prodotti-mancanti/page.tsx:89)"}, "fullDescription": {"text": "`app/prodotti-mancanti/page.tsx:89` calls `GET /api/missing-products?date=${selectedDate}&group_by=${groupBy}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/missing-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc48f3883938e099", "name": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:127)"}, "fullDescription": {"text": "`app/prodotti-mancanti/page.tsx:127` calls `POST /api/missing-products/action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/missing-products/action`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2195883c01746c87", "name": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:171)", "shortDescription": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:171)"}, "fullDescription": {"text": "`app/prodotti-mancanti/page.tsx:171` calls `POST /api/missing-products/action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/missing-products/action`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c904484d709d014", "name": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:219)", "shortDescription": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:219)"}, "fullDescription": {"text": "`app/prodotti-mancanti/page.tsx:219` calls `POST /api/missing-products/action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/missing-products/action`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c4ffde86a98387b", "name": "Dangling fetch: GET /api/portale-clienti/dashboard (app/portale-clienti/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/dashboard (app/portale-clienti/page.tsx:76)"}, "fullDescription": {"text": "`app/portale-clienti/page.tsx:76` calls `GET /api/portale-clienti/dashboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22167a236ae742b0", "name": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/page.tsx:102)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/page.tsx:102)"}, "fullDescription": {"text": "`app/portale-clienti/page.tsx:102` calls `GET /api/portale-clienti/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d4129847354a0a", "name": "Dangling fetch: GET /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:148)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:148` calls `GET /api/portale-clienti/product-favorites` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/product-favorites`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3cdd4a8a0f81d69", "name": "Dangling fetch: POST /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:171)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:171)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:171` calls `POST /api/portale-clienti/product-favorites` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/product-favorites`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b933d63afc58987f", "name": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/catalogo/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/catalogo/page.tsx:207)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:207` calls `GET /api/portale-clienti/ai-suggest-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/ai-suggest-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-400e15df3c6e65cb", "name": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:223)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:223)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:223` calls `POST /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-292363d1a46858d5", "name": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:253)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:253)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:253` calls `GET /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a748881d66ff5d3d", "name": "Dangling fetch: GET /api/portale-clienti/categories (app/portale-clienti/catalogo/page.tsx:308)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/categories (app/portale-clienti/catalogo/page.tsx:308)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:308` calls `GET /api/portale-clienti/categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e0b9b7e86380afd", "name": "Dangling fetch: GET /api/portale-clienti/products?${params} (app/portale-clienti/catalogo/page.tsx:351)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/products?${params} (app/portale-clienti/catalogo/page.tsx:351)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:351` calls `GET /api/portale-clienti/products?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98531adfb1967e5a", "name": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:403)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:403)"}, "fullDescription": {"text": "`app/portale-clienti/catalogo/page.tsx:403` calls `POST /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-164ac12a23b4f173", "name": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:78)"}, "fullDescription": {"text": "`app/portale-clienti/consegne/[id]/page.tsx:78` calls `GET /api/portale-clienti/deliveries/${deliveryId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/deliveries/<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-5f28aad0a306abbc", "name": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:113)"}, "fullDescription": {"text": "`app/portale-clienti/consegne/[id]/page.tsx:113` calls `GET /api/portale-clienti/deliveries/${deliveryId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/deliveries/<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-49a71e2736b96220", "name": "Dangling fetch: GET /api/portale-clienti/invoices?${params.toString()} (app/portale-clienti/fatture/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/invoices?${params.toString()} (app/portale-clienti/fatture/page.tsx:94)"}, "fullDescription": {"text": "`app/portale-clienti/fatture/page.tsx:94` calls `GET /api/portale-clienti/invoices?${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: `/portale-clienti/invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa028f5818be2cb8", "name": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId} (app/portale-clienti/fatture/[id]/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId} (app/portale-clienti/fatture/[id]/page.tsx:85)"}, "fullDescription": {"text": "`app/portale-clienti/fatture/[id]/page.tsx:85` calls `GET /api/portale-clienti/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/invoices/<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-5aec2b636de3684d", "name": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:3", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:35)"}, "fullDescription": {"text": "`app/portale-clienti/components/DeliveryMapModal.tsx:35` calls `GET /api/portale-clienti/deliveries/${deliveryId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/deliveries/<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-499c449289088cda", "name": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:6", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:65)"}, "fullDescription": {"text": "`app/portale-clienti/components/DeliveryMapModal.tsx:65` calls `GET /api/portale-clienti/deliveries/${deliveryId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/deliveries/<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-2fe15690b93ae796", "name": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/components/QuickActions.tsx:21)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/components/QuickActions.tsx:21)"}, "fullDescription": {"text": "`app/portale-clienti/components/QuickActions.tsx:21` calls `GET /api/portale-clienti/ai-suggest-order` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/ai-suggest-order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3c6decd0661279f", "name": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/components/QuickActions.tsx:37)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/components/QuickActions.tsx:37)"}, "fullDescription": {"text": "`app/portale-clienti/components/QuickActions.tsx:37` calls `POST /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f33e1465817a3e7e", "name": "Dangling fetch: GET /api/portale-clienti/dashboard/details?type=${cardType} (app/portale-clienti/components/DashboardCar", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/dashboard/details?type=${cardType} (app/portale-clienti/components/DashboardCardModal.tsx:107)"}, "fullDescription": {"text": "`app/portale-clienti/components/DashboardCardModal.tsx:107` calls `GET /api/portale-clienti/dashboard/details?type=${cardType}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/dashboard/details`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d9aeef30a7814c3", "name": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/profilo/page.tsx:56)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/profilo/page.tsx:56)"}, "fullDescription": {"text": "`app/portale-clienti/profilo/page.tsx:56` calls `GET /api/portale-clienti/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd1de22fbb767d0a", "name": "Dangling fetch: GET /api/portale-clienti/orders?${params.toString()} (app/portale-clienti/ordini/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/orders?${params.toString()} (app/portale-clienti/ordini/page.tsx:86)"}, "fullDescription": {"text": "`app/portale-clienti/ordini/page.tsx:86` calls `GET /api/portale-clienti/orders?${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: `/portale-clienti/orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b0ba023d02636b9", "name": "Dangling fetch: GET /api/portale-clienti/orders/${orderId} (app/portale-clienti/ordini/[id]/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/orders/${orderId} (app/portale-clienti/ordini/[id]/page.tsx:52)"}, "fullDescription": {"text": "`app/portale-clienti/ordini/[id]/page.tsx:52` calls `GET /api/portale-clienti/orders/${orderId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/orders/<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-b938aa1dd8cd72f3", "name": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/ordini/nuovo/page.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/ordini/nuovo/page.tsx:62)"}, "fullDescription": {"text": "`app/portale-clienti/ordini/nuovo/page.tsx:62` calls `GET /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bc2cb958926265a", "name": "Dangling fetch: GET /api/portale-clienti/payment-terms (app/portale-clienti/ordini/nuovo/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/payment-terms (app/portale-clienti/ordini/nuovo/page.tsx:81)"}, "fullDescription": {"text": "`app/portale-clienti/ordini/nuovo/page.tsx:81` calls `GET /api/portale-clienti/payment-terms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/payment-terms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-286a5298c6d0a5e6", "name": "Dangling fetch: POST /api/portale-clienti/checkout (app/portale-clienti/ordini/nuovo/page.tsx:134)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/checkout (app/portale-clienti/ordini/nuovo/page.tsx:134)"}, "fullDescription": {"text": "`app/portale-clienti/ordini/nuovo/page.tsx:134` calls `POST /api/portale-clienti/checkout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/checkout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f0744053c0e572f", "name": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/carrello/page.tsx:60)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/carrello/page.tsx:60)"}, "fullDescription": {"text": "`app/portale-clienti/carrello/page.tsx:60` calls `GET /api/portale-clienti/cart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7efc9e1b64c87f88", "name": "Dangling fetch: POST /api/portale-clienti/cart/sync-images (app/portale-clienti/carrello/page.tsx:114)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart/sync-images (app/portale-clienti/carrello/page.tsx:114)"}, "fullDescription": {"text": "`app/portale-clienti/carrello/page.tsx:114` calls `POST /api/portale-clienti/cart/sync-images` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart/sync-images`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e0c0fcd1d8e297a", "name": "Dangling fetch: PATCH /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:161)", "shortDescription": {"text": "Dangling fetch: PATCH /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:161)"}, "fullDescription": {"text": "`app/portale-clienti/carrello/page.tsx:161` calls `PATCH /api/portale-clienti/cart/items/${itemId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart/items/<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-bbc56954e2e5da5a", "name": "Dangling fetch: DELETE /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:202)", "shortDescription": {"text": "Dangling fetch: DELETE /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:202)"}, "fullDescription": {"text": "`app/portale-clienti/carrello/page.tsx:202` calls `DELETE /api/portale-clienti/cart/items/${itemId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart/items/<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-36bdff7d0b32f4b6", "name": "Dangling fetch: POST /api/portale-clienti/cart/checkout (app/portale-clienti/carrello/page.tsx:231)", "shortDescription": {"text": "Dangling fetch: POST /api/portale-clienti/cart/checkout (app/portale-clienti/carrello/page.tsx:231)"}, "fullDescription": {"text": "`app/portale-clienti/carrello/page.tsx:231` calls `POST /api/portale-clienti/cart/checkout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/cart/checkout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2d8199c5d029083", "name": "Dangling fetch: GET /api/menu-pdf/restaurant-info (app/menu-pdf-generator/page.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/menu-pdf/restaurant-info (app/menu-pdf-generator/page.tsx:42)"}, "fullDescription": {"text": "`app/menu-pdf-generator/page.tsx:42` calls `GET /api/menu-pdf/restaurant-info` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/menu-pdf/restaurant-info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59fba3bc7350896b", "name": "Dangling fetch: POST /api/gemini/generate-menu (app/menu-pdf-generator/page.tsx:153)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-menu (app/menu-pdf-generator/page.tsx:153)"}, "fullDescription": {"text": "`app/menu-pdf-generator/page.tsx:153` calls `POST /api/gemini/generate-menu` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-menu`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0da619be38bbd06", "name": "Dangling fetch: POST /api/gemini/generate-menu-pdf (app/menu-pdf-generator/page.tsx:190)", "shortDescription": {"text": "Dangling fetch: POST /api/gemini/generate-menu-pdf (app/menu-pdf-generator/page.tsx:190)"}, "fullDescription": {"text": "`app/menu-pdf-generator/page.tsx:190` calls `POST /api/gemini/generate-menu-pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gemini/generate-menu-pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba881b6199026de8", "name": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:52)"}, "fullDescription": {"text": "`app/catalogo-lapa/page.tsx:52` calls `POST /api/catalogo-lapa/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-063673724ee9bdeb", "name": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:91)"}, "fullDescription": {"text": "`app/catalogo-lapa/page.tsx:91` calls `POST /api/catalogo-lapa/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-lapa/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-303018b2990adc80", "name": "Dangling fetch: GET /api/food-news (app/food-news/page.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/food-news (app/food-news/page.tsx:38)"}, "fullDescription": {"text": "`app/food-news/page.tsx:38` calls `GET /api/food-news` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/food-news`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-532a961159f9b39b", "name": "Dangling fetch: POST /api/food-news/generate (app/food-news/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: POST /api/food-news/generate (app/food-news/page.tsx:59)"}, "fullDescription": {"text": "`app/food-news/page.tsx:59` calls `POST /api/food-news/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/food-news/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49f4ce450e249c2e", "name": "Dangling fetch: POST /api/avatar-generator/generate-video (app/_avatar-generator-disabled/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: POST /api/avatar-generator/generate-video (app/_avatar-generator-disabled/page.tsx:66)"}, "fullDescription": {"text": "`app/_avatar-generator-disabled/page.tsx:66` calls `POST /api/avatar-generator/generate-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avatar-generator/generate-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ed146db4c9862d3", "name": "Dangling fetch: GET /api/avatar-generator/generate-video?jobId=${jobId} (app/_avatar-generator-disabled/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/avatar-generator/generate-video?jobId=${jobId} (app/_avatar-generator-disabled/page.tsx:87)"}, "fullDescription": {"text": "`app/_avatar-generator-disabled/page.tsx:87` calls `GET /api/avatar-generator/generate-video?jobId=${jobId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/avatar-generator/generate-video`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e059c28659c883e2", "name": "Dangling fetch: POST /api/registro-cassaforte/recognize-banknote (app/registro-cassaforte/page.tsx:240)", "shortDescription": {"text": "Dangling fetch: POST /api/registro-cassaforte/recognize-banknote (app/registro-cassaforte/page.tsx:240)"}, "fullDescription": {"text": "`app/registro-cassaforte/page.tsx:240` calls `POST /api/registro-cassaforte/recognize-banknote` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/recognize-banknote`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fffe775d81429b7", "name": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:83)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:83)"}, "fullDescription": {"text": "`app/registro-cassaforte/admin/page.tsx:83` calls `GET /api/registro-cassaforte/face-embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/face-embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f19dea5870985aa3", "name": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:161)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:161)"}, "fullDescription": {"text": "`app/registro-cassaforte/admin/page.tsx:161` calls `GET /api/registro-cassaforte/employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/employees`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4813834085f9306", "name": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:191)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:191)"}, "fullDescription": {"text": "`app/registro-cassaforte/admin/page.tsx:191` calls `GET /api/registro-cassaforte/employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/employees`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-940d4b9a156c1607", "name": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:198)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:198)"}, "fullDescription": {"text": "`app/registro-cassaforte/admin/page.tsx:198` calls `GET /api/registro-cassaforte/face-embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/face-embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ef02af0d6c9de92", "name": "Dangling fetch: DELETE /api/registro-cassaforte/face-embeddings?employee_id=${employeeId} (app/registro-cassaforte/admin", "shortDescription": {"text": "Dangling fetch: DELETE /api/registro-cassaforte/face-embeddings?employee_id=${employeeId} (app/registro-cassaforte/admin/page.tsx:218)"}, "fullDescription": {"text": "`app/registro-cassaforte/admin/page.tsx:218` calls `DELETE /api/registro-cassaforte/face-embeddings?employee_id=${employeeId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/face-embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe59a9421a2e3d62", "name": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/prelievo/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/prelievo/page.tsx:66)"}, "fullDescription": {"text": "`app/registro-cassaforte/prelievo/page.tsx:66` calls `GET /api/registro-cassaforte/face-embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/face-embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b65609553514e46", "name": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/prelievo/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/prelievo/page.tsx:142)"}, "fullDescription": {"text": "`app/registro-cassaforte/prelievo/page.tsx:142` calls `GET /api/registro-cassaforte/employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/employees`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37bce846d316059f", "name": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/registro-cassaforte/prelievo/page.tsx:178)", "shortDescription": {"text": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/registro-cassaforte/prelievo/page.tsx:178)"}, "fullDescription": {"text": "`app/registro-cassaforte/prelievo/page.tsx:178` calls `POST /api/registro-cassaforte/withdraw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/registro-cassaforte/withdraw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89b8eaeed8686d83", "name": "Dangling fetch: GET /api/smart-ordering-v2/pre-order-products (app/prodotti-preordine/page.tsx:105)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pre-order-products (app/prodotti-preordine/page.tsx:105)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:105` calls `GET /api/smart-ordering-v2/pre-order-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/pre-order-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65cef1f51e06a7f7", "name": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:145)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:145)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:145` calls `GET /api/smart-ordering-v2/suppliers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/suppliers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd468613dddfbed8", "name": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:177)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:177)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:177` calls `GET /api/smart-ordering-v2/suppliers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/suppliers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-039ab1ce5387ec10", "name": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/prodotti-preordine/page.tsx:240)", "shortDescription": {"text": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/prodotti-preordine/page.tsx:240)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:240` calls `GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clienti/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5220e9f04dbf478", "name": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/prodotti-preordine/page.tsx:293)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/prodotti-preordine/page.tsx:293)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:293` calls `POST /api/smart-ordering-v2/toggle-preorder-tag` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/toggle-preorder-tag`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3efc8e236e511f0", "name": "Dangling fetch: POST /api/smart-ordering-v2/assign-preorder-customers (app/prodotti-preordine/page.tsx:402)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/assign-preorder-customers (app/prodotti-preordine/page.tsx:402)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:402` calls `POST /api/smart-ordering-v2/assign-preorder-customers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/assign-preorder-customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a25d8e83eda14974", "name": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:524)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:524)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:524` calls `POST /api/smart-ordering-v2/create-all-preorders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/create-all-preorders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e0c56999645b06c", "name": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:646)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:646)"}, "fullDescription": {"text": "`app/prodotti-preordine/page.tsx:646` calls `POST /api/smart-ordering-v2/create-all-preorders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering-v2/create-all-preorders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90ce6351c37c232c", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabSkills.tsx:12)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabSkills.tsx:12)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabSkills.tsx:12` calls `GET /api/agenti-whatsapp/${slug}/skills` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-785d930838a9c538", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills?skill=${encodeURIComponent(name)} (app/agenti-whatsapp/component", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills?skill=${encodeURIComponent(name)} (app/agenti-whatsapp/components/TabSkills.tsx:22)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabSkills.tsx:22` calls `GET /api/agenti-whatsapp/${slug}/skills?skill=${encodeURIComponent(name)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a34631bef6c0b4ca", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/agenti-whatsapp/components/TabStato.tsx:21)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/agenti-whatsapp/components/TabStato.tsx:21)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabStato.tsx:21` calls `GET /api/agenti-whatsapp/${slug}/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-3de84bec3459e91e", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/AgentCard.tsx:60)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/AgentCard.tsx:60)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/AgentCard.tsx:60` calls `GET /api/agenti-whatsapp/${slug}/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/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-fcc1b31c963e2ca5", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/followups (app/agenti-whatsapp/components/TabFollowup.tsx:28)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/followups (app/agenti-whatsapp/components/TabFollowup.tsx:28)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabFollowup.tsx:28` calls `GET /api/agenti-whatsapp/${slug}/followups` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/followups`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37950b193b6e02eb", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabMappa.tsx:45)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabMappa.tsx:45)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabMappa.tsx:45` calls `GET /api/agenti-whatsapp/${slug}/skills` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a69ca74bb332fbf5", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMappa.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMappa.tsx:46)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabMappa.tsx:46` calls `GET /api/agenti-whatsapp/${slug}/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-569761bb5f44528d", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/config (app/agenti-whatsapp/components/TabSettaggi.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/config (app/agenti-whatsapp/components/TabSettaggi.tsx:33)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabSettaggi.tsx:33` calls `GET /api/agenti-whatsapp/${slug}/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/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-b6e9114f6b44befe", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:43)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabSettaggi.tsx:43` calls `GET /api/agenti-whatsapp/${slug}/qr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-4270263d4c4ec223", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:54)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabSettaggi.tsx:54` calls `GET /api/agenti-whatsapp/${slug}/qr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-513dafac9dd8d4a8", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/log?lines=100 (app/agenti-whatsapp/components/TabLog.tsx:15)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/log?lines=100 (app/agenti-whatsapp/components/TabLog.tsx:15)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabLog.tsx:15` calls `GET /api/agenti-whatsapp/${slug}/log?lines=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/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-c2ee0ebdb1c9120e", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/TabStatistiche.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/TabStatistiche.tsx:33)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabStatistiche.tsx:33` calls `GET /api/agenti-whatsapp/${slug}/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/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-df58bd9fe9c415b8", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMemoria.tsx:13)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMemoria.tsx:13)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabMemoria.tsx:13` calls `GET /api/agenti-whatsapp/${slug}/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a250b8cd007102f7", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?limit=50 (app/agenti-whatsapp/components/TabConversazioni.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?limit=50 (app/agenti-whatsapp/components/TabConversazioni.tsx:69)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabConversazioni.tsx:69` calls `GET /api/agenti-whatsapp/${slug}/messages?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-dc7986b3b83b3f80", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?chat=${encodeURIComponent(chatId)}&limit=100 (app/agenti-whats", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?chat=${encodeURIComponent(chatId)}&limit=100 (app/agenti-whatsapp/components/TabConversazioni.tsx:78)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabConversazioni.tsx:78` calls `GET /api/agenti-whatsapp/${slug}/messages?chat=${encodeURIComponent(chatId)}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<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-9c3c37b7fdbc447f", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/components/TabErrori.tsx:30)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/components/TabErrori.tsx:30)"}, "fullDescription": {"text": "`app/agenti-whatsapp/components/TabErrori.tsx:30` calls `GET /api/agenti-whatsapp/${slug}/errors?lines=2000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/errors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59a431ea77bd627c", "name": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/alerts/page.tsx:26)", "shortDescription": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/alerts/page.tsx:26)"}, "fullDescription": {"text": "`app/agenti-whatsapp/alerts/page.tsx:26` calls `GET /api/agenti-whatsapp/${slug}/errors?lines=2000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/agenti-whatsapp/<p>/errors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43b1f078a0d0c47c", "name": "Dangling fetch: POST /api/jetson/ocr (app/jetson-upload/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: POST /api/jetson/ocr (app/jetson-upload/page.tsx:43)"}, "fullDescription": {"text": "`app/jetson-upload/page.tsx:43` calls `POST /api/jetson/ocr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/ocr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1571b7e2c6038241", "name": "Dangling fetch: GET /api/scadenze/counts?warehouseId=${warehouseId} (app/scadenze/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/scadenze/counts?warehouseId=${warehouseId} (app/scadenze/page.tsx:127)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:127` calls `GET /api/scadenze/counts?warehouseId=${warehouseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scadenze/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-1a74ae66da867830", "name": "Dangling fetch: GET /api/urgent-products (app/scadenze/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (app/scadenze/page.tsx:146)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:146` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef63fa4206c8479c", "name": "Dangling fetch: GET /api/offer-products (app/scadenze/page.tsx:147)", "shortDescription": {"text": "Dangling fetch: GET /api/offer-products (app/scadenze/page.tsx:147)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:147` calls `GET /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1bc157cd403b70e4", "name": "Dangling fetch: GET /api/verification-requests (app/scadenze/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/verification-requests (app/scadenze/page.tsx:148)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:148` calls `GET /api/verification-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64296dec9673fa71", "name": "Dangling fetch: GET /api/scadenze/products?urgency=${urgency}&days=7&warehouseId=${selectedWarehouse} (app/scadenze/page", "shortDescription": {"text": "Dangling fetch: GET /api/scadenze/products?urgency=${urgency}&days=7&warehouseId=${selectedWarehouse} (app/scadenze/page.tsx:184)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:184` calls `GET /api/scadenze/products?urgency=${urgency}&days=7&warehouseId=${selectedWarehouse}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scadenze/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c81828c1f4ad3d1", "name": "Dangling fetch: GET /api/scadenze/products?urgency=${selectedUrgency}&days=7&warehouseId=${warehouseId} (app/scadenze/pa", "shortDescription": {"text": "Dangling fetch: GET /api/scadenze/products?urgency=${selectedUrgency}&days=7&warehouseId=${warehouseId} (app/scadenze/page.tsx:220)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:220` calls `GET /api/scadenze/products?urgency=${selectedUrgency}&days=7&warehouseId=${warehouseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scadenze/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04533f4fe6766453", "name": "Dangling fetch: GET /api/scadenze/product-prices?productId=${productId} (app/scadenze/page.tsx:272)", "shortDescription": {"text": "Dangling fetch: GET /api/scadenze/product-prices?productId=${productId} (app/scadenze/page.tsx:272)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:272` calls `GET /api/scadenze/product-prices?productId=${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scadenze/product-prices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bceaa188efe30f0e", "name": "Dangling fetch: POST /api/verification-requests (app/scadenze/page.tsx:301)", "shortDescription": {"text": "Dangling fetch: POST /api/verification-requests (app/scadenze/page.tsx:301)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:301` calls `POST /api/verification-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/verification-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db186f0b12a2d0c7", "name": "Dangling fetch: POST /api/urgent-products (app/scadenze/page.tsx:360)", "shortDescription": {"text": "Dangling fetch: POST /api/urgent-products (app/scadenze/page.tsx:360)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:360` calls `POST /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78a8582e650a3761", "name": "Dangling fetch: POST /api/offer-products (app/scadenze/page.tsx:418)", "shortDescription": {"text": "Dangling fetch: POST /api/offer-products (app/scadenze/page.tsx:418)"}, "fullDescription": {"text": "`app/scadenze/page.tsx:418` calls `POST /api/offer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/offer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e3351c6d3a31eec", "name": "Dangling fetch: POST /api/import-ubs/parse (app/import-movimenti-ubs/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/import-ubs/parse (app/import-movimenti-ubs/page.tsx:99)"}, "fullDescription": {"text": "`app/import-movimenti-ubs/page.tsx:99` calls `POST /api/import-ubs/parse` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/import-ubs/parse`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-69a4cc16fa38e5e9", "name": "Dangling fetch: POST /api/import-ubs/import (app/import-movimenti-ubs/page.tsx:168)", "shortDescription": {"text": "Dangling fetch: POST /api/import-ubs/import (app/import-movimenti-ubs/page.tsx:168)"}, "fullDescription": {"text": "`app/import-movimenti-ubs/page.tsx:168` calls `POST /api/import-ubs/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/import-ubs/import`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96717ba95040ce86", "name": "Dangling fetch: POST /api/stella/tasks (app/stella-setup/page.tsx:25)", "shortDescription": {"text": "Dangling fetch: POST /api/stella/tasks (app/stella-setup/page.tsx:25)"}, "fullDescription": {"text": "`app/stella-setup/page.tsx:25` calls `POST /api/stella/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5dff9e55d6b9ff7f", "name": "Dangling fetch: GET /api/stella/tasks?action_id=${actionId} (app/stella-setup/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/stella/tasks?action_id=${actionId} (app/stella-setup/page.tsx:52)"}, "fullDescription": {"text": "`app/stella-setup/page.tsx:52` calls `GET /api/stella/tasks?action_id=${actionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stella/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3daeb8db935601e0", "name": "Dangling fetch: GET /api/jetson/ocr (app/jetson-dashboard/page.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-dashboard/page.tsx:57)"}, "fullDescription": {"text": "`app/jetson-dashboard/page.tsx:57` calls `GET /api/jetson/ocr` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jetson/ocr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64a0903dde465bac", "name": "Dangling fetch: GET /api/gestione-arrivi/list-today?company_id=${selectedCompany} (app/gestione-arrivi/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/gestione-arrivi/list-today?company_id=${selectedCompany} (app/gestione-arrivi/page.tsx:64)"}, "fullDescription": {"text": "`app/gestione-arrivi/page.tsx:64` calls `GET /api/gestione-arrivi/list-today?company_id=${selectedCompany}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-arrivi/list-today`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e29827e40f425231", "name": "Dangling fetch: POST /api/gestione-arrivi/read-documents (app/gestione-arrivi/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-arrivi/read-documents (app/gestione-arrivi/page.tsx:108)"}, "fullDescription": {"text": "`app/gestione-arrivi/page.tsx:108` calls `POST /api/gestione-arrivi/read-documents` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-arrivi/read-documents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1ba2dcd64ce3a6c", "name": "Dangling fetch: POST /api/gestione-arrivi/process-arrival (app/gestione-arrivi/page.tsx:167)", "shortDescription": {"text": "Dangling fetch: POST /api/gestione-arrivi/process-arrival (app/gestione-arrivi/page.tsx:167)"}, "fullDescription": {"text": "`app/gestione-arrivi/page.tsx:167` calls `POST /api/gestione-arrivi/process-arrival` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gestione-arrivi/process-arrival`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1343d816056bf159", "name": "Dangling fetch: POST /api/test-web-search (app/test-web-search/page.tsx:18)", "shortDescription": {"text": "Dangling fetch: POST /api/test-web-search (app/test-web-search/page.tsx:18)"}, "fullDescription": {"text": "`app/test-web-search/page.tsx:18` calls `POST /api/test-web-search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/test-web-search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7cd4cc3b1c481b9", "name": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/chat/page.tsx:291)", "shortDescription": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/chat/page.tsx:291)"}, "fullDescription": {"text": "`app/w/[slug]/[tavolo]/chat/page.tsx:291` calls `GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8a0ae3e7e6de7ac", "name": "Dangling fetch: POST /api/wine/sommelier (app/w/[slug]/[tavolo]/chat/page.tsx:417)", "shortDescription": {"text": "Dangling fetch: POST /api/wine/sommelier (app/w/[slug]/[tavolo]/chat/page.tsx:417)"}, "fullDescription": {"text": "`app/w/[slug]/[tavolo]/chat/page.tsx:417` calls `POST /api/wine/sommelier` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/sommelier`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f47a86e401cba06f", "name": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/confirm/page.tsx:41", "shortDescription": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/confirm/page.tsx:41)"}, "fullDescription": {"text": "`app/w/[slug]/[tavolo]/confirm/page.tsx:41` calls `GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-504da89f3842faaa", "name": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/wines/page.tsx:82)", "shortDescription": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/wines/page.tsx:82)"}, "fullDescription": {"text": "`app/w/[slug]/[tavolo]/wines/page.tsx:82` calls `GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6954a0f12efadac2", "name": "Dangling fetch: GET /api/urgent-products (app/maestro-ai/page.tsx:139)", "shortDescription": {"text": "Dangling fetch: GET /api/urgent-products (app/maestro-ai/page.tsx:139)"}, "fullDescription": {"text": "`app/maestro-ai/page.tsx:139` calls `GET /api/urgent-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/urgent-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc156f3b6ef17e40", "name": "Dangling fetch: GET /api/maestro/analytics/orders?${params} (app/maestro-ai/analytics/orders/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/analytics/orders?${params} (app/maestro-ai/analytics/orders/page.tsx:98)"}, "fullDescription": {"text": "`app/maestro-ai/analytics/orders/page.tsx:98` calls `GET /api/maestro/analytics/orders?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/analytics/orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1065f0f99d168641", "name": "Dangling fetch: GET /api/maestro/analytics/customers?${params} (app/maestro-ai/analytics/customers/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/analytics/customers?${params} (app/maestro-ai/analytics/customers/page.tsx:89)"}, "fullDescription": {"text": "`app/maestro-ai/analytics/customers/page.tsx:89` calls `GET /api/maestro/analytics/customers?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/analytics/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65b448b62beafda7", "name": "Dangling fetch: GET /api/maestro/analytics/avg-order-value?${params} (app/maestro-ai/analytics/avg-order-value/page.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/analytics/avg-order-value?${params} (app/maestro-ai/analytics/avg-order-value/page.tsx:105)"}, "fullDescription": {"text": "`app/maestro-ai/analytics/avg-order-value/page.tsx:105` calls `GET /api/maestro/analytics/avg-order-value?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/analytics/avg-order-value`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e70ff81b92635f2", "name": "Dangling fetch: GET /api/maestro/customers/${customerId} (app/maestro-ai/customers/[id]/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/customers/${customerId} (app/maestro-ai/customers/[id]/page.tsx:50)"}, "fullDescription": {"text": "`app/maestro-ai/customers/[id]/page.tsx:50` calls `GET /api/maestro/customers/${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/customers/<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-b9e979d28c04e858", "name": "Dangling fetch: GET /api/maestro/daily-plan?${params.toString()} (app/maestro-ai/daily-plan/page.tsx:161)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/daily-plan?${params.toString()} (app/maestro-ai/daily-plan/page.tsx:161)"}, "fullDescription": {"text": "`app/maestro-ai/daily-plan/page.tsx:161` calls `GET /api/maestro/daily-plan?${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: `/maestro/daily-plan`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-465f756eff2381ce", "name": "Dangling fetch: GET /api/wine/sommelier-personality?slug=${encodeURIComponent(DEMO_SLUG)} (app/lapa-wine/sommelier/page.", "shortDescription": {"text": "Dangling fetch: GET /api/wine/sommelier-personality?slug=${encodeURIComponent(DEMO_SLUG)} (app/lapa-wine/sommelier/page.tsx:36)"}, "fullDescription": {"text": "`app/lapa-wine/sommelier/page.tsx:36` calls `GET /api/wine/sommelier-personality?slug=${encodeURIComponent(DEMO_SLUG)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/sommelier-personality`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4518694d499d5d4", "name": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:65)", "shortDescription": {"text": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:65)"}, "fullDescription": {"text": "`app/lapa-wine/sommelier/page.tsx:65` calls `POST /api/wine/sommelier-personality` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/sommelier-personality`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b63f206db3fa6837", "name": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:88)"}, "fullDescription": {"text": "`app/lapa-wine/sommelier/page.tsx:88` calls `POST /api/wine/sommelier-personality` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/wine/sommelier-personality`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa4f73e0b027caad", "name": "Dangling fetch: POST /api/ubicazioni/buffer-count (app/ubicazioni/page.tsx:129)", "shortDescription": {"text": "Dangling fetch: POST /api/ubicazioni/buffer-count (app/ubicazioni/page.tsx:129)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:129` calls `POST /api/ubicazioni/buffer-count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ubicazioni/buffer-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-5d404470b7343d55", "name": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:180)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:180)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:180` calls `POST /api/inventory/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1bade2cbb92a9c1", "name": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:225)", "shortDescription": {"text": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:225)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:225` calls `POST /api/ubicazioni/transfer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ubicazioni/transfer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f006e149a2873e70", "name": "Dangling fetch: POST /api/ubicazioni/buffer-products (app/ubicazioni/page.tsx:270)", "shortDescription": {"text": "Dangling fetch: POST /api/ubicazioni/buffer-products (app/ubicazioni/page.tsx:270)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:270` calls `POST /api/ubicazioni/buffer-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ubicazioni/buffer-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdf3eb4c7e26443b", "name": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:326)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:326)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:326` calls `POST /api/inventory/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a66676dceb1f72e5", "name": "Dangling fetch: POST /api/ubicazioni/check-product (app/ubicazioni/page.tsx:351)", "shortDescription": {"text": "Dangling fetch: POST /api/ubicazioni/check-product (app/ubicazioni/page.tsx:351)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:351` calls `POST /api/ubicazioni/check-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ubicazioni/check-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-d77d5a34d025664b", "name": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:402)", "shortDescription": {"text": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:402)"}, "fullDescription": {"text": "`app/ubicazioni/page.tsx:402` calls `POST /api/ubicazioni/transfer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ubicazioni/transfer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d467627eb363aac6", "name": "Dangling fetch: GET /api/auth/me (app/my-reviews/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (app/my-reviews/page.tsx:75)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:75` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-4512b370acdc8a2e", "name": "Dangling fetch: GET /api/review-manager/my-business (app/my-reviews/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/my-business (app/my-reviews/page.tsx:86)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:86` calls `GET /api/review-manager/my-business` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/my-business`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25e39670e7b74293", "name": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId} (app/my-reviews/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId} (app/my-reviews/page.tsx:107)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:107` calls `GET /api/review-manager/reviews?businessId=${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60ad842374426549", "name": "Dangling fetch: GET /api/review-manager/stats?businessId=${businessId} (app/my-reviews/page.tsx:115)", "shortDescription": {"text": "Dangling fetch: GET /api/review-manager/stats?businessId=${businessId} (app/my-reviews/page.tsx:115)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:115` calls `GET /api/review-manager/stats?businessId=${businessId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/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-f0b76cc84e40dfe5", "name": "Dangling fetch: POST /api/review-manager/sync (app/my-reviews/page.tsx:126)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/sync (app/my-reviews/page.tsx:126)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:126` calls `POST /api/review-manager/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/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-8561bb71459ce04a", "name": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/generate (app/my-reviews/page.tsx:147)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/generate (app/my-reviews/page.tsx:147)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:147` calls `POST /api/review-manager/reviews/${reviewId}/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<p>/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa3323c399c4b5d8", "name": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/publish (app/my-reviews/page.tsx:168)", "shortDescription": {"text": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/publish (app/my-reviews/page.tsx:168)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:168` calls `POST /api/review-manager/reviews/${reviewId}/publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<p>/publish`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84c9eabf3b971e2c", "name": "Dangling fetch: PATCH /api/review-manager/reviews/${reviewId} (app/my-reviews/page.tsx:194)", "shortDescription": {"text": "Dangling fetch: PATCH /api/review-manager/reviews/${reviewId} (app/my-reviews/page.tsx:194)"}, "fullDescription": {"text": "`app/my-reviews/page.tsx:194` calls `PATCH /api/review-manager/reviews/${reviewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/review-manager/reviews/<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-6a7dd28ccaff5e8e", "name": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(email)} (app/time-attendance/page.tsx:329)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(email)} (app/time-attendance/page.tsx:329)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:329` calls `GET /api/time-attendance/contact?email=${encodeURIComponent(email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/contact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26637c7643528f6a", "name": "Dangling fetch: GET /api/time-attendance/clock?contact_id=${contactId} (app/time-attendance/page.tsx:355)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/clock?contact_id=${contactId} (app/time-attendance/page.tsx:355)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:355` calls `GET /api/time-attendance/clock?contact_id=${contactId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/clock`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba9c6393ad409c04", "name": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId} (app/time-attendance/page.tsx:369)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId} (app/time-attendance/page.tsx:369)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:369` calls `GET /api/time-attendance/dashboard?company_id=${companyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d50ffe84877e7b3", "name": "Dangling fetch: GET /api/time-attendance/export?contact_id=${contactId}&company_id=${company?.id || 0}&start_date=${date", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/export?contact_id=${contactId}&company_id=${company?.id || 0}&start_date=${date}&end_date=${date}&format=json (app/time-attendance/page.tsx:396)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:396` calls `GET /api/time-attendance/export?contact_id=${contactId}&company_id=${company?.id || 0}&start_date=${date}&end_date=${date}&format=json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b6b327cfda691e9", "name": "Dangling fetch: GET /api/time-attendance/employee-stats?contact_id=${employee.contact_id}&company_id=${contact?.id || co", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/employee-stats?contact_id=${employee.contact_id}&company_id=${contact?.id || company?.id || 0} (app/time-attendance/page.tsx:431)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:431` calls `GET /api/time-attendance/employee-stats?contact_id=${employee.contact_id}&company_id=${contact?.id || company?.id || 0}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/employee-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-dc7113ebf65b5729", "name": "Dangling fetch: GET /api/time-attendance/consent?contact_id=${contactId} (app/time-attendance/page.tsx:479)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/consent?contact_id=${contactId} (app/time-attendance/page.tsx:479)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:479` calls `GET /api/time-attendance/consent?contact_id=${contactId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/consent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f5c66381f3f3cd3", "name": "Dangling fetch: POST /api/time-attendance/consent (app/time-attendance/page.tsx:501)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/consent (app/time-attendance/page.tsx:501)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:501` calls `POST /api/time-attendance/consent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/consent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82709e091e4f2a28", "name": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:551)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:551)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:551` calls `POST /api/time-attendance/clock` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/clock`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-720d3b9f63646360", "name": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:600)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:600)"}, "fullDescription": {"text": "`app/time-attendance/page.tsx:600` calls `POST /api/time-attendance/clock` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/clock`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-866abb151c29749f", "name": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user!.email)} (app/time-attendance/admin/pag", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user!.email)} (app/time-attendance/admin/page.tsx:143)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:143` calls `GET /api/time-attendance/contact?email=${encodeURIComponent(user!.email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/contact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58d2bf870e9eb1b0", "name": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId}&date=${selectedDate} (app/time-attendance/adm", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId}&date=${selectedDate} (app/time-attendance/admin/page.tsx:172)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:172` calls `GET /api/time-attendance/dashboard?company_id=${companyId}&date=${selectedDate}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66baace467d69fde", "name": "Dangling fetch: POST /api/time-attendance/migrate?secret=lapa2024migrate (app/time-attendance/admin/page.tsx:198)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/migrate?secret=lapa2024migrate (app/time-attendance/admin/page.tsx:198)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:198` calls `POST /api/time-attendance/migrate?secret=lapa2024migrate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/migrate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06295837218a5d39", "name": "Dangling fetch: GET /api/time-attendance/locations?company_id=${companyId} (app/time-attendance/admin/page.tsx:219)", "shortDescription": {"text": "Dangling fetch: GET /api/time-attendance/locations?company_id=${companyId} (app/time-attendance/admin/page.tsx:219)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:219` calls `GET /api/time-attendance/locations?company_id=${companyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a100745f9b3bc040", "name": "Dangling fetch: POST /api/time-attendance/locations (app/time-attendance/admin/page.tsx:266)", "shortDescription": {"text": "Dangling fetch: POST /api/time-attendance/locations (app/time-attendance/admin/page.tsx:266)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:266` calls `POST /api/time-attendance/locations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-599c0e2ec9e2fd20", "name": "Dangling fetch: DELETE /api/time-attendance/locations?id=${locationId} (app/time-attendance/admin/page.tsx:352)", "shortDescription": {"text": "Dangling fetch: DELETE /api/time-attendance/locations?id=${locationId} (app/time-attendance/admin/page.tsx:352)"}, "fullDescription": {"text": "`app/time-attendance/admin/page.tsx:352` calls `DELETE /api/time-attendance/locations?id=${locationId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/time-attendance/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51a6ba63f633e499", "name": "Dangling fetch: POST /api/product-creator/parse-invoice (app/product-creator/page.tsx:65)", "shortDescription": {"text": "Dangling fetch: POST /api/product-creator/parse-invoice (app/product-creator/page.tsx:65)"}, "fullDescription": {"text": "`app/product-creator/page.tsx:65` calls `POST /api/product-creator/parse-invoice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/product-creator/parse-invoice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4228f6efe86065f4", "name": "Dangling fetch: POST /api/product-creator/enrich-product (app/product-creator/select-products/page.tsx:178)", "shortDescription": {"text": "Dangling fetch: POST /api/product-creator/enrich-product (app/product-creator/select-products/page.tsx:178)"}, "fullDescription": {"text": "`app/product-creator/select-products/page.tsx:178` calls `POST /api/product-creator/enrich-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/product-creator/enrich-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-9b67e4591a7b1499", "name": "Dangling fetch: POST /api/product-creator/create-products (app/product-creator/select-products/page.tsx:257)", "shortDescription": {"text": "Dangling fetch: POST /api/product-creator/create-products (app/product-creator/select-products/page.tsx:257)"}, "fullDescription": {"text": "`app/product-creator/select-products/page.tsx:257` calls `POST /api/product-creator/create-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/product-creator/create-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08ae3deac49394ca", "name": "Dangling fetch: POST /api/catalogo-foto/upload (app/catalogo-foto/page.tsx:181)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-foto/upload (app/catalogo-foto/page.tsx:181)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:181` calls `POST /api/catalogo-foto/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/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-41245109956d1b2f", "name": "Dangling fetch: POST /api/catalogo-foto/jobs (app/catalogo-foto/page.tsx:190)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-foto/jobs (app/catalogo-foto/page.tsx:190)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:190` calls `POST /api/catalogo-foto/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dceefbe95758a74d", "name": "Dangling fetch: GET /api/catalogo-foto/jobs?limit=50 (app/catalogo-foto/page.tsx:209)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-foto/jobs?limit=50 (app/catalogo-foto/page.tsx:209)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:209` calls `GET /api/catalogo-foto/jobs?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2403a0788c979845", "name": "Dangling fetch: PATCH /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:241)", "shortDescription": {"text": "Dangling fetch: PATCH /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:241)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:241` calls `PATCH /api/catalogo-foto/jobs/${jobId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/jobs/<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-67c4cee2c99f77b0", "name": "Dangling fetch: DELETE /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:262)", "shortDescription": {"text": "Dangling fetch: DELETE /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:262)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:262` calls `DELETE /api/catalogo-foto/jobs/${jobId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/jobs/<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-5293f540c401a13a", "name": "Dangling fetch: POST /api/catalogo-foto/location-products (app/catalogo-foto/page.tsx:281)", "shortDescription": {"text": "Dangling fetch: POST /api/catalogo-foto/location-products (app/catalogo-foto/page.tsx:281)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:281` calls `POST /api/catalogo-foto/location-products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/location-products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4aae9c3e7cbb5d90", "name": "Dangling fetch: GET /api/catalogo-foto/location-map (app/catalogo-foto/page.tsx:307)", "shortDescription": {"text": "Dangling fetch: GET /api/catalogo-foto/location-map (app/catalogo-foto/page.tsx:307)"}, "fullDescription": {"text": "`app/catalogo-foto/page.tsx:307` calls `GET /api/catalogo-foto/location-map` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/catalogo-foto/location-map`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c13b30cc5562cb20", "name": "Dangling fetch: GET /api/smart-ordering/data (app/ordini-smart/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: GET /api/smart-ordering/data (app/ordini-smart/page.tsx:112)"}, "fullDescription": {"text": "`app/ordini-smart/page.tsx:112` calls `GET /api/smart-ordering/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering/data`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e0f1451a99ef410", "name": "Dangling fetch: POST /api/smart-ordering/data (app/ordini-smart/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: POST /api/smart-ordering/data (app/ordini-smart/page.tsx:135)"}, "fullDescription": {"text": "`app/ordini-smart/page.tsx:135` calls `POST /api/smart-ordering/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/smart-ordering/data`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2910b49e43672f2f", "name": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/facebook.ts:197)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/facebook.ts:197)"}, "fullDescription": {"text": "`lib/review-manager/platforms/facebook.ts:197` calls `POST https://graph.facebook.com/v18.0/oauth/access_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:/graph.facebook.com/v18.0/oauth/access_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-a53160f43c70a588", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/ (lib/review-manager/platforms/tiktok.ts:48)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/ (lib/review-manager/platforms/tiktok.ts:48)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:48` calls `POST https://open.tiktokapis.com/v2/video/list/` 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.tiktokapis.com/v2/video/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef0997281ccb682f", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/list/ (lib/review-manager/platforms/tiktok.ts:80)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/list/ (lib/review-manager/platforms/tiktok.ts:80)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:80` calls `POST https://open.tiktokapis.com/v2/comment/list/` 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.tiktokapis.com/v2/comment/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3428dbd66a3b1d9", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/reply/ (lib/review-manager/platforms/tiktok.ts:148)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/reply/ (lib/review-manager/platforms/tiktok.ts:148)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:148` calls `POST https://open.tiktokapis.com/v2/comment/reply/` 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.tiktokapis.com/v2/comment/reply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c92cd7cd9ac746b", "name": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/ (lib/review-manager/platforms/tiktok.ts:185)", "shortDescription": {"text": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/ (lib/review-manager/platforms/tiktok.ts:185)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:185` calls `GET https://open.tiktokapis.com/v2/user/info/` 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.tiktokapis.com/v2/user/info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23106cf26cc22571", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:244)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:244)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:244` calls `POST https://open.tiktokapis.com/v2/oauth/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:/open.tiktokapis.com/v2/oauth/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-04a4362fec8c31b8", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:285)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:285)"}, "fullDescription": {"text": "`lib/review-manager/platforms/tiktok.ts:285` calls `POST https://open.tiktokapis.com/v2/oauth/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:/open.tiktokapis.com/v2/oauth/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-6048b4c77de98aa6", "name": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/instagram.ts:253)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/instagram.ts:253)"}, "fullDescription": {"text": "`lib/review-manager/platforms/instagram.ts:253` calls `POST https://graph.facebook.com/v18.0/oauth/access_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:/graph.facebook.com/v18.0/oauth/access_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-dd62a8925aed85cb", "name": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpi", "shortDescription": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpilot.ts:225)"}, "fullDescription": {"text": "`lib/review-manager/platforms/trustpilot.ts:225` calls `GET https://api.trustpilot.com/v1/business-units/${businessUnitId}` 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.trustpilot.com/v1/business-units/<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-a4c2a5929f3f9211", "name": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/search?name=${encodeURIComponent(query)} (lib/review-ma", "shortDescription": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/search?name=${encodeURIComponent(query)} (lib/review-manager/platforms/trustpilot.ts:256)"}, "fullDescription": {"text": "`lib/review-manager/platforms/trustpilot.ts:256` calls `GET https://api.trustpilot.com/v1/business-units/search?name=${encodeURIComponent(query)}` 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.trustpilot.com/v1/business-units/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c5130735aa443f4", "name": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken (lib/review-m", "shortDescription": {"text": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken (lib/review-manager/platforms/trustpilot.ts:310)"}, "fullDescription": {"text": "`lib/review-manager/platforms/trustpilot.ts:310` calls `POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken` 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.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-013a145e18e420c0", "name": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh (lib/review-manag", "shortDescription": {"text": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh (lib/review-manager/platforms/trustpilot.ts:350)"}, "fullDescription": {"text": "`lib/review-manager/platforms/trustpilot.ts:350` calls `POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh` 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.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a458938d35c87938", "name": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpi", "shortDescription": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpilot.ts:392)"}, "fullDescription": {"text": "`lib/review-manager/platforms/trustpilot.ts:392` calls `GET https://api.trustpilot.com/v1/business-units/${businessUnitId}` 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.trustpilot.com/v1/business-units/<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-1aee39800088248b", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:168)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:168)"}, "fullDescription": {"text": "`lib/review-manager/platforms/google.ts:168` calls `POST https://oauth2.googleapis.com/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:/oauth2.googleapis.com/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-9300377f1edac229", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:219)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:219)"}, "fullDescription": {"text": "`lib/review-manager/platforms/google.ts:219` calls `POST https://oauth2.googleapis.com/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:/oauth2.googleapis.com/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-36a8b8bc7376d965", "name": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts/${accountId}/locations (lib/review-manager/platforms/g", "shortDescription": {"text": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts/${accountId}/locations (lib/review-manager/platforms/google.ts:254)"}, "fullDescription": {"text": "`lib/review-manager/platforms/google.ts:254` calls `GET https://mybusiness.googleapis.com/v4/accounts/${accountId}/locations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/mybusiness.googleapis.com/v4/accounts/<p>/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b38a3fbc061aa84c", "name": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts (lib/review-manager/platforms/google.ts:282)", "shortDescription": {"text": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts (lib/review-manager/platforms/google.ts:282)"}, "fullDescription": {"text": "`lib/review-manager/platforms/google.ts:282` calls `GET https://mybusiness.googleapis.com/v4/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/mybusiness.googleapis.com/v4/accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35517d017fc26634", "name": "Dangling fetch: GET /api/dashboard?period=${period} (lib/super-dashboard/hooks/useDashboardData.ts:92)", "shortDescription": {"text": "Dangling fetch: GET /api/dashboard?period=${period} (lib/super-dashboard/hooks/useDashboardData.ts:92)"}, "fullDescription": {"text": "`lib/super-dashboard/hooks/useDashboardData.ts:92` calls `GET /api/dashboard?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d05369885532463", "name": "Dangling fetch: POST /api/dashboard/refresh (lib/super-dashboard/hooks/useDashboardData.ts:155)", "shortDescription": {"text": "Dangling fetch: POST /api/dashboard/refresh (lib/super-dashboard/hooks/useDashboardData.ts:155)"}, "fullDescription": {"text": "`lib/super-dashboard/hooks/useDashboardData.ts:155` calls `POST /api/dashboard/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70bf10495481e082", "name": "Dangling fetch: GET /api/dashboard/export?format=${format} (lib/super-dashboard/hooks/useDashboardData.ts:187)", "shortDescription": {"text": "Dangling fetch: GET /api/dashboard/export?format=${format} (lib/super-dashboard/hooks/useDashboardData.ts:187)"}, "fullDescription": {"text": "`lib/super-dashboard/hooks/useDashboardData.ts:187` calls `GET /api/dashboard/export?format=${format}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99bb98a6dbf21a66", "name": "Dangling fetch: GET /api/odoo/journals (lib/config/bank-journals.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /api/odoo/journals (lib/config/bank-journals.ts:84)"}, "fullDescription": {"text": "`lib/config/bank-journals.ts:84` calls `GET /api/odoo/journals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/odoo/journals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9336faaf16a30416", "name": "Dangling fetch: POST /api/inventory/location (lib/odoo/inventoryClient.ts:128)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/location (lib/odoo/inventoryClient.ts:128)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:128` calls `POST /api/inventory/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f39deb8510a3296", "name": "Dangling fetch: POST /api/inventory/quants (lib/odoo/inventoryClient.ts:165)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/quants (lib/odoo/inventoryClient.ts:165)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:165` calls `POST /api/inventory/quants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/quants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c4f0263ce20ccf5", "name": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:196)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:196)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:196` calls `POST /api/inventory/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5af79ba83b1cce6", "name": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:227)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:227)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:227` calls `POST /api/inventory/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4571bed95650c9d5", "name": "Dangling fetch: POST /api/inventory/buffer-search (lib/odoo/inventoryClient.ts:258)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/buffer-search (lib/odoo/inventoryClient.ts:258)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:258` calls `POST /api/inventory/buffer-search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/buffer-search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0fb438c321540adc", "name": "Dangling fetch: POST /api/inventory/transfer (lib/odoo/inventoryClient.ts:295)", "shortDescription": {"text": "Dangling fetch: POST /api/inventory/transfer (lib/odoo/inventoryClient.ts:295)"}, "fullDescription": {"text": "`lib/odoo/inventoryClient.ts:295` calls `POST /api/inventory/transfer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/inventory/transfer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18b7c6f538d48f7c", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:175)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:175)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-api-route.ts:175` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17234c2673eac000", "name": "Dangling fetch: GET /api/helpdesk?customerId=123 (lib/lapa-agents/agents/example-api-route.ts:196)", "shortDescription": {"text": "Dangling fetch: GET /api/helpdesk?customerId=123 (lib/lapa-agents/agents/example-api-route.ts:196)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-api-route.ts:196` calls `GET /api/helpdesk?customerId=123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7a6c330a7234990", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:206)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:206)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-api-route.ts:206` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-beac1f1ac43d24a1", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:225)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:225)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-api-route.ts:225` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92801256a4cc40c2", "name": "Dangling fetch: GET /api/helpdesk?customerId=${customerId} (lib/lapa-agents/agents/example-component.tsx:44)", "shortDescription": {"text": "Dangling fetch: GET /api/helpdesk?customerId=${customerId} (lib/lapa-agents/agents/example-component.tsx:44)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-component.tsx:44` calls `GET /api/helpdesk?customerId=${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3a29d91c85b5d8f", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:60)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:60)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-component.tsx:60` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-943e0e4549e52ec5", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:303)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:303)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-component.tsx:303` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60748c392d367b5a", "name": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:329)", "shortDescription": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:329)"}, "fullDescription": {"text": "`lib/lapa-agents/agents/example-component.tsx:329` calls `POST /api/helpdesk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/helpdesk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94d00884b4d1cf7e", "name": "Dangling fetch: GET /api/portale-clienti/orders/${orderId}/pdf (lib/utils/download-pdf.ts:11)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/orders/${orderId}/pdf (lib/utils/download-pdf.ts:11)"}, "fullDescription": {"text": "`lib/utils/download-pdf.ts:11` calls `GET /api/portale-clienti/orders/${orderId}/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/orders/<p>/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ef215a4ebf4549f", "name": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId}/pdf (lib/utils/download-pdf.ts:47)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId}/pdf (lib/utils/download-pdf.ts:47)"}, "fullDescription": {"text": "`lib/utils/download-pdf.ts:47` calls `GET /api/portale-clienti/deliveries/${deliveryId}/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/deliveries/<p>/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d48c232069d11c8", "name": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId}/pdf (lib/utils/download-pdf.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId}/pdf (lib/utils/download-pdf.ts:82)"}, "fullDescription": {"text": "`lib/utils/download-pdf.ts:82` calls `GET /api/portale-clienti/invoices/${invoiceId}/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portale-clienti/invoices/<p>/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d92e9ceeca7f2003", "name": "Dangling fetch: GET /api/blog/posts (lib/utils/blogArticles.ts:8)", "shortDescription": {"text": "Dangling fetch: GET /api/blog/posts (lib/utils/blogArticles.ts:8)"}, "fullDescription": {"text": "`lib/utils/blogArticles.ts:8` calls `GET /api/blog/posts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/blog/posts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b21784aa2147081", "name": "Dangling fetch: GET /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:65)", "shortDescription": {"text": "Dangling fetch: GET /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:65)"}, "fullDescription": {"text": "`lib/hooks/useSupplierCadence.ts:65` calls `GET /api/supplier-cadence/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/<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-9f00df954a54af97", "name": "Dangling fetch: POST /api/supplier-cadence (lib/hooks/useSupplierCadence.ts:79)", "shortDescription": {"text": "Dangling fetch: POST /api/supplier-cadence (lib/hooks/useSupplierCadence.ts:79)"}, "fullDescription": {"text": "`lib/hooks/useSupplierCadence.ts:79` calls `POST /api/supplier-cadence` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b639717cbb6c335", "name": "Dangling fetch: PATCH /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:102)", "shortDescription": {"text": "Dangling fetch: PATCH /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:102)"}, "fullDescription": {"text": "`lib/hooks/useSupplierCadence.ts:102` calls `PATCH /api/supplier-cadence/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/<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-c98bea2d94212fd7", "name": "Dangling fetch: DELETE /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:122)", "shortDescription": {"text": "Dangling fetch: DELETE /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:122)"}, "fullDescription": {"text": "`lib/hooks/useSupplierCadence.ts:122` calls `DELETE /api/supplier-cadence/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/<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-f671809989e2db19", "name": "Dangling fetch: GET /api/supplier-cadence/today (lib/hooks/useOrderTimeline.ts:43)", "shortDescription": {"text": "Dangling fetch: GET /api/supplier-cadence/today (lib/hooks/useOrderTimeline.ts:43)"}, "fullDescription": {"text": "`lib/hooks/useOrderTimeline.ts:43` calls `GET /api/supplier-cadence/today` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/today`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-189d21de7a817aa2", "name": "Dangling fetch: GET /api/supplier-cadence/upcoming?days=${days} (lib/hooks/useOrderTimeline.ts:56)", "shortDescription": {"text": "Dangling fetch: GET /api/supplier-cadence/upcoming?days=${days} (lib/hooks/useOrderTimeline.ts:56)"}, "fullDescription": {"text": "`lib/hooks/useOrderTimeline.ts:56` calls `GET /api/supplier-cadence/upcoming?days=${days}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/supplier-cadence/upcoming`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cc7fcbcebd3dbac", "name": "Dangling fetch: POST https://api.tavily.com/search (lib/services/web-search.ts:322)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/search (lib/services/web-search.ts:322)"}, "fullDescription": {"text": "`lib/services/web-search.ts:322` calls `POST https://api.tavily.com/search` 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.tavily.com/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7dfd180af72dc27b", "name": "Dangling fetch: GET /api/user/favorites?userId=${userId} (lib/store/appStore.ts:35)", "shortDescription": {"text": "Dangling fetch: GET /api/user/favorites?userId=${userId} (lib/store/appStore.ts:35)"}, "fullDescription": {"text": "`lib/store/appStore.ts:35` calls `GET /api/user/favorites?userId=${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/user/favorites`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d84f83afcd709085", "name": "Dangling fetch: PUT /api/user/favorites (lib/store/appStore.ts:51)", "shortDescription": {"text": "Dangling fetch: PUT /api/user/favorites (lib/store/appStore.ts:51)"}, "fullDescription": {"text": "`lib/store/appStore.ts:51` calls `PUT /api/user/favorites` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/user/favorites`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00578a615122fa97", "name": "Dangling fetch: POST /api/auth/login (lib/store/authStore.ts:20)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/login (lib/store/authStore.ts:20)"}, "fullDescription": {"text": "`lib/store/authStore.ts:20` calls `POST /api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-222ef92fba3523ea", "name": "Dangling fetch: POST /api/auth/register (lib/store/authStore.ts:58)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (lib/store/authStore.ts:58)"}, "fullDescription": {"text": "`lib/store/authStore.ts:58` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-dc13adcd0cdd147f", "name": "Dangling fetch: POST /api/auth/logout (lib/store/authStore.ts:98)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (lib/store/authStore.ts:98)"}, "fullDescription": {"text": "`lib/store/authStore.ts:98` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/logout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a409d2f2b4504a0b", "name": "Dangling fetch: POST /api/auth/update-profile (lib/store/authStore.ts:134)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/update-profile (lib/store/authStore.ts:134)"}, "fullDescription": {"text": "`lib/store/authStore.ts:134` calls `POST /api/auth/update-profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/update-profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c82f6a2d663bb061", "name": "Dangling fetch: GET /api/auth/me (lib/store/authStore.ts:167)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (lib/store/authStore.ts:167)"}, "fullDescription": {"text": "`lib/store/authStore.ts:167` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-108ed23c5f043601", "name": "Dangling fetch: GET /api/admin/users (lib/store/authStore.ts:227)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/users (lib/store/authStore.ts:227)"}, "fullDescription": {"text": "`lib/store/authStore.ts:227` calls `GET /api/admin/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb9b1f8aef0bba82", "name": "Dangling fetch: POST /api/admin/users (lib/store/authStore.ts:248)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/users (lib/store/authStore.ts:248)"}, "fullDescription": {"text": "`lib/store/authStore.ts:248` calls `POST /api/admin/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-235c82c3d44e1e05", "name": "Dangling fetch: PUT /api/admin/users/${id} (lib/store/authStore.ts:273)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/${id} (lib/store/authStore.ts:273)"}, "fullDescription": {"text": "`lib/store/authStore.ts:273` calls `PUT /api/admin/users/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users/<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-e94d79bfa3738414", "name": "Dangling fetch: DELETE /api/admin/users/${id} (lib/store/authStore.ts:298)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/users/${id} (lib/store/authStore.ts:298)"}, "fullDescription": {"text": "`lib/store/authStore.ts:298` calls `DELETE /api/admin/users/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users/<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-b7fc8525bd6f16db", "name": "Dangling fetch: POST /web/session/get_session_info (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:236)", "shortDescription": {"text": "Dangling fetch: POST /web/session/get_session_info (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:236)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:236` calls `POST /web/session/get_session_info` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/session/get_session_info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf96b950a78618cf", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-991e32b3839868bf", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:450)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:450)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:450` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38252ce8c3220e82", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:458)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:458)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:458` calls `POST https://api.openai.com/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:/api.openai.com/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-1e8d941ee9bbd27e", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:548)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:548)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:548` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec58c61c18cb77ea", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:585)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:585)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:585` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4bc4e107a5ecaea", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:614)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:614)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:614` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-adf4211d29f99aea", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:631)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:631)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:631` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67f0d6a19d40fe77", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:655)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:655)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:655` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60f1c59788307e55", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6272024ae01ccacd", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:254", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:254)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/setup-chatbot-complete.ts:254` calls `POST https://api.openai.com/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:/api.openai.com/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-1014cd985ef91e62", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:273)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:273)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/update-chatbot-v2.ts:273` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-297041eb44a37528", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/update-chatbot-v2.ts:295)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/update-chatbot-v2.ts:295)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/update-chatbot-v2.ts:295` calls `POST https://api.openai.com/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:/api.openai.com/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-6e451574c9860b8c", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:325)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:325)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/update-chatbot-v2.ts:325` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b69a1d56e8e1ec8e", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:348)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:348)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/update-chatbot-v2.ts:348` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21f5fe9292787ce7", "name": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:371)", "shortDescription": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:371)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/update-chatbot-v2.ts:371` calls `POST /web/dataset/call_kw` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ddb311855582553", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:10", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:107)"}, "fullDescription": {"text": "`seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:107` calls `POST https://api.openai.com/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:/api.openai.com/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-5837b1b90cda3b40", "name": "Dangling fetch: GET /api/maestro/daily-plan?salesperson_id=${salespersonId} (hooks/useMaestroAI.ts:66)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/daily-plan?salesperson_id=${salespersonId} (hooks/useMaestroAI.ts:66)"}, "fullDescription": {"text": "`hooks/useMaestroAI.ts:66` calls `GET /api/maestro/daily-plan?salesperson_id=${salespersonId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/daily-plan`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cd3d069dd0955a8", "name": "Dangling fetch: GET /api/maestro/dashboard (hooks/useMaestroAI.ts:72)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/dashboard (hooks/useMaestroAI.ts:72)"}, "fullDescription": {"text": "`hooks/useMaestroAI.ts:72` calls `GET /api/maestro/dashboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21433848a95d65eb", "name": "Dangling fetch: GET /api/maestro/customers/${customerId} (hooks/useMaestroAI.ts:78)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/customers/${customerId} (hooks/useMaestroAI.ts:78)"}, "fullDescription": {"text": "`hooks/useMaestroAI.ts:78` calls `GET /api/maestro/customers/${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/customers/<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-88da7ac9b7c36fed", "name": "Dangling fetch: POST /api/maestro/interactions (hooks/useMaestroAI.ts:142)", "shortDescription": {"text": "Dangling fetch: POST /api/maestro/interactions (hooks/useMaestroAI.ts:142)"}, "fullDescription": {"text": "`hooks/useMaestroAI.ts:142` calls `POST /api/maestro/interactions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/interactions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4828c2a070077754", "name": "Dangling fetch: GET /api/maestro/analytics/period?${params} (hooks/useMaestroAI.ts:228)", "shortDescription": {"text": "Dangling fetch: GET /api/maestro/analytics/period?${params} (hooks/useMaestroAI.ts:228)"}, "fullDescription": {"text": "`hooks/useMaestroAI.ts:228` calls `GET /api/maestro/analytics/period?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/analytics/period`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ae26425dd898307", "name": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:32)", "shortDescription": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:32)"}, "fullDescription": {"text": "`hooks/useAppTracking.ts:32` calls `POST /api/track-usage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/track-usage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-020e2fb26197a7e3", "name": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:64)", "shortDescription": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:64)"}, "fullDescription": {"text": "`hooks/useAppTracking.ts:64` calls `POST /api/track-usage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/track-usage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1af7fa4f961eaae", "name": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:89)", "shortDescription": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:89)"}, "fullDescription": {"text": "`hooks/useAppTracking.ts:89` calls `POST /api/track-usage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/track-usage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-576b2d1085b8c697", "name": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:35)", "shortDescription": {"text": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:35)"}, "fullDescription": {"text": "`hooks/useAppAccess.ts:35` calls `POST /api/apps/check-access` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/apps/check-access`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78c1f48c64a391ed", "name": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:118)", "shortDescription": {"text": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:118)"}, "fullDescription": {"text": "`hooks/useAppAccess.ts:118` calls `POST /api/apps/check-access` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/apps/check-access`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-862f61998c6e1f71", "name": "Dangling fetch: POST /api/maestro/agent-chat (hooks/useMaestroChat.ts:222)", "shortDescription": {"text": "Dangling fetch: POST /api/maestro/agent-chat (hooks/useMaestroChat.ts:222)"}, "fullDescription": {"text": "`hooks/useMaestroChat.ts:222` calls `POST /api/maestro/agent-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/maestro/agent-chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71435472e7365aab", "name": "Unused endpoint: POST /analyze-pdf", "shortDescription": {"text": "Unused endpoint: POST /analyze-pdf"}, "fullDescription": {"text": "`pdf-reader-local/server.js` declares `POST /analyze-pdf` 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-a436691337284d03", "name": "Unused endpoint: GET /api/v1/health", "shortDescription": {"text": "Unused endpoint: GET /api/v1/health"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/health` 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-01b860baedd8ee76", "name": "Unused endpoint: GET /api/v1/metrics", "shortDescription": {"text": "Unused endpoint: GET /api/v1/metrics"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/metrics` 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-cd4027f9ab4d8baf", "name": "Unused endpoint: POST /api/v1/ocr/analyze", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ocr/analyze"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/ocr/analyze` 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-e9f224f5718ea698", "name": "Unused endpoint: POST /api/v1/ocr/batch", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ocr/batch"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/ocr/batch` 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-2859020023ef48c7", "name": "Unused endpoint: GET /api/v1/ocr/status/:jobId", "shortDescription": {"text": "Unused endpoint: GET /api/v1/ocr/status/:jobId"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/ocr/status/:jobId` 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-1adff1b078fea8ed", "name": "Unused endpoint: GET /api/v1/ocr/queue", "shortDescription": {"text": "Unused endpoint: GET /api/v1/ocr/queue"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/ocr/queue` 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-41257132d4e6daf4", "name": "Unused endpoint: POST /api/v1/chat", "shortDescription": {"text": "Unused endpoint: POST /api/v1/chat"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/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-b49dd1c49b264c63", "name": "Unused endpoint: POST /api/v1/extract-data", "shortDescription": {"text": "Unused endpoint: POST /api/v1/extract-data"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/extract-data` 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-1a58d1b0e3686cdc", "name": "Unused endpoint: POST /api/v1/ask-document", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ask-document"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/ask-document` 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-3852da67e71c3d3a", "name": "Unused endpoint: POST /api/v1/extract-contact", "shortDescription": {"text": "Unused endpoint: POST /api/v1/extract-contact"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/extract-contact` 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-acc446e0aaef6cca", "name": "Unused endpoint: POST /api/v1/banknote/recognize", "shortDescription": {"text": "Unused endpoint: POST /api/v1/banknote/recognize"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/banknote/recognize` 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-b992bd1069c3304a", "name": "Unused endpoint: GET /api/v1/banknote/denominations", "shortDescription": {"text": "Unused endpoint: GET /api/v1/banknote/denominations"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/banknote/denominations` 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-f789f043f5d89783", "name": "Unused endpoint: POST /api/v1/face/recognize", "shortDescription": {"text": "Unused endpoint: POST /api/v1/face/recognize"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/face/recognize` 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-434448688e8280d2", "name": "Unused endpoint: POST /api/v1/face/enroll", "shortDescription": {"text": "Unused endpoint: POST /api/v1/face/enroll"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `POST /api/v1/face/enroll` 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-42e092b740e4e756", "name": "Unused endpoint: DELETE /api/v1/face/enroll/:employeeId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/face/enroll/:employeeId"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `DELETE /api/v1/face/enroll/:employeeId` 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-90a17491ecc3a1a8", "name": "Unused endpoint: GET /api/v1/face/enrolled", "shortDescription": {"text": "Unused endpoint: GET /api/v1/face/enrolled"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/face/enrolled` 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-06af0be98cd88f47", "name": "Unused endpoint: GET /api/v1/face/enrolled/:employeeId", "shortDescription": {"text": "Unused endpoint: GET /api/v1/face/enrolled/:employeeId"}, "fullDescription": {"text": "`jetson-deployment/server/index.js` declares `GET /api/v1/face/enrolled/:employeeId` 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/20982"}, "properties": {"repository": "teo-lapa/app-hub-platform", "repoUrl": "https://github.com/teo-lapa/app-hub-platform", "branch": "main"}, "results": [{"ruleId": "scanner-a5c3094b2bd339f5", "level": "note", "message": {"text": "Possibly dead Python function: reconcile_line"}, "properties": {"repobilityId": "054e8ac11f5da2f6", "scanner": "scanner-primary", "fingerprint": "a5c3094b2bd339f5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo_ubs_banking/odoo_connector.py:294"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ab5bd976d8a30fc", "level": "note", "message": {"text": "Possibly dead Python function: action_mark_reviewed"}, "properties": {"repobilityId": "ee260608d21fd0e8", "scanner": "scanner-primary", "fingerprint": "7ab5bd976d8a30fc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo-modules/lapa_price_check/models/price_review.py:167"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5647074a4edc07ee", "level": "note", "message": {"text": "Possibly dead Python function: action_mark_blocked"}, "properties": {"repobilityId": "14a45564c75f4898", "scanner": "scanner-primary", "fingerprint": "5647074a4edc07ee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo-modules/lapa_price_check/models/price_review.py:178"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6e5c27937787430c", "level": "note", "message": {"text": "Possibly dead Python function: action_mark_pending"}, "properties": {"repobilityId": "9450d9711afb0c9e", "scanner": "scanner-primary", "fingerprint": "6e5c27937787430c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo-modules/lapa_price_check/models/price_review.py:189"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4bb2df69ff67c5bd", "level": "note", "message": {"text": "Possibly dead Python function: action_create_purchase_order"}, "properties": {"repobilityId": "f53ed5fa5cb4e4a6", "scanner": "scanner-primary", "fingerprint": "4bb2df69ff67c5bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/odoo-module/models/document_classifier.py:203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e6f3a56dd470f9df", "level": "note", "message": {"text": "Possibly dead Python function: action_classify_document"}, "properties": {"repobilityId": "f429e4a209b24ff8", "scanner": "scanner-primary", "fingerprint": "e6f3a56dd470f9df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/odoo-module/models/document_classifier.py:311"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f51c827da4a0589", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-laura-interactions.ts:14"}, "properties": {"repobilityId": "c6d52038fc323b2c", "scanner": "scanner-primary", "fingerprint": "9f51c827da4a0589", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f72f67d7e9eb856d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-api-laura.ts:11"}, "properties": {"repobilityId": "db00dcbb274312b3", "scanner": "scanner-primary", "fingerprint": "f72f67d7e9eb856d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f0adc9c8434e6c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-api-now.ts:10"}, "properties": {"repobilityId": "cf23836380bfaa00", "scanner": "scanner-primary", "fingerprint": "2f0adc9c8434e6c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60a375765609a24c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:155"}, "properties": {"repobilityId": "c494bf560e65c59d", "scanner": "scanner-primary", "fingerprint": "60a375765609a24c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9b41081c821ca76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-fausto.ts:8"}, "properties": {"repobilityId": "729b91191c57f912", "scanner": "scanner-primary", "fingerprint": "f9b41081c821ca76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d510dbe7d0351809", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-connection.ts:25"}, "properties": {"repobilityId": "e856626792fe94c8", "scanner": "scanner-primary", "fingerprint": "d510dbe7d0351809", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf35b877760b6cc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 count-laura-interactions.ts:13"}, "properties": {"repobilityId": "194f86f06cd4572e", "scanner": "scanner-primary", "fingerprint": "bf35b877760b6cc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8a083c1719ca863", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 middleware.ts:74"}, "properties": {"repobilityId": "505c04a593fb184d", "scanner": "scanner-primary", "fingerprint": "b8a083c1719ca863", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37a4e7205c5d820b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pdf-reader-local/server.js:22"}, "properties": {"repobilityId": "54411396125ac262", "scanner": "scanner-primary", "fingerprint": "37a4e7205c5d820b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c046c25238084c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-chatter-styles.ts:141"}, "properties": {"repobilityId": "f9241352ce4a7f2d", "scanner": "scanner-primary", "fingerprint": "6c046c25238084c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad56a4dcc2536b1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seeds/generate-wine-images.ts:191"}, "properties": {"repobilityId": "ba406aa52d73c5af", "scanner": "scanner-primary", "fingerprint": "ad56a4dcc2536b1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddd17ee00082f905", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seeds/seed-lapa-wine.ts:46"}, "properties": {"repobilityId": "2105c072274f5c60", "scanner": "scanner-primary", "fingerprint": "ddd17ee00082f905", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c0a9e429480603f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/blog/BatchBlogImageModal.tsx:359"}, "properties": {"repobilityId": "36dac30f12a7513f", "scanner": "scanner-primary", "fingerprint": "7c0a9e429480603f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f1ab2b7a8302cfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/blog/BatchBlogImageModal.tsx:224"}, "properties": {"repobilityId": "31bd4e41d2b0ece9", "scanner": "scanner-primary", "fingerprint": "5f1ab2b7a8302cfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a4348d94d9acced", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/WebsiteAnalyticsSection.tsx:358"}, "properties": {"repobilityId": "7bb5136ad8c1190d", "scanner": "scanner-primary", "fingerprint": "7a4348d94d9acced", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c1108cde67ac5bad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/super-dashboard/SalesRadarActivityModal.tsx:301"}, "properties": {"repobilityId": "7d0f13407f208286", "scanner": "scanner-primary", "fingerprint": "c1108cde67ac5bad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e338f993eb422bad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/auth/LoginForm.tsx:20"}, "properties": {"repobilityId": "8f672bd03770509f", "scanner": "scanner-primary", "fingerprint": "e338f993eb422bad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-173d015304c48796", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/ui/InstallButton.tsx:67"}, "properties": {"repobilityId": "8968e8823efb2e82", "scanner": "scanner-primary", "fingerprint": "173d015304c48796", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-613d6610e2a54954", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/BufferTransfer.tsx:351"}, "properties": {"repobilityId": "303c5e0746af4120", "scanner": "scanner-primary", "fingerprint": "613d6610e2a54954", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c74ac6239fd082a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/ProductSearch.tsx:218"}, "properties": {"repobilityId": "1fe4267521fbedf0", "scanner": "scanner-primary", "fingerprint": "3c74ac6239fd082a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1e8520fde519b5d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/inventario/Calculator.tsx:148"}, "properties": {"repobilityId": "171f3f4b75a79e2f", "scanner": "scanner-primary", "fingerprint": "b1e8520fde519b5d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a95c0aea81a5046", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 components/inventario/InventoryAIModal.tsx:734"}, "properties": {"repobilityId": "5807ee949e644d9f", "scanner": "scanner-primary", "fingerprint": "6a95c0aea81a5046", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1063d826c309392a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/InventoryAIModal.tsx:219"}, "properties": {"repobilityId": "01992e3b6fefe3d5", "scanner": "scanner-primary", "fingerprint": "1063d826c309392a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25b3aa5e2e7fabbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/QRScanner.tsx:63"}, "properties": {"repobilityId": "ae8718a5f36f9dce", "scanner": "scanner-primary", "fingerprint": "25b3aa5e2e7fabbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f744c16e7184b1ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/ProductEditModal.tsx:47"}, "properties": {"repobilityId": "960cf2601ed8caf4", "scanner": "scanner-primary", "fingerprint": "f744c16e7184b1ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cef2f171df6d3d10", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/inventario/WasteTransferModal.tsx:177"}, "properties": {"repobilityId": "f3a12a2211a3b20d", "scanner": "scanner-primary", "fingerprint": "cef2f171df6d3d10", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1091866d99b0f67", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/test-ocr/PDFUploader.tsx:117"}, "properties": {"repobilityId": "41969263da6eaa3e", "scanner": "scanner-primary", "fingerprint": "e1091866d99b0f67", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3960a09cd4994a80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/pwa/ServiceWorkerRegistration.tsx:12"}, "properties": {"repobilityId": "29350cbbcdc8b0c5", "scanner": "scanner-primary", "fingerprint": "3960a09cd4994a80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d9fec38836b6a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/pwa/PWAInstaller.tsx:33"}, "properties": {"repobilityId": "3259745f14e8c98a", "scanner": "scanner-primary", "fingerprint": "4d9fec38836b6a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-310efc6d4eae1e69", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/prelievo-zone/NumericKeyboard.tsx:218"}, "properties": {"repobilityId": "6be99d706302c9c6", "scanner": "scanner-primary", "fingerprint": "310efc6d4eae1e69", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-06f5b9c3ea2fa0d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/prelievo-zone/QRScanner.tsx:81"}, "properties": {"repobilityId": "578b6a696464fb31", "scanner": "scanner-primary", "fingerprint": "06f5b9c3ea2fa0d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-241dcbc8dace3a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/UnmatchedProductsHandler.tsx:76"}, "properties": {"repobilityId": "04e5438a97528674", "scanner": "scanner-primary", "fingerprint": "241dcbc8dace3a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db6c86b16bb77b10", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/AttachmentSelector.tsx:222"}, "properties": {"repobilityId": "8bbddb74926af88e", "scanner": "scanner-primary", "fingerprint": "db6c86b16bb77b10", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cecb61069a6173ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/arrivo-merce/SearchProductModal.tsx:189"}, "properties": {"repobilityId": "6a37a1769d98acdd", "scanner": "scanner-primary", "fingerprint": "cecb61069a6173ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-821f090ffc981cc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/arrivo-merce/TodayArrivalsList.tsx:66"}, "properties": {"repobilityId": "35dafed76909edd3", "scanner": "scanner-primary", "fingerprint": "821f090ffc981cc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-447930a620bb0cdc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/controllo-prezzi/PriceCheckProductCard.tsx:91"}, "properties": {"repobilityId": "2dc30bb38581072a", "scanner": "scanner-primary", "fingerprint": "447930a620bb0cdc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-acfde5de58c238ca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/mobile/MobileHeader.tsx:55"}, "properties": {"repobilityId": "a13aaf7cf7aac91a", "scanner": "scanner-primary", "fingerprint": "acfde5de58c238ca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0853ace43d63cc3c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/daily-plan/SampleProductsSelector.tsx:154"}, "properties": {"repobilityId": "718960feff168751", "scanner": "scanner-primary", "fingerprint": "0853ace43d63cc3c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99a2296bf750845c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryConfirmModal.tsx:108"}, "properties": {"repobilityId": "4d7d9e3fa22cb0f3", "scanner": "scanner-primary", "fingerprint": "99a2296bf750845c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f8e0ee2d2968d02", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryProductList.tsx:145"}, "properties": {"repobilityId": "8476d2ea4f12e4f2", "scanner": "scanner-primary", "fingerprint": "1f8e0ee2d2968d02", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af25627ffd220e9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/gestione-scadenze/ExpiryCamera.tsx:164"}, "properties": {"repobilityId": "f8d3d7eb1d258907", "scanner": "scanner-primary", "fingerprint": "af25627ffd220e9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be0ef64479b05cb8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/ProductSelector.tsx:196"}, "properties": {"repobilityId": "b004c2a7ef9ea2ad", "scanner": "scanner-primary", "fingerprint": "be0ef64479b05cb8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69cef00578a18883", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-ai/autopilot/PostPreviewCard.tsx:132"}, "properties": {"repobilityId": "8ef5a6fb60570135", "scanner": "scanner-primary", "fingerprint": "69cef00578a18883", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc491fbf0c141d40", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 components/maestro/ChatWidget.tsx:37"}, "properties": {"repobilityId": "e9d575558bee09ef", "scanner": "scanner-primary", "fingerprint": "fc491fbf0c141d40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-82e14f529aa3d2a0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/InteractionModal.tsx:296"}, "properties": {"repobilityId": "bb34c4eecc0510ce", "scanner": "scanner-primary", "fingerprint": "82e14f529aa3d2a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-230222499b455f67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/maestro/InteractionModal.tsx:107"}, "properties": {"repobilityId": "4539a6038843b96d", "scanner": "scanner-primary", "fingerprint": "230222499b455f67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f847b3e73cf19601", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/UrgentProductsModal.tsx:243"}, "properties": {"repobilityId": "e9b5465e7b8caf7d", "scanner": "scanner-primary", "fingerprint": "f847b3e73cf19601", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b8f690c1c85e28b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/VehicleStockModal.tsx:410"}, "properties": {"repobilityId": "93913a2c7c78340b", "scanner": "scanner-primary", "fingerprint": "b8f690c1c85e28b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1472d5aec82c212e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/maestro/VehicleStockModal.tsx:93"}, "properties": {"repobilityId": "7b993fa2dc233a44", "scanner": "scanner-primary", "fingerprint": "1472d5aec82c212e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfb3a508b4c56c19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/KPICard.tsx:53"}, "properties": {"repobilityId": "ca37408af467be99", "scanner": "scanner-primary", "fingerprint": "dfb3a508b4c56c19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0781c476a1f36f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/OfferProductsModal.tsx:252"}, "properties": {"repobilityId": "e6bb9977346b22f0", "scanner": "scanner-primary", "fingerprint": "a0781c476a1f36f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-34e36d5145cfa91c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductCard.tsx:92"}, "properties": {"repobilityId": "44b4f6e7e40c6a03", "scanner": "scanner-primary", "fingerprint": "34e36d5145cfa91c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b3f94ef9eb686d3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/CustomerSearchInput.tsx:190"}, "properties": {"repobilityId": "9bcf44ed4cf3f792", "scanner": "scanner-primary", "fingerprint": "1b3f94ef9eb686d3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0feed79a64981476", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/maestro/ProductManagementModal.tsx:379"}, "properties": {"repobilityId": "53762d0d318df54c", "scanner": "scanner-primary", "fingerprint": "0feed79a64981476", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d71146248eac0d78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/visibility/ExclusionModal.tsx:47"}, "properties": {"repobilityId": "337ab7019ec4c2aa", "scanner": "scanner-primary", "fingerprint": "d71146248eac0d78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5f87e49c342af16", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/CustomerHeader.tsx:22"}, "properties": {"repobilityId": "d74bbf0617035dc1", "scanner": "scanner-primary", "fingerprint": "d5f87e49c342af16", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4f332ef3465dad17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/CartItemCard.tsx:151"}, "properties": {"repobilityId": "7fe87f2701d60600", "scanner": "scanner-primary", "fingerprint": "4f332ef3465dad17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5e37c46d34f4fb8a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductReservationModal.tsx:168"}, "properties": {"repobilityId": "dec9337460996a98", "scanner": "scanner-primary", "fingerprint": "5e37c46d34f4fb8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-256efa9bf7f53d4c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 components/portale-clienti/AIChat.tsx:1"}, "properties": {"repobilityId": "c443b906cf100e0b", "scanner": "scanner-primary", "fingerprint": "256efa9bf7f53d4c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5fc85558c4329e8b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/DeliveryCard.tsx:152"}, "properties": {"repobilityId": "b70648c612d3ec7b", "scanner": "scanner-primary", "fingerprint": "5fc85558c4329e8b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec7da920154cb608", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderTimeline.tsx:170"}, "properties": {"repobilityId": "fab06f1ec3af60cc", "scanner": "scanner-primary", "fingerprint": "ec7da920154cb608", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0a9a7139b87ab33", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/ProductCard.tsx:344"}, "properties": {"repobilityId": "89d1a5e07692d577", "scanner": "scanner-primary", "fingerprint": "f0a9a7139b87ab33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3b4003f23bf3735", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderCard.tsx:54"}, "properties": {"repobilityId": "7a146bbf6623c73e", "scanner": "scanner-primary", "fingerprint": "f3b4003f23bf3735", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc5dcdf28566e67d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/portale-clienti/OrderProductsTable.tsx:154"}, "properties": {"repobilityId": "c0b8c665f22f7fff", "scanner": "scanner-primary", "fingerprint": "bc5dcdf28566e67d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cd07c2a6e16caf69", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:338"}, "properties": {"repobilityId": "26d53343d4563288", "scanner": "scanner-primary", "fingerprint": "cd07c2a6e16caf69", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a303e546af43683", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 components/catalogo-lapa/AIImageModal.tsx:143"}, "properties": {"repobilityId": "71eae7d0f9b065c6", "scanner": "scanner-primary", "fingerprint": "3a303e546af43683", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2e2d820cb8e3918", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/scadenze/ExpiryProductCard.tsx:47"}, "properties": {"repobilityId": "012dcb82d8916251", "scanner": "scanner-primary", "fingerprint": "a2e2d820cb8e3918", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a2d5b9600ecb068a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/resi-furgoni/page.tsx:103"}, "properties": {"repobilityId": "baa542f6c30f583e", "scanner": "scanner-primary", "fingerprint": "a2d5b9600ecb068a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7eeb6a5d1daeadf5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/infra-monitor/page.tsx:372"}, "properties": {"repobilityId": "a9c695911a14d9db", "scanner": "scanner-primary", "fingerprint": "7eeb6a5d1daeadf5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d33ed923dab06899", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-prodotti/page.tsx:312"}, "properties": {"repobilityId": "50188b6460cadb6e", "scanner": "scanner-primary", "fingerprint": "d33ed923dab06899", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3b4500abeef43e9f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/chat-gestionale/page.tsx:1080"}, "properties": {"repobilityId": "09ad937a19e6bfd1", "scanner": "scanner-primary", "fingerprint": "3b4500abeef43e9f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-25d3eb4700af7d60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/chat-gestionale/page.tsx:512"}, "properties": {"repobilityId": "1e2a811521f8c8ff", "scanner": "scanner-primary", "fingerprint": "25d3eb4700af7d60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1125fc9d55e8449", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/scan-contatto/page.tsx:212"}, "properties": {"repobilityId": "377d8e380cd0450e", "scanner": "scanner-primary", "fingerprint": "c1125fc9d55e8449", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c32fe9fbea9028bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-ai/page.tsx:45"}, "properties": {"repobilityId": "4b91c02684356647", "scanner": "scanner-primary", "fingerprint": "c32fe9fbea9028bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c346080b2a80970", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/page.tsx:2531"}, "properties": {"repobilityId": "51a48db45ece0fca", "scanner": "scanner-primary", "fingerprint": "3c346080b2a80970", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b54cb103e5d2987a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/social-ai-studio/page.tsx:208"}, "properties": {"repobilityId": "74afb86f6963d3b0", "scanner": "scanner-primary", "fingerprint": "b54cb103e5d2987a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-724bac8204a19e24", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/analytics/page.tsx:236"}, "properties": {"repobilityId": "0a5a560b3dd51b1e", "scanner": "scanner-primary", "fingerprint": "724bac8204a19e24", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e360e50cc95f3c0a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/social-ai-studio/autopilot/page.tsx:489"}, "properties": {"repobilityId": "1df3eaad0a45458b", "scanner": "scanner-primary", "fingerprint": "e360e50cc95f3c0a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3b5bbb43598f1d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/skills-dashboard/page.tsx:390"}, "properties": {"repobilityId": "6a6178d15580bc26", "scanner": "scanner-primary", "fingerprint": "e3b5bbb43598f1d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f307801cea55f495", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/super-dashboard/cassaforte/page.tsx:137"}, "properties": {"repobilityId": "acd2c5daa6ccb944", "scanner": "scanner-primary", "fingerprint": "f307801cea55f495", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a19ff847c7c7df7b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/product-story/page.tsx:436"}, "properties": {"repobilityId": "27a5f2a583da3349", "scanner": "scanner-primary", "fingerprint": "a19ff847c7c7df7b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e07f7721054fe2e0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/super-dashboard/sales-radar-activity/page.tsx:624"}, "properties": {"repobilityId": "0fc38230c1fd430c", "scanner": "scanner-primary", "fingerprint": "e07f7721054fe2e0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1f44a692535cc55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:218"}, "properties": {"repobilityId": "fc80e656f34859bd", "scanner": "scanner-primary", "fingerprint": "b1f44a692535cc55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b394c6ddc7012d61", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/il-mio-hub/page.tsx:345"}, "properties": {"repobilityId": "92eaf302adb8e2a9", "scanner": "scanner-primary", "fingerprint": "b394c6ddc7012d61", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2ae775aa976628a1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/page.tsx:486"}, "properties": {"repobilityId": "0a4c764aeda6ceb8", "scanner": "scanner-primary", "fingerprint": "2ae775aa976628a1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f7a00b9505f2df4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/page.tsx:92"}, "properties": {"repobilityId": "c061eeb5ef5587d7", "scanner": "scanner-primary", "fingerprint": "0f7a00b9505f2df4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c45ff9b582e64bff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:515"}, "properties": {"repobilityId": "f3f7c17fdc950858", "scanner": "scanner-primary", "fingerprint": "c45ff9b582e64bff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-58daf9a84057ebb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:87"}, "properties": {"repobilityId": "bd29d2923077473e", "scanner": "scanner-primary", "fingerprint": "58daf9a84057ebb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-429e9a703b2540e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/MediaUploadButtons.tsx:79"}, "properties": {"repobilityId": "b2db9dcbf3d04de2", "scanner": "scanner-primary", "fingerprint": "429e9a703b2540e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-320176f424321a83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/AIOrderInput.tsx:33"}, "properties": {"repobilityId": "888bbc0ef98810b9", "scanner": "scanner-primary", "fingerprint": "320176f424321a83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eeaf4fb99dcd58fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/components/CustomerSelector.tsx:66"}, "properties": {"repobilityId": "4762122a626fb3e0", "scanner": "scanner-primary", "fingerprint": "eeaf4fb99dcd58fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15f96f0b121fe6f8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:1132"}, "properties": {"repobilityId": "5a0005aae5874d64", "scanner": "scanner-primary", "fingerprint": "15f96f0b121fe6f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-523ebd34bef90440", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:157"}, "properties": {"repobilityId": "08a2c3df90692198", "scanner": "scanner-primary", "fingerprint": "523ebd34bef90440", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-056fafae5c207ad4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-venditori/ordini/page.tsx:53"}, "properties": {"repobilityId": "ef26c60075b58d1b", "scanner": "scanner-primary", "fingerprint": "056fafae5c207ad4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d096916bfc823c42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/sales-radar/page.tsx:1661"}, "properties": {"repobilityId": "18e0219ca72f02ac", "scanner": "scanner-primary", "fingerprint": "d096916bfc823c42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8f02b1300840dfdd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/sales-radar/page.tsx:404"}, "properties": {"repobilityId": "42c2fa293e134b02", "scanner": "scanner-primary", "fingerprint": "8f02b1300840dfdd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f9536072e76bd80", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-ocr/page.tsx:105"}, "properties": {"repobilityId": "b4eed38512b0073a", "scanner": "scanner-primary", "fingerprint": "2f9536072e76bd80", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c74bf787f0b5953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/jetson-ocr/page.tsx:26"}, "properties": {"repobilityId": "ec0a86e959c65d87", "scanner": "scanner-primary", "fingerprint": "6c74bf787f0b5953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e69ce2f84786e9c8", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:55"}, "properties": {"repobilityId": "26f39b3c1470e6bb", "scanner": "scanner-primary", "fingerprint": "e69ce2f84786e9c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-0836e217de0527ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:34"}, "properties": {"repobilityId": "c23581d93917ea23", "scanner": "scanner-primary", "fingerprint": "0836e217de0527ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe165edd1a4f376a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/AttachmentViewer.tsx:187"}, "properties": {"repobilityId": "e5aa85ba7e6b4d61", "scanner": "scanner-primary", "fingerprint": "fe165edd1a4f376a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e74b89e2d7109864", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/controllo-consegne/components/DocumentCard.tsx:94"}, "properties": {"repobilityId": "f3d8dc7d1e64e26d", "scanner": "scanner-primary", "fingerprint": "e74b89e2d7109864", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f1b18585b010e22e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/spese/page.tsx:64"}, "properties": {"repobilityId": "da71b94380c6befc", "scanner": "scanner-primary", "fingerprint": "f1b18585b010e22e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0091a7618a0619be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/convalida-residui/page.tsx:1409"}, "properties": {"repobilityId": "7cd828189fe01f52", "scanner": "scanner-primary", "fingerprint": "0091a7618a0619be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3b05fdfab58c35c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/blog-photo-manager/page.tsx:218"}, "properties": {"repobilityId": "08f8a7fd27eb4e1e", "scanner": "scanner-primary", "fingerprint": "d3b05fdfab58c35c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f95efd375b7e28f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/did-stream/route.ts:14"}, "properties": {"repobilityId": "b43d60967692992f", "scanner": "scanner-primary", "fingerprint": "5f95efd375b7e28f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-889b594cf56de90e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/save-conversation/route.ts:21"}, "properties": {"repobilityId": "d9558fabb1fc251f", "scanner": "scanner-primary", "fingerprint": "889b594cf56de90e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b9dbd5577c1e5a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stella/tasks/route.ts:106"}, "properties": {"repobilityId": "30e20850b0b84f32", "scanner": "scanner-primary", "fingerprint": "2b9dbd5577c1e5a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e29006ee69be5dc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/blog/posts/route.ts:38"}, "properties": {"repobilityId": "330673a00bdff26c", "scanner": "scanner-primary", "fingerprint": "e29006ee69be5dc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63b2a5154d491ff3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/blog/upload-image/route.ts:52"}, "properties": {"repobilityId": "ae5af23c5fc456a8", "scanner": "scanner-primary", "fingerprint": "63b2a5154d491ff3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d40fa8995b0ce72c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/chat-gestionale/route.ts:82"}, "properties": {"repobilityId": "7742102a574de3f9", "scanner": "scanner-primary", "fingerprint": "d40fa8995b0ce72c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc6db2d13a9b7509", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/example-usage.ts:36"}, "properties": {"repobilityId": "914d0f87a23175ce", "scanner": "scanner-primary", "fingerprint": "cc6db2d13a9b7509", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44d10a53130de35b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/route.ts:119"}, "properties": {"repobilityId": "bca6f489f6bd2b83", "scanner": "scanner-primary", "fingerprint": "44d10a53130de35b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89a737767227b512", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto/save/route.ts:40"}, "properties": {"repobilityId": "6515934a16648076", "scanner": "scanner-primary", "fingerprint": "89a737767227b512", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef87c2e20129486e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/update-quantity/route.ts:53"}, "properties": {"repobilityId": "95d34236fd94c712", "scanner": "scanner-primary", "fingerprint": "ef87c2e20129486e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-460b472576fdf980", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/html-app/route.ts:7"}, "properties": {"repobilityId": "87c73e68927c7f64", "scanner": "scanner-primary", "fingerprint": "460b472576fdf980", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-583a6f3967db7bda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/analyze-video/route.ts:81"}, "properties": {"repobilityId": "b70195965789f481", "scanner": "scanner-primary", "fingerprint": "583a6f3967db7bda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-963c998fbf9ecb2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/transfer/route.ts:15"}, "properties": {"repobilityId": "d2a36892f7864ada", "scanner": "scanner-primary", "fingerprint": "963c998fbf9ecb2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e60768008b209e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/buffer-search/route.ts:16"}, "properties": {"repobilityId": "4068620606c7df3e", "scanner": "scanner-primary", "fingerprint": "3e60768008b209e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e988cbc1c5538bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/test-all/route.ts:16"}, "properties": {"repobilityId": "48108ab15a74e0e7", "scanner": "scanner-primary", "fingerprint": "3e988cbc1c5538bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07de13f172ca50a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/location/route.ts:16"}, "properties": {"repobilityId": "81616cbc041bf05c", "scanner": "scanner-primary", "fingerprint": "07de13f172ca50a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0bb8951379c35279", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/products/route.ts:16"}, "properties": {"repobilityId": "371f03c02a0638de", "scanner": "scanner-primary", "fingerprint": "0bb8951379c35279", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3123444dcd2aa833", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/create-van-returns/route.ts:41"}, "properties": {"repobilityId": "29e12824c848e6c7", "scanner": "scanner-primary", "fingerprint": "3123444dcd2aa833", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-edb435bf31e885ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/search-furgoni-locations/route.ts:20"}, "properties": {"repobilityId": "8b9b8078ca6b7878", "scanner": "scanner-primary", "fingerprint": "edb435bf31e885ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-296624ba91a516f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventory/quants/route.ts:15"}, "properties": {"repobilityId": "314f43c8bf2d2f1f", "scanner": "scanner-primary", "fingerprint": "296624ba91a516f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22fc67773d1ea754", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/save/route.ts:22"}, "properties": {"repobilityId": "776259af505edfa0", "scanner": "scanner-primary", "fingerprint": "22fc67773d1ea754", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46cff8c0db74eb9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/resolve-issue/route.ts:22"}, "properties": {"repobilityId": "d6055f8e54520bd8", "scanner": "scanner-primary", "fingerprint": "46cff8c0db74eb9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23c460423dc30e7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/vehicle-check/get-info/route.ts:17"}, "properties": {"repobilityId": "91cbb633d6529165", "scanner": "scanner-primary", "fingerprint": "23c460423dc30e7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cba4b391a4e951c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/init-db/route.ts:24"}, "properties": {"repobilityId": "a47243807143357e", "scanner": "scanner-primary", "fingerprint": "cba4b391a4e951c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e01d9618a815b6fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/review-manager/reviews/[id]/publish/route.ts:78"}, "properties": {"repobilityId": "be9b7d6646e1b58d", "scanner": "scanner-primary", "fingerprint": "e01d9618a815b6fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-739447596404e1c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-clienti/route.ts:17"}, "properties": {"repobilityId": "eebc1dcf0cac532b", "scanner": "scanner-primary", "fingerprint": "739447596404e1c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de25587f2361782a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/kpi/route.ts:30"}, "properties": {"repobilityId": "f71a4a21f93d628c", "scanner": "scanner-primary", "fingerprint": "de25587f2361782a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f81137a9881f8f19", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/super-dashboard/sales-timeline/route.ts:148"}, "properties": {"repobilityId": "bbcb3d1792e233ba", "scanner": "scanner-primary", "fingerprint": "f81137a9881f8f19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-dbb3acfa5d527f26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-timeline/route.ts:34"}, "properties": {"repobilityId": "9d1ee848f850e138", "scanner": "scanner-primary", "fingerprint": "dbb3acfa5d527f26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a2223dcdcdc2ae3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/sales-radar-activity/route.ts:56"}, "properties": {"repobilityId": "309223eef14cc81a", "scanner": "scanner-primary", "fingerprint": "9a2223dcdcdc2ae3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-789207ddb1b83bcd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/super-dashboard/margini/route.ts:18"}, "properties": {"repobilityId": "8d9521e14f86d950", "scanner": "scanner-primary", "fingerprint": "789207ddb1b83bcd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfa92d73261cc347", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/control-logs/route.ts:29"}, "properties": {"repobilityId": "61ad6e17ca2dbaa1", "scanner": "scanner-primary", "fingerprint": "bfa92d73261cc347", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0345c0d38ecdba7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/ai-process-order/route.ts:76"}, "properties": {"repobilityId": "18f26ddc00ca409b", "scanner": "scanner-primary", "fingerprint": "a0345c0d38ecdba7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b762ae579317f906", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-orders/[customerId]/route.ts:56"}, "properties": {"repobilityId": "cf6e0dec6b09a23f", "scanner": "scanner-primary", "fingerprint": "b762ae579317f906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90d33b1f373a8bde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-history/route.ts:38"}, "properties": {"repobilityId": "b5d12299d1f8fb89", "scanner": "scanner-primary", "fingerprint": "90d33b1f373a8bde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98a9c9ff5df66514", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/orders/route.ts:23"}, "properties": {"repobilityId": "e76bf170f0322e52", "scanner": "scanner-primary", "fingerprint": "98a9c9ff5df66514", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29ec6659f3865f8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/route.ts:34"}, "properties": {"repobilityId": "70fe05ade1f80a47", "scanner": "scanner-primary", "fingerprint": "29ec6659f3865f8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab56c6923c52b7bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-stats/[customerId]/route.ts:39"}, "properties": {"repobilityId": "62512ec46b394bb6", "scanner": "scanner-primary", "fingerprint": "ab56c6923c52b7bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76e1792a745d426d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/last-delivery/route.ts:31"}, "properties": {"repobilityId": "375271f018746616", "scanner": "scanner-primary", "fingerprint": "76e1792a745d426d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-976a558bbeedf80f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-quantities/route.ts:31"}, "properties": {"repobilityId": "7e1892a7c9154f9c", "scanner": "scanner-primary", "fingerprint": "976a558bbeedf80f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6faf0644803809be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customers/route.ts:30"}, "properties": {"repobilityId": "946fd95a5ed6e355", "scanner": "scanner-primary", "fingerprint": "6faf0644803809be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d34ccac70fa25e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-message/route.ts:33"}, "properties": {"repobilityId": "2ac5994be2d95a7a", "scanner": "scanner-primary", "fingerprint": "3d34ccac70fa25e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64f1f58338b1b302", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/global-stats/route.ts:15"}, "properties": {"repobilityId": "ac220703ac34fb32", "scanner": "scanner-primary", "fingerprint": "64f1f58338b1b302", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0588a679c2e81c1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/search-products/route.ts:53"}, "properties": {"repobilityId": "980cf2e3fe5c6da4", "scanner": "scanner-primary", "fingerprint": "0588a679c2e81c1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a19b9e378f1a4bd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/update-prices/route.ts:37"}, "properties": {"repobilityId": "a39f713ec3217c9e", "scanner": "scanner-primary", "fingerprint": "a19b9e378f1a4bd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7650b647351db3e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/product-history/[productId]/route.ts:41"}, "properties": {"repobilityId": "8fe029c9a0d18f85", "scanner": "scanner-primary", "fingerprint": "7650b647351db3e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd04dc9d5acc3077", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/create-order/route.ts:74"}, "properties": {"repobilityId": "39a0129c388a0c75", "scanner": "scanner-primary", "fingerprint": "bd04dc9d5acc3077", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf5b1ae166eef5c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/confirm-order/route.ts:25"}, "properties": {"repobilityId": "eda6af6b00aab95f", "scanner": "scanner-primary", "fingerprint": "bf5b1ae166eef5c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddc6db7119bc410c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/customer-addresses/route.ts:35"}, "properties": {"repobilityId": "2c7099a20a8d9502", "scanner": "scanner-primary", "fingerprint": "ddc6db7119bc410c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c05d475381b635b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/add-order-line/route.ts:29"}, "properties": {"repobilityId": "1f5beea69fd7c375", "scanner": "scanner-primary", "fingerprint": "8c05d475381b635b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c937d73776142b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/route.ts:39"}, "properties": {"repobilityId": "eea419f69b450a82", "scanner": "scanner-primary", "fingerprint": "7c937d73776142b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-885b3d503a7bfe7c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:227"}, "properties": {"repobilityId": "27f9d8bb3be7dd24", "scanner": "scanner-primary", "fingerprint": "885b3d503a7bfe7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c56c8fad2ba90cf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/create-task/route.ts:64"}, "properties": {"repobilityId": "31577cf03b4ecc58", "scanner": "scanner-primary", "fingerprint": "c56c8fad2ba90cf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20a87b0cb069cc42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/delete-line/route.ts:49"}, "properties": {"repobilityId": "04692cabb75921ed", "scanner": "scanner-primary", "fingerprint": "20a87b0cb069cc42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8e0d6cba3ad7da9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/update-delivery/route.ts:47"}, "properties": {"repobilityId": "dd465c9ade63bb6d", "scanner": "scanner-primary", "fingerprint": "d8e0d6cba3ad7da9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b73615ae72ffb41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/cancel/route.ts:34"}, "properties": {"repobilityId": "833f3b7ac1e698d7", "scanner": "scanner-primary", "fingerprint": "6b73615ae72ffb41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65f7089cfb881eb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-venditori/order-prices/[orderId]/add-line/route.ts:50"}, "properties": {"repobilityId": "3d7484c10e8fc47f", "scanner": "scanner-primary", "fingerprint": "65f7089cfb881eb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6715f28893a9e73d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/convert-lead-to-contact/route.ts:49"}, "properties": {"repobilityId": "ea961c840e0c1ae3", "scanner": "scanner-primary", "fingerprint": "6715f28893a9e73d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d82bdf504209ef8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/save-leads/route.ts:156"}, "properties": {"repobilityId": "dc13ce501680717c", "scanner": "scanner-primary", "fingerprint": "6d82bdf504209ef8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d3cc6c9c8800c26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/load-from-odoo/route.ts:167"}, "properties": {"repobilityId": "264d229c3437d412", "scanner": "scanner-primary", "fingerprint": "9d3cc6c9c8800c26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2c7f779738f1a83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/mark-not-target/route.ts:69"}, "properties": {"repobilityId": "f764d3ba879d76fe", "scanner": "scanner-primary", "fingerprint": "c2c7f779738f1a83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8241311396d9b7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/update-leads/route.ts:190"}, "properties": {"repobilityId": "371da9fca21d016f", "scanner": "scanner-primary", "fingerprint": "a8241311396d9b7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27baf02abd0c60b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-appointment/route.ts:45"}, "properties": {"repobilityId": "bc9fa9745a7b8786", "scanner": "scanner-primary", "fingerprint": "27baf02abd0c60b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a823458cd3364ae4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-contact/route.ts:72"}, "properties": {"repobilityId": "14453b3cddaa9652", "scanner": "scanner-primary", "fingerprint": "a823458cd3364ae4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5df209eac43c1e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/analyze-client/route.ts:68"}, "properties": {"repobilityId": "ca7c3ada9a14a5cb", "scanner": "scanner-primary", "fingerprint": "e5df209eac43c1e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f1301ad30d2d893", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/search/route.ts:53"}, "properties": {"repobilityId": "ce4d98ff8eb7eec8", "scanner": "scanner-primary", "fingerprint": "3f1301ad30d2d893", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf70d47771e99866", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/reactivate-lead/route.ts:52"}, "properties": {"repobilityId": "f43a01ef35cbef5e", "scanner": "scanner-primary", "fingerprint": "cf70d47771e99866", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab84d95536116ea2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-customer/route.ts:51"}, "properties": {"repobilityId": "828360528a1a81e9", "scanner": "scanner-primary", "fingerprint": "ab84d95536116ea2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1728f56d0f243d36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/create-activity/route.ts:69"}, "properties": {"repobilityId": "58b7a7a20695763b", "scanner": "scanner-primary", "fingerprint": "1728f56d0f243d36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc35fbd392067f7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-appointments/route.ts:35"}, "properties": {"repobilityId": "cb333da51be3ef12", "scanner": "scanner-primary", "fingerprint": "fc35fbd392067f7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18fd7621f3556c24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/fix-contact-coordinates/route.ts:25"}, "properties": {"repobilityId": "61a80bb3bd3c6076", "scanner": "scanner-primary", "fingerprint": "18fd7621f3556c24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eee79b65bebb3ba2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visited-clients/route.ts:31"}, "properties": {"repobilityId": "2bca05c98678da63", "scanner": "scanner-primary", "fingerprint": "eee79b65bebb3ba2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cdfd32287909a072", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-visits/route.ts:45"}, "properties": {"repobilityId": "24dc86bbdfb287a3", "scanner": "scanner-primary", "fingerprint": "cdfd32287909a072", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4933f1311fce7588", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/check-in/route.ts:64"}, "properties": {"repobilityId": "6c32087cec5dbb91", "scanner": "scanner-primary", "fingerprint": "4933f1311fce7588", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caa9e680777aa269", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/get-chatter/route.ts:55"}, "properties": {"repobilityId": "0bac3cfef910bf8c", "scanner": "scanner-primary", "fingerprint": "caa9e680777aa269", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02beca932b250dd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-radar/voice-note/route.ts:70"}, "properties": {"repobilityId": "7527c82e024211e7", "scanner": "scanner-primary", "fingerprint": "02beca932b250dd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb8c8866757e720d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/init-db/route.ts:26"}, "properties": {"repobilityId": "a6ff52cce26c7908", "scanner": "scanner-primary", "fingerprint": "eb8c8866757e720d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90de918a5888c8a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/sales-agents/chat/route.ts:28"}, "properties": {"repobilityId": "ff07cb6cb47da80a", "scanner": "scanner-primary", "fingerprint": "90de918a5888c8a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0b3c686bbf02c80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/openai/chat/route.ts:9"}, "properties": {"repobilityId": "c5ee7bf1d679730a", "scanner": "scanner-primary", "fingerprint": "d0b3c686bbf02c80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fde560fd807b22d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/openai/realtime/route.ts:63"}, "properties": {"repobilityId": "cb551002fb0ac785", "scanner": "scanner-primary", "fingerprint": "fde560fd807b22d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c12fcbda1416225b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/route.ts:20"}, "properties": {"repobilityId": "b8f390ebfd5c0962", "scanner": "scanner-primary", "fingerprint": "c12fcbda1416225b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9afb1434647bac07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/google/callback/route.ts:32"}, "properties": {"repobilityId": "291989cd5a40e994", "scanner": "scanner-primary", "fingerprint": "9afb1434647bac07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17be2ea0eaa2cacb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/login/route.ts:8"}, "properties": {"repobilityId": "6186c9c9e7d34e8b", "scanner": "scanner-primary", "fingerprint": "17be2ea0eaa2cacb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fff6edd1618fbf4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/unified-odoo/route.ts:27"}, "properties": {"repobilityId": "a3b2e3033e95b6f6", "scanner": "scanner-primary", "fingerprint": "4fff6edd1618fbf4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca674b20a83f0aff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/me/route.ts:8"}, "properties": {"repobilityId": "304a27180d923699", "scanner": "scanner-primary", "fingerprint": "ca674b20a83f0aff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d68e5e34f12a1f0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/auth/update-profile/route.ts:26"}, "properties": {"repobilityId": "5b4756c5b374cb21", "scanner": "scanner-primary", "fingerprint": "d68e5e34f12a1f0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-091f6179c3fbacbc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/extract-products/route.ts:56"}, "properties": {"repobilityId": "95cd99e770459ac2", "scanner": "scanner-primary", "fingerprint": "091f6179c3fbacbc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fb6ab32cf3068eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/save/route.ts:61"}, "properties": {"repobilityId": "457919e2070a7322", "scanner": "scanner-primary", "fingerprint": "9fb6ab32cf3068eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e71df6b7a1dfda9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/transcribe/route.ts:63"}, "properties": {"repobilityId": "ea2660819424c8aa", "scanner": "scanner-primary", "fingerprint": "e71df6b7a1dfda9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-67a4c2eac04b7b4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/inventario-vocale/history/route.ts:40"}, "properties": {"repobilityId": "bae8999c39a91dde", "scanner": "scanner-primary", "fingerprint": "67a4c2eac04b7b4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dee702ba02946e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-consegne/list/route.ts:42"}, "properties": {"repobilityId": "f8b83c4316d9444d", "scanner": "scanner-primary", "fingerprint": "6dee702ba02946e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-111aa563ba3acbb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo-proxy/route.ts:8"}, "properties": {"repobilityId": "a260d0d98656a096", "scanner": "scanner-primary", "fingerprint": "111aa563ba3acbb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-711e26e57f3b0181", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/journals/route.ts:27"}, "properties": {"repobilityId": "8eaba967d6179d5f", "scanner": "scanner-primary", "fingerprint": "711e26e57f3b0181", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e40554e957f69a5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/post-message/route.ts:49"}, "properties": {"repobilityId": "ca52c18347c3689f", "scanner": "scanner-primary", "fingerprint": "e40554e957f69a5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-222c9042eaf9ce15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/rpc/route.ts:40"}, "properties": {"repobilityId": "92e7757befab5449", "scanner": "scanner-primary", "fingerprint": "222c9042eaf9ce15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec27c4af4512e19a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/odoo/contacts/addresses/route.ts:30"}, "properties": {"repobilityId": "3295881db9c1a0dd", "scanner": "scanner-primary", "fingerprint": "ec27c4af4512e19a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc74c02789116b27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/spese/submit/route.ts:49"}, "properties": {"repobilityId": "94b5ec1d30d78b3b", "scanner": "scanner-primary", "fingerprint": "bc74c02789116b27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f1174c303158329", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/spese/analyze/route.ts:125"}, "properties": {"repobilityId": "1bb319993f11d080", "scanner": "scanner-primary", "fingerprint": "6f1174c303158329", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bac18deba23325b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarti/dashboard/route.ts:54"}, "properties": {"repobilityId": "ff6348de298555e4", "scanner": "scanner-primary", "fingerprint": "bac18deba23325b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c30a0f5f21efc03b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarti/generate-order/route.ts:36"}, "properties": {"repobilityId": "8044b4c6cfe93226", "scanner": "scanner-primary", "fingerprint": "c30a0f5f21efc03b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d369247f5ea84840", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/apps/visibility/route.ts:44"}, "properties": {"repobilityId": "a9398f4b801497b8", "scanner": "scanner-primary", "fingerprint": "d369247f5ea84840", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d713ef0c407f8161", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/apps/check-access/route.ts:76"}, "properties": {"repobilityId": "a0ce6fc97b11b4d5", "scanner": "scanner-primary", "fingerprint": "d713ef0c407f8161", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ade04b4cac4bb347", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/compensi-venditori/route.ts:251"}, "properties": {"repobilityId": "80cd2c7d0bc400bf", "scanner": "scanner-primary", "fingerprint": "ade04b4cac4bb347", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a560c4a6ddf6f11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/v2/chat/route.ts:123"}, "properties": {"repobilityId": "7b071fac5e5ef39f", "scanner": "scanner-primary", "fingerprint": "8a560c4a6ddf6f11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b46850ad6cf0afe7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/test-whatsapp-send/route.ts:9"}, "properties": {"repobilityId": "23d3a9605da22cf0", "scanner": "scanner-primary", "fingerprint": "b46850ad6cf0afe7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd1dd179266b98e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/chat/route.ts:167"}, "properties": {"repobilityId": "d0f580768d983c82", "scanner": "scanner-primary", "fingerprint": "7bd1dd179266b98e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0434f94e832695ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/setup-whatsapp-webhook/route.ts:15"}, "properties": {"repobilityId": "b7243fb5e93caa6e", "scanner": "scanner-primary", "fingerprint": "0434f94e832695ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2e3ed38379d1a7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-agents/whatsapp-incoming/route.ts:96"}, "properties": {"repobilityId": "2eeac562f9908c77", "scanner": "scanner-primary", "fingerprint": "d2e3ed38379d1a7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb5ac73f543757ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/offer-products/route.ts:57"}, "properties": {"repobilityId": "5cb52f4b3a7c0ea4", "scanner": "scanner-primary", "fingerprint": "bb5ac73f543757ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8ed2c072f835ea0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/menu-pdf/restaurant-info/route.ts:16"}, "properties": {"repobilityId": "ec69ed95e2a858d6", "scanner": "scanner-primary", "fingerprint": "d8ed2c072f835ea0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46f1c5e48250bcf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-diretto/upload-video/route.ts:31"}, "properties": {"repobilityId": "4dc170acfd57c4c0", "scanner": "scanner-primary", "fingerprint": "46f1c5e48250bcf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d436fac9c38b2996", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/upload-pdf/route.ts:20"}, "properties": {"repobilityId": "b0799413a0f2af35", "scanner": "scanner-primary", "fingerprint": "d436fac9c38b2996", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c6fb312e4a8ac07", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:5"}, "properties": {"repobilityId": "865e40390c93ca19", "scanner": "scanner-primary", "fingerprint": "1c6fb312e4a8ac07", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2ad8e81dd4cada19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/analyze-and-compare/route.ts:32"}, "properties": {"repobilityId": "2dcc652658eeddb4", "scanner": "scanner-primary", "fingerprint": "2ad8e81dd4cada19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aaf3a7de7ed699e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/search-products/route.ts:13"}, "properties": {"repobilityId": "0f3a9d9631867803", "scanner": "scanner-primary", "fingerprint": "6aaf3a7de7ed699e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ba13c136a644f4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/apply-corrections/route.ts:11"}, "properties": {"repobilityId": "1d4182377f12cb92", "scanner": "scanner-primary", "fingerprint": "5ba13c136a644f4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88c11800c480a289", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/list-draft-invoices/route.ts:15"}, "properties": {"repobilityId": "0c9e7ca8e89e455f", "scanner": "scanner-primary", "fingerprint": "88c11800c480a289", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5a81ae20c01eab8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/get-invoice-detail/route.ts:20"}, "properties": {"repobilityId": "d5953a8555bdc371", "scanner": "scanner-primary", "fingerprint": "f5a81ae20c01eab8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d47df328e96d4a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/valida-fatture/add-product-line/route.ts:18"}, "properties": {"repobilityId": "2f2488d198394f6d", "scanner": "scanner-primary", "fingerprint": "1d47df328e96d4a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4870113f5d4c62f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/missing-products/route.ts:43"}, "properties": {"repobilityId": "1179ef81045f3369", "scanner": "scanner-primary", "fingerprint": "4870113f5d4c62f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d06ed04c83a77a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-reception/route.ts:22"}, "properties": {"repobilityId": "ecb7b8ff92106e3e", "scanner": "scanner-primary", "fingerprint": "7d06ed04c83a77a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd29fa9ec646199", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/classify-attachments/route.ts:35"}, "properties": {"repobilityId": "0d1c99f4c82fa13e", "scanner": "scanner-primary", "fingerprint": "7bd29fa9ec646199", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b985439819beb333", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-multiple-attachments/route.ts:35"}, "properties": {"repobilityId": "50ed5391e803e5ec", "scanner": "scanner-primary", "fingerprint": "b985439819beb333", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-438942ebd29bb8ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/find-receptions-by-supplier/route.ts:109"}, "properties": {"repobilityId": "37e271565b956f2c", "scanner": "scanner-primary", "fingerprint": "438942ebd29bb8ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdaf79d70e2cab5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/get-po-attachments/route.ts:25"}, "properties": {"repobilityId": "2963b8c8745547ec", "scanner": "scanner-primary", "fingerprint": "fdaf79d70e2cab5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76e348320f39fe03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/process-reception/route.ts:55"}, "properties": {"repobilityId": "b6674fec051279b4", "scanner": "scanner-primary", "fingerprint": "76e348320f39fe03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-836ac0efded6e716", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-invoice/route.ts:38"}, "properties": {"repobilityId": "28b81c60d5ac19ac", "scanner": "scanner-primary", "fingerprint": "836ac0efded6e716", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c021098ed1f2875", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/search-products/route.ts:37"}, "properties": {"repobilityId": "b824da388882b96d", "scanner": "scanner-primary", "fingerprint": "6c021098ed1f2875", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d35c1a5eb9ed677a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/parse-attachment/route.ts:35"}, "properties": {"repobilityId": "e32cdd54a27ad130", "scanner": "scanner-primary", "fingerprint": "d35c1a5eb9ed677a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b50e8718e53cf9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/identify-supplier/route.ts:33"}, "properties": {"repobilityId": "bb2f139eeb057542", "scanner": "scanner-primary", "fingerprint": "1b50e8718e53cf9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bd41c264c7150c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/add-product-to-picking/route.ts:42"}, "properties": {"repobilityId": "b1416ed730510a4b", "scanner": "scanner-primary", "fingerprint": "5bd41c264c7150c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc928f6389f52e90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/list-today/route.ts:22"}, "properties": {"repobilityId": "ab3419e71316d48e", "scanner": "scanner-primary", "fingerprint": "bc928f6389f52e90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4798ed3cfcdbfe98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/arrivo-merce/download-attachment/route.ts:29"}, "properties": {"repobilityId": "abde10c49166c699", "scanner": "scanner-primary", "fingerprint": "4798ed3cfcdbfe98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ade0708fe7a000a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/main-pricelists/route.ts:27"}, "properties": {"repobilityId": "24726a65f253bcfd", "scanner": "scanner-primary", "fingerprint": "ade0708fe7a000a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d8b4df85dbce196", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/set-product-pricelist-rule/route.ts:35"}, "properties": {"repobilityId": "87128adba68dbf18", "scanner": "scanner-primary", "fingerprint": "2d8b4df85dbce196", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52e9e937c2d36ea4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/analisi-mensile/route.ts:29"}, "properties": {"repobilityId": "d6ac2b6df42006c4", "scanner": "scanner-primary", "fingerprint": "52e9e937c2d36ea4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7fcb613847d3824", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products-without-rules/route.ts:40"}, "properties": {"repobilityId": "731299667eab7aef", "scanner": "scanner-primary", "fingerprint": "e7fcb613847d3824", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d54ffbacedf93f7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/reject-block/route.ts:28"}, "properties": {"repobilityId": "a0250375b446ad4d", "scanner": "scanner-primary", "fingerprint": "d54ffbacedf93f7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3864d86fc1972fc2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/alerts/route.ts:344"}, "properties": {"repobilityId": "cdc9295ca18c60ef", "scanner": "scanner-primary", "fingerprint": "3864d86fc1972fc2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6752c71d6d9f23ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/alerts/route.ts:57"}, "properties": {"repobilityId": "118a8c1c095e333d", "scanner": "scanner-primary", "fingerprint": "6752c71d6d9f23ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82b7af484e261174", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-price/route.ts:38"}, "properties": {"repobilityId": "eec0aef06b0f45f9", "scanner": "scanner-primary", "fingerprint": "82b7af484e261174", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1a20dff16dbe189", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/counts/route.ts:14"}, "properties": {"repobilityId": "a2e0b11ecdc41e4b", "scanner": "scanner-primary", "fingerprint": "c1a20dff16dbe189", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-651c1014743e6900", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/block-requests/route.ts:71"}, "properties": {"repobilityId": "54fc83f82d26a126", "scanner": "scanner-primary", "fingerprint": "651c1014743e6900", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4dce10041eb7fa8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/aggregate/route.ts:49"}, "properties": {"repobilityId": "4dfae1ce8b1f12bb", "scanner": "scanner-primary", "fingerprint": "f4dce10041eb7fa8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9186fce55f167a28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/approve-block/route.ts:35"}, "properties": {"repobilityId": "8804116cff991ad7", "scanner": "scanner-primary", "fingerprint": "9186fce55f167a28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76b90f8d40fd69af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/update-price/route.ts:14"}, "properties": {"repobilityId": "940edab5324a7b3d", "scanner": "scanner-primary", "fingerprint": "76b90f8d40fd69af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63324b3412b3993c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-reviewed/route.ts:38"}, "properties": {"repobilityId": "2eb4fad7070c1391", "scanner": "scanner-primary", "fingerprint": "63324b3412b3993c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eabbf0649ef5f345", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/controllo-prezzi/products/route.ts:109"}, "properties": {"repobilityId": "de12ad9bea060f30", "scanner": "scanner-primary", "fingerprint": "eabbf0649ef5f345", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-37c79c3b39c52e38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/products/route.ts:21"}, "properties": {"repobilityId": "45758a4b13915de5", "scanner": "scanner-primary", "fingerprint": "37c79c3b39c52e38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e48bde1b00fd5746", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/product-pricelist-rules/route.ts:37"}, "properties": {"repobilityId": "daff31114d9d61d1", "scanner": "scanner-primary", "fingerprint": "e48bde1b00fd5746", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-14b139d79acabc7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/fatture-bozza/route.ts:62"}, "properties": {"repobilityId": "776c21c8060e7724", "scanner": "scanner-primary", "fingerprint": "14b139d79acabc7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78705fc1635dc73a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-prezzi/mark-pending/route.ts:39"}, "properties": {"repobilityId": "ca53d7c429966a29", "scanner": "scanner-primary", "fingerprint": "78705fc1635dc73a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3afd95ab1127d704", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scan-contatto-complete/route.ts:219"}, "properties": {"repobilityId": "4e72f1561714d1ab", "scanner": "scanner-primary", "fingerprint": "3afd95ab1127d704", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-925cdbd271403aed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/urgent-products/route.ts:57"}, "properties": {"repobilityId": "44df81a165519b94", "scanner": "scanner-primary", "fingerprint": "925cdbd271403aed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41ab1562167462d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/waste/transfer/route.ts:58"}, "properties": {"repobilityId": "d7665688452a134b", "scanner": "scanner-primary", "fingerprint": "41ab1562167462d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6503c28bd9bb494", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/waste/location-products/route.ts:56"}, "properties": {"repobilityId": "21fea952c36d888a", "scanner": "scanner-primary", "fingerprint": "c6503c28bd9bb494", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-554a156edd4a9551", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/add-odoo-columns/route.ts:8"}, "properties": {"repobilityId": "d1ba4b3d5196fcb9", "scanner": "scanner-primary", "fingerprint": "554a156edd4a9551", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4794e412930c61c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-reservations/route.ts:15"}, "properties": {"repobilityId": "b59d7170a8f0a33c", "scanner": "scanner-primary", "fingerprint": "4794e412930c61c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e38b7e901b7ec4c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/migrate-cart-reservations/route.ts:15"}, "properties": {"repobilityId": "290a6e4f4553fb53", "scanner": "scanner-primary", "fingerprint": "e38b7e901b7ec4c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b0b9166f2754aea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/daily-plan/create-sample-order/route.ts:63"}, "properties": {"repobilityId": "fc5ca088273c5c5e", "scanner": "scanner-primary", "fingerprint": "3b0b9166f2754aea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5f83291b77cf0df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-ai-matching/route.ts:25"}, "properties": {"repobilityId": "05bd3df7a703351c", "scanner": "scanner-primary", "fingerprint": "d5f83291b77cf0df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c006dfa5da79fac6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/route.ts:24"}, "properties": {"repobilityId": "27fe507bad0008fe", "scanner": "scanner-primary", "fingerprint": "c006dfa5da79fac6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1151a51ac9128f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/fields/route.ts:54"}, "properties": {"repobilityId": "afd6f51ef5aa9a29", "scanner": "scanner-primary", "fingerprint": "a1151a51ac9128f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f6c6f162a6cf0a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/update-state/route.ts:46"}, "properties": {"repobilityId": "598059a897d91bc4", "scanner": "scanner-primary", "fingerprint": "7f6c6f162a6cf0a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aa3b277db29d97f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/batches/assign-vehicle/route.ts:34"}, "properties": {"repobilityId": "cd2ea3ed863e35c3", "scanner": "scanner-primary", "fingerprint": "6aa3b277db29d97f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36fa1f8f43ae4d96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/create-batches/route.ts:98"}, "properties": {"repobilityId": "ec34fc7eea9af1b9", "scanner": "scanner-primary", "fingerprint": "36fa1f8f43ae4d96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40ca798a2bc9f874", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-route-ai/pickings/route.ts:12"}, "properties": {"repobilityId": "ab42363876b746b5", "scanner": "scanner-primary", "fingerprint": "40ca798a2bc9f874", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f112b72088445de3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/van-pending/route.ts:56"}, "properties": {"repobilityId": "ebaeadc892864c7f", "scanner": "scanner-primary", "fingerprint": "f112b72088445de3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1398d6cf890bef69", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-signature/route.ts:27"}, "properties": {"repobilityId": "16e73dc47f5381b6", "scanner": "scanner-primary", "fingerprint": "1398d6cf890bef69", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b47ebaf7a0b9a5b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/print/route.ts:10"}, "properties": {"repobilityId": "0238031e2b3762ae", "scanner": "scanner-primary", "fingerprint": "b47ebaf7a0b9a5b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1285f301a990779", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/list/route.ts:25"}, "properties": {"repobilityId": "c1a9cef683ec5ed8", "scanner": "scanner-primary", "fingerprint": "a1285f301a990779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05af09bd882c3574", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/confirm-pickup/route.ts:39"}, "properties": {"repobilityId": "3d6215e8ae35b003", "scanner": "scanner-primary", "fingerprint": "05af09bd882c3574", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85787900b48522aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/get-invoice-amount/route.ts:22"}, "properties": {"repobilityId": "c27fc734a7f30911", "scanner": "scanner-primary", "fingerprint": "85787900b48522aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13484f66f3e59e45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/reso/route.ts:18"}, "properties": {"repobilityId": "0a071d52771fe2dc", "scanner": "scanner-primary", "fingerprint": "13484f66f3e59e45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df1a54153bc54e51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/validate/route.ts:34"}, "properties": {"repobilityId": "a58e17c8306df128", "scanner": "scanner-primary", "fingerprint": "df1a54153bc54e51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59282fbbc8174a06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-photo/route.ts:27"}, "properties": {"repobilityId": "741be270be43c18c", "scanner": "scanner-primary", "fingerprint": "59282fbbc8174a06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee27d982e01723a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/save-partial-justification/route.ts:13"}, "properties": {"repobilityId": "5c326eca3c44dc78", "scanner": "scanner-primary", "fingerprint": "ee27d982e01723a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf5a35cdf1ce6313", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/delivery/payment/route.ts:28"}, "properties": {"repobilityId": "451a9f1f18ff87ae", "scanner": "scanner-primary", "fingerprint": "cf5a35cdf1ce6313", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ddd6344d62f3c2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/avatar-generator/generate-video/route.ts:143"}, "properties": {"repobilityId": "a6bce96a88f4625c", "scanner": "scanner-primary", "fingerprint": "3ddd6344d62f3c2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-091e928a8a0ab922", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/list/route.ts:177"}, "properties": {"repobilityId": "5c1545f595c0c97d", "scanner": "scanner-primary", "fingerprint": "091e928a8a0ab922", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-709eb32ca5551f79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scarichi-parziali/create-return/route.ts:40"}, "properties": {"repobilityId": "7e5fd896d1fe3e25", "scanner": "scanner-primary", "fingerprint": "709eb32ca5551f79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fbb03edfa7dfbd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/chat-venditori/route.ts:91"}, "properties": {"repobilityId": "eb791603b1d7673d", "scanner": "scanner-primary", "fingerprint": "1fbb03edfa7dfbd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3ff52e60749ce4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/save-expiry/route.ts:53"}, "properties": {"repobilityId": "5b111a816c9129c4", "scanner": "scanner-primary", "fingerprint": "d3ff52e60749ce4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74bc3e551d159677", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-scadenze/extract-expiry/route.ts:46"}, "properties": {"repobilityId": "40a3a4bd339fd61e", "scanner": "scanner-primary", "fingerprint": "74bc3e551d159677", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8153f0eecd830a8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/translate-content/route.ts:76"}, "properties": {"repobilityId": "4ac3eb337031fc74", "scanner": "scanner-primary", "fingerprint": "8153f0eecd830a8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-114a3282b9ae256c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-curiosity-image/route.ts:53"}, "properties": {"repobilityId": "2c5a76ac21317597", "scanner": "scanner-primary", "fingerprint": "114a3282b9ae256c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9e83064a59142bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-article/route.ts:143"}, "properties": {"repobilityId": "7512e42ecb93ac26", "scanner": "scanner-primary", "fingerprint": "b9e83064a59142bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fed94163e43b605", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-story/route.ts:88"}, "properties": {"repobilityId": "601494de34e8f7c0", "scanner": "scanner-primary", "fingerprint": "0fed94163e43b605", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1a601dae20c75ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/analytics/summary/route.ts:118"}, "properties": {"repobilityId": "46b8f84269e93e2a", "scanner": "scanner-primary", "fingerprint": "f1a601dae20c75ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68ba0e82a787c7fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/autopilot/generate-post/route.ts:100"}, "properties": {"repobilityId": "60a73f88c6164d6b", "scanner": "scanner-primary", "fingerprint": "68ba0e82a787c7fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9344bc7a6ec2651a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-youtube/route.ts:60"}, "properties": {"repobilityId": "737912dbbcf2672c", "scanner": "scanner-primary", "fingerprint": "9344bc7a6ec2651a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d304839a7013cbcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/product-recipe/route.ts:80"}, "properties": {"repobilityId": "7c39ba15482058f5", "scanner": "scanner-primary", "fingerprint": "d304839a7013cbcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36ac7cbc21eecf44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-story/route.ts:152"}, "properties": {"repobilityId": "d6dcb5787b3ce3f6", "scanner": "scanner-primary", "fingerprint": "36ac7cbc21eecf44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b217eb3eb8fb71f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-to-odoo/route.ts:24"}, "properties": {"repobilityId": "850a157987e9019a", "scanner": "scanner-primary", "fingerprint": "b217eb3eb8fb71f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a37b5951f23b52c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/check-video-status/route.ts:127"}, "properties": {"repobilityId": "83597a99fb0d1f99", "scanner": "scanner-primary", "fingerprint": "a37b5951f23b52c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5295aada4333a80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/regenerate-article-image/route.ts:12"}, "properties": {"repobilityId": "f4e1d07f8f215757", "scanner": "scanner-primary", "fingerprint": "f5295aada4333a80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-382f4f71c7760c7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-curiosity/route.ts:72"}, "properties": {"repobilityId": "ce91c56560096cd6", "scanner": "scanner-primary", "fingerprint": "382f4f71c7760c7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-adc6db711ec60013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/free-article/route.ts:84"}, "properties": {"repobilityId": "5505c3449eebe969", "scanner": "scanner-primary", "fingerprint": "adc6db711ec60013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c7316272e1d08bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/food-curiosity/route.ts:75"}, "properties": {"repobilityId": "0ade3c93612658d5", "scanner": "scanner-primary", "fingerprint": "4c7316272e1d08bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddf27d3e878de0e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/generate-marketing/route.ts:172"}, "properties": {"repobilityId": "b887eb54a5b5d38c", "scanner": "scanner-primary", "fingerprint": "ddf27d3e878de0e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ee8eebfcf8c0154", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/refine-video/route.ts:80"}, "properties": {"repobilityId": "7873f78138c705bc", "scanner": "scanner-primary", "fingerprint": "5ee8eebfcf8c0154", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9215a8400dcc7bf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-ai/publish-recipe/route.ts:146"}, "properties": {"repobilityId": "cf9025d5da11dce8", "scanner": "scanner-primary", "fingerprint": "9215a8400dcc7bf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27ba77fa1f37640f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-lot-trace/route.ts:34"}, "properties": {"repobilityId": "9adc62873ca8ee68", "scanner": "scanner-primary", "fingerprint": "27ba77fa1f37640f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-438b9dc0ebda476e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/wine/sommelier/route.ts:239"}, "properties": {"repobilityId": "03725ff2a74fa96b", "scanner": "scanner-primary", "fingerprint": "438b9dc0ebda476e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8f1b1f6119ec428", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/wine/catalog/route.ts:75"}, "properties": {"repobilityId": "53dcd4ea4176ffad", "scanner": "scanner-primary", "fingerprint": "b8f1b1f6119ec428", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1bed572b10d41d02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/agents/status/route.ts:76"}, "properties": {"repobilityId": "c42dc8a81135dc92", "scanner": "scanner-primary", "fingerprint": "1bed572b10d41d02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ffeda874a1405b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-images/route.ts:6"}, "properties": {"repobilityId": "ca49993dcb379c40", "scanner": "scanner-primary", "fingerprint": "4ffeda874a1405b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f487d580439c4fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze/route.ts:15"}, "properties": {"repobilityId": "4b7858a110f50df0", "scanner": "scanner-primary", "fingerprint": "0f487d580439c4fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b7be4340f74b2f5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/ordini-fornitori/analyze-today/route.ts:287"}, "properties": {"repobilityId": "fb5bbcc5a62063af", "scanner": "scanner-primary", "fingerprint": "0b7be4340f74b2f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7d6b11dad47aef5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ordini-fornitori/analyze-today/route.ts:40"}, "properties": {"repobilityId": "bc677246a1a05e20", "scanner": "scanner-primary", "fingerprint": "7d6b11dad47aef5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dc15afd0eab8ced", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-odoo-session/route.ts:15"}, "properties": {"repobilityId": "ebc65bb5c5c6cff2", "scanner": "scanner-primary", "fingerprint": "6dc15afd0eab8ced", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb7e8ba4455897d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/route.ts:153"}, "properties": {"repobilityId": "84e473d028edf72b", "scanner": "scanner-primary", "fingerprint": "fb7e8ba4455897d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4e0dddf61c2d187", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/analisi-prodotto/top-products/route.ts:90"}, "properties": {"repobilityId": "bb2f1256669165fe", "scanner": "scanner-primary", "fingerprint": "d4e0dddf61c2d187", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08b2b3b31cf4fbec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/update-product-rankings/route.ts:38"}, "properties": {"repobilityId": "0227f3d023610292", "scanner": "scanner-primary", "fingerprint": "08b2b3b31cf4fbec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfb274dfcf8299f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/ocr-attachments/route.ts:342"}, "properties": {"repobilityId": "c35a0e43ac4e3ee7", "scanner": "scanner-primary", "fingerprint": "cfb274dfcf8299f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7793858218b5c99f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/email-monitor/route.ts:36"}, "properties": {"repobilityId": "2aaaa46aa2d67582", "scanner": "scanner-primary", "fingerprint": "7793858218b5c99f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3472634a5a423d0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/sync-products-rag/route.ts:32"}, "properties": {"repobilityId": "fea7c96647e3f291", "scanner": "scanner-primary", "fingerprint": "3472634a5a423d0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-662e78c66a053d8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-sync/route.ts:52"}, "properties": {"repobilityId": "0b5852ff9da227e4", "scanner": "scanner-primary", "fingerprint": "662e78c66a053d8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-537483fed8e81e3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/batches/route.ts:9"}, "properties": {"repobilityId": "48cf25bcbc64e61d", "scanner": "scanner-primary", "fingerprint": "537483fed8e81e3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f97d79f2b40c19f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/update-quantity/route.ts:7"}, "properties": {"repobilityId": "44c68beed1d02533", "scanner": "scanner-primary", "fingerprint": "9f97d79f2b40c19f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea67d675c8c20ae3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/operations/route.ts:9"}, "properties": {"repobilityId": "f0aa3c49b194f3c3", "scanner": "scanner-primary", "fingerprint": "ea67d675c8c20ae3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c404bf49f5c8638", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/locations/route.ts:17"}, "properties": {"repobilityId": "55b98d0c568a6ae4", "scanner": "scanner-primary", "fingerprint": "3c404bf49f5c8638", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61bf241347dea30e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/picking/validate/route.ts:7"}, "properties": {"repobilityId": "e4fab35590bd143d", "scanner": "scanner-primary", "fingerprint": "61bf241347dea30e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-540d4f89612d1098", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/setup-supplier-db/route.ts:16"}, "properties": {"repobilityId": "cfb684adef02d766", "scanner": "scanner-primary", "fingerprint": "540d4f89612d1098", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55b6bff043466e26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/route.ts:39"}, "properties": {"repobilityId": "5d81d7b66c11c404", "scanner": "scanner-primary", "fingerprint": "55b6bff043466e26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08748fc97d50fb3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/sync/manual/route.ts:18"}, "properties": {"repobilityId": "c872d40b5a0944ce", "scanner": "scanner-primary", "fingerprint": "08748fc97d50fb3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cc6d75238a3366d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/route.ts:121"}, "properties": {"repobilityId": "b00199ebe0819e84", "scanner": "scanner-primary", "fingerprint": "4cc6d75238a3366d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e6876aa50841416", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/recommendations/[id]/route.ts:79"}, "properties": {"repobilityId": "0156f7ed56a9e279", "scanner": "scanner-primary", "fingerprint": "9e6876aa50841416", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ef05bf4e3aef529", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/route.ts:20"}, "properties": {"repobilityId": "171f0d09e3fbb9e2", "scanner": "scanner-primary", "fingerprint": "7ef05bf4e3aef529", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2620f6f9736bf4bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/orders/route.ts:92"}, "properties": {"repobilityId": "fa448df7c05871a9", "scanner": "scanner-primary", "fingerprint": "2620f6f9736bf4bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-befee80cfd8b4cf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/period/route.ts:26"}, "properties": {"repobilityId": "05a995ac6db1e0ad", "scanner": "scanner-primary", "fingerprint": "befee80cfd8b4cf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6db2e6b0c93e69fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/customers/route.ts:74"}, "properties": {"repobilityId": "2d8ce305c3eecb56", "scanner": "scanner-primary", "fingerprint": "6db2e6b0c93e69fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ffef0a61269fcb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analytics/avg-order-value/route.ts:96"}, "properties": {"repobilityId": "bfdadca3a9d1d2c7", "scanner": "scanner-primary", "fingerprint": "6ffef0a61269fcb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93de9973708a8a92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-sample-order/route.ts:51"}, "properties": {"repobilityId": "1cb51fda0a133fe4", "scanner": "scanner-primary", "fingerprint": "93de9973708a8a92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caee7be4f3e1e4f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/route.ts:55"}, "properties": {"repobilityId": "ff966476ecad3311", "scanner": "scanner-primary", "fingerprint": "caee7be4f3e1e4f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ce28fe0fef4cfd7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:81"}, "properties": {"repobilityId": "d25ec4648fb2a0f4", "scanner": "scanner-primary", "fingerprint": "7ce28fe0fef4cfd7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bf17d13c69f56b83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:40"}, "properties": {"repobilityId": "b10c7500658a9712", "scanner": "scanner-primary", "fingerprint": "bf17d13c69f56b83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-203cf712c75ed151", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/vehicle-stock/history/route.ts:52"}, "properties": {"repobilityId": "4f8ea1e74d86963f", "scanner": "scanner-primary", "fingerprint": "203cf712c75ed151", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c3fe5673ed427a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/interactions/route.ts:101"}, "properties": {"repobilityId": "a00daf6f9559bcb8", "scanner": "scanner-primary", "fingerprint": "9c3fe5673ed427a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9075be64f06dfaea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/avatars/route.ts:45"}, "properties": {"repobilityId": "ed088560fb38d1b3", "scanner": "scanner-primary", "fingerprint": "9075be64f06dfaea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-806cb475a99468aa", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/maestro/avatars/[id]/route.ts:84"}, "properties": {"repobilityId": "d4564c78dd172bbc", "scanner": "scanner-primary", "fingerprint": "806cb475a99468aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-56f266c36db004d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/customers/[id]/route.ts:46"}, "properties": {"repobilityId": "edbabbf68b822e7f", "scanner": "scanner-primary", "fingerprint": "56f266c36db004d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5dd77a44250f5915", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/daily-plan/route.ts:35"}, "properties": {"repobilityId": "7bda9fb39e397575", "scanner": "scanner-primary", "fingerprint": "5dd77a44250f5915", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0f167ac0aca0cdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/create-quotation/route.ts:72"}, "properties": {"repobilityId": "649353659d8a540a", "scanner": "scanner-primary", "fingerprint": "c0f167ac0aca0cdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-681f954d1f1fb425", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/agent-chat/route.ts:108"}, "properties": {"repobilityId": "65a80a5c3a2956b7", "scanner": "scanner-primary", "fingerprint": "681f954d1f1fb425", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-622cd86145e05f8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/salespeople/route.ts:13"}, "properties": {"repobilityId": "2d05ba95bd529ab9", "scanner": "scanner-primary", "fingerprint": "622cd86145e05f8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be1928c49c1d508e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/analyze-odoo/route.ts:24"}, "properties": {"repobilityId": "b78472ed4a3adbda", "scanner": "scanner-primary", "fingerprint": "be1928c49c1d508e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-301515cb0d483795", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/maestro/products/search/route.ts:43"}, "properties": {"repobilityId": "f9231ef57a483c90", "scanner": "scanner-primary", "fingerprint": "301515cb0d483795", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e1bc9a3fc3af600", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/transcribe/route.ts:34"}, "properties": {"repobilityId": "d176e4f9da307129", "scanner": "scanner-primary", "fingerprint": "1e1bc9a3fc3af600", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-151cf689d871f9fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/user/profile/route.ts:15"}, "properties": {"repobilityId": "03acc86e01abf5b7", "scanner": "scanner-primary", "fingerprint": "151cf689d871f9fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf43e7de5b06d66f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/profile/update/route.ts:74"}, "properties": {"repobilityId": "4539ca4701abc0d1", "scanner": "scanner-primary", "fingerprint": "bf43e7de5b06d66f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caac3b0f47a333cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/route.ts:22"}, "properties": {"repobilityId": "09c57af479aef167", "scanner": "scanner-primary", "fingerprint": "caac3b0f47a333cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae46815f4e760c00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/route.ts:29"}, "properties": {"repobilityId": "2e23110c6b8f00a0", "scanner": "scanner-primary", "fingerprint": "ae46815f4e760c00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ccca574ae54898e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:34"}, "properties": {"repobilityId": "e011da1229785ffa", "scanner": "scanner-primary", "fingerprint": "6ccca574ae54898e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83a59032ccf8a060", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/orders/[id]/reorder/route.ts:28"}, "properties": {"repobilityId": "40143f3a31f05246", "scanner": "scanner-primary", "fingerprint": "83a59032ccf8a060", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-530060c4616c2de4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/ai-suggest-order/route.ts:57"}, "properties": {"repobilityId": "06ad1380cace5916", "scanner": "scanner-primary", "fingerprint": "530060c4616c2de4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69f3a69621dfd4cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/route.ts:78"}, "properties": {"repobilityId": "96151135527d0f3e", "scanner": "scanner-primary", "fingerprint": "69f3a69621dfd4cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ca3ba48092d67f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/dashboard/details/route.ts:15"}, "properties": {"repobilityId": "839528ba00afa4f9", "scanner": "scanner-primary", "fingerprint": "0ca3ba48092d67f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e4a73ee933c1949", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/route.ts:21"}, "properties": {"repobilityId": "a9ab5dfd40ff6458", "scanner": "scanner-primary", "fingerprint": "4e4a73ee933c1949", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-755a5dcbf357723e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/sync-images/route.ts:17"}, "properties": {"repobilityId": "660fb633133abd57", "scanner": "scanner-primary", "fingerprint": "755a5dcbf357723e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3379b160a1b7602", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/items/[itemId]/route.ts:26"}, "properties": {"repobilityId": "698089c2a70c4b83", "scanner": "scanner-primary", "fingerprint": "d3379b160a1b7602", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9df35e9c4007924b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/cart/checkout/route.ts:22"}, "properties": {"repobilityId": "3cb8b118e3e36d7c", "scanner": "scanner-primary", "fingerprint": "9df35e9c4007924b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6043e46c858c0a7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/categories/route.ts:11"}, "properties": {"repobilityId": "d4f67c25eeb6c755", "scanner": "scanner-primary", "fingerprint": "6043e46c858c0a7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b4dedfe66ad12e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/route.ts:23"}, "properties": {"repobilityId": "21b43b5cfbc142e1", "scanner": "scanner-primary", "fingerprint": "5b4dedfe66ad12e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35a3b32e8032709c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:193"}, "properties": {"repobilityId": "aee65b4fcd3a0042", "scanner": "scanner-primary", "fingerprint": "35a3b32e8032709c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-04991f380c80f355", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/route.ts:19"}, "properties": {"repobilityId": "6b1a68d44a0c6b1e", "scanner": "scanner-primary", "fingerprint": "04991f380c80f355", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2207531e31e30337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/deliveries/[id]/pdf/route.ts:34"}, "properties": {"repobilityId": "fa14cf7994b7129d", "scanner": "scanner-primary", "fingerprint": "2207531e31e30337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2191433c91285bdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/profile/route.ts:17"}, "properties": {"repobilityId": "8370a3b2440771ca", "scanner": "scanner-primary", "fingerprint": "2191433c91285bdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ef20f0638f6607f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/reservations/route.ts:56"}, "properties": {"repobilityId": "4584c96823013d58", "scanner": "scanner-primary", "fingerprint": "3ef20f0638f6607f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2111bdbc8c65b2a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/products/route.ts:37"}, "properties": {"repobilityId": "a1bee590fcc2f966", "scanner": "scanner-primary", "fingerprint": "2111bdbc8c65b2a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-066ceea69e0a5fb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/route.ts:22"}, "properties": {"repobilityId": "9fa305f3cd5e1e27", "scanner": "scanner-primary", "fingerprint": "066ceea69e0a5fb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fc45d58a32f6e9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/route.ts:21"}, "properties": {"repobilityId": "daf8499fe6add93f", "scanner": "scanner-primary", "fingerprint": "9fc45d58a32f6e9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3653b77f680387cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/portale-clienti/invoices/[id]/pdf/route.ts:34"}, "properties": {"repobilityId": "67c1d2614fb1f49c", "scanner": "scanner-primary", "fingerprint": "3653b77f680387cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a94316cd840f8f4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/update-product-image/route.ts:34"}, "properties": {"repobilityId": "569a0b33c7933bf5", "scanner": "scanner-primary", "fingerprint": "a94316cd840f8f4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f86905952d1652c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/catalogo-lapa/products/route.ts:13"}, "properties": {"repobilityId": "8b192b93da473687", "scanner": "scanner-primary", "fingerprint": "f86905952d1652c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17afc8eb52fa9439", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/route.ts:17"}, "properties": {"repobilityId": "6dcae65c6da18af3", "scanner": "scanner-primary", "fingerprint": "17afc8eb52fa9439", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b81cf1a1f9a87856", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/hr-payslip/extract-pdf/route.ts:25"}, "properties": {"repobilityId": "0bbc52597ed0e5d3", "scanner": "scanner-primary", "fingerprint": "b81cf1a1f9a87856", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bebe77d44259ffb5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/smart-ordering/create-orders/route.ts:28"}, "properties": {"repobilityId": "5a92455b838524d4", "scanner": "scanner-primary", "fingerprint": "bebe77d44259ffb5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4cb71c02d36a6bc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering/create-orders/route.ts:26"}, "properties": {"repobilityId": "ec7813d47567b904", "scanner": "scanner-primary", "fingerprint": "4cb71c02d36a6bc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fed7ca3858cdcea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/food-news/route.ts:43"}, "properties": {"repobilityId": "19af613ab7ed76e7", "scanner": "scanner-primary", "fingerprint": "9fed7ca3858cdcea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3b99bd0bb3cd540", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/food-news/generate/route.ts:33"}, "properties": {"repobilityId": "2b3c7e78c05ba6dd", "scanner": "scanner-primary", "fingerprint": "e3b99bd0bb3cd540", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dcced7ae9a4c2e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-menu-pdf/route.ts:45"}, "properties": {"repobilityId": "7c8284688c5ba274", "scanner": "scanner-primary", "fingerprint": "8dcced7ae9a4c2e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76a460ce104f94ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-caption/route.ts:24"}, "properties": {"repobilityId": "33d62209ce5b87bc", "scanner": "scanner-primary", "fingerprint": "76a460ce104f94ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2558265dc231117", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gemini/generate-image/route.ts:24"}, "properties": {"repobilityId": "6097d7230ea557fe", "scanner": "scanner-primary", "fingerprint": "d2558265dc231117", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b087b2959414f174", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/upload-photo/route.ts:52"}, "properties": {"repobilityId": "6a5c9fed6976be5a", "scanner": "scanner-primary", "fingerprint": "b087b2959414f174", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9180076cfd2bec24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:57"}, "properties": {"repobilityId": "fabd54a5b0103c2f", "scanner": "scanner-primary", "fingerprint": "9180076cfd2bec24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05828de0ad24472a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/generate-speech/route.ts:43"}, "properties": {"repobilityId": "79abb4d7bfff9dfa", "scanner": "scanner-primary", "fingerprint": "05828de0ad24472a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8679daf332505fd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/_avatar-generator-disabled/download/route.ts:22"}, "properties": {"repobilityId": "9c752bc95598dd15", "scanner": "scanner-primary", "fingerprint": "8679daf332505fd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5d4803c65b320bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/generate-reply/route.ts:26"}, "properties": {"repobilityId": "8ce5f018c8986d32", "scanner": "scanner-primary", "fingerprint": "b5d4803c65b320bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1dbefdc1507cfcc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/settings/route.ts:19"}, "properties": {"repobilityId": "e648c314c5c4455a", "scanner": "scanner-primary", "fingerprint": "d1dbefdc1507cfcc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-859f46dc75b82d30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/disconnect/route.ts:26"}, "properties": {"repobilityId": "73cf07ea2b2d0c5e", "scanner": "scanner-primary", "fingerprint": "859f46dc75b82d30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37d93481fc96988d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/sync/route.ts:25"}, "properties": {"repobilityId": "dbb781df1516b88f", "scanner": "scanner-primary", "fingerprint": "37d93481fc96988d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e9a6b242524e58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/route.ts:26"}, "properties": {"repobilityId": "b1c31f7a9efccde0", "scanner": "scanner-primary", "fingerprint": "b2e9a6b242524e58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ef179ba0e489e11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/auth/gmail/callback/route.ts:19"}, "properties": {"repobilityId": "452da853e881ffa9", "scanner": "scanner-primary", "fingerprint": "0ef179ba0e489e11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c72f399ca9b834b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/regenerate-summaries/route.ts:21"}, "properties": {"repobilityId": "93c61a3b233d56c8", "scanner": "scanner-primary", "fingerprint": "c72f399ca9b834b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f69bcb6698759b8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/send/route.ts:32"}, "properties": {"repobilityId": "8eb7491772c54473", "scanner": "scanner-primary", "fingerprint": "f69bcb6698759b8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc5229cc17186d42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/agent/route.ts:73"}, "properties": {"repobilityId": "fecab6c6ad64e484", "scanner": "scanner-primary", "fingerprint": "cc5229cc17186d42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-666ca8d1fff8b344", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/actions/route.ts:37"}, "properties": {"repobilityId": "5f776c9da17cf593", "scanner": "scanner-primary", "fingerprint": "666ca8d1fff8b344", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a566c9705c3df0ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/fetch-emails/route.ts:29"}, "properties": {"repobilityId": "6607c25f8d947076", "scanner": "scanner-primary", "fingerprint": "a566c9705c3df0ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c8af40980e18172", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/email-ai/inbox/route.ts:25"}, "properties": {"repobilityId": "c5e11580aef6e76c", "scanner": "scanner-primary", "fingerprint": "3c8af40980e18172", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc9c8e77790daea8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batch/[batchId]/route.ts:39"}, "properties": {"repobilityId": "ed407a7289d9003b", "scanner": "scanner-primary", "fingerprint": "fc9c8e77790daea8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-245abd44aba14407", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/batches/route.ts:46"}, "properties": {"repobilityId": "8807620f0c77f605", "scanner": "scanner-primary", "fingerprint": "245abd44aba14407", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5ebb58e91828a4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/controllo-picking/analyze-video/route.ts:52"}, "properties": {"repobilityId": "4653ac12e8107db9", "scanner": "scanner-primary", "fingerprint": "e5ebb58e91828a4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8b35bdd6cdffc55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-embeddings/route.ts:70"}, "properties": {"repobilityId": "43cb74167b7a69d6", "scanner": "scanner-primary", "fingerprint": "e8b35bdd6cdffc55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f6a304cca0e1bd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/recognize-banknote/route.ts:57"}, "properties": {"repobilityId": "9bde850bb9564745", "scanner": "scanner-primary", "fingerprint": "8f6a304cca0e1bd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ac5526ff0093e0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/withdraw/route.ts:52"}, "properties": {"repobilityId": "215cef5ac90166c5", "scanner": "scanner-primary", "fingerprint": "7ac5526ff0093e0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-311a9512961a53b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/face-enroll/route.ts:79"}, "properties": {"repobilityId": "403a128693df682e", "scanner": "scanner-primary", "fingerprint": "311a9512961a53b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3a878ab273b1fab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/start/route.ts:69"}, "properties": {"repobilityId": "68ab6e3549ddd747", "scanner": "scanner-primary", "fingerprint": "c3a878ab273b1fab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06fc9aec55d98929", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/video/stop/route.ts:58"}, "properties": {"repobilityId": "8e1a8676b3ebcdc3", "scanner": "scanner-primary", "fingerprint": "06fc9aec55d98929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1a3aaa6cbf7fcad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/registro-cassaforte/confirm-deposit/route.ts:139"}, "properties": {"repobilityId": "2a8de59993741893", "scanner": "scanner-primary", "fingerprint": "d1a3aaa6cbf7fcad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b74663740fb1f7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/migrations/product-ranking-cache/route.ts:12"}, "properties": {"repobilityId": "c3d1a17b2162e239", "scanner": "scanner-primary", "fingerprint": "6b74663740fb1f7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a75d2b920abbc85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/product-prices/route.ts:46"}, "properties": {"repobilityId": "db49a40b66fee372", "scanner": "scanner-primary", "fingerprint": "4a75d2b920abbc85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ae0baf600355c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/transfer/route.ts:44"}, "properties": {"repobilityId": "a8a9f4eccff0254f", "scanner": "scanner-primary", "fingerprint": "9ae0baf600355c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfeb062168f041c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/counts/route.ts:22"}, "properties": {"repobilityId": "75ae4c7ef37ed18d", "scanner": "scanner-primary", "fingerprint": "cfeb062168f041c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3ee3ed0a9b2e5cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/mark-reviewed/route.ts:36"}, "properties": {"repobilityId": "9a86647ad23cdd2f", "scanner": "scanner-primary", "fingerprint": "c3ee3ed0a9b2e5cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-058d66e87f118b44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/scadenze/products/route.ts:25"}, "properties": {"repobilityId": "1d9c2d6931336c12", "scanner": "scanner-primary", "fingerprint": "058d66e87f118b44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb1d6499b399125a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/delete-preorder-assignments/route.ts:25"}, "properties": {"repobilityId": "cea68b3f1d3cecf6", "scanner": "scanner-primary", "fingerprint": "eb1d6499b399125a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-941fa6040bc15640", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/assign-preorder-customers/route.ts:30"}, "properties": {"repobilityId": "7eb86d59bb9db8ba", "scanner": "scanner-primary", "fingerprint": "941fa6040bc15640", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac0016362677e308", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-order-products/route.ts:60"}, "properties": {"repobilityId": "741ce47a023141ea", "scanner": "scanner-primary", "fingerprint": "ac0016362677e308", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ebd0fbcf769787b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers-enhanced/route.ts:44"}, "properties": {"repobilityId": "5f86e35ab19db731", "scanner": "scanner-primary", "fingerprint": "1ebd0fbcf769787b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99c072d31a183b36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/suppliers/route.ts:20"}, "properties": {"repobilityId": "11d1de720757f427", "scanner": "scanner-primary", "fingerprint": "99c072d31a183b36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97248e77e54d1e72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-all-preorders/route.ts:70"}, "properties": {"repobilityId": "acac31309852bfba", "scanner": "scanner-primary", "fingerprint": "97248e77e54d1e72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-116abcef4315cbc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pending-orders/route.ts:22"}, "properties": {"repobilityId": "63585de6b397ac31", "scanner": "scanner-primary", "fingerprint": "116abcef4315cbc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fd91de9292c4d08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/toggle-preorder-tag/route.ts:31"}, "properties": {"repobilityId": "0bc66ce4a8f1d5be", "scanner": "scanner-primary", "fingerprint": "1fd91de9292c4d08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a57abfe5d1e3afbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/analyze-order/[orderId]/route.ts:30"}, "properties": {"repobilityId": "c8bc8d4fc59e137c", "scanner": "scanner-primary", "fingerprint": "a57abfe5d1e3afbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef8893eaae264c38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/create-order/route.ts:16"}, "properties": {"repobilityId": "e66cbc0909cc2d33", "scanner": "scanner-primary", "fingerprint": "ef8893eaae264c38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09b8362acca58b90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-v2/pre-orders-summary/route.ts:55"}, "properties": {"repobilityId": "f7a33361754cab3f", "scanner": "scanner-primary", "fingerprint": "09b8362acca58b90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46484b9334fb5024", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/import/route.ts:44"}, "properties": {"repobilityId": "66f50f007a92218e", "scanner": "scanner-primary", "fingerprint": "46484b9334fb5024", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8db6f768019a7437", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/import-ubs/parse/route.ts:309"}, "properties": {"repobilityId": "24841c2ebbca8280", "scanner": "scanner-primary", "fingerprint": "8db6f768019a7437", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0bc93142a52b509", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/products-catalog/route.ts:12"}, "properties": {"repobilityId": "3908b6e0df3d06a6", "scanner": "scanner-primary", "fingerprint": "b0bc93142a52b509", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a960bbf7436fe7d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/jetson/ocr/route.ts:26"}, "properties": {"repobilityId": "74e7acef27cab198", "scanner": "scanner-primary", "fingerprint": "a960bbf7436fe7d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1d692bf37f7dd94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/classify-documents/route.ts:85"}, "properties": {"repobilityId": "9afb5b8bb111b9f3", "scanner": "scanner-primary", "fingerprint": "b1d692bf37f7dd94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cd55305958e6df4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/process-arrival/route.ts:84"}, "properties": {"repobilityId": "532972e1eed73577", "scanner": "scanner-primary", "fingerprint": "8cd55305958e6df4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e271fa03b4cc48d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/read-documents/route.ts:86"}, "properties": {"repobilityId": "100e62bd49ff7b88", "scanner": "scanner-primary", "fingerprint": "5e271fa03b4cc48d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ebbf176c8314714", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/gestione-arrivi/list-today/route.ts:27"}, "properties": {"repobilityId": "c244e2e08bc6a435", "scanner": "scanner-primary", "fingerprint": "9ebbf176c8314714", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0262c32bcf8416c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/test-web-search/route.ts:15"}, "properties": {"repobilityId": "5c3b56f77b061094", "scanner": "scanner-primary", "fingerprint": "0262c32bcf8416c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c8e87def781956e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/search-all-contacts/route.ts:36"}, "properties": {"repobilityId": "08d44e4c410bdb50", "scanner": "scanner-primary", "fingerprint": "0c8e87def781956e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2dd4ef3cc193c90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/check-visibility-db/route.ts:12"}, "properties": {"repobilityId": "40d63dcfacba32b7", "scanner": "scanner-primary", "fingerprint": "c2dd4ef3cc193c90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70a0817b03312887", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/test-supplier-sync/route.ts:11"}, "properties": {"repobilityId": "04d3361364471f25", "scanner": "scanner-primary", "fingerprint": "70a0817b03312887", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00644af975f5bb6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/debug/batch-fields/route.ts:19"}, "properties": {"repobilityId": "2b17eb90c4aa5eb1", "scanner": "scanner-primary", "fingerprint": "00644af975f5bb6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b82c15d84a9e85b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/init-rag/route.ts:33"}, "properties": {"repobilityId": "6043aa223148e3bd", "scanner": "scanner-primary", "fingerprint": "3b82c15d84a9e85b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91d6f4533b2c8079", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/update-product-embedding/route.ts:34"}, "properties": {"repobilityId": "87eb3637d25cba09", "scanner": "scanner-primary", "fingerprint": "91d6f4533b2c8079", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65086ecf542a4650", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/sync-products-rag/route.ts:28"}, "properties": {"repobilityId": "01a4ecc174d2a451", "scanner": "scanner-primary", "fingerprint": "65086ecf542a4650", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-329865a3a23c3a71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/lapa-ai/setup-odoo-webhook/route.ts:15"}, "properties": {"repobilityId": "1c1128bf69e4c4b6", "scanner": "scanner-primary", "fingerprint": "329865a3a23c3a71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c0048a336a950ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/predict/route.ts:18"}, "properties": {"repobilityId": "1f2e108fc93b3869", "scanner": "scanner-primary", "fingerprint": "3c0048a336a950ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89b715dca4eea4e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-sales/route.ts:22"}, "properties": {"repobilityId": "92b2a8b537f12baf", "scanner": "scanner-primary", "fingerprint": "89b715dca4eea4e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a24f37eb80a3ded", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/alerts/route.ts:19"}, "properties": {"repobilityId": "40d750f3a6a8346b", "scanner": "scanner-primary", "fingerprint": "4a24f37eb80a3ded", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48a3423c0c534f62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/smart-ordering-ai/analyze-supplier/route.ts:21"}, "properties": {"repobilityId": "a1b356844cf2cf97", "scanner": "scanner-primary", "fingerprint": "48a3423c0c534f62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a7d270376d30a35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/transfer/route.ts:45"}, "properties": {"repobilityId": "f9f9b78cbc58b9e1", "scanner": "scanner-primary", "fingerprint": "9a7d270376d30a35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a587c100c4516fe5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/check-product/route.ts:53"}, "properties": {"repobilityId": "36eb8b977c3cd9c4", "scanner": "scanner-primary", "fingerprint": "a587c100c4516fe5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b238045cc7fcd26c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/buffer-products/route.ts:26"}, "properties": {"repobilityId": "5212044aeda4578f", "scanner": "scanner-primary", "fingerprint": "b238045cc7fcd26c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17aa505451700d7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/ubicazioni/find-product/route.ts:26"}, "properties": {"repobilityId": "83172e6a7cd70c25", "scanner": "scanner-primary", "fingerprint": "17aa505451700d7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7516657affdafee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/clienti/search/route.ts:33"}, "properties": {"repobilityId": "e72c19e90cbf39d3", "scanner": "scanner-primary", "fingerprint": "c7516657affdafee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c90753a78675e4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/contact/route.ts:70"}, "properties": {"repobilityId": "f60907a4fc1a1721", "scanner": "scanner-primary", "fingerprint": "3c90753a78675e4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37897482f2d213d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/dashboard/route.ts:168"}, "properties": {"repobilityId": "986dd2a276d1ae24", "scanner": "scanner-primary", "fingerprint": "37897482f2d213d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb5145e16e8b4e99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/employee-stats/route.ts:150"}, "properties": {"repobilityId": "5160a030b2356ded", "scanner": "scanner-primary", "fingerprint": "fb5145e16e8b4e99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74c0b023497fcd38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/consent/route.ts:158"}, "properties": {"repobilityId": "0ab2e9a90da381ae", "scanner": "scanner-primary", "fingerprint": "74c0b023497fcd38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f46a36fa9450008", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/time-attendance/export/route.ts:629"}, "properties": {"repobilityId": "07c58003e7df0aee", "scanner": "scanner-primary", "fingerprint": "5f46a36fa9450008", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cbb47ced10ebe1e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/time-attendance/export/route.ts:84"}, "properties": {"repobilityId": "b937f07d79908ea1", "scanner": "scanner-primary", "fingerprint": "cbb47ced10ebe1e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ce57ef8b804b5fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/margini/route.ts:141"}, "properties": {"repobilityId": "be8a28b941e3174c", "scanner": "scanner-primary", "fingerprint": "0ce57ef8b804b5fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c198a9bf82c64079", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image-gemini/route.ts:42"}, "properties": {"repobilityId": "57c04402f3d11e2c", "scanner": "scanner-primary", "fingerprint": "c198a9bf82c64079", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cb2836902eb689b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/parse-invoice/route.ts:33"}, "properties": {"repobilityId": "c80ab5966f4abe97", "scanner": "scanner-primary", "fingerprint": "8cb2836902eb689b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9b4764249300ba1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/generate-image/route.ts:24"}, "properties": {"repobilityId": "20dcf97d5d70388d", "scanner": "scanner-primary", "fingerprint": "c9b4764249300ba1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-493daac686a08488", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/create-products/route.ts:21"}, "properties": {"repobilityId": "1679bf091dd90ff6", "scanner": "scanner-primary", "fingerprint": "493daac686a08488", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ede40b313e6a9262", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/product-creator/enrich-product/route.ts:68"}, "properties": {"repobilityId": "2d443dc59176c80f", "scanner": "scanner-primary", "fingerprint": "ede40b313e6a9262", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c824daf35f2f07e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/scarti/page.tsx:104"}, "properties": {"repobilityId": "3117ccb80ac05db2", "scanner": "scanner-primary", "fingerprint": "8c824daf35f2f07e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5c89d9ae3b5006e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/inventario/page.tsx:647"}, "properties": {"repobilityId": "36dc06bda862078b", "scanner": "scanner-primary", "fingerprint": "e5c89d9ae3b5006e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-7bb91725a746ff45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/inventario/page.tsx:132"}, "properties": {"repobilityId": "9273a41e62115a42", "scanner": "scanner-primary", "fingerprint": "7bb91725a746ff45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c42e7ff881a6275", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/inventario/verifica/page.tsx:369"}, "properties": {"repobilityId": "a1f93a372015c73d", "scanner": "scanner-primary", "fingerprint": "6c42e7ff881a6275", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ae49cd79c334fc4f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/page.tsx:1024"}, "properties": {"repobilityId": "957e352c408293cc", "scanner": "scanner-primary", "fingerprint": "ae49cd79c334fc4f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-94ad49e510070dd0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/test/page.tsx:739"}, "properties": {"repobilityId": "eebd129918f6fe4f", "scanner": "scanner-primary", "fingerprint": "94ad49e510070dd0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2d8e342a6935daa2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/lapa-ai-agents/widget/page.tsx:714"}, "properties": {"repobilityId": "8c8268f0ab61d04c", "scanner": "scanner-primary", "fingerprint": "2d8e342a6935daa2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d30b64a85036a53b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/lapa-ai-agents/widget/page.tsx:70"}, "properties": {"repobilityId": "638cb08ead087503", "scanner": "scanner-primary", "fingerprint": "d30b64a85036a53b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9738be5aac4ff764", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/dashboard/page.tsx:35"}, "properties": {"repobilityId": "236c4ac135ad8cc2", "scanner": "scanner-primary", "fingerprint": "9738be5aac4ff764", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ab64a8faaf99114", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/product-photo-manager/page.tsx:575"}, "properties": {"repobilityId": "37c277b2fd3f16d2", "scanner": "scanner-primary", "fingerprint": "1ab64a8faaf99114", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4d135fb19e708cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/product-photo-manager/page.tsx:204"}, "properties": {"repobilityId": "843a6ec7be610707", "scanner": "scanner-primary", "fingerprint": "d4d135fb19e708cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3b24607833cb4fb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/components/JokeBanner.tsx:131"}, "properties": {"repobilityId": "97e15900e411fe9e", "scanner": "scanner-primary", "fingerprint": "e3b24607833cb4fb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a3d8a6be3285b967", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/centralino-ai/page.tsx:119"}, "properties": {"repobilityId": "2832b2860b143d18", "scanner": "scanner-primary", "fingerprint": "a3d8a6be3285b967", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5e96c7b4b4c7510", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/ordini-smart-v2/page.tsx:221"}, "properties": {"repobilityId": "53f88d3f13165517", "scanner": "scanner-primary", "fingerprint": "c5e96c7b4b4c7510", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2608c6890a35c5c2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/ordini-smart-v2/prodotti-critici/page.tsx:256"}, "properties": {"repobilityId": "ceb842eddc5fc58d", "scanner": "scanner-primary", "fingerprint": "2608c6890a35c5c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dca90e7378eac6be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prelievo-zone/page.tsx:1974"}, "properties": {"repobilityId": "18ab7e7bc0bb763f", "scanner": "scanner-primary", "fingerprint": "dca90e7378eac6be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9cc40d56648cbe1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/prelievo-zone/page.tsx:156"}, "properties": {"repobilityId": "5b6b218d89a285a9", "scanner": "scanner-primary", "fingerprint": "9cc40d56648cbe1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c888a99a5a25618c", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/mappa-consegne/page.tsx:150"}, "properties": {"repobilityId": "989082d5dd29de7f", "scanner": "scanner-primary", "fingerprint": "c888a99a5a25618c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-392caf57dc079fd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-diretto/page.tsx:246"}, "properties": {"repobilityId": "d776dbe5c7231937", "scanner": "scanner-primary", "fingerprint": "392caf57dc079fd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6099b7cc7e7f8b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/valida-fatture/ManageMissingProductsView.tsx:39"}, "properties": {"repobilityId": "8e5f1e6db9927b16", "scanner": "scanner-primary", "fingerprint": "f6099b7cc7e7f8b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36a86020baf875bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/arrivo-merce/page.tsx:107"}, "properties": {"repobilityId": "aa537238f3f00a3a", "scanner": "scanner-primary", "fingerprint": "36a86020baf875bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89cb3527d1af472c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/controllo-prezzi/page.tsx:1407"}, "properties": {"repobilityId": "7926ffa1c6b25eb1", "scanner": "scanner-primary", "fingerprint": "89cb3527d1af472c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6ad22cf94ee70f9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/controllo-prezzi/imposta-listini/page.tsx:84"}, "properties": {"repobilityId": "bfab205b0bda0468", "scanner": "scanner-primary", "fingerprint": "6ad22cf94ee70f9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d304115afbed0e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-buste-paga/page.tsx:198"}, "properties": {"repobilityId": "8e703c951b4ed90f", "scanner": "scanner-primary", "fingerprint": "2d304115afbed0e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-accc484588e68d42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/email-ai-monitor/page.tsx:1469"}, "properties": {"repobilityId": "457e298464610ebb", "scanner": "scanner-primary", "fingerprint": "accc484588e68d42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82d5a66f7690d7e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/email-ai-monitor/page.tsx:944"}, "properties": {"repobilityId": "9d8f64636583a494", "scanner": "scanner-primary", "fingerprint": "82d5a66f7690d7e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-899d2e701335ae46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-monitor/page.tsx:253"}, "properties": {"repobilityId": "af6d23dc3a96ee7b", "scanner": "scanner-primary", "fingerprint": "899d2e701335ae46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-00e1e95012dc469b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/silvano/page.tsx:542"}, "properties": {"repobilityId": "e8fe4792db659805", "scanner": "scanner-primary", "fingerprint": "00e1e95012dc469b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-947268103f77abda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/ordini/page.tsx:180"}, "properties": {"repobilityId": "7f98be8c6a15910d", "scanner": "scanner-primary", "fingerprint": "947268103f77abda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-54f88ce4b8bb2106", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/silvano/clienti/page.tsx:81"}, "properties": {"repobilityId": "a1d87d2f209af362", "scanner": "scanner-primary", "fingerprint": "54f88ce4b8bb2106", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff1bd16fb54adf8a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/smart-route-ai/page.tsx:1566"}, "properties": {"repobilityId": "7f2251748b2360cb", "scanner": "scanner-primary", "fingerprint": "ff1bd16fb54adf8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99c4f9f07b29d9be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/smart-route-ai/page.tsx:175"}, "properties": {"repobilityId": "fb719aa0ea1aa19c", "scanner": "scanner-primary", "fingerprint": "99c4f9f07b29d9be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0683912581a90a20", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/delivery/page.tsx:2840"}, "properties": {"repobilityId": "64a12cee3dd15657", "scanner": "scanner-primary", "fingerprint": "0683912581a90a20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-5adf84e2311190ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/delivery/page.tsx:2936"}, "properties": {"repobilityId": "732eaaa65fd5f789", "scanner": "scanner-primary", "fingerprint": "5adf84e2311190ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6753f50f5e0f7d9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/delivery/page.tsx:198"}, "properties": {"repobilityId": "e9515dfb0c22d4a7", "scanner": "scanner-primary", "fingerprint": "6753f50f5e0f7d9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eefa3d2ac2f1e954", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/delivery/components/DeliveryMap.tsx:132"}, "properties": {"repobilityId": "ebc8970ce8cee614", "scanner": "scanner-primary", "fingerprint": "eefa3d2ac2f1e954", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38b0e7882ff082b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/chat-venditori/page.tsx:1088"}, "properties": {"repobilityId": "812839b451043392", "scanner": "scanner-primary", "fingerprint": "38b0e7882ff082b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a8e0ffb6367f6de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/chat-venditori/page.tsx:520"}, "properties": {"repobilityId": "e3e2392ad9afe616", "scanner": "scanner-primary", "fingerprint": "5a8e0ffb6367f6de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69b3f70ee65628cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/page.tsx:77"}, "properties": {"repobilityId": "1348233c469a8985", "scanner": "scanner-primary", "fingerprint": "69b3f70ee65628cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-daa1c60a8a5dbf53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaRealTime.tsx:91"}, "properties": {"repobilityId": "277d1d26ee1bc145", "scanner": "scanner-primary", "fingerprint": "daa1c60a8a5dbf53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39a0399fec4325b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx:37"}, "properties": {"repobilityId": "eca41995bac7b4ca", "scanner": "scanner-primary", "fingerprint": "39a0399fec4325b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f53d0ded39a13c41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/components/StellaVideoAvatarSimple.tsx:65"}, "properties": {"repobilityId": "8b7bf3d78c55e296", "scanner": "scanner-primary", "fingerprint": "f53d0ded39a13c41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec657d5c6c7b0fb7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/stella-assistant/chat/page.tsx:454"}, "properties": {"repobilityId": "ad173119e14b32f5", "scanner": "scanner-primary", "fingerprint": "ec657d5c6c7b0fb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f4e159b24b8f3edf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-assistant/chat/page.tsx:182"}, "properties": {"repobilityId": "9ea9925c05ebb82f", "scanner": "scanner-primary", "fingerprint": "f4e159b24b8f3edf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-602b10907069b83c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/jetson-stats/page.tsx:136"}, "properties": {"repobilityId": "8a18459939b880bc", "scanner": "scanner-primary", "fingerprint": "602b10907069b83c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b14f9579420fa9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-scadenze/page.tsx:91"}, "properties": {"repobilityId": "9e9e6d5906e137f5", "scanner": "scanner-primary", "fingerprint": "0b14f9579420fa9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-163ce65f92b84cf2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/page.tsx:96"}, "properties": {"repobilityId": "a6d4a199da484faf", "scanner": "scanner-primary", "fingerprint": "163ce65f92b84cf2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e189dda1f19f1380", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/AdvancedDashboard.tsx:60"}, "properties": {"repobilityId": "05e779071291803e", "scanner": "scanner-primary", "fingerprint": "e189dda1f19f1380", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-245fc20e0ae0ba05", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/StatsGrid.tsx:69"}, "properties": {"repobilityId": "18d0b9bf69edb4b6", "scanner": "scanner-primary", "fingerprint": "245fc20e0ae0ba05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a47c89d7e2c4357c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/ClientPopup.tsx:53"}, "properties": {"repobilityId": "2352fe0a3000f3ac", "scanner": "scanner-primary", "fingerprint": "a47c89d7e2c4357c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-12fc9f83f0aadfa0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientPopup.tsx:62"}, "properties": {"repobilityId": "1440ea2e344a47b4", "scanner": "scanner-primary", "fingerprint": "12fc9f83f0aadfa0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f709500a8a0231a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-venditori/components/ClientGrid.tsx:88"}, "properties": {"repobilityId": "80f92165ddde3b40", "scanner": "scanner-primary", "fingerprint": "f709500a8a0231a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd0b8df91607405d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/dashboard-venditori/components/FinancialDashboard.tsx:99"}, "properties": {"repobilityId": "74b7b3e8d914795e", "scanner": "scanner-primary", "fingerprint": "bd0b8df91607405d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-db18c95bbd363e14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/dashboard-venditori/hooks/useOdooData.ts:52"}, "properties": {"repobilityId": "f8a0ccdf513ea253", "scanner": "scanner-primary", "fingerprint": "db18c95bbd363e14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3849a7a60ffd411", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/ordini-fornitori/page.tsx:244"}, "properties": {"repobilityId": "24b0049841417871", "scanner": "scanner-primary", "fingerprint": "f3849a7a60ffd411", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-19a46322eff87a27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/analisi-prodotto/page.tsx:159"}, "properties": {"repobilityId": "d52c7b5ef770fb33", "scanner": "scanner-primary", "fingerprint": "19a46322eff87a27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e911cf7a2ca617c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-visibilita-app/page.tsx:81"}, "properties": {"repobilityId": "7e8de82eec7ad793", "scanner": "scanner-primary", "fingerprint": "5e911cf7a2ca617c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75c9b2111b6222a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/test-token/page.tsx:22"}, "properties": {"repobilityId": "31ab7be6d00a29bb", "scanner": "scanner-primary", "fingerprint": "75c9b2111b6222a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ecb1d4c5ab54b4b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/dashboard-compensi/page.tsx:671"}, "properties": {"repobilityId": "fa68049bba02cc58", "scanner": "scanner-primary", "fingerprint": "2ecb1d4c5ab54b4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2bba06a81928b27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-ia-gestionale/page.tsx:921"}, "properties": {"repobilityId": "6349360cac7e6043", "scanner": "scanner-primary", "fingerprint": "f2bba06a81928b27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9697362633c63e2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/agenti-ia-gestionale/page.tsx:201"}, "properties": {"repobilityId": "1c458328fada76b4", "scanner": "scanner-primary", "fingerprint": "9697362633c63e2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e4bf70bff3ab1bc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/profile/page.tsx:335"}, "properties": {"repobilityId": "5a63928ecd94e61a", "scanner": "scanner-primary", "fingerprint": "4e4bf70bff3ab1bc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-10a10d3584cebcfd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-mancanti/page.tsx:495"}, "properties": {"repobilityId": "29313b8a24e90045", "scanner": "scanner-primary", "fingerprint": "10a10d3584cebcfd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e9353b38e74f425", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/catalogo/page.tsx:340"}, "properties": {"repobilityId": "0e91aad59d74a746", "scanner": "scanner-primary", "fingerprint": "1e9353b38e74f425", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-787b3edd0b37351f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/consegne/page.tsx:207"}, "properties": {"repobilityId": "307563a2aa20119f", "scanner": "scanner-primary", "fingerprint": "787b3edd0b37351f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57b63992888e6155", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/OpenInvoices.tsx:189"}, "properties": {"repobilityId": "f8ffe4c0410425ee", "scanner": "scanner-primary", "fingerprint": "57b63992888e6155", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4dd45aefdcf9c75", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/components/RecentOrders.tsx:149"}, "properties": {"repobilityId": "2956a018dd253979", "scanner": "scanner-primary", "fingerprint": "d4dd45aefdcf9c75", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e174912605cc668", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/profilo/page.tsx:147"}, "properties": {"repobilityId": "30acebb0b28be76e", "scanner": "scanner-primary", "fingerprint": "1e174912605cc668", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c892b9549364f776", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/portale-clienti/ordini/[id]/page.tsx:138"}, "properties": {"repobilityId": "5f669c176b263a46", "scanner": "scanner-primary", "fingerprint": "c892b9549364f776", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-66b323bf2f710fb4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/portale-clienti/ordini/nuovo/page.tsx:61"}, "properties": {"repobilityId": "476d75e439c95fd6", "scanner": "scanner-primary", "fingerprint": "66b323bf2f710fb4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7b220f961c47709f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/ordini/nuovo/page.tsx:131"}, "properties": {"repobilityId": "a9c3abb1986430d1", "scanner": "scanner-primary", "fingerprint": "7b220f961c47709f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-390199e693798619", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/portale-clienti/carrello/page.tsx:99"}, "properties": {"repobilityId": "c6b18430c8049977", "scanner": "scanner-primary", "fingerprint": "390199e693798619", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b623e7977e69bddd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/menu-pdf-generator/page.tsx:48"}, "properties": {"repobilityId": "1247098693793374", "scanner": "scanner-primary", "fingerprint": "b623e7977e69bddd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65e2b2c6750f8cfe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-lapa/page.tsx:351"}, "properties": {"repobilityId": "3966919162caf61c", "scanner": "scanner-primary", "fingerprint": "65e2b2c6750f8cfe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14e60ea74ec2a078", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/catalogo-lapa/page.tsx:90"}, "properties": {"repobilityId": "fd16db222e407b08", "scanner": "scanner-primary", "fingerprint": "14e60ea74ec2a078", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97311a4f99ea9c40", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/page.tsx:7"}, "properties": {"repobilityId": "eec82b5773451fa7", "scanner": "scanner-primary", "fingerprint": "97311a4f99ea9c40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8a92b249a9bd85c7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine-flotta/[slug]/page.tsx:17"}, "properties": {"repobilityId": "b288570ee25f0fab", "scanner": "scanner-primary", "fingerprint": "8a92b249a9bd85c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c78447241aa2d422", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/prodotti-preordine/page.tsx:753"}, "properties": {"repobilityId": "756a3520fd7f870e", "scanner": "scanner-primary", "fingerprint": "c78447241aa2d422", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d9ebe575395897c0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/prodotti-preordine/page.tsx:327"}, "properties": {"repobilityId": "939ae3fc10c96c10", "scanner": "scanner-primary", "fingerprint": "d9ebe575395897c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d8a49fb338015ee4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/prodotti-preordine/page.tsx:268"}, "properties": {"repobilityId": "bb9dd1e6111f61b9", "scanner": "scanner-primary", "fingerprint": "d8a49fb338015ee4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f1d89b25916afc5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/agenti-whatsapp/components/TabConversazioni.tsx:131"}, "properties": {"repobilityId": "691bb1679ffdf54a", "scanner": "scanner-primary", "fingerprint": "0f1d89b25916afc5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f5f81dab3cf06ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/scadenze/page.tsx:951"}, "properties": {"repobilityId": "cf7c690201df9d58", "scanner": "scanner-primary", "fingerprint": "5f5f81dab3cf06ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7d72523aef46924c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/import-movimenti-ubs/page.tsx:229"}, "properties": {"repobilityId": "52c4cafb35597fe8", "scanner": "scanner-primary", "fingerprint": "7d72523aef46924c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-53dc0ee17ed9ce92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/stella-setup/page.tsx:57"}, "properties": {"repobilityId": "54a47a80e0e726fe", "scanner": "scanner-primary", "fingerprint": "53dc0ee17ed9ce92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e42693d4d67b952", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/inventario-html/page.tsx:563"}, "properties": {"repobilityId": "b8cba884d962a361", "scanner": "scanner-primary", "fingerprint": "8e42693d4d67b952", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc6d6fb5aa6a696d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/inventario-html/page.tsx:569"}, "properties": {"repobilityId": "0a5ab338b7e168e8", "scanner": "scanner-primary", "fingerprint": "dc6d6fb5aa6a696d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fb4e952b5da7e54b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/gestione-arrivi/page.tsx:75"}, "properties": {"repobilityId": "cc71cc3e6102e627", "scanner": "scanner-primary", "fingerprint": "fb4e952b5da7e54b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0e21b74235d35ba", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/_data.ts:1"}, "properties": {"repobilityId": "4e560f97c0bcb89f", "scanner": "scanner-primary", "fingerprint": "b0e21b74235d35ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0f0e8c631c75fb90", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/chat/page.tsx:52"}, "properties": {"repobilityId": "ce64aa69f15ddf97", "scanner": "scanner-primary", "fingerprint": "0f0e8c631c75fb90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3e6619afa4c3b099", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/w/[slug]/[tavolo]/confirm/page.tsx:88"}, "properties": {"repobilityId": "10028b8399e11025", "scanner": "scanner-primary", "fingerprint": "3e6619afa4c3b099", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-27ff35e63bfa2816", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/page.tsx:609"}, "properties": {"repobilityId": "495ec3188c62026b", "scanner": "scanner-primary", "fingerprint": "27ff35e63bfa2816", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d24778f8d93265e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/page.tsx:47"}, "properties": {"repobilityId": "2430882f62422671", "scanner": "scanner-primary", "fingerprint": "1d24778f8d93265e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc2a8dfa9111e1b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/orders/page.tsx:400"}, "properties": {"repobilityId": "f348bc664f0ce852", "scanner": "scanner-primary", "fingerprint": "cc2a8dfa9111e1b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-30f3a513a61ff451", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:463"}, "properties": {"repobilityId": "1106f3661f01a58c", "scanner": "scanner-primary", "fingerprint": "30f3a513a61ff451", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-037798cef0bd3f22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/maestro-ai/analytics/revenue/page.tsx:451"}, "properties": {"repobilityId": "cd5d04f9954ac6ee", "scanner": "scanner-primary", "fingerprint": "037798cef0bd3f22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-290d1c4e8d10c336", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/customers/[id]/page.tsx:91"}, "properties": {"repobilityId": "5d68b9155ef8c064", "scanner": "scanner-primary", "fingerprint": "290d1c4e8d10c336", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be90acb297c8a7b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/maestro-ai/daily-plan/page.tsx:168"}, "properties": {"repobilityId": "696c137e1a530c7a", "scanner": "scanner-primary", "fingerprint": "be90acb297c8a7b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5696b58885496adb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/page.tsx:3"}, "properties": {"repobilityId": "c55b5964ae353c23", "scanner": "scanner-primary", "fingerprint": "5696b58885496adb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4b51b1c3dde4d69b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/carica-menu/page.tsx:3"}, "properties": {"repobilityId": "171f896cb5f2d89c", "scanner": "scanner-primary", "fingerprint": "4b51b1c3dde4d69b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-765698565cc29ea4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/ordini/page.tsx:3"}, "properties": {"repobilityId": "9e12b1a5277893f7", "scanner": "scanner-primary", "fingerprint": "765698565cc29ea4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-fe27e84205188ba1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/lapa-wine/cantina/page.tsx:3"}, "properties": {"repobilityId": "4a06d2fc96e6030f", "scanner": "scanner-primary", "fingerprint": "fe27e84205188ba1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a069f68ea38162ed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/page.tsx:943"}, "properties": {"repobilityId": "4a58dab501b40dd4", "scanner": "scanner-primary", "fingerprint": "a069f68ea38162ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f559bbda63d7fc54", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/time-attendance/admin/page.tsx:665"}, "properties": {"repobilityId": "01836437d391518e", "scanner": "scanner-primary", "fingerprint": "f559bbda63d7fc54", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5582e75c4ee5a5aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/time-attendance/admin/page.tsx:182"}, "properties": {"repobilityId": "5962d447845fdfec", "scanner": "scanner-primary", "fingerprint": "5582e75c4ee5a5aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-565d82e39db861f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/product-creator/select-products/page.tsx:108"}, "properties": {"repobilityId": "75a573ce93aa70de", "scanner": "scanner-primary", "fingerprint": "565d82e39db861f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd8b3244cdbd1b36", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/catalogo-foto/page.tsx:647"}, "properties": {"repobilityId": "42d77ca529f4239f", "scanner": "scanner-primary", "fingerprint": "fd8b3244cdbd1b36", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-38ce60c0f0ebfc2d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/ordini-smart/page.tsx:204"}, "properties": {"repobilityId": "52b1519eb3789553", "scanner": "scanner-primary", "fingerprint": "38ce60c0f0ebfc2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0c8d11d181eb462c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/auth-helpers.ts:22"}, "properties": {"repobilityId": "a7049e54af41a552", "scanner": "scanner-primary", "fingerprint": "0c8d11d181eb462c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2d5983f07921869", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/kv.ts:31"}, "properties": {"repobilityId": "3d203c461e2efb99", "scanner": "scanner-primary", "fingerprint": "b2d5983f07921869", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-277e2b5ce94b1f17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/face-recognition.ts:17"}, "properties": {"repobilityId": "927f83885c175003", "scanner": "scanner-primary", "fingerprint": "277e2b5ce94b1f17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a0604601845c926", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo-auth.ts:42"}, "properties": {"repobilityId": "daf24e4a34703649", "scanner": "scanner-primary", "fingerprint": "0a0604601845c926", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb98776092373099", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/review-manager/sync-service.ts:264"}, "properties": {"repobilityId": "8b704790ae90216d", "scanner": "scanner-primary", "fingerprint": "bb98776092373099", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c587644d666def54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.test.ts:61"}, "properties": {"repobilityId": "8b239ef65775d011", "scanner": "scanner-primary", "fingerprint": "c587644d666def54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65cb3b381c91cbd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/timeline-utils.ts:113"}, "properties": {"repobilityId": "1c0149e223c2535c", "scanner": "scanner-primary", "fingerprint": "65cb3b381c91cbd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-989201f266ef99a2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/super-dashboard/hooks/useDashboardData.ts:91"}, "properties": {"repobilityId": "e51403aec917ced8", "scanner": "scanner-primary", "fingerprint": "989201f266ef99a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-df8867dd78036e32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/super-dashboard/hooks/useDashboardData.ts:184"}, "properties": {"repobilityId": "05bb64321810338d", "scanner": "scanner-primary", "fingerprint": "df8867dd78036e32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ae57799643cd33f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/notifications/email.ts:205"}, "properties": {"repobilityId": "0bdba4247e02329a", "scanner": "scanner-primary", "fingerprint": "4ae57799643cd33f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b3abbac09602771", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/notifications/telegram.ts:38"}, "properties": {"repobilityId": "8121fba6a22df1a3", "scanner": "scanner-primary", "fingerprint": "1b3abbac09602771", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e8b0bbb22d1e4f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/sync/pickingSync.ts:34"}, "properties": {"repobilityId": "5acc07abb1fafbfd", "scanner": "scanner-primary", "fingerprint": "6e8b0bbb22d1e4f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17ac753146ff7dc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-client.ts:127"}, "properties": {"repobilityId": "b73fd0e466362531", "scanner": "scanner-primary", "fingerprint": "17ac753146ff7dc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3403b0cea4ec8d47", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher-config.ts:191"}, "properties": {"repobilityId": "22739a5c802e3f38", "scanner": "scanner-primary", "fingerprint": "3403b0cea4ec8d47", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a5d026d4b1d803c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/skills-loader.ts:316"}, "properties": {"repobilityId": "37a0b1d016110751", "scanner": "scanner-primary", "fingerprint": "4a5d026d4b1d803c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e20e64de6aed823", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/contact-enricher.example.ts:31"}, "properties": {"repobilityId": "9f76d1adb35e3f61", "scanner": "scanner-primary", "fingerprint": "8e20e64de6aed823", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fddc5f0ac97a9e36", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/tools.ts:209"}, "properties": {"repobilityId": "c220448a08ecce5c", "scanner": "scanner-primary", "fingerprint": "fddc5f0ac97a9e36", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e602190727093559", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/tools.ts:112"}, "properties": {"repobilityId": "0c0531c5502efac6", "scanner": "scanner-primary", "fingerprint": "e602190727093559", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2ea240214a4c539", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/claude-service.ts:376"}, "properties": {"repobilityId": "c3d64ca291563b71", "scanner": "scanner-primary", "fingerprint": "f2ea240214a4c539", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7429f76cb842de92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/claude-service.ts:138"}, "properties": {"repobilityId": "99947e6eec77d784", "scanner": "scanner-primary", "fingerprint": "7429f76cb842de92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcf637010a90c9f0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/ai/autonomous-agent.ts:337"}, "properties": {"repobilityId": "b5dbe5123f75f59a", "scanner": "scanner-primary", "fingerprint": "dcf637010a90c9f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cde1fc991ab7333a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/ai/autonomous-agent.ts:89"}, "properties": {"repobilityId": "e30bb6f52b4739d4", "scanner": "scanner-primary", "fingerprint": "cde1fc991ab7333a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc84aaa340a90c78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/sessionManager.ts:50"}, "properties": {"repobilityId": "f822a18fdbc88ff0", "scanner": "scanner-primary", "fingerprint": "fc84aaa340a90c78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b15c6cda536b05ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-helper.ts:20"}, "properties": {"repobilityId": "ac6852e9eae40b8e", "scanner": "scanner-primary", "fingerprint": "b15c6cda536b05ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3ecfb65c3cc6e83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/admin-session.ts:38"}, "properties": {"repobilityId": "f0ec1d404295a29b", "scanner": "scanner-primary", "fingerprint": "f3ecfb65c3cc6e83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca118d8e16274a0d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/odoo/inventoryClient.ts:406"}, "properties": {"repobilityId": "c5cc8c312bdcfa07", "scanner": "scanner-primary", "fingerprint": "ca118d8e16274a0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f359d45640a35c38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/inventoryClient.ts:68"}, "properties": {"repobilityId": "9558e45fa4bad549", "scanner": "scanner-primary", "fingerprint": "f359d45640a35c38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a76a4795a12cb2d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/client.ts:31"}, "properties": {"repobilityId": "76da25ef0adffefb", "scanner": "scanner-primary", "fingerprint": "a76a4795a12cb2d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5531165698938a9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/rpcClient.ts:19"}, "properties": {"repobilityId": "54de35d703b18c7b", "scanner": "scanner-primary", "fingerprint": "5531165698938a9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4baea73e9ebab953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/odoo-auth-local.ts:18"}, "properties": {"repobilityId": "0131fd4ed116a1fc", "scanner": "scanner-primary", "fingerprint": "4baea73e9ebab953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ccf05913c2ed1180", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/pickingClient.ts:97"}, "properties": {"repobilityId": "7c36b4dc37371fdc", "scanner": "scanner-primary", "fingerprint": "ccf05913c2ed1180", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2af09bcb359b596c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/odoo/xmlrpc-client.ts:66"}, "properties": {"repobilityId": "652193046bfc5d37", "scanner": "scanner-primary", "fingerprint": "2af09bcb359b596c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cca60c6d65300c9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/lapa-agents/stats.ts:293"}, "properties": {"repobilityId": "cdaea1a1aece1419", "scanner": "scanner-primary", "fingerprint": "2cca60c6d65300c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1b5945888654a528", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/stats.ts:154"}, "properties": {"repobilityId": "33c07de78237733f", "scanner": "scanner-primary", "fingerprint": "1b5945888654a528", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-837f569d50b4c8cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/orchestrator.ts:598"}, "properties": {"repobilityId": "9ecea5418948a38c", "scanner": "scanner-primary", "fingerprint": "837f569d50b4c8cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0d742293359a2af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/product-embedding-service.ts:91"}, "properties": {"repobilityId": "d0fa39ad34977e66", "scanner": "scanner-primary", "fingerprint": "e0d742293359a2af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f706d96319a2171f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/attachment-analyzer.ts:87"}, "properties": {"repobilityId": "067987db496db1cc", "scanner": "scanner-primary", "fingerprint": "f706d96319a2171f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cb0f2cdfc42b427", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/conversation-store.ts:67"}, "properties": {"repobilityId": "d336682705245996", "scanner": "scanner-primary", "fingerprint": "8cb0f2cdfc42b427", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5cb0a291b04df81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/helpdesk-agent.ts:214"}, "properties": {"repobilityId": "0a77cdeace857e17", "scanner": "scanner-primary", "fingerprint": "e5cb0a291b04df81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-788eb95970cb4e63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/example-api-route.ts:190"}, "properties": {"repobilityId": "3ee79f0e25d43c8c", "scanner": "scanner-primary", "fingerprint": "788eb95970cb4e63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3850bad742ef59a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 lib/lapa-agents/agents/example-component.tsx:358"}, "properties": {"repobilityId": "84c24c068a4a29b0", "scanner": "scanner-primary", "fingerprint": "a3850bad742ef59a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-10260146af0d2acd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 lib/lapa-agents/agents/example-component.tsx:396"}, "properties": {"repobilityId": "31722b972bc059e8", "scanner": "scanner-primary", "fingerprint": "10260146af0d2acd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a14294622888aef5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/orders-agent.ts:143"}, "properties": {"repobilityId": "089afea1b499d84c", "scanner": "scanner-primary", "fingerprint": "a14294622888aef5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db44ae1cdba57e60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.example.ts:11"}, "properties": {"repobilityId": "6f4db56da7ea5856", "scanner": "scanner-primary", "fingerprint": "db44ae1cdba57e60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-215e37e145837e6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/test-helpdesk-agent.ts:9"}, "properties": {"repobilityId": "6f859f0bc0f482c9", "scanner": "scanner-primary", "fingerprint": "215e37e145837e6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3a628be7827dfa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.test.ts:11"}, "properties": {"repobilityId": "b77842b49b06976d", "scanner": "scanner-primary", "fingerprint": "a3a628be7827dfa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea0ad1a132e9a64c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/products-agent.ts:240"}, "properties": {"repobilityId": "5ed9aa668910760e", "scanner": "scanner-primary", "fingerprint": "ea0ad1a132e9a64c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb0e07ce70ef393e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/agents/invoices-agent.ts:124"}, "properties": {"repobilityId": "dd0515c3f6e21c98", "scanner": "scanner-primary", "fingerprint": "cb0e07ce70ef393e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21021d650536e933", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/memory/conversation-memory.ts:377"}, "properties": {"repobilityId": "3107f42df05c1e6f", "scanner": "scanner-primary", "fingerprint": "21021d650536e933", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0928551bd8c14f85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/lapa-agents/examples/test-invoices-agent.ts:14"}, "properties": {"repobilityId": "c43876cecc695af8", "scanner": "scanner-primary", "fingerprint": "0928551bd8c14f85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-750fa75820111bd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/mcp-tools/odoo-tools.ts:47"}, "properties": {"repobilityId": "de95c5660d157cad", "scanner": "scanner-primary", "fingerprint": "750fa75820111bd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38cf3ffd5c14d2c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/social-ai/embedding-service.ts:98"}, "properties": {"repobilityId": "b54572bfbec34074", "scanner": "scanner-primary", "fingerprint": "38cf3ffd5c14d2c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a10961b1b3d1932", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/social-ai/sentiment-analyzer.ts:100"}, "properties": {"repobilityId": "115f9f834f52642f", "scanner": "scanner-primary", "fingerprint": "6a10961b1b3d1932", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b43c9a45fb8c371", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/stratega-recupero.ts:698"}, "properties": {"repobilityId": "caebab6b20623b1e", "scanner": "scanner-primary", "fingerprint": "2b43c9a45fb8c371", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b2bf523add736a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/investigatore-societario.ts:141"}, "properties": {"repobilityId": "12d0cfe147ca8509", "scanner": "scanner-primary", "fingerprint": "5b2bf523add736a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11bed00a921280c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/debt-recovery/analista-fallimenti.ts:193"}, "properties": {"repobilityId": "c618cf64bba5b319", "scanner": "scanner-primary", "fingerprint": "11bed00a921280c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e96d8759776d59c3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/sales/daily-assistant.ts:356"}, "properties": {"repobilityId": "62185da0bcd4d0db", "scanner": "scanner-primary", "fingerprint": "e96d8759776d59c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-81188679f0e6d6d7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/base-agent.ts:122"}, "properties": {"repobilityId": "7282c8e33e011f18", "scanner": "scanner-primary", "fingerprint": "81188679f0e6d6d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4367e66e3834598e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/base-agent.ts:364"}, "properties": {"repobilityId": "dd2ae16eceb20fe5", "scanner": "scanner-primary", "fingerprint": "4367e66e3834598e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4dfa2b8e6c52970", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/core/orchestrator.ts:338"}, "properties": {"repobilityId": "815cdd5400bfc2d7", "scanner": "scanner-primary", "fingerprint": "b4dfa2b8e6c52970", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-324802ab2cbac5fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/orchestrator.ts:57"}, "properties": {"repobilityId": "0dab1a6034fa2c51", "scanner": "scanner-primary", "fingerprint": "324802ab2cbac5fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19f4d9fd209f4d64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/auto-discovery.ts:23"}, "properties": {"repobilityId": "052d57fb38bcd17d", "scanner": "scanner-primary", "fingerprint": "19f4d9fd209f4d64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0cad0607477dca2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/core/agent-factory.ts:22"}, "properties": {"repobilityId": "ff609b440103a204", "scanner": "scanner-primary", "fingerprint": "a0cad0607477dca2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f63b1d499332345", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/agents/specialized/specialized-agent.ts:225"}, "properties": {"repobilityId": "a6dd3c09c01d67c7", "scanner": "scanner-primary", "fingerprint": "7f63b1d499332345", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-91248b9a3a7dfee6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/agents/specialized/specialized-agent.ts:28"}, "properties": {"repobilityId": "a1151f0f8abf979a", "scanner": "scanner-primary", "fingerprint": "91248b9a3a7dfee6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-852520fe984c1380", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/suppliers/sync-suppliers-odoo.ts:324"}, "properties": {"repobilityId": "8f933a23641a1847", "scanner": "scanner-primary", "fingerprint": "852520fe984c1380", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-212940e6dcf61bbd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner.ts:97"}, "properties": {"repobilityId": "375d074d20aad10c", "scanner": "scanner-primary", "fingerprint": "212940e6dcf61bbd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9fb465f943a4090", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/web-search.ts:63"}, "properties": {"repobilityId": "3f574ea7929cf575", "scanner": "scanner-primary", "fingerprint": "a9fb465f943a4090", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f3061ee4578d6b0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/services/contact-scanner-service.ts:317"}, "properties": {"repobilityId": "7d3632bf0d7c0d29", "scanner": "scanner-primary", "fingerprint": "6f3061ee4578d6b0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-23f5c824c7c356b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-scanner-service.ts:39"}, "properties": {"repobilityId": "0f28115bea27b1e0", "scanner": "scanner-primary", "fingerprint": "23f5c824c7c356b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c02d5b28541ed244", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/google-places.ts:107"}, "properties": {"repobilityId": "d97cb8da72e6c21d", "scanner": "scanner-primary", "fingerprint": "c02d5b28541ed244", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10628296faebde0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-video-analysis.ts:116"}, "properties": {"repobilityId": "38055676ee8f1560", "scanner": "scanner-primary", "fingerprint": "10628296faebde0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c43ecc0a5611db3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/inventory-ai-analysis.ts:222"}, "properties": {"repobilityId": "676bdc42fcb2d9d9", "scanner": "scanner-primary", "fingerprint": "0c43ecc0a5611db3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f04c038e2dc7de3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/bank-statement-import-service.ts:104"}, "properties": {"repobilityId": "f0e12aeaf8fa13a0", "scanner": "scanner-primary", "fingerprint": "1f04c038e2dc7de3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5583181f84fecf82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/gemini-vision.ts:137"}, "properties": {"repobilityId": "424edf09c114725b", "scanner": "scanner-primary", "fingerprint": "5583181f84fecf82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48f2f4a6972f387a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/contact-extraction-service.ts:87"}, "properties": {"repobilityId": "cdc94e9865199df9", "scanner": "scanner-primary", "fingerprint": "48f2f4a6972f387a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4300690b68fa8d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/services/price-review-service.ts:23"}, "properties": {"repobilityId": "5e26654462631b09", "scanner": "scanner-primary", "fingerprint": "c4300690b68fa8d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-154f8b72554ab561", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-engine.ts:122"}, "properties": {"repobilityId": "e7c65d096aa7124f", "scanner": "scanner-primary", "fingerprint": "154f8b72554ab561", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-facd9e35f7772294", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/ai-service.ts:61"}, "properties": {"repobilityId": "f6b88a61e6f50c0e", "scanner": "scanner-primary", "fingerprint": "facd9e35f7772294", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e261c7d21fb5481", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/vehicle-stock-service.ts:173"}, "properties": {"repobilityId": "82eb19eae7feed66", "scanner": "scanner-primary", "fingerprint": "1e261c7d21fb5481", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-628bfecaf65447ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/period-metrics.ts:39"}, "properties": {"repobilityId": "27d882fcf0a00861", "scanner": "scanner-primary", "fingerprint": "628bfecaf65447ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4a7a5d273205b98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-orders.ts:73"}, "properties": {"repobilityId": "c954cca2ce583356", "scanner": "scanner-primary", "fingerprint": "f4a7a5d273205b98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73ac9477559b1683", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo-v2.ts:152"}, "properties": {"repobilityId": "ef9471d3a2578ae7", "scanner": "scanner-primary", "fingerprint": "73ac9477559b1683", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c78d4bb80457439", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/maestro/sync-odoo.ts:321"}, "properties": {"repobilityId": "6a31c0e6ffd4f16d", "scanner": "scanner-primary", "fingerprint": "7c78d4bb80457439", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9665d2dd973b721d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro/sync-odoo.ts:58"}, "properties": {"repobilityId": "06bfb5ab1a87c061", "scanner": "scanner-primary", "fingerprint": "9665d2dd973b721d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16e2439fdad32a49", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:103"}, "properties": {"repobilityId": "0ee8054b76061d88", "scanner": "scanner-primary", "fingerprint": "16e2439fdad32a49", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c51cd39dfe139f29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/sales-analytics-tools.ts:32"}, "properties": {"repobilityId": "242fe3eb28096c67", "scanner": "scanner-primary", "fingerprint": "c51cd39dfe139f29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f0dac73757965c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/math-tools.ts:184"}, "properties": {"repobilityId": "248eae87aac7c675", "scanner": "scanner-primary", "fingerprint": "9f0dac73757965c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ae1831da2a485ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/action-executor-tools.ts:85"}, "properties": {"repobilityId": "a3faa17460893e2e", "scanner": "scanner-primary", "fingerprint": "9ae1831da2a485ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e94bcc2201c53cef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/product-tools.ts:32"}, "properties": {"repobilityId": "bc3189b5b2a879fe", "scanner": "scanner-primary", "fingerprint": "e94bcc2201c53cef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95f055b1ba09f92a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/external-research-tools.ts:35"}, "properties": {"repobilityId": "a4fcd7b7b64a3703", "scanner": "scanner-primary", "fingerprint": "95f055b1ba09f92a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df57c2ae66a12fff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/maestro-intelligence-tools.ts:32"}, "properties": {"repobilityId": "65aa913aaf32f199", "scanner": "scanner-primary", "fingerprint": "df57c2ae66a12fff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a7f08e4733d18ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/customer-tools.ts:32"}, "properties": {"repobilityId": "c12a142e82edd0cd", "scanner": "scanner-primary", "fingerprint": "1a7f08e4733d18ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03a219ec99a17bdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/churn-tools.ts:74"}, "properties": {"repobilityId": "6a68f1b64daeb3e7", "scanner": "scanner-primary", "fingerprint": "03a219ec99a17bdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b1c5a26b558dd24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/analytics-tools.ts:161"}, "properties": {"repobilityId": "61b4cab1ecb5cafb", "scanner": "scanner-primary", "fingerprint": "5b1c5a26b558dd24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1bdbfa3ece98f43d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/tools/forecasting-tools.ts:72"}, "properties": {"repobilityId": "961062712487254c", "scanner": "scanner-primary", "fingerprint": "1bdbfa3ece98f43d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d0e007705fd99b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/base-agent.ts:58"}, "properties": {"repobilityId": "ddde305c375f6ff9", "scanner": "scanner-primary", "fingerprint": "9d0e007705fd99b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5640c89b4eed2469", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/maestro-agents/core/orchestrator.ts:50"}, "properties": {"repobilityId": "f4128b91470473ce", "scanner": "scanner-primary", "fingerprint": "5640c89b4eed2469", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b1eda6a80053209", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/sales-db.ts:528"}, "properties": {"repobilityId": "c4643b6f7539d58a", "scanner": "scanner-primary", "fingerprint": "0b1eda6a80053209", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f2461e52df8d89e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/controlloVideoDB.ts:63"}, "properties": {"repobilityId": "5e06c081d47ffd51", "scanner": "scanner-primary", "fingerprint": "3f2461e52df8d89e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0b6489c587e19d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/inventoryVideoDB.ts:63"}, "properties": {"repobilityId": "de8467cde65efd7f", "scanner": "scanner-primary", "fingerprint": "c0b6489c587e19d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff563ef65734a59a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/db/pickingDB.ts:76"}, "properties": {"repobilityId": "51e2e623c975d1cd", "scanner": "scanner-primary", "fingerprint": "ff563ef65734a59a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bc7225a61b6f88b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/store/appStore.ts:14"}, "properties": {"repobilityId": "44b80bf594b2598c", "scanner": "scanner-primary", "fingerprint": "9bc7225a61b6f88b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a17103afc0f329bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/store/authStore.ts:16"}, "properties": {"repobilityId": "1da22d461f1ec558", "scanner": "scanner-primary", "fingerprint": "a17103afc0f329bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8b4b0fd159e225f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/auth-service.ts:89"}, "properties": {"repobilityId": "526eb403beb7849a", "scanner": "scanner-primary", "fingerprint": "b8b4b0fd159e225f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-aa701ffb18c182ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/auth-service.ts:112"}, "properties": {"repobilityId": "7cfd49e5f9f14467", "scanner": "scanner-primary", "fingerprint": "aa701ffb18c182ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03c18eca940d8f84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/sales-analyzer.ts:196"}, "properties": {"repobilityId": "63fd3f3e23cdf7a6", "scanner": "scanner-primary", "fingerprint": "03c18eca940d8f84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f347fda927e799f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/ai-prediction-engine.ts:156"}, "properties": {"repobilityId": "d100b8b752eea527", "scanner": "scanner-primary", "fingerprint": "f347fda927e799f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27c178ee03ab6cf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/data-service.ts:30"}, "properties": {"repobilityId": "4a2b47f268bea88d", "scanner": "scanner-primary", "fingerprint": "27c178ee03ab6cf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c27c4cdeca47c536", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/prediction-engine.ts:146"}, "properties": {"repobilityId": "01ec57f04081b861", "scanner": "scanner-primary", "fingerprint": "c27c4cdeca47c536", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6fe8bca09f4c2dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/odoo-integration.ts:60"}, "properties": {"repobilityId": "30acac637ccd0a6e", "scanner": "scanner-primary", "fingerprint": "f6fe8bca09f4c2dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e0985c7075a57c2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/smart-alert-system.ts:299"}, "properties": {"repobilityId": "fe4d2e261888d35e", "scanner": "scanner-primary", "fingerprint": "0e0985c7075a57c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b6497042ee645bde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/smart-alert-system.ts:171"}, "properties": {"repobilityId": "c4c0b22c5d1fc262", "scanner": "scanner-primary", "fingerprint": "b6497042ee645bde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f378c637c598bac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/smart-ordering/cron-service.ts:132"}, "properties": {"repobilityId": "3e7271188537add1", "scanner": "scanner-primary", "fingerprint": "2f378c637c598bac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cf693f0e838bcdd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/cron-service.ts:23"}, "properties": {"repobilityId": "39f74b0a162958ee", "scanner": "scanner-primary", "fingerprint": "cf693f0e838bcdd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-025f24ee48671c8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/smart-ordering/lead-time-analyzer.ts:124"}, "properties": {"repobilityId": "737d5a02bd8a6fe5", "scanner": "scanner-primary", "fingerprint": "025f24ee48671c8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68c94950248b374c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/reply-generator.ts:143"}, "properties": {"repobilityId": "439d27574ab5354c", "scanner": "scanner-primary", "fingerprint": "68c94950248b374c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32954440cd554a97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-summarizer.ts:124"}, "properties": {"repobilityId": "69dd256ed441bb75", "scanner": "scanner-primary", "fingerprint": "32954440cd554a97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d023961cbf2c9d51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/embedding-service.ts:104"}, "properties": {"repobilityId": "1cb21c095ff83d03", "scanner": "scanner-primary", "fingerprint": "d023961cbf2c9d51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2bf29afc88cf30e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/gmail-client.ts:85"}, "properties": {"repobilityId": "fb52025b45917a46", "scanner": "scanner-primary", "fingerprint": "b2bf29afc88cf30e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-553d54cd56817425", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/email-classifier.ts:165"}, "properties": {"repobilityId": "68184f66c204f57b", "scanner": "scanner-primary", "fingerprint": "553d54cd56817425", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b76869c1b7d7c20", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/email-ai/autonomous-agent.ts:430"}, "properties": {"repobilityId": "a5f220ca0408e5f8", "scanner": "scanner-primary", "fingerprint": "4b76869c1b7d7c20", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-14ced140ad01d5ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email-ai/autonomous-agent.ts:349"}, "properties": {"repobilityId": "54c25e21a8a6de9e", "scanner": "scanner-primary", "fingerprint": "14ced140ad01d5ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-243d178ff1542c2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/registro-cassaforte/reolink-service.ts:106"}, "properties": {"repobilityId": "81251a584d304520", "scanner": "scanner-primary", "fingerprint": "243d178ff1542c2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45ac5f16f1aef352", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/generate-recipes-11-20.js:87"}, "properties": {"repobilityId": "2502c49ab455444d", "scanner": "scanner-primary", "fingerprint": "45ac5f16f1aef352", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dba777625c51c67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.ts:348"}, "properties": {"repobilityId": "bd67fe08e6c1fb1d", "scanner": "scanner-primary", "fingerprint": "7dba777625c51c67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12de1f94d8bc1525", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-article-direct.ts:55"}, "properties": {"repobilityId": "8e93d090fc7713cc", "scanner": "scanner-primary", "fingerprint": "12de1f94d8bc1525", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a08d2298cb9213df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.ts:125"}, "properties": {"repobilityId": "87e19f9a456dc2f8", "scanner": "scanner-primary", "fingerprint": "a08d2298cb9213df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87ad28f87cdc594a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-winning-model.ts:27"}, "properties": {"repobilityId": "2b92efc6b89ca2c2", "scanner": "scanner-primary", "fingerprint": "87ad28f87cdc594a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a783a971bba929d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.ts:348"}, "properties": {"repobilityId": "40a9faa020bdac8c", "scanner": "scanner-primary", "fingerprint": "6a783a971bba929d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19244c61f95646f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-376.ts:51"}, "properties": {"repobilityId": "ed4401caff520ac7", "scanner": "scanner-primary", "fingerprint": "19244c61f95646f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85f2f1c6adbb3d60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.ts:25"}, "properties": {"repobilityId": "17da6d2331a4c21c", "scanner": "scanner-primary", "fingerprint": "85f2f1c6adbb3d60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a153c991d2df90a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.ts:51"}, "properties": {"repobilityId": "d8659294fbc41159", "scanner": "scanner-primary", "fingerprint": "3a153c991d2df90a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-553f23a2b58ac3bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js:51"}, "properties": {"repobilityId": "6ba361279d8de50f", "scanner": "scanner-primary", "fingerprint": "553f23a2b58ac3bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9adc17c4de904905", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:66"}, "properties": {"repobilityId": "e98c50a5a2c42c10", "scanner": "scanner-primary", "fingerprint": "9adc17c4de904905", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df07572efe435398", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-article-347.ts:51"}, "properties": {"repobilityId": "6000671552a64e5f", "scanner": "scanner-primary", "fingerprint": "df07572efe435398", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a99d8f25868756c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-115.ts:5"}, "properties": {"repobilityId": "5ca885ae4a2ee950", "scanner": "scanner-primary", "fingerprint": "a99d8f25868756c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28f15ac4608bccfe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:289"}, "properties": {"repobilityId": "b95d9f559a38bcae", "scanner": "scanner-primary", "fingerprint": "28f15ac4608bccfe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-609986530b7231d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.ts:28"}, "properties": {"repobilityId": "8869d9bef74f1357", "scanner": "scanner-primary", "fingerprint": "609986530b7231d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1063cf475fad92c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-translations-115.ts:8"}, "properties": {"repobilityId": "37f2a1b2bf4bf736", "scanner": "scanner-primary", "fingerprint": "1063cf475fad92c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87d16c725180c42d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:81"}, "properties": {"repobilityId": "6d48bf91e9310d8d", "scanner": "scanner-primary", "fingerprint": "87d16c725180c42d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8117f46dbf46f046", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-german-keywords.ts:73"}, "properties": {"repobilityId": "07fcfe776032c1d6", "scanner": "scanner-primary", "fingerprint": "8117f46dbf46f046", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dfde8fdef16d790", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-53-60.ts:167"}, "properties": {"repobilityId": "22d368b44971352c", "scanner": "scanner-primary", "fingerprint": "8dfde8fdef16d790", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa2e1e7a7af48865", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.ts:126"}, "properties": {"repobilityId": "001307ba92174e93", "scanner": "scanner-primary", "fingerprint": "aa2e1e7a7af48865", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d79087b15dce4df7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.ts:124"}, "properties": {"repobilityId": "cee2ddcfd7ad7920", "scanner": "scanner-primary", "fingerprint": "d79087b15dce4df7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4acc9c8a79b48442", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.ts:22"}, "properties": {"repobilityId": "d702a3e3ef9e83ce", "scanner": "scanner-primary", "fingerprint": "4acc9c8a79b48442", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e62328fa1e9baaa9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:209"}, "properties": {"repobilityId": "3d80614e62ed7a2b", "scanner": "scanner-primary", "fingerprint": "e62328fa1e9baaa9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7a146c129d6c0e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v6.ts:182"}, "properties": {"repobilityId": "32a68c4c57c5134c", "scanner": "scanner-primary", "fingerprint": "a7a146c129d6c0e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbe67db4e8177e55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-12-20.ts:21"}, "properties": {"repobilityId": "e65fee2584b875d9", "scanner": "scanner-primary", "fingerprint": "dbe67db4e8177e55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-987ffd2d7d804254", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts:127"}, "properties": {"repobilityId": "d8ea1e44fe1b853b", "scanner": "scanner-primary", "fingerprint": "987ffd2d7d804254", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8708e2b2b6e3341", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-115.ts:13"}, "properties": {"repobilityId": "809aa9b987f59e42", "scanner": "scanner-primary", "fingerprint": "e8708e2b2b6e3341", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e74d53c45429209", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:263"}, "properties": {"repobilityId": "2c12c71ef1b70fd4", "scanner": "scanner-primary", "fingerprint": "5e74d53c45429209", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-371a3e197cf192c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-43-50.ts:167"}, "properties": {"repobilityId": "d905e3bfc650e3b1", "scanner": "scanner-primary", "fingerprint": "371a3e197cf192c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-751240bfdbfffc11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-translations-116.ts:13"}, "properties": {"repobilityId": "7b20a12bc3e9721a", "scanner": "scanner-primary", "fingerprint": "751240bfdbfffc11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52fa0ff0a4e24171", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:156"}, "properties": {"repobilityId": "b800fab9e85742f6", "scanner": "scanner-primary", "fingerprint": "52fa0ff0a4e24171", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b107cab9aebe89f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-public-user.ts:74"}, "properties": {"repobilityId": "bb3eff04eddf19a6", "scanner": "scanner-primary", "fingerprint": "4b107cab9aebe89f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2daa685d5bbf5ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-german-419.ts:51"}, "properties": {"repobilityId": "95b237cb7567b33e", "scanner": "scanner-primary", "fingerprint": "e2daa685d5bbf5ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bde0b78dacc660ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:214"}, "properties": {"repobilityId": "5e67364b61bb04c3", "scanner": "scanner-primary", "fingerprint": "bde0b78dacc660ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-784ca42198f5ffdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.ts:65"}, "properties": {"repobilityId": "da1d83d204cd1657", "scanner": "scanner-primary", "fingerprint": "784ca42198f5ffdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68c1a09e39dce9c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-users.ts:54"}, "properties": {"repobilityId": "fe5ce8a823e9cb75", "scanner": "scanner-primary", "fingerprint": "68c1a09e39dce9c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1216f455427257b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:131"}, "properties": {"repobilityId": "2aa41bc8b664bf2d", "scanner": "scanner-primary", "fingerprint": "1216f455427257b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4350feebdda83059", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v2.ts:113"}, "properties": {"repobilityId": "a30550af7abf04b3", "scanner": "scanner-primary", "fingerprint": "4350feebdda83059", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3706ccbaefd9dd20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-geolocation.ts:93"}, "properties": {"repobilityId": "a212e1a4d01e4ae6", "scanner": "scanner-primary", "fingerprint": "3706ccbaefd9dd20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06f0784f02e865ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-fixed.ts:163"}, "properties": {"repobilityId": "cf4347a4a3afcc07", "scanner": "scanner-primary", "fingerprint": "06f0784f02e865ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f05ba3c62619df1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-products-seo.ts:280"}, "properties": {"repobilityId": "66acdae9a5a7b071", "scanner": "scanner-primary", "fingerprint": "f05ba3c62619df1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d50bec713bf340b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fetch-all.ts:87"}, "properties": {"repobilityId": "1a2aa892d56eb667", "scanner": "scanner-primary", "fingerprint": "d50bec713bf340b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca9c7369b668e6cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:68"}, "properties": {"repobilityId": "1cc2bd00bc1c7ee4", "scanner": "scanner-primary", "fingerprint": "ca9c7369b668e6cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-837dcdc17322f2bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/manual-test-article-1.ts:65"}, "properties": {"repobilityId": "4d3996f463001b87", "scanner": "scanner-primary", "fingerprint": "837dcdc17322f2bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85f590e115a909ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:101"}, "properties": {"repobilityId": "6cbe0b3a461d764e", "scanner": "scanner-primary", "fingerprint": "85f590e115a909ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-244b195826a52fae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.ts:51"}, "properties": {"repobilityId": "929a8ef1d8b115e5", "scanner": "scanner-primary", "fingerprint": "244b195826a52fae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4516b98e845c64b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/regenerate-incomplete-articles.ts:72"}, "properties": {"repobilityId": "da5bcbefad1b97f7", "scanner": "scanner-primary", "fingerprint": "4516b98e845c64b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84a4424d9b8bbf58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-schema-products.ts:207"}, "properties": {"repobilityId": "56847bead87f7f41", "scanner": "scanner-primary", "fingerprint": "84a4424d9b8bbf58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7d08c9de27a412b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:55"}, "properties": {"repobilityId": "568bead12b7fd0d4", "scanner": "scanner-primary", "fingerprint": "f7d08c9de27a412b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c15bb54051f4695", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-odoo-translations.ts:51"}, "properties": {"repobilityId": "b0888a8eb6e523eb", "scanner": "scanner-primary", "fingerprint": "6c15bb54051f4695", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da93bf56a8009892", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:130"}, "properties": {"repobilityId": "285f2159f4c6a68d", "scanner": "scanner-primary", "fingerprint": "da93bf56a8009892", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9743ee61d947f29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-30-articles.ts:315"}, "properties": {"repobilityId": "7725cea3a2f85596", "scanner": "scanner-primary", "fingerprint": "e9743ee61d947f29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-536986158ab99f21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-segments.ts:54"}, "properties": {"repobilityId": "d9b74bd7fe4e60ad", "scanner": "scanner-primary", "fingerprint": "536986158ab99f21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b128b1f481fdcaa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:103"}, "properties": {"repobilityId": "8726d0fe3047a672", "scanner": "scanner-primary", "fingerprint": "6b128b1f481fdcaa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4959cbc80eb4861", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-420.ts:51"}, "properties": {"repobilityId": "e35325cb96d6628d", "scanner": "scanner-primary", "fingerprint": "a4959cbc80eb4861", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78fe7dfad3327992", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-article-properly.ts:39"}, "properties": {"repobilityId": "f680f3fee7a30086", "scanner": "scanner-primary", "fingerprint": "78fe7dfad3327992", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b63a1410ac4bcf4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:87"}, "properties": {"repobilityId": "c70202ea7eed5c49", "scanner": "scanner-primary", "fingerprint": "2b63a1410ac4bcf4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c55e8ed6940815bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v7.ts:253"}, "properties": {"repobilityId": "d874b1a7c91b6c10", "scanner": "scanner-primary", "fingerprint": "c55e8ed6940815bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d15e57b3d9ae4a9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-translation-method.ts:12"}, "properties": {"repobilityId": "6b0d16475a223b0a", "scanner": "scanner-primary", "fingerprint": "d15e57b3d9ae4a9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11ed8bf7680cc231", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-extraction.ts:42"}, "properties": {"repobilityId": "df72f1409b50db2a", "scanner": "scanner-primary", "fingerprint": "11ed8bf7680cc231", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb6cffaf9bd2efc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:117"}, "properties": {"repobilityId": "21224eaefbc71267", "scanner": "scanner-primary", "fingerprint": "bb6cffaf9bd2efc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcf6dd80c939728b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.ts:17"}, "properties": {"repobilityId": "428216931a7adc3a", "scanner": "scanner-primary", "fingerprint": "bcf6dd80c939728b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9baaa1efd5ac1156", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:234"}, "properties": {"repobilityId": "d2a29d92eda9680e", "scanner": "scanner-primary", "fingerprint": "9baaa1efd5ac1156", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a568e55011b8a2f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.ts:75"}, "properties": {"repobilityId": "83a87f3852c4c0b1", "scanner": "scanner-primary", "fingerprint": "a568e55011b8a2f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5065a03cdf90b75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations.ts:111"}, "properties": {"repobilityId": "a08677bde891a253", "scanner": "scanner-primary", "fingerprint": "b5065a03cdf90b75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0214cb61df1c9269", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:144"}, "properties": {"repobilityId": "05a2752af32ef95b", "scanner": "scanner-primary", "fingerprint": "0214cb61df1c9269", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f1ff96080c8564d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-perfect.ts:61"}, "properties": {"repobilityId": "2393df32e666b7e7", "scanner": "scanner-primary", "fingerprint": "5f1ff96080c8564d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13825e7cccf98370", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article.ts:41"}, "properties": {"repobilityId": "6dfb47274085b49b", "scanner": "scanner-primary", "fingerprint": "13825e7cccf98370", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f1b6478e2616909", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:87"}, "properties": {"repobilityId": "cf9ac69ff8f57bf2", "scanner": "scanner-primary", "fingerprint": "9f1b6478e2616909", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9385142923b93ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-article-89.ts:9"}, "properties": {"repobilityId": "392f944b0612aafe", "scanner": "scanner-primary", "fingerprint": "e9385142923b93ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-017a6279f209f599", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.ts:70"}, "properties": {"repobilityId": "9627b692bf442ef4", "scanner": "scanner-primary", "fingerprint": "017a6279f209f599", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6caafca2902deb03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:128"}, "properties": {"repobilityId": "2575e24c8425d7e7", "scanner": "scanner-primary", "fingerprint": "6caafca2902deb03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17de9aebc9a880c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-random-articles.ts:51"}, "properties": {"repobilityId": "1acbf9b866803eeb", "scanner": "scanner-primary", "fingerprint": "17de9aebc9a880c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-673a1c3c7a561270", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:143"}, "properties": {"repobilityId": "6d8b03dc127e8f7a", "scanner": "scanner-primary", "fingerprint": "673a1c3c7a561270", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1dabdbaad36881ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inject-shop-button.ts:109"}, "properties": {"repobilityId": "17249c3bad38bd89", "scanner": "scanner-primary", "fingerprint": "1dabdbaad36881ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ace3d3950027f5e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:79"}, "properties": {"repobilityId": "2a3d2e7d28836fb9", "scanner": "scanner-primary", "fingerprint": "ace3d3950027f5e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-819c3955152fff81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-companies-taxes.ts:11"}, "properties": {"repobilityId": "2bee3f130033e132", "scanner": "scanner-primary", "fingerprint": "819c3955152fff81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c25e0bea79a217c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-articles-55-60.ts:144"}, "properties": {"repobilityId": "1edc9714fb3d98c7", "scanner": "scanner-primary", "fingerprint": "8c25e0bea79a217c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9c216719f374bc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-helpdesk.ts:92"}, "properties": {"repobilityId": "63c48fe829ecde21", "scanner": "scanner-primary", "fingerprint": "e9c216719f374bc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a812a3eaa7a26fdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.ts:37"}, "properties": {"repobilityId": "08ad8e7cd929d8b0", "scanner": "scanner-primary", "fingerprint": "a812a3eaa7a26fdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-889c6b46c348c8cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:108"}, "properties": {"repobilityId": "9e967617816d60d9", "scanner": "scanner-primary", "fingerprint": "889c6b46c348c8cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba32137739d36e2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-homepage-seo.ts:150"}, "properties": {"repobilityId": "ab8d739f20654c48", "scanner": "scanner-primary", "fingerprint": "ba32137739d36e2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fad1c45946927308", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.ts:330"}, "properties": {"repobilityId": "c0db194ce8fe6a50", "scanner": "scanner-primary", "fingerprint": "fad1c45946927308", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68114b756cf0347d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-random-articles.ts:76"}, "properties": {"repobilityId": "48cfbd40a32ac9c6", "scanner": "scanner-primary", "fingerprint": "68114b756cf0347d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bd070940ae14c24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.ts:35"}, "properties": {"repobilityId": "8c61a8d02470a883", "scanner": "scanner-primary", "fingerprint": "6bd070940ae14c24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28ccdf6ea03d371b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v5.ts:116"}, "properties": {"repobilityId": "573f2de128602fb3", "scanner": "scanner-primary", "fingerprint": "28ccdf6ea03d371b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92f629416d74a8d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-all-60-articles.ts:541"}, "properties": {"repobilityId": "4a208b22edd6d872", "scanner": "scanner-primary", "fingerprint": "92f629416d74a8d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeba715536e709c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/recreate-article-115.ts:17"}, "properties": {"repobilityId": "6d7faa566e55eed2", "scanner": "scanner-primary", "fingerprint": "aeba715536e709c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ea30c2395ad1d75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.ts:120"}, "properties": {"repobilityId": "6a683b0f1ce070c4", "scanner": "scanner-primary", "fingerprint": "4ea30c2395ad1d75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05cae18716e733fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicates.ts:52"}, "properties": {"repobilityId": "6200f66e007a56a7", "scanner": "scanner-primary", "fingerprint": "05cae18716e733fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-430ea0891584dc06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:58"}, "properties": {"repobilityId": "930381ecfae07187", "scanner": "scanner-primary", "fingerprint": "430ea0891584dc06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07d2cb4160b71879", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.ts:61"}, "properties": {"repobilityId": "cc912cf76e196d20", "scanner": "scanner-primary", "fingerprint": "07d2cb4160b71879", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-005006793c6e800d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.ts:52"}, "properties": {"repobilityId": "9c3e516df9ee98aa", "scanner": "scanner-primary", "fingerprint": "005006793c6e800d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b431f215ac2db154", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-articles.ts:9"}, "properties": {"repobilityId": "1b3d71688d3a651b", "scanner": "scanner-primary", "fingerprint": "b431f215ac2db154", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cdba359a0ba7e74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:137"}, "properties": {"repobilityId": "1bfa47815129dba9", "scanner": "scanner-primary", "fingerprint": "0cdba359a0ba7e74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19bf833502334e95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-fix-article-1.ts:65"}, "properties": {"repobilityId": "accc89dcc5846e44", "scanner": "scanner-primary", "fingerprint": "19bf833502334e95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-640d3abc894a6234", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-shop-settings.ts:46"}, "properties": {"repobilityId": "66cbfc0ca91b05d0", "scanner": "scanner-primary", "fingerprint": "640d3abc894a6234", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b2670530224703a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/test-update-field-translations.ts:14"}, "properties": {"repobilityId": "eb4c755524a4c3d5", "scanner": "scanner-primary", "fingerprint": "5b2670530224703a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62333fdee30ee90b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-translatable-fields.ts:51"}, "properties": {"repobilityId": "0cc3ada20e92ffeb", "scanner": "scanner-primary", "fingerprint": "62333fdee30ee90b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a6d3ca1a546c814", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-existing-article.ts:51"}, "properties": {"repobilityId": "44ed815d0538d19c", "scanner": "scanner-primary", "fingerprint": "9a6d3ca1a546c814", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ccc873a36719519", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:104"}, "properties": {"repobilityId": "4e1f8a2405b7168b", "scanner": "scanner-primary", "fingerprint": "9ccc873a36719519", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1166ba57be42cc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:130"}, "properties": {"repobilityId": "2f96b228704ecc78", "scanner": "scanner-primary", "fingerprint": "f1166ba57be42cc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ae0d8f506ba62dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/investigate-translations.ts:9"}, "properties": {"repobilityId": "4036253166add09a", "scanner": "scanner-primary", "fingerprint": "9ae0d8f506ba62dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d4598d97dc244cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/generate-action-plan.ts:205"}, "properties": {"repobilityId": "68cce241514040cf", "scanner": "scanner-primary", "fingerprint": "2d4598d97dc244cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c3325048e54a714", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:191"}, "properties": {"repobilityId": "76b43275f102945e", "scanner": "scanner-primary", "fingerprint": "5c3325048e54a714", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d7ee58556ec736b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.ts:11"}, "properties": {"repobilityId": "701c75592911e128", "scanner": "scanner-primary", "fingerprint": "8d7ee58556ec736b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c278d21146aef16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:64"}, "properties": {"repobilityId": "91e9771b566d9170", "scanner": "scanner-primary", "fingerprint": "3c278d21146aef16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ac92ae5e3fc68d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:315"}, "properties": {"repobilityId": "ffd8871d742a3c95", "scanner": "scanner-primary", "fingerprint": "2ac92ae5e3fc68d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d877170f8542ca64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:118"}, "properties": {"repobilityId": "859b4f40427216e0", "scanner": "scanner-primary", "fingerprint": "d877170f8542ca64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9efbe6f377bd863f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.ts:105"}, "properties": {"repobilityId": "74fd43eb47db9adf", "scanner": "scanner-primary", "fingerprint": "9efbe6f377bd863f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aadca699462f84c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-all-articles-final.ts:20"}, "properties": {"repobilityId": "3c9bf2cde76e6a50", "scanner": "scanner-primary", "fingerprint": "aadca699462f84c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a3f4877b37fbc92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.ts:51"}, "properties": {"repobilityId": "b7866da886edef3d", "scanner": "scanner-primary", "fingerprint": "9a3f4877b37fbc92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-009e22c75eeac53c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-translation-model.ts:9"}, "properties": {"repobilityId": "b46227303b1c837b", "scanner": "scanner-primary", "fingerprint": "009e22c75eeac53c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc1d5c8853eee516", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-final.ts:355"}, "properties": {"repobilityId": "7d8f8d3a63553bc6", "scanner": "scanner-primary", "fingerprint": "cc1d5c8853eee516", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88e5a6afd14a1fd0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/check-multiple-articles.ts:71"}, "properties": {"repobilityId": "eb52facd7da0387e", "scanner": "scanner-primary", "fingerprint": "88e5a6afd14a1fd0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc72127efcb8d463", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:160"}, "properties": {"repobilityId": "3d635dc76d1feaa2", "scanner": "scanner-primary", "fingerprint": "dc72127efcb8d463", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ceb4a19ef0bd1fda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.ts:93"}, "properties": {"repobilityId": "a95c964fc0cffe54", "scanner": "scanner-primary", "fingerprint": "ceb4a19ef0bd1fda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e2336a907a66f24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.ts:65"}, "properties": {"repobilityId": "7ff25e97a7e57a11", "scanner": "scanner-primary", "fingerprint": "1e2336a907a66f24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f9b0ba9084a0242", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.ts:11"}, "properties": {"repobilityId": "d48330b45e44af1b", "scanner": "scanner-primary", "fingerprint": "3f9b0ba9084a0242", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83e6fc11a1bb2a61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-articles-03-20.ts:20"}, "properties": {"repobilityId": "78a4eb37dc613746", "scanner": "scanner-primary", "fingerprint": "83e6fc11a1bb2a61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3b8addf69218dd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:210"}, "properties": {"repobilityId": "d6f5c74a01110c46", "scanner": "scanner-primary", "fingerprint": "b3b8addf69218dd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-388e4f2bad0a7cf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:459"}, "properties": {"repobilityId": "dd02b5bfedee5fe9", "scanner": "scanner-primary", "fingerprint": "388e4f2bad0a7cf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-138149d5f519cad3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:332"}, "properties": {"repobilityId": "b1d5037b8a39cf14", "scanner": "scanner-primary", "fingerprint": "138149d5f519cad3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ed7256a6cdece53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.ts:51"}, "properties": {"repobilityId": "ed4f3a41d1dac162", "scanner": "scanner-primary", "fingerprint": "7ed7256a6cdece53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6e70d1a8c2a7a5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:104"}, "properties": {"repobilityId": "41ca964bee85a469", "scanner": "scanner-primary", "fingerprint": "a6e70d1a8c2a7a5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea56c9b63cb345c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:208"}, "properties": {"repobilityId": "4d5d1dc6f919fbfb", "scanner": "scanner-primary", "fingerprint": "ea56c9b63cb345c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3877056953c2d32e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:83"}, "properties": {"repobilityId": "7cfbdb96217e0545", "scanner": "scanner-primary", "fingerprint": "3877056953c2d32e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c3852714b13ab4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-v3.ts:155"}, "properties": {"repobilityId": "9e5617f8e7fe2615", "scanner": "scanner-primary", "fingerprint": "4c3852714b13ab4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5287edcd56488182", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/find-mozzarella.ts:45"}, "properties": {"repobilityId": "8011ee4d98a176cb", "scanner": "scanner-primary", "fingerprint": "5287edcd56488182", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0947df86f6c548bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:55"}, "properties": {"repobilityId": "0fd380171fc594db", "scanner": "scanner-primary", "fingerprint": "0947df86f6c548bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba8c612535f00f92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.ts:218"}, "properties": {"repobilityId": "29327307a0017702", "scanner": "scanner-primary", "fingerprint": "ba8c612535f00f92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-beaf315028a260ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:95"}, "properties": {"repobilityId": "522d2e7e0cd84f6e", "scanner": "scanner-primary", "fingerprint": "beaf315028a260ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a38f11739bf1eb1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:88"}, "properties": {"repobilityId": "edc0dc6f3e3d734d", "scanner": "scanner-primary", "fingerprint": "3a38f11739bf1eb1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3be9d167eb6fa963", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.ts:47"}, "properties": {"repobilityId": "9f63e3068c388f12", "scanner": "scanner-primary", "fingerprint": "3be9d167eb6fa963", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5716c55eb8d2c99c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.ts:18"}, "properties": {"repobilityId": "6625bcb3bb38bdce", "scanner": "scanner-primary", "fingerprint": "5716c55eb8d2c99c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fb22771d7183b0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/cli.ts:38"}, "properties": {"repobilityId": "b916dfb0fafb246f", "scanner": "scanner-primary", "fingerprint": "3fb22771d7183b0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60ad3e9b161d2209", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/rag/embedding-service.ts:61"}, "properties": {"repobilityId": "89fdebca1ab6371a", "scanner": "scanner-primary", "fingerprint": "60ad3e9b161d2209", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4d2746cf0b41d0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seo-geo-optimizer/src/agents/base-agent.ts:119"}, "properties": {"repobilityId": "43eac450d2e4df80", "scanner": "scanner-primary", "fingerprint": "d4d2746cf0b41d0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39032d6cd5acc8e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useMaestroAI.ts:123"}, "properties": {"repobilityId": "f89c92b2135501b8", "scanner": "scanner-primary", "fingerprint": "39032d6cd5acc8e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-018844bc429af8b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useAppAccess.ts:55"}, "properties": {"repobilityId": "18a55f6aeda35276", "scanner": "scanner-primary", "fingerprint": "018844bc429af8b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f2b3d12b75c3f3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useInventoryVideoRecorder.ts:92"}, "properties": {"repobilityId": "8939f6e160bdc35b", "scanner": "scanner-primary", "fingerprint": "8f2b3d12b75c3f3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-187bd8268b0ca732", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useVideoRecorder.ts:98"}, "properties": {"repobilityId": "3304b4de97e23060", "scanner": "scanner-primary", "fingerprint": "187bd8268b0ca732", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22dfdd3cad0c4b7e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 hooks/useMaestroChat.ts:205"}, "properties": {"repobilityId": "a309c0aa104780fe", "scanner": "scanner-primary", "fingerprint": "22dfdd3cad0c4b7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bde18e68d93b3da9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:15"}, "properties": {"repobilityId": "19ecb22d48da856c", "scanner": "scanner-primary", "fingerprint": "bde18e68d93b3da9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df3903983fa3b94c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/lapa-chat-embed.js:316"}, "properties": {"repobilityId": "960d8d5be77ef379", "scanner": "scanner-primary", "fingerprint": "df3903983fa3b94c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b2a0ec137719f65", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 public/service-worker-smart-ordering.js:188"}, "properties": {"repobilityId": "0d095fa5242ca340", "scanner": "scanner-primary", "fingerprint": "6b2a0ec137719f65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-589b6851523b4b6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/service-worker-smart-ordering.js:21"}, "properties": {"repobilityId": "95c6b7717e26075e", "scanner": "scanner-primary", "fingerprint": "589b6851523b4b6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b9ee217e5769392", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 disabled-routes/agents-status/route.ts:76"}, "properties": {"repobilityId": "c3a7ee6ea04886f0", "scanner": "scanner-primary", "fingerprint": "3b9ee217e5769392", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d5075420dd50769", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr.js:27"}, "properties": {"repobilityId": "3d5679eb180a83e3", "scanner": "scanner-primary", "fingerprint": "2d5075420dd50769", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ad73716a74d48ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/queue.js:55"}, "properties": {"repobilityId": "a753a7d109ab8c5e", "scanner": "scanner-primary", "fingerprint": "8ad73716a74d48ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c51717ee7d4b5b30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/face-recognition.js:33"}, "properties": {"repobilityId": "15aeb41889c234de", "scanner": "scanner-primary", "fingerprint": "c51717ee7d4b5b30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fda8f6d48d43b1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier-ollama.js:49"}, "properties": {"repobilityId": "4b25bde8d045eda1", "scanner": "scanner-primary", "fingerprint": "6fda8f6d48d43b1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-909b7ad5c3677a35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier.js:55"}, "properties": {"repobilityId": "037afb6b1f896d99", "scanner": "scanner-primary", "fingerprint": "909b7ad5c3677a35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56137aa7477e2003", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/classifier.js:36"}, "properties": {"repobilityId": "cb919839b406867c", "scanner": "scanner-primary", "fingerprint": "56137aa7477e2003", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-748b5581e1f9eb73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/contact-classifier-example.js:90"}, "properties": {"repobilityId": "fce0c8598c984d50", "scanner": "scanner-primary", "fingerprint": "748b5581e1f9eb73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8128e8a18c4c66c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/ocr-simple.js:24"}, "properties": {"repobilityId": "69ffcc028de5a86c", "scanner": "scanner-primary", "fingerprint": "8128e8a18c4c66c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d60b9446f94c4a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/index.js:28"}, "properties": {"repobilityId": "65a5dbc310f3f77d", "scanner": "scanner-primary", "fingerprint": "4d60b9446f94c4a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a39eaf765bfed37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jetson-deployment/server/banknote-recognition.js:33"}, "properties": {"repobilityId": "6afb557c63c5a661", "scanner": "scanner-primary", "fingerprint": "6a39eaf765bfed37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a04335357d5aa10", "level": "warning", "message": {"text": "Dockerfile runs as root: jetson-deployment/Dockerfile"}, "properties": {"repobilityId": "06b5a802b6c05498", "scanner": "scanner-primary", "fingerprint": "3a04335357d5aa10", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-23a735b5f83092f0", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: nvcr.io/nvidia/l4t-base:r35.2.1"}, "properties": {"repobilityId": "bfb74205ad3797d7", "scanner": "scanner-primary", "fingerprint": "23a735b5f83092f0", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-69c1928762417645", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in staging-test.html:1"}, "properties": {"repobilityId": "eab1d8029fb813c4", "scanner": "scanner-primary", "fingerprint": "69c1928762417645", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "staging-test.html"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-924d64c5bf27c250", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in staging-page.html:1"}, "properties": {"repobilityId": "0747a04ac0e0a9f5", "scanner": "scanner-primary", "fingerprint": "924d64c5bf27c250", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "staging-page.html"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-319448e8d3c0d33f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pdf-reader-local/public/index.html:283"}, "properties": {"repobilityId": "172d65d43b03b48b", "scanner": "scanner-primary", "fingerprint": "319448e8d3c0d33f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pdf-reader-local/public/index.html"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-bb1af5d92de06d78", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in scripts/infra-collector.py:72"}, "properties": {"repobilityId": "696c285ad296b5d0", "scanner": "scanner-primary", "fingerprint": "bb1af5d92de06d78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/infra-collector.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-ba86c702fe926c14", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/super-dashboard/sales-radar-activity/ActivityMap.tsx:117"}, "properties": {"repobilityId": "fea483baa039812d", "scanner": "scanner-primary", "fingerprint": "ba86c702fe926c14", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/super-dashboard/sales-radar-activity/ActivityMap.tsx"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-5d2a537589218abc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/il-mio-hub/page.tsx:345"}, "properties": {"repobilityId": "a8c543f4c390bb9d", "scanner": "scanner-primary", "fingerprint": "5d2a537589218abc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/il-mio-hub/page.tsx"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-028b1a9aa59df548", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/AttachmentViewer.tsx:187"}, "properties": {"repobilityId": "10161d44608c3fbf", "scanner": "scanner-primary", "fingerprint": "028b1a9aa59df548", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/controllo-consegne/components/AttachmentViewer.tsx"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-0d5b1e2f53b91f8a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/controllo-consegne/components/DocumentCard.tsx:94"}, "properties": {"repobilityId": "f70dcc69f7302fe9", "scanner": "scanner-primary", "fingerprint": "0d5b1e2f53b91f8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/controllo-consegne/components/DocumentCard.tsx"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-eb90eaa96b7408b8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api/chat-gestionale/route.ts:916"}, "properties": {"repobilityId": "1a3f798e94032fcd", "scanner": "scanner-primary", "fingerprint": "eb90eaa96b7408b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/chat-gestionale/route.ts"}, "region": {"startLine": 916}}}]}, {"ruleId": "scanner-fed6b1675a141517", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api/lapa-agents/chat/route.ts:18"}, "properties": {"repobilityId": "f6d7aaf39afbe2e8", "scanner": "scanner-primary", "fingerprint": "fed6b1675a141517", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/lapa-agents/chat/route.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-d333eaafba549317", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api/chat-venditori/route.ts:1425"}, "properties": {"repobilityId": "e8d0d05cebfe8297", "scanner": "scanner-primary", "fingerprint": "d333eaafba549317", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/chat-venditori/route.ts"}, "region": {"startLine": 1425}}}]}, {"ruleId": "scanner-c21b4de4819e2029", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api/contacts/extract/route.ts:158"}, "properties": {"repobilityId": "e21ef606649360be", "scanner": "scanner-primary", "fingerprint": "c21b4de4819e2029", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/contacts/extract/route.ts"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-76101b3969ab5909", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api/debug/search-all-contacts/route.ts:8"}, "properties": {"repobilityId": "5001a2e3682c460e", "scanner": "scanner-primary", "fingerprint": "76101b3969ab5909", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/debug/search-all-contacts/route.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-56f32537d614be69", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/silvano/page.tsx:542"}, "properties": {"repobilityId": "9535392c2c90cb96", "scanner": "scanner-primary", "fingerprint": "56f32537d614be69", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/silvano/page.tsx"}, "region": {"startLine": 542}}}]}, {"ruleId": "scanner-c757889b3c17f4b7", "level": "error", "message": {"text": "Possible secret in app/import-movimenti-ubs/README.md"}, "properties": {"repobilityId": "10fe5b863591f355", "scanner": "scanner-primary", "fingerprint": "c757889b3c17f4b7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/import-movimenti-ubs/README.md"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-67e52147fe8ae9e9", "level": "note", "message": {"text": "Insecure pattern 'document_write' in app/time-attendance/admin/page.tsx:322"}, "properties": {"repobilityId": "472e42ddacee067c", "scanner": "scanner-primary", "fingerprint": "67e52147fe8ae9e9", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/time-attendance/admin/page.tsx"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-fabd633f72277e10", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in lib/odoo/inventoryClient.ts:179"}, "properties": {"repobilityId": "07ee539d18f64751", "scanner": "scanner-primary", "fingerprint": "fabd633f72277e10", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/odoo/inventoryClient.ts"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-9343d35fbbf65c77", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in lib/agents/ssh-exec.ts:14"}, "properties": {"repobilityId": "176cb8f08502fbfd", "scanner": "scanner-primary", "fingerprint": "9343d35fbbf65c77", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/agents/ssh-exec.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-ac19fb3e34746360", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in lib/agents/ssh-exec.ts:1"}, "properties": {"repobilityId": "413975da598fe9b0", "scanner": "scanner-primary", "fingerprint": "ac19fb3e34746360", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/agents/ssh-exec.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b92051eebb56ef83", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in lib/services/contact-extraction-service.ts:7"}, "properties": {"repobilityId": "eda2b85128925ad4", "scanner": "scanner-primary", "fingerprint": "b92051eebb56ef83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/services/contact-extraction-service.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-45b25ac5f5a5b36b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:288"}, "properties": {"repobilityId": "ab489c01ab7fc1f5", "scanner": "scanner-primary", "fingerprint": "45b25ac5f5a5b36b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts"}, "region": {"startLine": 288}}}]}, {"ruleId": "scanner-e93863c4bd458936", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/setup-chatbot-complete.ts:174"}, "properties": {"repobilityId": "96f0abc3ca4e81ca", "scanner": "scanner-primary", "fingerprint": "e93863c4bd458936", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo-geo-optimizer/scripts/setup-chatbot-complete.ts"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-73062627c1ac9024", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo-geo-optimizer/scripts/update-chatbot-v2.ts:213"}, "properties": {"repobilityId": "783086f1305ebf5c", "scanner": "scanner-primary", "fingerprint": "73062627c1ac9024", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo-geo-optimizer/scripts/update-chatbot-v2.ts"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-0c5b9046a27a6fcb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-all-articles-final.ts:9"}, "properties": {"repobilityId": "125cce23a5ff4399", "scanner": "scanner-primary", "fingerprint": "0c5b9046a27a6fcb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo-geo-optimizer/scripts/upload-all-articles-final.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-9c0ea156931b20bb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in seo-geo-optimizer/scripts/upload-articles-03-20.ts:8"}, "properties": {"repobilityId": "7eb11348af79ce25", "scanner": "scanner-primary", "fingerprint": "9c0ea156931b20bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo-geo-optimizer/scripts/upload-articles-03-20.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4d6e0cdd28cf3358", "level": "error", "message": {"text": "Possible secret in odoo_ubs_banking/README.md"}, "properties": {"repobilityId": "0ff7ef812ad1e094", "scanner": "scanner-primary", "fingerprint": "4d6e0cdd28cf3358", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo_ubs_banking/README.md"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-5acf8f0c15953c13", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-chat-embed.js:374"}, "properties": {"repobilityId": "3f4b386037cdf28d", "scanner": "scanner-primary", "fingerprint": "5acf8f0c15953c13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/lapa-chat-embed.js"}, "region": {"startLine": 374}}}]}, {"ruleId": "scanner-8af5df050189becc", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in public/lapa-chat-embed.js:444"}, "properties": {"repobilityId": "21eb9d8075bc52b7", "scanner": "scanner-primary", "fingerprint": "8af5df050189becc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/lapa-chat-embed.js"}, "region": {"startLine": 444}}}]}, {"ruleId": "scanner-b59d54f9383efcea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lapa-ai-widget.js:553"}, "properties": {"repobilityId": "989f8a8eea3fe2c7", "scanner": "scanner-primary", "fingerprint": "b59d54f9383efcea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/lapa-ai-widget.js"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-3c62ab77265aa7ed", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/face-recognition.js:10"}, "properties": {"repobilityId": "04fc997427383560", "scanner": "scanner-primary", "fingerprint": "3c62ab77265aa7ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/server/face-recognition.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-cff7826416331925", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/ocr-simple.js:6"}, "properties": {"repobilityId": "8c61a81a6f5a37fe", "scanner": "scanner-primary", "fingerprint": "cff7826416331925", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/server/ocr-simple.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-fce6281f30562a44", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jetson-deployment/server/index.js:772"}, "properties": {"repobilityId": "af99366346c14d13", "scanner": "scanner-primary", "fingerprint": "fce6281f30562a44", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/server/index.js"}, "region": {"startLine": 772}}}]}, {"ruleId": "scanner-eb48cfe723f34860", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in jetson-deployment/server/index.js:49"}, "properties": {"repobilityId": "87860146b57bbd14", "scanner": "scanner-primary", "fingerprint": "eb48cfe723f34860", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/server/index.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-ce6c3c937c254c0b", "level": "note", "message": {"text": "Very large file: app/scan-contatto/page.tsx (1309 lines)"}, "properties": {"repobilityId": "e8cdbf36f34a5933", "scanner": "scanner-primary", "fingerprint": "ce6c3c937c254c0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a67bf725d3b20ee2", "level": "note", "message": {"text": "Very large file: app/social-ai-studio/page.tsx (3702 lines)"}, "properties": {"repobilityId": "2afc64f5aed5f76b", "scanner": "scanner-primary", "fingerprint": "a67bf725d3b20ee2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1ea177dca06eeed", "level": "note", "message": {"text": "Very large file: app/super-dashboard/product-story/page.tsx (1493 lines)"}, "properties": {"repobilityId": "0400cad2dcc84f1e", "scanner": "scanner-primary", "fingerprint": "a1ea177dca06eeed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba20e1d3abd35f4d", "level": "note", "message": {"text": "Very large file: app/super-dashboard/sales-radar-activity/page.tsx (1174 lines)"}, "properties": {"repobilityId": "a063544caba88426", "scanner": "scanner-primary", "fingerprint": "ba20e1d3abd35f4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-755a266c5684de50", "level": "note", "message": {"text": "Very large file: app/catalogo-venditori/review-prices/[orderId]/page.tsx (2228 lines)"}, "properties": {"repobilityId": "12f13370d0481c65", "scanner": "scanner-primary", "fingerprint": "755a266c5684de50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-484436e8067ffc27", "level": "note", "message": {"text": "Very large file: app/sales-radar/page.tsx (3486 lines)"}, "properties": {"repobilityId": "8143d94500e853dd", "scanner": "scanner-primary", "fingerprint": "484436e8067ffc27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82365d3d970ce240", "level": "note", "message": {"text": "Very large file: app/convalida-residui/page.tsx (4458 lines)"}, "properties": {"repobilityId": "306b3b8ade08d089", "scanner": "scanner-primary", "fingerprint": "82365d3d970ce240", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-633fe909a62e0bb9", "level": "note", "message": {"text": "Very large file: app/api/scan-contatto-complete/route.ts (1303 lines)"}, "properties": {"repobilityId": "56061d50f535d42b", "scanner": "scanner-primary", "fingerprint": "633fe909a62e0bb9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa957b8daf942249", "level": "note", "message": {"text": "Very large file: app/api/chat-venditori/route.ts (1430 lines)"}, "properties": {"repobilityId": "531199a699617b6d", "scanner": "scanner-primary", "fingerprint": "fa957b8daf942249", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-972c141ba403ee02", "level": "note", "message": {"text": "Very large file: app/api/product-creator/create-products/route.ts (1345 lines)"}, "properties": {"repobilityId": "01d0885e04c76b6a", "scanner": "scanner-primary", "fingerprint": "972c141ba403ee02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c353525ca89959c8", "level": "note", "message": {"text": "Very large file: app/lapa-ai-agents/page.tsx (1494 lines)"}, "properties": {"repobilityId": "35111a97b61d1a3c", "scanner": "scanner-primary", "fingerprint": "c353525ca89959c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5805a6a948fb783c", "level": "note", "message": {"text": "Very large file: app/ordini-smart-v2/page.tsx (1988 lines)"}, "properties": {"repobilityId": "210e8f8044d61f64", "scanner": "scanner-primary", "fingerprint": "5805a6a948fb783c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f811425e0c050fb", "level": "note", "message": {"text": "Very large file: app/prelievo-zone/page.tsx (2222 lines)"}, "properties": {"repobilityId": "0c2590defc11db17", "scanner": "scanner-primary", "fingerprint": "9f811425e0c050fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d6af11c18668e49e", "level": "note", "message": {"text": "Very large file: app/controllo-diretto/page.tsx (1519 lines)"}, "properties": {"repobilityId": "38176807b9ec6aa2", "scanner": "scanner-primary", "fingerprint": "d6af11c18668e49e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4fe1ea032e0eed37", "level": "note", "message": {"text": "Very large file: app/controllo-prezzi/page.tsx (1419 lines)"}, "properties": {"repobilityId": "ef8b2a59c7617181", "scanner": "scanner-primary", "fingerprint": "4fe1ea032e0eed37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb915dd8c7a1239a", "level": "note", "message": {"text": "Very large file: app/controllo-prezzi/analisi-mensile/page.tsx (1178 lines)"}, "properties": {"repobilityId": "f4e476f851ab8573", "scanner": "scanner-primary", "fingerprint": "fb915dd8c7a1239a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-009791851449ab28", "level": "note", "message": {"text": "Very large file: app/email-ai-monitor/page.tsx (1851 lines)"}, "properties": {"repobilityId": "7bcba88c7b0a141a", "scanner": "scanner-primary", "fingerprint": "009791851449ab28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eb0a8faa855c2e9c", "level": "note", "message": {"text": "Very large file: app/smart-route-ai/page.tsx (2069 lines)"}, "properties": {"repobilityId": "cef297c132f93c7b", "scanner": "scanner-primary", "fingerprint": "eb0a8faa855c2e9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69cf41b2e3e461ef", "level": "note", "message": {"text": "Very large file: app/delivery/page.tsx (4868 lines)"}, "properties": {"repobilityId": "37180ae9c902af6a", "scanner": "scanner-primary", "fingerprint": "69cf41b2e3e461ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-21747135ba753bde", "level": "note", "message": {"text": "Very large file: app/agenti-ia-gestionale/page.tsx (1941 lines)"}, "properties": {"repobilityId": "af26a042dda01bdb", "scanner": "scanner-primary", "fingerprint": "21747135ba753bde", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d979bee6c6a7ccc", "level": "note", "message": {"text": "Very large file: app/prodotti-preordine/page.tsx (1605 lines)"}, "properties": {"repobilityId": "f581ad0cacd748f8", "scanner": "scanner-primary", "fingerprint": "3d979bee6c6a7ccc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f5546965eaf90c91", "level": "note", "message": {"text": "Very large file: app/scadenze/page.tsx (1254 lines)"}, "properties": {"repobilityId": "b54592399ea23922", "scanner": "scanner-primary", "fingerprint": "f5546965eaf90c91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-59ef570cf6b17025", "level": "note", "message": {"text": "Very large file: app/maestro-ai/customers/[id]/page.tsx (1056 lines)"}, "properties": {"repobilityId": "8c916abf91184e41", "scanner": "scanner-primary", "fingerprint": "59ef570cf6b17025", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-97e15d9047887586", "level": "note", "message": {"text": "Very large file: app/ubicazioni/page.tsx (1391 lines)"}, "properties": {"repobilityId": "a463e869131196d4", "scanner": "scanner-primary", "fingerprint": "97e15d9047887586", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f5582c475ae7ab8", "level": "note", "message": {"text": "Very large file: app/time-attendance/page.tsx (1614 lines)"}, "properties": {"repobilityId": "cca9ae5178f4ed9c", "scanner": "scanner-primary", "fingerprint": "1f5582c475ae7ab8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb3c340745a80d9e", "level": "note", "message": {"text": "Very large file: lib/lapa-agents/orchestrator.ts (6171 lines)"}, "properties": {"repobilityId": "a1b1ea49cd0db648", "scanner": "scanner-primary", "fingerprint": "cb3c340745a80d9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83770bd9b7c8b3bf", "level": "note", "message": {"text": "Very large file: lib/lapa-agents/agents/orders-agent.ts (2041 lines)"}, "properties": {"repobilityId": "0640ad0bc9510981", "scanner": "scanner-primary", "fingerprint": "83770bd9b7c8b3bf", "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-98eecf7aa017d4cb", "level": "note", "message": {"text": "96 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "98eecf7aa017d4cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "444ea51c66589ccb", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-56c91ce516455b9c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: jetson-deployment/package.json"}, "properties": {"repobilityId": "635c5a3cb6357565", "scanner": "scanner-primary", "fingerprint": "56c91ce516455b9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jetson-deployment/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b1136b3b0870e8c5", "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": "fdb976d9c7479db5", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "655678f06c663981", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "143d76de2528c457", "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": "65a02aef84b8a048", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "6609de9ba106d7ac", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "b597d7c624a2dc8f", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "47bb6fa19aa2155b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10e97b05629f9e9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test-api-laura.ts:20"}, "properties": {"repobilityId": "e7795b065b0853e9", "scanner": "scanner-primary", "fingerprint": "10e97b05629f9e9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15216a3f6ab13f52", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ANALISI-PRODOTTO-EXAMPLE.tsx:157"}, "properties": {"repobilityId": "e759e4cf30a17cf1", "scanner": "scanner-primary", "fingerprint": "15216a3f6ab13f52", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf509e50eaec546f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/catalogo-foto-worker.py:38"}, "properties": {"repobilityId": "27728de9e8ea0bfd", "scanner": "scanner-primary", "fingerprint": "bf509e50eaec546f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-72a570298da0d417", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/layout/AppGrid.tsx:33"}, "properties": {"repobilityId": "a1dd6f8f9c28ece8", "scanner": "scanner-primary", "fingerprint": "72a570298da0d417", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d6178c90c58ce04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/blog/BatchBlogImageModal.tsx:71"}, "properties": {"repobilityId": "2c2daf08b3e72a59", "scanner": "scanner-primary", "fingerprint": "4d6178c90c58ce04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-daad9dd1e87f330d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/LotManager.tsx:76"}, "properties": {"repobilityId": "8262b90d780863ca", "scanner": "scanner-primary", "fingerprint": "daad9dd1e87f330d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef5d6822b57b09d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/InventoryAIModal.tsx:222"}, "properties": {"repobilityId": "1642f205145d51e0", "scanner": "scanner-primary", "fingerprint": "ef5d6822b57b09d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59e4ea68e01c6b59", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/inventario/WasteTransferModal.tsx:179"}, "properties": {"repobilityId": "b015980994c55dfb", "scanner": "scanner-primary", "fingerprint": "59e4ea68e01c6b59", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-192d1e12ee3b3962", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ShareMenu.tsx:106"}, "properties": {"repobilityId": "1641a13af1177a96", "scanner": "scanner-primary", "fingerprint": "192d1e12ee3b3962", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88e69d111b962c7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/social-ai/ProductSelector.tsx:63"}, "properties": {"repobilityId": "74a579e8632ba208", "scanner": "scanner-primary", "fingerprint": "88e69d111b962c7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1112e10c83e30d9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/InteractionModal.tsx:70"}, "properties": {"repobilityId": "52b89e23ae819158", "scanner": "scanner-primary", "fingerprint": "1112e10c83e30d9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06c50c298b00c096", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/VehicleStockModal.tsx:99"}, "properties": {"repobilityId": "94f402286ebbf176", "scanner": "scanner-primary", "fingerprint": "06c50c298b00c096", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f68226a6e94e2921", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/maestro/CustomerSearchInput.tsx:52"}, "properties": {"repobilityId": "3fe96eac8d23bcb0", "scanner": "scanner-primary", "fingerprint": "f68226a6e94e2921", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c84a403f95dd91e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/DeliveryTracker.tsx:48"}, "properties": {"repobilityId": "645bc666d3c910eb", "scanner": "scanner-primary", "fingerprint": "c84a403f95dd91e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63109f595db3cbf0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/portale-clienti/ProductCard.tsx:83"}, "properties": {"repobilityId": "fc785ed3ac6b0d6b", "scanner": "scanner-primary", "fingerprint": "63109f595db3cbf0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-266c8eefff8923db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/BatchAIImageModal.tsx:73"}, "properties": {"repobilityId": "7b17dfd767d63ca2", "scanner": "scanner-primary", "fingerprint": "266c8eefff8923db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-272f98d3afd4b98c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/catalogo-lapa/AIImageModal.tsx:50"}, "properties": {"repobilityId": "74e6a88c98ce4456", "scanner": "scanner-primary", "fingerprint": "272f98d3afd4b98c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-26fe778990e4e02a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/infra-monitor/page.tsx:464"}, "properties": {"repobilityId": "df8e240ff9814dd2", "scanner": "scanner-primary", "fingerprint": "26fe778990e4e02a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4259988c415925a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-prodotti/page.tsx:97"}, "properties": {"repobilityId": "fcc5d191e74ce57f", "scanner": "scanner-primary", "fingerprint": "e4259988c415925a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4daec6a387a0126", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-gestionale/page.tsx:577"}, "properties": {"repobilityId": "463601b468208cce", "scanner": "scanner-primary", "fingerprint": "b4daec6a387a0126", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8283ce81c9c2c461", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scan-contatto/page.tsx:200"}, "properties": {"repobilityId": "6f6ba4e953900602", "scanner": "scanner-primary", "fingerprint": "8283ce81c9c2c461", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fc2c4edd5d0c6ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/page.tsx:240"}, "properties": {"repobilityId": "049a4d13a7ecba80", "scanner": "scanner-primary", "fingerprint": "5fc2c4edd5d0c6ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3cd798ee48a9c24d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/social-ai-studio/autopilot/page.tsx:142"}, "properties": {"repobilityId": "188f0f13e9ecd74a", "scanner": "scanner-primary", "fingerprint": "3cd798ee48a9c24d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68ee8311c9d2a28b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/review-manager/[businessId]/settings/page.tsx:104"}, "properties": {"repobilityId": "651256479547e30c", "scanner": "scanner-primary", "fingerprint": "68ee8311c9d2a28b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be0e83bce813a2ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/product-story/page.tsx:287"}, "properties": {"repobilityId": "791e06a1e2281e84", "scanner": "scanner-primary", "fingerprint": "be0e83bce813a2ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-502231c0e8916f12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/super-dashboard/controllo-picking/[batchId]/page.tsx:220"}, "properties": {"repobilityId": "55c1f313be098495", "scanner": "scanner-primary", "fingerprint": "502231c0e8916f12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73cd15cce3ed9203", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/page.tsx:73"}, "properties": {"repobilityId": "8a1c97acb75f3fff", "scanner": "scanner-primary", "fingerprint": "73cd15cce3ed9203", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81cdeb34e0940530", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/ManualProductSearch.tsx:207"}, "properties": {"repobilityId": "0ff89d5af5bf876f", "scanner": "scanner-primary", "fingerprint": "81cdeb34e0940530", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0819544ac3ae955", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/components/AIOrderInput.tsx:110"}, "properties": {"repobilityId": "051b6007c58a9cb5", "scanner": "scanner-primary", "fingerprint": "e0819544ac3ae955", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd6026c011c7925f", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/catalogo-venditori/review-prices/[orderId]/page.tsx:994"}, "properties": {"repobilityId": "9427094ec58b2b9c", "scanner": "scanner-primary", "fingerprint": "cd6026c011c7925f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-668120fd16b5aef5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-venditori/review-prices/[orderId]/page.tsx:134"}, "properties": {"repobilityId": "a3494252064f0996", "scanner": "scanner-primary", "fingerprint": "668120fd16b5aef5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b75e30fbe564d80f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/sales-radar/page.tsx:565"}, "properties": {"repobilityId": "8aaa1a1476f386f9", "scanner": "scanner-primary", "fingerprint": "b75e30fbe564d80f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-678f7efe75f09ce0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario-vocale/page.tsx:312"}, "properties": {"repobilityId": "3a404ee48942b131", "scanner": "scanner-primary", "fingerprint": "678f7efe75f09ce0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f36df0a94f203f3f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/did-stream/route.ts:35"}, "properties": {"repobilityId": "06d1a28f9a9eaa25", "scanner": "scanner-primary", "fingerprint": "f36df0a94f203f3f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-432c7b5d71b590da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/save-conversation/route.ts:49"}, "properties": {"repobilityId": "b0c006a2ddcd28fa", "scanner": "scanner-primary", "fingerprint": "432c7b5d71b590da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-379d7b2eecf27335", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stella/tasks/route.ts:210"}, "properties": {"repobilityId": "abfb5c4fde45b97e", "scanner": "scanner-primary", "fingerprint": "379d7b2eecf27335", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ece87aaeb81f246", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/scan-contatto/example-usage.ts:430"}, "properties": {"repobilityId": "ee62e8fa8de54922", "scanner": "scanner-primary", "fingerprint": "0ece87aaeb81f246", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c217367462490727", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto/example-usage.ts:19"}, "properties": {"repobilityId": "511daf0749feb4ec", "scanner": "scanner-primary", "fingerprint": "c217367462490727", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d177a591790ec94", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/update-quantity/route.ts:33"}, "properties": {"repobilityId": "fcabc4c3d796386c", "scanner": "scanner-primary", "fingerprint": "3d177a591790ec94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7c850cfd1b65f900", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/location/route.ts:76"}, "properties": {"repobilityId": "d452d23aff1c475b", "scanner": "scanner-primary", "fingerprint": "7c850cfd1b65f900", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ba6a0932a99ceaa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/products/route.ts:44"}, "properties": {"repobilityId": "3910803b1cf16be5", "scanner": "scanner-primary", "fingerprint": "7ba6a0932a99ceaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-739efc53b76cdf45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/create-van-returns/route.ts:59"}, "properties": {"repobilityId": "6fc828816d66d1c8", "scanner": "scanner-primary", "fingerprint": "739efc53b76cdf45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e55d9fe4208c95fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/inventory/search-furgoni-locations/route.ts:34"}, "properties": {"repobilityId": "5af505b828fa5c04", "scanner": "scanner-primary", "fingerprint": "e55d9fe4208c95fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1affbb0b77947dbc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/review-manager/oauth/facebook/callback/route.ts:59"}, "properties": {"repobilityId": "3cacb2c0cded3a44", "scanner": "scanner-primary", "fingerprint": "1affbb0b77947dbc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ce7cbe3b8dc5915", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/super-dashboard/conto-economico/route.ts:16"}, "properties": {"repobilityId": "1b52ccabcf31efe0", "scanner": "scanner-primary", "fingerprint": "2ce7cbe3b8dc5915", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bf406587499dc30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/il-mio-hub/route.ts:11"}, "properties": {"repobilityId": "418f8c318cfef130", "scanner": "scanner-primary", "fingerprint": "8bf406587499dc30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56976dca3fb620e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-venditori/ai-process-order/route.ts:228"}, "properties": {"repobilityId": "cb2320562c8d028d", "scanner": "scanner-primary", "fingerprint": "56976dca3fb620e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abf031d6b6d6c6b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/chat/route.ts:78"}, "properties": {"repobilityId": "d6403404dedea4a4", "scanner": "scanner-primary", "fingerprint": "abf031d6b6d6c6b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52e0764823bb4ac2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/openai/realtime/route.ts:65"}, "properties": {"repobilityId": "86c08c1e2734adbd", "scanner": "scanner-primary", "fingerprint": "52e0764823bb4ac2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d20430772d9aa0e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts:58"}, "properties": {"repobilityId": "73b4f80e187f4709", "scanner": "scanner-primary", "fingerprint": "1d20430772d9aa0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef350115b49ddbf5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo-proxy/route.ts:11"}, "properties": {"repobilityId": "8b6a688736b182a7", "scanner": "scanner-primary", "fingerprint": "ef350115b49ddbf5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-04b00e64025bb723", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/odoo/post-message/route.ts:23"}, "properties": {"repobilityId": "3779e9ba3e2d28e5", "scanner": "scanner-primary", "fingerprint": "04b00e64025bb723", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0deadce269deb8a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/dashboard/route.ts:57"}, "properties": {"repobilityId": "647d46eb692b198d", "scanner": "scanner-primary", "fingerprint": "0deadce269deb8a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c292cce50a88ee01", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarti/generate-order/route.ts:46"}, "properties": {"repobilityId": "ec16b9b59e80a746", "scanner": "scanner-primary", "fingerprint": "c292cce50a88ee01", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ba73998e27b9063", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/recupero-clienti/route.ts:4"}, "properties": {"repobilityId": "1d72cc302f1f38c5", "scanner": "scanner-primary", "fingerprint": "2ba73998e27b9063", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5122e3b7dbef34b0", "level": "note", "message": {"text": "Legacy-named symbol `prepare_values_v2` in app/api/lapa-agents/debug-ticket-create/route.ts:94"}, "properties": {"repobilityId": "854eb99590474e97", "scanner": "scanner-primary", "fingerprint": "5122e3b7dbef34b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-af5ec36512c63a45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/missing-products/route.ts:100"}, "properties": {"repobilityId": "41e9a08a6c81978c", "scanner": "scanner-primary", "fingerprint": "af5ec36512c63a45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b432161eb9aef00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/arrivo-merce/classify-attachments/route.ts:95"}, "properties": {"repobilityId": "7b6b016fb597187d", "scanner": "scanner-primary", "fingerprint": "4b432161eb9aef00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da190fa1b6714f22", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in app/api/arrivo-merce/get-po-attachments/route.ts:117"}, "properties": {"repobilityId": "88fe5a3570b2b7e8", "scanner": "scanner-primary", "fingerprint": "da190fa1b6714f22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-22c8f0d8b7669782", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/counts/route.ts:36"}, "properties": {"repobilityId": "227d04d39e21eaee", "scanner": "scanner-primary", "fingerprint": "22c8f0d8b7669782", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59f3391371d15ad5", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/controllo-prezzi/block-requests/route.ts:88"}, "properties": {"repobilityId": "36120bcf1c5c2e0c", "scanner": "scanner-primary", "fingerprint": "59f3391371d15ad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88fcd9186fe3c769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/controllo-prezzi/products/route.ts:45"}, "properties": {"repobilityId": "1ecf9ea541dc052c", "scanner": "scanner-primary", "fingerprint": "88fcd9186fe3c769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3f9d642435622b71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scan-contatto-complete/route.ts:1233"}, "properties": {"repobilityId": "5a659c9347828a1d", "scanner": "scanner-primary", "fingerprint": "3f9d642435622b71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-936ffadbfe12295f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/transfer/route.ts:70"}, "properties": {"repobilityId": "878b17fb9408acfa", "scanner": "scanner-primary", "fingerprint": "936ffadbfe12295f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce17c21a7f741bec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/waste/location-products/route.ts:59"}, "properties": {"repobilityId": "3a5aa307d185abf5", "scanner": "scanner-primary", "fingerprint": "ce17c21a7f741bec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dbcd9722ed5709ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/fattura/[id]/pdf/route.ts:20"}, "properties": {"repobilityId": "2f36465a0a7f16c7", "scanner": "scanner-primary", "fingerprint": "dbcd9722ed5709ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09a7e6f6f4d85fcc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/silvano/ordine/[id]/pdf/route.ts:20"}, "properties": {"repobilityId": "3051465d02c01b2b", "scanner": "scanner-primary", "fingerprint": "09a7e6f6f4d85fcc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae66ab01153112d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/smart-route-ai/vehicles/route.ts:23"}, "properties": {"repobilityId": "941dd43d40ed98f9", "scanner": "scanner-primary", "fingerprint": "ae66ab01153112d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b934ec314fc9670d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/print/route.ts:11"}, "properties": {"repobilityId": "9cc46a369bc23697", "scanner": "scanner-primary", "fingerprint": "b934ec314fc9670d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bc27e0be96bb08e5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/calculate-eta/route.ts:27"}, "properties": {"repobilityId": "1218dd148526dd82", "scanner": "scanner-primary", "fingerprint": "bc27e0be96bb08e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff19b140caa01119", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/delivery/optimize-route/route.ts:48"}, "properties": {"repobilityId": "5b488428831a1c74", "scanner": "scanner-primary", "fingerprint": "ff19b140caa01119", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d29871d12840a75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/avatar-generator/generate-video/route.ts:422"}, "properties": {"repobilityId": "454935823477f00e", "scanner": "scanner-primary", "fingerprint": "1d29871d12840a75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f5fea13f7accec6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/list/route.ts:12"}, "properties": {"repobilityId": "7ced54e4b447e17d", "scanner": "scanner-primary", "fingerprint": "6f5fea13f7accec6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-151b93df36c323ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-sales-order-id/route.ts:9"}, "properties": {"repobilityId": "4f3498ca930af85f", "scanner": "scanner-primary", "fingerprint": "151b93df36c323ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5b9ce06b6f11cb5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/get-picking-id/route.ts:9"}, "properties": {"repobilityId": "2d7b91f9a65a02ce", "scanner": "scanner-primary", "fingerprint": "d5b9ce06b6f11cb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-966d5d7f32769832", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/scarichi-parziali/process-product/route.ts:85"}, "properties": {"repobilityId": "4541205273e780e1", "scanner": "scanner-primary", "fingerprint": "966d5d7f32769832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63d330a7e7efb5ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scarichi-parziali/create-return/route.ts:9"}, "properties": {"repobilityId": "f609a731a1ae64e7", "scanner": "scanner-primary", "fingerprint": "63d330a7e7efb5ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e5b567e721bd95e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/gestione-scadenze/save-expiry/route.ts:23"}, "properties": {"repobilityId": "c20e400136410d97", "scanner": "scanner-primary", "fingerprint": "e5b567e721bd95e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56d399e017c05e29", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-story/route.ts:111"}, "properties": {"repobilityId": "72e8f75d1c45dba8", "scanner": "scanner-primary", "fingerprint": "56d399e017c05e29", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7962dc6814434959", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/product-intelligence/route.ts:22"}, "properties": {"repobilityId": "89c55d941e064a07", "scanner": "scanner-primary", "fingerprint": "7962dc6814434959", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36e2b01a949c5d5c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/generate-post/route.ts:103"}, "properties": {"repobilityId": "95a7ac876169b153", "scanner": "scanner-primary", "fingerprint": "36e2b01a949c5d5c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-997cdf4f1c56b93e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/autopilot/approve/route.ts:26"}, "properties": {"repobilityId": "bda0af099a4545be", "scanner": "scanner-primary", "fingerprint": "997cdf4f1c56b93e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b8551ba8b74a304", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-youtube/route.ts:79"}, "properties": {"repobilityId": "68173da23458f58a", "scanner": "scanner-primary", "fingerprint": "6b8551ba8b74a304", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ed45bca1d769b0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/product-recipe/route.ts:106"}, "properties": {"repobilityId": "1025ad4efc1b3623", "scanner": "scanner-primary", "fingerprint": "0ed45bca1d769b0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d707ded23a869472", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-story/route.ts:346"}, "properties": {"repobilityId": "ef4748523b8ac218", "scanner": "scanner-primary", "fingerprint": "d707ded23a869472", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a86faefab6d721b", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-to-odoo/route.ts:270"}, "properties": {"repobilityId": "5ff12ca17be9fb5b", "scanner": "scanner-primary", "fingerprint": "9a86faefab6d721b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dcb1ebb2795e994", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/publish-to-odoo/route.ts:226"}, "properties": {"repobilityId": "d109cc398b565b6d", "scanner": "scanner-primary", "fingerprint": "0dcb1ebb2795e994", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96947002655e6938", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/check-video-status/route.ts:109"}, "properties": {"repobilityId": "2fe1cfa870e759bb", "scanner": "scanner-primary", "fingerprint": "96947002655e6938", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a67b312c45a99302", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/free-article/route.ts:138"}, "properties": {"repobilityId": "c367a432b22301df", "scanner": "scanner-primary", "fingerprint": "a67b312c45a99302", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c0433b16ea37d30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-ai/food-curiosity/route.ts:98"}, "properties": {"repobilityId": "2ef75d29a8a614dd", "scanner": "scanner-primary", "fingerprint": "8c0433b16ea37d30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c896645ce38cf6b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/social-ai/publish-recipe/route.ts:269"}, "properties": {"repobilityId": "89c8a6b4404faaa7", "scanner": "scanner-primary", "fingerprint": "c896645ce38cf6b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-140bb32d021cee76", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/test-lot-trace/route.ts:39"}, "properties": {"repobilityId": "3389b07f718fd750", "scanner": "scanner-primary", "fingerprint": "140bb32d021cee76", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3cb9bffa72600ac1", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/maestro/analytics/route.ts:124"}, "properties": {"repobilityId": "6b8bb16e5bf1e052", "scanner": "scanner-primary", "fingerprint": "3cb9bffa72600ac1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df1a108888e8407e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/create-sample-order/route.ts:115"}, "properties": {"repobilityId": "a30ee7bd37d85286", "scanner": "scanner-primary", "fingerprint": "df1a108888e8407e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ccf893254aebdcf8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/route.ts:77"}, "properties": {"repobilityId": "651d003482ca5476", "scanner": "scanner-primary", "fingerprint": "ccf893254aebdcf8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ea88193e7867d1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/maestro/vehicle-stock/transfer/route.ts:104"}, "properties": {"repobilityId": "aff44968d216295f", "scanner": "scanner-primary", "fingerprint": "2ea88193e7867d1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5b53acb2e5a69aa6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/portale-clienti/orders/[id]/pdf/route.ts:162"}, "properties": {"repobilityId": "06ed8456e15d4d8c", "scanner": "scanner-primary", "fingerprint": "5b53acb2e5a69aa6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef92d84ac422cfbf", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/route.ts:199"}, "properties": {"repobilityId": "a6e515cf20b5fab8", "scanner": "scanner-primary", "fingerprint": "ef92d84ac422cfbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-72359e3d9c894c05", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in app/api/portale-clienti/invoices/[id]/route.ts:232"}, "properties": {"repobilityId": "10aec0b941e3c612", "scanner": "scanner-primary", "fingerprint": "72359e3d9c894c05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b738c263d17f262", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-lapa/products/route.ts:77"}, "properties": {"repobilityId": "5d46439f45f3cae8", "scanner": "scanner-primary", "fingerprint": "5b738c263d17f262", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e96976a94bb74c0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/hr-payslip/route.ts:739"}, "properties": {"repobilityId": "425006ed596ca3f2", "scanner": "scanner-primary", "fingerprint": "e96976a94bb74c0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec541d54727500e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/hr-payslip/route.ts:280"}, "properties": {"repobilityId": "77ed14131f7291d8", "scanner": "scanner-primary", "fingerprint": "ec541d54727500e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c83280bd3fc7e12b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/food-news/route.ts:61"}, "properties": {"repobilityId": "2baf8b763abf381c", "scanner": "scanner-primary", "fingerprint": "c83280bd3fc7e12b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d17a5968c140f468", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/check-status/route.ts:23"}, "properties": {"repobilityId": "e9e9d1a341ea8682", "scanner": "scanner-primary", "fingerprint": "d17a5968c140f468", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aef1a374773ba116", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/generate-video/route.ts:155"}, "properties": {"repobilityId": "601851c77b7ef3ca", "scanner": "scanner-primary", "fingerprint": "aef1a374773ba116", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-570356b7a9e6a447", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/_avatar-generator-disabled/download/route.ts:29"}, "properties": {"repobilityId": "105f245d5a8a3348", "scanner": "scanner-primary", "fingerprint": "570356b7a9e6a447", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7dd83a25fec43bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/scadenze/transfer/route.ts:54"}, "properties": {"repobilityId": "0d32ffee89155cec", "scanner": "scanner-primary", "fingerprint": "b7dd83a25fec43bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a925f6483d5c54c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/products-catalog/route.ts:44"}, "properties": {"repobilityId": "c7a8b6a9b2d9c171", "scanner": "scanner-primary", "fingerprint": "a925f6483d5c54c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3947df09661d0326", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/jetson/ocr/route.ts:32"}, "properties": {"repobilityId": "d798a4677668a3a6", "scanner": "scanner-primary", "fingerprint": "3947df09661d0326", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f053f3894b75c0d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug/batch-fields/route.ts:21"}, "properties": {"repobilityId": "b26042b263d79076", "scanner": "scanner-primary", "fingerprint": "f053f3894b75c0d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70eec52ba24fe0db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/debug-move-line-fields/route.ts:7"}, "properties": {"repobilityId": "e3747d5ccd3a744e", "scanner": "scanner-primary", "fingerprint": "70eec52ba24fe0db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-380d84863b6fb17a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/website-analytics/route.ts:13"}, "properties": {"repobilityId": "88b2b93e7e7574a8", "scanner": "scanner-primary", "fingerprint": "380d84863b6fb17a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6ac33e296cca177", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/transfer/route.ts:57"}, "properties": {"repobilityId": "f5d205e7d8e21384", "scanner": "scanner-primary", "fingerprint": "b6ac33e296cca177", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c34a2e2b224d5869", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/check-product/route.ts:30"}, "properties": {"repobilityId": "ae28d7a07a0b3b34", "scanner": "scanner-primary", "fingerprint": "c34a2e2b224d5869", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6051e865660c310d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-products/route.ts:29"}, "properties": {"repobilityId": "f9ed6cd70e056a17", "scanner": "scanner-primary", "fingerprint": "6051e865660c310d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ab090e2d141e584", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/buffer-count/route.ts:27"}, "properties": {"repobilityId": "100746f006ef182c", "scanner": "scanner-primary", "fingerprint": "7ab090e2d141e584", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e07e147061a006a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/ubicazioni/find-product/route.ts:29"}, "properties": {"repobilityId": "1019898eb9e573dd", "scanner": "scanner-primary", "fingerprint": "e07e147061a006a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-806494ff735c619b", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/clienti/search/route.ts:113"}, "properties": {"repobilityId": "65ea87b408456bd0", "scanner": "scanner-primary", "fingerprint": "806494ff735c619b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55579ac2d4f498a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/margini/example-frontend.tsx:123"}, "properties": {"repobilityId": "31fffeedb1db3e6f", "scanner": "scanner-primary", "fingerprint": "55579ac2d4f498a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44daeb7527e73e9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/generate-image/route.ts:27"}, "properties": {"repobilityId": "91629bd2b50711bb", "scanner": "scanner-primary", "fingerprint": "44daeb7527e73e9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b30bb76fb5fc2732", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/create-products/route.ts:76"}, "properties": {"repobilityId": "e9a9d60c1b86bbcb", "scanner": "scanner-primary", "fingerprint": "b30bb76fb5fc2732", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9300d6f04fbbb671", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/product-creator/enrich-product/route.ts:32"}, "properties": {"repobilityId": "840cdb2cf1710b25", "scanner": "scanner-primary", "fingerprint": "9300d6f04fbbb671", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6cc08fd79efb4c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/catalogo-foto/location-products/route.ts:20"}, "properties": {"repobilityId": "c6f9716618d37fd8", "scanner": "scanner-primary", "fingerprint": "a6cc08fd79efb4c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e59cf1a2a8e00e46", "level": "note", "message": {"text": "Legacy-named symbol `is_legacy` in app/api/catalogo-foto/jobs/route.ts:84"}, "properties": {"repobilityId": "131f8dc42751b89a", "scanner": "scanner-primary", "fingerprint": "e59cf1a2a8e00e46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-104101de5041891b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/inventario/verifica/page.tsx:238"}, "properties": {"repobilityId": "30c42dda3e2239a1", "scanner": "scanner-primary", "fingerprint": "104101de5041891b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-287e7f0c4226cb2c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-diretto/page.tsx:488"}, "properties": {"repobilityId": "cba278907629fe56", "scanner": "scanner-primary", "fingerprint": "287e7f0c4226cb2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0114121b7a02f311", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/page.tsx:45"}, "properties": {"repobilityId": "ee17423862757769", "scanner": "scanner-primary", "fingerprint": "0114121b7a02f311", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05bfcbe2fde66052", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/valida-fatture/ManageMissingProductsView.tsx:115"}, "properties": {"repobilityId": "d1ae8434a5e87e38", "scanner": "scanner-primary", "fingerprint": "05bfcbe2fde66052", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9fa19b31a28a7e94", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/controllo-prezzi/page.tsx:346"}, "properties": {"repobilityId": "62ea762772f91202", "scanner": "scanner-primary", "fingerprint": "9fa19b31a28a7e94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffcffe40b65f29e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-buste-paga/page.tsx:347"}, "properties": {"repobilityId": "9d044a502f5d00b3", "scanner": "scanner-primary", "fingerprint": "ffcffe40b65f29e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fee2bc66cb9bfdd0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/page.tsx:76"}, "properties": {"repobilityId": "ed7dc2c6fb1c6ca1", "scanner": "scanner-primary", "fingerprint": "fee2bc66cb9bfdd0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-76df9847cbcce28f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/dashboard/page.tsx:49"}, "properties": {"repobilityId": "dd398a0389bd7742", "scanner": "scanner-primary", "fingerprint": "76df9847cbcce28f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4d44bd8598dcd7b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/ordini/page.tsx:62"}, "properties": {"repobilityId": "d20a0c11eb926914", "scanner": "scanner-primary", "fingerprint": "b4d44bd8598dcd7b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c4d6df3224d20fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/silvano/clienti/page.tsx:46"}, "properties": {"repobilityId": "a7aa36f4fd5741f1", "scanner": "scanner-primary", "fingerprint": "6c4d6df3224d20fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4bb119689f58d444", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/smart-route-ai/page.tsx:533"}, "properties": {"repobilityId": "c06672733ffb5315", "scanner": "scanner-primary", "fingerprint": "4bb119689f58d444", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b121a077b8f1f75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/delivery/page.tsx:821"}, "properties": {"repobilityId": "53b593bd8ab28e95", "scanner": "scanner-primary", "fingerprint": "2b121a077b8f1f75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e3621d72ba0d9a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scarichi-parziali/page.tsx:190"}, "properties": {"repobilityId": "e0e22e5a8b82fcaf", "scanner": "scanner-primary", "fingerprint": "7e3621d72ba0d9a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-189c66398eb74dbc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/chat-venditori/page.tsx:585"}, "properties": {"repobilityId": "9a431bd41d004edd", "scanner": "scanner-primary", "fingerprint": "189c66398eb74dbc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8785373c042ff0e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaRealTime.tsx:141"}, "properties": {"repobilityId": "5658130a459a23e5", "scanner": "scanner-primary", "fingerprint": "8785373c042ff0e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5da4935eebc11f15", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/stella-assistant/components/StellaVideoAvatar.tsx:91"}, "properties": {"repobilityId": "6aa0948ee6eeed70", "scanner": "scanner-primary", "fingerprint": "5da4935eebc11f15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09b576df540f4339", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ai-image-studio/page.tsx:330"}, "properties": {"repobilityId": "6f412895329e2a85", "scanner": "scanner-primary", "fingerprint": "09b576df540f4339", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2d0fbc2ecc64603", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-scadenze/page.tsx:165"}, "properties": {"repobilityId": "d420b74a25b07b33", "scanner": "scanner-primary", "fingerprint": "e2d0fbc2ecc64603", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62e903dacab834d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-cadenze-fornitori/page.tsx:170"}, "properties": {"repobilityId": "2532f307f332b4ce", "scanner": "scanner-primary", "fingerprint": "62e903dacab834d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52553bdadcf497f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ordini-fornitori/page.tsx:202"}, "properties": {"repobilityId": "f83cfb97c4bff101", "scanner": "scanner-primary", "fingerprint": "52553bdadcf497f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2bb5d87ce2c9b829", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-visibilita-app/page.tsx:76"}, "properties": {"repobilityId": "61f5b0574013b886", "scanner": "scanner-primary", "fingerprint": "2bb5d87ce2c9b829", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eac2e5fc1a45d3c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-ia-gestionale/page.tsx:338"}, "properties": {"repobilityId": "1577e0df17e12315", "scanner": "scanner-primary", "fingerprint": "eac2e5fc1a45d3c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-641e2ebc587bb611", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/catalogo/page.tsx:171"}, "properties": {"repobilityId": "d9998ebf3b27d6a8", "scanner": "scanner-primary", "fingerprint": "641e2ebc587bb611", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c0df0b717287d36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/consegne/page.tsx:42"}, "properties": {"repobilityId": "299ccb26b3c8e41d", "scanner": "scanner-primary", "fingerprint": "8c0df0b717287d36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0fda8bb96ff05f55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/fatture/page.tsx:94"}, "properties": {"repobilityId": "5cfc87e1d546bdbd", "scanner": "scanner-primary", "fingerprint": "0fda8bb96ff05f55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4366d63457fa348e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/components/QuickActions.tsx:37"}, "properties": {"repobilityId": "0275dc4429cbbb06", "scanner": "scanner-primary", "fingerprint": "4366d63457fa348e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ea2f79ad75b9bbe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/page.tsx:86"}, "properties": {"repobilityId": "3818fce7428b89a7", "scanner": "scanner-primary", "fingerprint": "3ea2f79ad75b9bbe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ceeb909d88c07272", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/ordini/nuovo/page.tsx:62"}, "properties": {"repobilityId": "7735b276f2854092", "scanner": "scanner-primary", "fingerprint": "ceeb909d88c07272", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-60f7ff31c8f8ef8c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/portale-clienti/carrello/page.tsx:161"}, "properties": {"repobilityId": "dbbf4848e9dd6383", "scanner": "scanner-primary", "fingerprint": "60f7ff31c8f8ef8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-772cd022750d5b88", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/page.tsx:41"}, "properties": {"repobilityId": "489eee214776841b", "scanner": "scanner-primary", "fingerprint": "772cd022750d5b88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6642d1e3fe2c7bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/admin/page.tsx:161"}, "properties": {"repobilityId": "7fd9495b4466829f", "scanner": "scanner-primary", "fingerprint": "f6642d1e3fe2c7bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14b218500a58b937", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/registro-cassaforte/prelievo/page.tsx:142"}, "properties": {"repobilityId": "077741d81a2de47a", "scanner": "scanner-primary", "fingerprint": "14b218500a58b937", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77b24045a4390bb5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/prodotti-preordine/page.tsx:145"}, "properties": {"repobilityId": "1723b9fcc335296d", "scanner": "scanner-primary", "fingerprint": "77b24045a4390bb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83735a4b7e4d6602", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabStatistiche.tsx:33"}, "properties": {"repobilityId": "2d078c4e075e0934", "scanner": "scanner-primary", "fingerprint": "83735a4b7e4d6602", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d3633dc17ceab64", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/components/TabErrori.tsx:30"}, "properties": {"repobilityId": "9e587551b5afe094", "scanner": "scanner-primary", "fingerprint": "0d3633dc17ceab64", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47d3fc52072b0862", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/agenti-whatsapp/alerts/page.tsx:26"}, "properties": {"repobilityId": "909ac049a1c4d724", "scanner": "scanner-primary", "fingerprint": "47d3fc52072b0862", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6f7c542ec2ef9bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scadenze/page.tsx:148"}, "properties": {"repobilityId": "16e662a82fe5989d", "scanner": "scanner-primary", "fingerprint": "b6f7c542ec2ef9bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bca4f8d1fb0f649", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/gestione-arrivi/page.tsx:108"}, "properties": {"repobilityId": "61c755c1184ed841", "scanner": "scanner-primary", "fingerprint": "3bca4f8d1fb0f649", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1eb8fcb97cb1cc23", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/w/[slug]/[tavolo]/chat/page.tsx:88"}, "properties": {"repobilityId": "eca6e12cde3797c1", "scanner": "scanner-primary", "fingerprint": "1eb8fcb97cb1cc23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c37d52c14de925db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/orders/page.tsx:98"}, "properties": {"repobilityId": "de2cd6bce3e03bfd", "scanner": "scanner-primary", "fingerprint": "c37d52c14de925db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-106ad64a1a1640d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/customers/page.tsx:89"}, "properties": {"repobilityId": "0d5537f10bc54914", "scanner": "scanner-primary", "fingerprint": "106ad64a1a1640d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9dfbbc0af88b62a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/analytics/avg-order-value/page.tsx:105"}, "properties": {"repobilityId": "2952515f8976dfc3", "scanner": "scanner-primary", "fingerprint": "9dfbbc0af88b62a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-330effe672156725", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/maestro-ai/customers/[id]/page.tsx:50"}, "properties": {"repobilityId": "aaba1b2d303bead6", "scanner": "scanner-primary", "fingerprint": "330effe672156725", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfcfcd59f221af5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/ubicazioni/page.tsx:402"}, "properties": {"repobilityId": "8d6665db96da6e87", "scanner": "scanner-primary", "fingerprint": "cfcfcd59f221af5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-977f44614097c0ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/my-reviews/page.tsx:86"}, "properties": {"repobilityId": "c422dacd870a2ea5", "scanner": "scanner-primary", "fingerprint": "977f44614097c0ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a02920332c13fb1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/page.tsx:455"}, "properties": {"repobilityId": "f4ae1f25ed2e66d2", "scanner": "scanner-primary", "fingerprint": "9a02920332c13fb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12a14e1efdc8bc86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/time-attendance/admin/page.tsx:429"}, "properties": {"repobilityId": "70aa8ff8c61029c4", "scanner": "scanner-primary", "fingerprint": "12a14e1efdc8bc86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da3aacd92c312830", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/catalogo-foto/page.tsx:190"}, "properties": {"repobilityId": "be9d4b65138c3493", "scanner": "scanner-primary", "fingerprint": "da3aacd92c312830", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e05790dee1b8b83c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-xmlrpc.ts:26"}, "properties": {"repobilityId": "924e5d8ac5a9e7c5", "scanner": "scanner-primary", "fingerprint": "e05790dee1b8b83c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03e19f76eb70876f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo-client.ts:96"}, "properties": {"repobilityId": "ac4695c68abb6586", "scanner": "scanner-primary", "fingerprint": "03e19f76eb70876f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc398e19f6337d90", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/facebook.ts:47"}, "properties": {"repobilityId": "f8927b1d0b6fc83e", "scanner": "scanner-primary", "fingerprint": "dc398e19f6337d90", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45d4821716a338f8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/tiktok.ts:48"}, "properties": {"repobilityId": "5ae6532331aeac8c", "scanner": "scanner-primary", "fingerprint": "45d4821716a338f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3b3ac502d3d2a78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/instagram.ts:121"}, "properties": {"repobilityId": "6116661c9419422d", "scanner": "scanner-primary", "fingerprint": "c3b3ac502d3d2a78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2345561a45d17737", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/trustpilot.ts:131"}, "properties": {"repobilityId": "198983bde5652c30", "scanner": "scanner-primary", "fingerprint": "2345561a45d17737", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0987edad7692cba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/review-manager/platforms/google.ts:62"}, "properties": {"repobilityId": "7d929fcefd1178e5", "scanner": "scanner-primary", "fingerprint": "e0987edad7692cba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b88717c9ab4508ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/super-dashboard/hooks/useDashboardData.ts:92"}, "properties": {"repobilityId": "680d8effc512e538", "scanner": "scanner-primary", "fingerprint": "b88717c9ab4508ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e96d2557e8e28d60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ai/autonomous-agent.ts:136"}, "properties": {"repobilityId": "46650d990f67052d", "scanner": "scanner-primary", "fingerprint": "e96d2557e8e28d60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-08893e516c3df7c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/auth/google-oauth.ts:62"}, "properties": {"repobilityId": "434421cd0ad9d88b", "scanner": "scanner-primary", "fingerprint": "08893e516c3df7c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cd32427c7c6e266", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/odoo-helper.ts:112"}, "properties": {"repobilityId": "dbd4c2830a63953d", "scanner": "scanner-primary", "fingerprint": "5cd32427c7c6e266", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-595fa9a2c69bd81e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/admin-session.ts:160"}, "properties": {"repobilityId": "faa847ae73bbc41d", "scanner": "scanner-primary", "fingerprint": "595fa9a2c69bd81e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffa3007f5e1ef977", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/odoo/inventoryClient.ts:406"}, "properties": {"repobilityId": "6045b1e525da689c", "scanner": "scanner-primary", "fingerprint": "ffa3007f5e1ef977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-393a172ad0df5434", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/inventoryClient.ts:71"}, "properties": {"repobilityId": "edcdf877d51956a9", "scanner": "scanner-primary", "fingerprint": "393a172ad0df5434", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8621a89aca3abefe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/odoo/client.ts:113"}, "properties": {"repobilityId": "950facbf5d16ed08", "scanner": "scanner-primary", "fingerprint": "8621a89aca3abefe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a22c809075177d3", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/orchestrator.ts:4728"}, "properties": {"repobilityId": "d35317ee60a42fe8", "scanner": "scanner-primary", "fingerprint": "9a22c809075177d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e179ac45ed98e73b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/lapa-agents/orchestrator.ts:1066"}, "properties": {"repobilityId": "8d4b38787d9411a3", "scanner": "scanner-primary", "fingerprint": "e179ac45ed98e73b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c12cea913cb4bd2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/lapa-agents/product-embedding-service.ts:154"}, "properties": {"repobilityId": "88e8a27613bad255", "scanner": "scanner-primary", "fingerprint": "c12cea913cb4bd2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d39699176075296", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/lapa-agents/agents/example-api-route.ts:175"}, "properties": {"repobilityId": "9577874e581c4868", "scanner": "scanner-primary", "fingerprint": "6d39699176075296", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d49ea3f563112857", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/lapa-agents/agents/products-agent.ts:242"}, "properties": {"repobilityId": "b74d2ed9b2eee160", "scanner": "scanner-primary", "fingerprint": "d49ea3f563112857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26f7241ed5f0eaee", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in lib/lapa-agents/agents/invoices-agent.ts:34"}, "properties": {"repobilityId": "343379bea0891112", "scanner": "scanner-primary", "fingerprint": "26f7241ed5f0eaee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e1c604ce61f319a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/agents/whatsapp-api-proxy.ts:6"}, "properties": {"repobilityId": "dc7a0c61bc363b8c", "scanner": "scanner-primary", "fingerprint": "6e1c604ce61f319a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c12229eb48abf9ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/suppliers/sync-suppliers-odoo.ts:63"}, "properties": {"repobilityId": "4a784156ccf12fa9", "scanner": "scanner-primary", "fingerprint": "c12229eb48abf9ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97a1f23bcbe48995", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useSupplierCadence.ts:51"}, "properties": {"repobilityId": "08126f608c07985c", "scanner": "scanner-primary", "fingerprint": "97a1f23bcbe48995", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7423a97d1e1de8f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/hooks/useOrderTimeline.ts:43"}, "properties": {"repobilityId": "78e5956d84a8b693", "scanner": "scanner-primary", "fingerprint": "7423a97d1e1de8f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9a32f9c0223d754", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/web-search.ts:72"}, "properties": {"repobilityId": "446e2bc633f54f88", "scanner": "scanner-primary", "fingerprint": "e9a32f9c0223d754", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b43b5b9de60d4f9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/contact-scanner-service.ts:317"}, "properties": {"repobilityId": "172e69bc7d5eae08", "scanner": "scanner-primary", "fingerprint": "b43b5b9de60d4f9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8674c8eb7572e7ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/gemini-video-analysis.ts:124"}, "properties": {"repobilityId": "408cac2a42e3d3b4", "scanner": "scanner-primary", "fingerprint": "8674c8eb7572e7ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d077e0e1ad2125c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/services/inventory-ai-analysis.ts:228"}, "properties": {"repobilityId": "7e0e9818d5b36064", "scanner": "scanner-primary", "fingerprint": "0d077e0e1ad2125c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b32bc4383f074cf7", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/maestro-agents/tools/external-research-tools.ts:37"}, "properties": {"repobilityId": "b1890fca374e84c5", "scanner": "scanner-primary", "fingerprint": "b32bc4383f074cf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68502894183dde76", "level": "note", "message": {"text": "Legacy-named symbol `minutesOld` in lib/db/pickingDB.ts:347"}, "properties": {"repobilityId": "693878ca2d5aa983", "scanner": "scanner-primary", "fingerprint": "68502894183dde76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9cdae07b33f311f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/appStore.ts:16"}, "properties": {"repobilityId": "b25b64285602d86a", "scanner": "scanner-primary", "fingerprint": "a9cdae07b33f311f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e826cff9eef312d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/store/authStore.ts:98"}, "properties": {"repobilityId": "9f1273a4b1c7aec4", "scanner": "scanner-primary", "fingerprint": "e826cff9eef312d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d5c7172ebb556b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/smart-ordering/prediction-engine.ts:91"}, "properties": {"repobilityId": "33f6e0c13c8150a1", "scanner": "scanner-primary", "fingerprint": "2d5c7172ebb556b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23fd670149ad5788", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/smart-ordering/odoo-integration.ts:103"}, "properties": {"repobilityId": "628620a739479646", "scanner": "scanner-primary", "fingerprint": "23fd670149ad5788", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bcc263ce2d371fa", "level": "note", "message": {"text": "Legacy-named symbol `gmail_v1` in lib/email-ai/gmail-client.ts:7"}, "properties": {"repobilityId": "590f82959d595aec", "scanner": "scanner-primary", "fingerprint": "7bcc263ce2d371fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-492c00e17c4bc2f7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/registro-cassaforte/reolink-service.ts:84"}, "properties": {"repobilityId": "17b9fd736baf3cff", "scanner": "scanner-primary", "fingerprint": "492c00e17c4bc2f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d42be994855cce15", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/ocr/attachments-pipeline.ts:163"}, "properties": {"repobilityId": "297cd2b6d49d8ffb", "scanner": "scanner-primary", "fingerprint": "d42be994855cce15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b551324eadd337de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v8-perfect.ts:23"}, "properties": {"repobilityId": "217d07174a4c54f1", "scanner": "scanner-primary", "fingerprint": "b551324eadd337de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4728235e6e36059a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-ai-config.ts:23"}, "properties": {"repobilityId": "0632f2be8b9a0d2f", "scanner": "scanner-primary", "fingerprint": "4728235e6e36059a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78f7baa9579856bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-winning-model.ts:30"}, "properties": {"repobilityId": "3545434b7c041679", "scanner": "scanner-primary", "fingerprint": "78f7baa9579856bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-42c9d9d58b9ba5f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-test-articles.cjs:13"}, "properties": {"repobilityId": "1ee68efdb6569ae4", "scanner": "scanner-primary", "fingerprint": "42c9d9d58b9ba5f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2922a152a144e38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v9-english-source.ts:23"}, "properties": {"repobilityId": "2ab0c7f1b212cb29", "scanner": "scanner-primary", "fingerprint": "f2922a152a144e38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3229bc6a0d651fa6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-376.ts:13"}, "properties": {"repobilityId": "6110d6483cb0aab5", "scanner": "scanner-primary", "fingerprint": "3229bc6a0d651fa6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e145b67cc5eb24a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-intra-eu-tax-labels.ts:27"}, "properties": {"repobilityId": "10fd15118b879a3f", "scanner": "scanner-primary", "fingerprint": "e145b67cc5eb24a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5aa19d8f8ae5939", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte-419.ts:13"}, "properties": {"repobilityId": "2b70bdec2a9ef1bd", "scanner": "scanner-primary", "fingerprint": "c5aa19d8f8ae5939", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd7cb56159f12723", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-blog-structure.js:13"}, "properties": {"repobilityId": "16434413d97f2641", "scanner": "scanner-primary", "fingerprint": "fd7cb56159f12723", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8209cbd3d879e1c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-direct-html.ts:28"}, "properties": {"repobilityId": "36bdf6cd0b7ca88e", "scanner": "scanner-primary", "fingerprint": "c8209cbd3d879e1c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96d893f9d6e940e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-347.ts:13"}, "properties": {"repobilityId": "b692faaf6e53bc08", "scanner": "scanner-primary", "fingerprint": "96d893f9d6e940e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d750b4e97b250f9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/bulk-seo-all-products.ts:220"}, "properties": {"repobilityId": "973a70f5c2ed25d9", "scanner": "scanner-primary", "fingerprint": "2d750b4e97b250f9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2938d89c0335c835", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-swiss-locations-all-products.ts:39"}, "properties": {"repobilityId": "5873e8c91c4d823d", "scanner": "scanner-primary", "fingerprint": "2938d89c0335c835", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-baf9f94e9f06a08b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-correct.ts:24"}, "properties": {"repobilityId": "5afe188faea6e8bf", "scanner": "scanner-primary", "fingerprint": "baf9f94e9f06a08b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d93f8fb0e1fa114", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-german-keywords.ts:19"}, "properties": {"repobilityId": "192fa123a8721968", "scanner": "scanner-primary", "fingerprint": "1d93f8fb0e1fa114", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd6cd2fd4471f893", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-full-article.cjs:13"}, "properties": {"repobilityId": "12bac847931d1b5a", "scanner": "scanner-primary", "fingerprint": "dd6cd2fd4471f893", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eeb683fb4bc27da4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-seo-mozzarella.ts:52"}, "properties": {"repobilityId": "827c6bad2a372570", "scanner": "scanner-primary", "fingerprint": "eeb683fb4bc27da4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-255b60b5d223d4ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/cleanup-abandoned-carts.ts:31"}, "properties": {"repobilityId": "90c4dc5e845753e0", "scanner": "scanner-primary", "fingerprint": "255b60b5d223d4ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b898487159542da0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-german-keywords-all-products.ts:29"}, "properties": {"repobilityId": "f007ff65ef6f4c70", "scanner": "scanner-primary", "fingerprint": "b898487159542da0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea78e137398760e5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo.ts:42"}, "properties": {"repobilityId": "f4e845313a627147", "scanner": "scanner-primary", "fingerprint": "ea78e137398760e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-563f797dcf5eec14", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v6.ts:23"}, "properties": {"repobilityId": "c8e71d834670b520", "scanner": "scanner-primary", "fingerprint": "563f797dcf5eec14", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4896f46fda9e701", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-all-languages.ts:53"}, "properties": {"repobilityId": "bbe825a9c297d8df", "scanner": "scanner-primary", "fingerprint": "e4896f46fda9e701", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b8bcac647cfd1e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249"}, "properties": {"repobilityId": "faef698bd6bdd46c", "scanner": "scanner-primary", "fingerprint": "8b8bcac647cfd1e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9bc7e6e849ff58a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-100-percent.ts:28"}, "properties": {"repobilityId": "d43aa80a2f2c1a77", "scanner": "scanner-primary", "fingerprint": "9bc7e6e849ff58a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47eb7158b7a1c606", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/investigate-public-user.ts:23"}, "properties": {"repobilityId": "7080563b2f8d3084", "scanner": "scanner-primary", "fingerprint": "47eb7158b7a1c606", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b819a93abcdbca54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-german-419.ts:13"}, "properties": {"repobilityId": "99949d718948daa9", "scanner": "scanner-primary", "fingerprint": "b819a93abcdbca54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dbb95071b5d1d645", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-to-articles.ts:28"}, "properties": {"repobilityId": "a4e87964a71f2b5c", "scanner": "scanner-primary", "fingerprint": "dbb95071b5d1d645", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d30e3d3259f3768", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-article-all-langs.cjs:13"}, "properties": {"repobilityId": "ed1e5544f4d0e3c7", "scanner": "scanner-primary", "fingerprint": "1d30e3d3259f3768", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-081f0f5a1ce3a9bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-simple-write-approach.ts:27"}, "properties": {"repobilityId": "975cb0cfc409a34b", "scanner": "scanner-primary", "fingerprint": "081f0f5a1ce3a9bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10268dc3cb2f790f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-users.ts:18"}, "properties": {"repobilityId": "cb400bbeebd0350a", "scanner": "scanner-primary", "fingerprint": "10268dc3cb2f790f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89eec57140a4954b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-generated-articles.js:88"}, "properties": {"repobilityId": "d205ed8bc473c8ed", "scanner": "scanner-primary", "fingerprint": "89eec57140a4954b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c0d2c3c6b8002fc1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-all-test-articles.cjs:13"}, "properties": {"repobilityId": "ddff0e31625e0308", "scanner": "scanner-primary", "fingerprint": "c0d2c3c6b8002fc1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fb5c566ff4a42ea2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v2.ts:23"}, "properties": {"repobilityId": "db7dc67a984e152d", "scanner": "scanner-primary", "fingerprint": "fb5c566ff4a42ea2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6628c589f3ca8f0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-fixed.ts:23"}, "properties": {"repobilityId": "3c962f2897b54bd2", "scanner": "scanner-primary", "fingerprint": "6628c589f3ca8f0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b382c9164c4a2d4a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-products-seo.ts:18"}, "properties": {"repobilityId": "9a6d70a01af8d9c8", "scanner": "scanner-primary", "fingerprint": "b382c9164c4a2d4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1668502f711b882", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-xmlrpc-endpoint.ts:20"}, "properties": {"repobilityId": "a43ec0143e88260e", "scanner": "scanner-primary", "fingerprint": "f1668502f711b882", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8224292358e1785", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/manual-test-article-1.ts:27"}, "properties": {"repobilityId": "2f5125694ddaa93e", "scanner": "scanner-primary", "fingerprint": "c8224292358e1785", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f0030dea1b710ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-website-config.ts:33"}, "properties": {"repobilityId": "e2fbbc31d6d8d14c", "scanner": "scanner-primary", "fingerprint": "7f0030dea1b710ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f479db87759de5fc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fiordilatte.ts:13"}, "properties": {"repobilityId": "d4239af038d9a7d9", "scanner": "scanner-primary", "fingerprint": "f479db87759de5fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bdd5d1e15f3243ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.cjs:13"}, "properties": {"repobilityId": "faf59445836f833b", "scanner": "scanner-primary", "fingerprint": "bdd5d1e15f3243ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9832a4305e0abd13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-via-jsonrpc.ts:17"}, "properties": {"repobilityId": "2d0065f35440be5d", "scanner": "scanner-primary", "fingerprint": "9832a4305e0abd13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cad1516d3c7834c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-odoo-translations.ts:13"}, "properties": {"repobilityId": "9de05f8e7f1e4f5f", "scanner": "scanner-primary", "fingerprint": "cad1516d3c7834c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bdd597902472b9a", "level": "none", "message": {"text": "Commented-code block (6 lines) in seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:18"}, "properties": {"repobilityId": "19c8497798bd6cdb", "scanner": "scanner-primary", "fingerprint": "0bdd597902472b9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-439a60bc521c7e24", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/apply-perfect-seo-friarielli.ts:58"}, "properties": {"repobilityId": "b612151ef6547bff", "scanner": "scanner-primary", "fingerprint": "439a60bc521c7e24", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-febc3445a362269f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-segments.ts:15"}, "properties": {"repobilityId": "23ad30afbbcc361b", "scanner": "scanner-primary", "fingerprint": "febc3445a362269f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03a5aec485a4f80c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-shop-button-page.ts:33"}, "properties": {"repobilityId": "f17dcdecba45f2be", "scanner": "scanner-primary", "fingerprint": "03a5aec485a4f80c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6461279801701d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-420.ts:13"}, "properties": {"repobilityId": "343670f07402940e", "scanner": "scanner-primary", "fingerprint": "a6461279801701d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f7b35459d8c2949", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-translations-v10.ts:28"}, "properties": {"repobilityId": "a3b8790f56b8ef8f", "scanner": "scanner-primary", "fingerprint": "7f7b35459d8c2949", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39aec27d434b0359", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v7.ts:23"}, "properties": {"repobilityId": "333e34ed9768b956", "scanner": "scanner-primary", "fingerprint": "39aec27d434b0359", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-179ca8ec7a1ad8a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/recreate-problematic-articles.ts:27"}, "properties": {"repobilityId": "71611bbe63d2de90", "scanner": "scanner-primary", "fingerprint": "179ca8ec7a1ad8a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5537704ad6ecee8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/set-shop-bestsellers.ts:21"}, "properties": {"repobilityId": "65c03d84518a93b2", "scanner": "scanner-primary", "fingerprint": "c5537704ad6ecee8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ccf74cb81b3a7a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/associate-products-v2.ts:28"}, "properties": {"repobilityId": "baa73059e5f20d03", "scanner": "scanner-primary", "fingerprint": "8ccf74cb81b3a7a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7fe5d3200d32f1b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-fixed-articles.ts:13"}, "properties": {"repobilityId": "f41bd0fbaf41988d", "scanner": "scanner-primary", "fingerprint": "7fe5d3200d32f1b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df73f59a9bef9a1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations.ts:31"}, "properties": {"repobilityId": "9e16001d706ee78a", "scanner": "scanner-primary", "fingerprint": "df73f59a9bef9a1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ef93885020f63bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-articles.ts:22"}, "properties": {"repobilityId": "8f5c1f1e2e5b3110", "scanner": "scanner-primary", "fingerprint": "3ef93885020f63bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0cb579397ea0461a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-perfect.ts:23"}, "properties": {"repobilityId": "c73ef08464a15867", "scanner": "scanner-primary", "fingerprint": "0cb579397ea0461a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7da360269a0c050f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-27-articles-final.cjs:93"}, "properties": {"repobilityId": "0a93c404462b9390", "scanner": "scanner-primary", "fingerprint": "7da360269a0c050f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-373dfc60c611a618", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-and-recreate-all-v10.ts:28"}, "properties": {"repobilityId": "36e4fa85d727e9b7", "scanner": "scanner-primary", "fingerprint": "373dfc60c611a618", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-516540b0d3de476b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-duplicate-articles.ts:13"}, "properties": {"repobilityId": "6675badcfb3b6af7", "scanner": "scanner-primary", "fingerprint": "516540b0d3de476b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4b464bf241dc0a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v4.ts:27"}, "properties": {"repobilityId": "3ab2fd77567f9fc2", "scanner": "scanner-primary", "fingerprint": "c4b464bf241dc0a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b35bb5b6d6bb30b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-random-articles.ts:13"}, "properties": {"repobilityId": "d234790ed805c4fa", "scanner": "scanner-primary", "fingerprint": "b35bb5b6d6bb30b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c877fd57ea6bf12f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-improved.ts:27"}, "properties": {"repobilityId": "2da07b87118b5fb4", "scanner": "scanner-primary", "fingerprint": "c877fd57ea6bf12f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-239617285ac4c956", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inject-shop-button.ts:39"}, "properties": {"repobilityId": "dcc915ab4b95966c", "scanner": "scanner-primary", "fingerprint": "239617285ac4c956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0f05ff128ae2ec29", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-get-field-translations.ts:28"}, "properties": {"repobilityId": "b162c84cf5832118", "scanner": "scanner-primary", "fingerprint": "0f05ff128ae2ec29", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4543638967cb60ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-companies-taxes.ts:13"}, "properties": {"repobilityId": "98c5ebf566caa5db", "scanner": "scanner-primary", "fingerprint": "4543638967cb60ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5d8c15af2e0adced", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-helpdesk.ts:22"}, "properties": {"repobilityId": "8d3b54dee0b259c4", "scanner": "scanner-primary", "fingerprint": "5d8c15af2e0adced", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d099f1a7bb90642", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230"}, "properties": {"repobilityId": "37767ccb5665b3f7", "scanner": "scanner-primary", "fingerprint": "7d099f1a7bb90642", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56bb4181be1db3ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-article-365.ts:27"}, "properties": {"repobilityId": "c5ba45197a87fe08", "scanner": "scanner-primary", "fingerprint": "56bb4181be1db3ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-503a2f75ea1d267b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-single-product-seo.ts:44"}, "properties": {"repobilityId": "a52f6a5982c9305d", "scanner": "scanner-primary", "fingerprint": "503a2f75ea1d267b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9399adc85d243aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-random-articles.ts:13"}, "properties": {"repobilityId": "4504d22ff2ad5a4b", "scanner": "scanner-primary", "fingerprint": "e9399adc85d243aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56f189f394290f56", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes.ts:37"}, "properties": {"repobilityId": "b6b0efba42a448c8", "scanner": "scanner-primary", "fingerprint": "56f189f394290f56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f2c01507de2fcef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v5.ts:23"}, "properties": {"repobilityId": "f3bb39734d1fa946", "scanner": "scanner-primary", "fingerprint": "9f2c01507de2fcef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b349b888eb99adb8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-structural.ts:28"}, "properties": {"repobilityId": "fd9087310e3f083d", "scanner": "scanner-primary", "fingerprint": "b349b888eb99adb8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-419038d2b4277f48", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicates.ts:14"}, "properties": {"repobilityId": "a267a6a0c91662d9", "scanner": "scanner-primary", "fingerprint": "419038d2b4277f48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-548ef9a3c7adc4fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-untranslated.cjs:15"}, "properties": {"repobilityId": "c49e3cd7832ed1d0", "scanner": "scanner-primary", "fingerprint": "548ef9a3c7adc4fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2cc6f2c442599ce3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-ir-translation.ts:20"}, "properties": {"repobilityId": "325e6a67fcf12b0c", "scanner": "scanner-primary", "fingerprint": "2cc6f2c442599ce3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22dfe489d1f71039", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v10-full-content.ts:23"}, "properties": {"repobilityId": "b11d01b70d8406fd", "scanner": "scanner-primary", "fingerprint": "22dfe489d1f71039", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a9e07f17d18ddaf6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/delete-duplicate-articles.ts:14"}, "properties": {"repobilityId": "df7218dfbf6117ca", "scanner": "scanner-primary", "fingerprint": "a9e07f17d18ddaf6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c763c879d9f25a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-cacao-polvere-seo.ts:138"}, "properties": {"repobilityId": "250024fbe28c186d", "scanner": "scanner-primary", "fingerprint": "3c763c879d9f25a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03f28ebd975ef137", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/test-fix-article-1.ts:27"}, "properties": {"repobilityId": "1442f74da6071aef", "scanner": "scanner-primary", "fingerprint": "03f28ebd975ef137", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ac34feabe0ab901", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-shop-settings.ts:14"}, "properties": {"repobilityId": "ee6652fe9255cbb2", "scanner": "scanner-primary", "fingerprint": "0ac34feabe0ab901", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77c588f9dea7a076", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-translatable-fields.ts:13"}, "properties": {"repobilityId": "415626bce0c43d8b", "scanner": "scanner-primary", "fingerprint": "77c588f9dea7a076", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae877b7f5344462f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-existing-article.ts:13"}, "properties": {"repobilityId": "226f8abcf91547ec", "scanner": "scanner-primary", "fingerprint": "ae877b7f5344462f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-729ea842870287bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-all-products-seo.ts:19"}, "properties": {"repobilityId": "4f533ff2820bee99", "scanner": "scanner-primary", "fingerprint": "729ea842870287bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f3eb19fce7b0c2ca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-seo-issues.ts:22"}, "properties": {"repobilityId": "c1e68ed64f987ffd", "scanner": "scanner-primary", "fingerprint": "f3eb19fce7b0c2ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fdcff02cb9a5303", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/add-floating-shop-button.ts:83"}, "properties": {"repobilityId": "8ab097c1555c4fc1", "scanner": "scanner-primary", "fingerprint": "5fdcff02cb9a5303", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b16b00cc72c67908", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-groups.ts:13"}, "properties": {"repobilityId": "c040b11e56e64389", "scanner": "scanner-primary", "fingerprint": "b16b00cc72c67908", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-657f45cec6993589", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-complete-seo.ts:42"}, "properties": {"repobilityId": "e91cf9cb11ca9771", "scanner": "scanner-primary", "fingerprint": "657f45cec6993589", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce87a48f8dbaa3cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/update-chatbot-v2.ts:273"}, "properties": {"repobilityId": "eaeaff146af6a7b3", "scanner": "scanner-primary", "fingerprint": "ce87a48f8dbaa3cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ee58f14e58bd3d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-search-in-html.ts:28"}, "properties": {"repobilityId": "df6938690e4529f5", "scanner": "scanner-primary", "fingerprint": "2ee58f14e58bd3d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2bb2746d7f036d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-all-with-v10.ts:27"}, "properties": {"repobilityId": "9acf8c5c14ae1c52", "scanner": "scanner-primary", "fingerprint": "f2bb2746d7f036d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e99eadbcd7600b19", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/inspect-working-article-translations.ts:13"}, "properties": {"repobilityId": "d03d458d75c83fb6", "scanner": "scanner-primary", "fingerprint": "e99eadbcd7600b19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b76d1f1b13625cd3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-final.ts:30"}, "properties": {"repobilityId": "12997d94af75cb9c", "scanner": "scanner-primary", "fingerprint": "b76d1f1b13625cd3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-158f74e7bfb27185", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/check-multiple-articles.ts:13"}, "properties": {"repobilityId": "e8e221d7790d8e0b", "scanner": "scanner-primary", "fingerprint": "158f74e7bfb27185", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5d68ede83a375c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-with-update-field-translations.ts:28"}, "properties": {"repobilityId": "d5dbc92e5c292499", "scanner": "scanner-primary", "fingerprint": "c5d68ede83a375c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70740f86b838e3ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-custom-ai-module.ts:23"}, "properties": {"repobilityId": "6c9c1b2c52ce3c61", "scanner": "scanner-primary", "fingerprint": "70740f86b838e3ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ebec336204461f32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-fiordilatte-update-translations.ts:27"}, "properties": {"repobilityId": "f5e44c7698b6f60f", "scanner": "scanner-primary", "fingerprint": "ebec336204461f32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9de22297eebac0fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-italian-tax-exemptions.ts:13"}, "properties": {"repobilityId": "8bfad21524cb3bcb", "scanner": "scanner-primary", "fingerprint": "9de22297eebac0fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e851024dd26d3a88", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-products-seo.ts:97"}, "properties": {"repobilityId": "42489b41128a2608", "scanner": "scanner-primary", "fingerprint": "e851024dd26d3a88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b59a44e0c2dc43e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-product-seo-multilingual.ts:156"}, "properties": {"repobilityId": "b01cf72fbf02a665", "scanner": "scanner-primary", "fingerprint": "6b59a44e0c2dc43e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee8746587a17332c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-translations-and-links.ts:29"}, "properties": {"repobilityId": "5cc69212bc0d527c", "scanner": "scanner-primary", "fingerprint": "ee8746587a17332c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d51699bc0d463904", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/get-products-from-odoo.ts:13"}, "properties": {"repobilityId": "f414fb38c8b96b5c", "scanner": "scanner-primary", "fingerprint": "d51699bc0d463904", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ed228d36c487d86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:23"}, "properties": {"repobilityId": "be5a34266f780ce5", "scanner": "scanner-primary", "fingerprint": "6ed228d36c487d86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9b66846eef64944", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/fix-all-60-articles-final.ts:28"}, "properties": {"repobilityId": "208b6d3d291a739e", "scanner": "scanner-primary", "fingerprint": "d9b66846eef64944", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af6c47fc358aeb87", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/verify-all-keywords.ts:19"}, "properties": {"repobilityId": "59d1f6b7bdd046cc", "scanner": "scanner-primary", "fingerprint": "af6c47fc358aeb87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35eefcfb91a33633", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-v3.ts:23"}, "properties": {"repobilityId": "0ddf51c100e42505", "scanner": "scanner-primary", "fingerprint": "35eefcfb91a33633", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c84454105d5b8dea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/find-mozzarella.ts:14"}, "properties": {"repobilityId": "c86f8dc16ed488cf", "scanner": "scanner-primary", "fingerprint": "c84454105d5b8dea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed896b2a51b27075", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/debug-translation-call.ts:17"}, "properties": {"repobilityId": "e4fab8d8c9f56eee", "scanner": "scanner-primary", "fingerprint": "ed896b2a51b27075", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a702806ca58146c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-blog-seo.ts:18"}, "properties": {"repobilityId": "9c728f830d91bc9c", "scanner": "scanner-primary", "fingerprint": "a702806ca58146c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e4034f7234bc46c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/upload-article-simple.ts:25"}, "properties": {"repobilityId": "1f571d75df730c90", "scanner": "scanner-primary", "fingerprint": "6e4034f7234bc46c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3f1aee1c7cba033", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/collect-chatbot-knowledge.ts:24"}, "properties": {"repobilityId": "860ed1ca60be23ff", "scanner": "scanner-primary", "fingerprint": "e3f1aee1c7cba033", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbaafcb24559e604", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/create-intra-eu-taxes-itaempire.ts:49"}, "properties": {"repobilityId": "efdee85135a24482", "scanner": "scanner-primary", "fingerprint": "fbaafcb24559e604", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a9e1ba3f247e789d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/scripts/analyze-articles-seo.ts:21"}, "properties": {"repobilityId": "492d397480fb3632", "scanner": "scanner-primary", "fingerprint": "a9e1ba3f247e789d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2aef4169aea9d4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 seo-geo-optimizer/src/connectors/odoo-rpc.ts:107"}, "properties": {"repobilityId": "f41b3c29065218f5", "scanner": "scanner-primary", "fingerprint": "b2aef4169aea9d4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b524f4bd6f87c33", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 hooks/useMaestroAI.ts:66"}, "properties": {"repobilityId": "0c54df24d116de09", "scanner": "scanner-primary", "fingerprint": "6b524f4bd6f87c33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20cc339bb992e3b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:52"}, "properties": {"repobilityId": "406bc4ca3d7ca22a", "scanner": "scanner-primary", "fingerprint": "20cc339bb992e3b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea166bef359804da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier-ollama.js:170"}, "properties": {"repobilityId": "27d2550109d6925b", "scanner": "scanner-primary", "fingerprint": "ea166bef359804da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-67bc82ac31dfad96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/contact-classifier.js:205"}, "properties": {"repobilityId": "eb444cb9d19e7a2f", "scanner": "scanner-primary", "fingerprint": "67bc82ac31dfad96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc9c61da7e0b7269", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/classifier.js:154"}, "properties": {"repobilityId": "c33cd8bb0777dc2c", "scanner": "scanner-primary", "fingerprint": "cc9c61da7e0b7269", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9275188710f56d00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jetson-deployment/server/banknote-recognition.js:106"}, "properties": {"repobilityId": "5018b0307a221a9b", "scanner": "scanner-primary", "fingerprint": "9275188710f56d00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-106b24f0f865e534", "level": "note", "message": {"text": "90 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "342488c0b243e851", "scanner": "scanner-primary", "fingerprint": "106b24f0f865e534", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-7964f79f28fc305a", "level": "error", "message": {"text": "Dangling fetch: POST /web/session/get_session_info (public/lapa-chat-embed.js:299)"}, "properties": {"repobilityId": "4c13956635baeb6b", "scanner": "scanner-primary", "fingerprint": "7964f79f28fc305a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d9d03bf320069ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering/create-orders (public/service-worker-smart-ordering.js:115)"}, "properties": {"repobilityId": "3e8db7d338b30d62", "scanner": "scanner-primary", "fingerprint": "6d9d03bf320069ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40831c8145eda85f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:3000/api/maestro/customers/2421 (test-api-now.ts:7)"}, "properties": {"repobilityId": "cd939f43c79cf90e", "scanner": "scanner-primary", "fingerprint": "40831c8145eda85f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c22964f7648d8930", "level": "error", "message": {"text": "Dangling fetch: GET /api/apps/visibility?${params.toString()} (components/layout/AppGrid.tsx:33)"}, "properties": {"repobilityId": "ca22d631332bc583", "scanner": "scanner-primary", "fingerprint": "c22964f7648d8930", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9972681db336887", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BatchBlogImageModal.tsx:71)"}, "properties": {"repobilityId": "5e4b572cda706653", "scanner": "scanner-primary", "fingerprint": "b9972681db336887", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70d30e47df04124d", "level": "error", "message": {"text": "Dangling fetch: POST /api/blog/upload-image (components/blog/BatchBlogImageModal.tsx:206)"}, "properties": {"repobilityId": "483fc8041dd66132", "scanner": "scanner-primary", "fingerprint": "70d30e47df04124d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b464a89f71effa70", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/blog/BlogAIImageModal.tsx:42)"}, "properties": {"repobilityId": "c0b814cc062ae83d", "scanner": "scanner-primary", "fingerprint": "b464a89f71effa70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-306efddc8d85767a", "level": "error", "message": {"text": "Dangling fetch: POST /api/blog/upload-image (components/blog/BlogAIImageModal.tsx:99)"}, "properties": {"repobilityId": "b2574389b791c283", "scanner": "scanner-primary", "fingerprint": "306efddc8d85767a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bad2eaa9df8ceb56", "level": "error", "message": {"text": "Dangling fetch: GET /api/website-analytics (components/super-dashboard/WebsiteAnalyticsSection.tsx:68)"}, "properties": {"repobilityId": "77a4cd703a76b72c", "scanner": "scanner-primary", "fingerprint": "bad2eaa9df8ceb56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19f525935d1e9b3b", "level": "error", "message": {"text": "Dangling fetch: GET /api/search-console (components/super-dashboard/WebsiteAnalyticsSection.tsx:69)"}, "properties": {"repobilityId": "660f7dae50e3865b", "scanner": "scanner-primary", "fingerprint": "19f525935d1e9b3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fab30e11085e7bb1", "level": "error", "message": {"text": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:163)"}, "properties": {"repobilityId": "8ea2647ea1a678af", "scanner": "scanner-primary", "fingerprint": "fab30e11085e7bb1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d376f1d6e76a860", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/kpi?period=${period} (components/super-dashboard/KPISummarySection.tsx:352)"}, "properties": {"repobilityId": "f6698bc90f4e5121", "scanner": "scanner-primary", "fingerprint": "1d376f1d6e76a860", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae9d38fe1b68ca26", "level": "error", "message": {"text": "Dangling fetch: GET /api/recurring-products-lost (components/super-dashboard/KPISummarySection.tsx:378)"}, "properties": {"repobilityId": "a83a9083af6783ed", "scanner": "scanner-primary", "fingerprint": "ae9d38fe1b68ca26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a47d642378e06cff", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=week (components/super-dashboard/KPISummarySection.tsx:393)"}, "properties": {"repobilityId": "36a9731322dc8edf", "scanner": "scanner-primary", "fingerprint": "a47d642378e06cff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0706576cbd3dbd2c", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/cassaforte (components/super-dashboard/KPISummarySection.tsx:408)"}, "properties": {"repobilityId": "6c4b83172cfc2082", "scanner": "scanner-primary", "fingerprint": "0706576cbd3dbd2c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f48145a4489c79a", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (components/super-dashboard/SalesRadarActivityModal.tsx:32)"}, "properties": {"repobilityId": "74415292da424516", "scanner": "scanner-primary", "fingerprint": "8f48145a4489c79a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4d4c3e173ca8931", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/lot (components/inventario/LotManager.tsx:76)"}, "properties": {"repobilityId": "d48a0725b5565b9b", "scanner": "scanner-primary", "fingerprint": "b4d4c3e173ca8931", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-590b906e265c4ebb", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/analyze-video (components/inventario/InventoryAIModal.tsx:222)"}, "properties": {"repobilityId": "66b8c2dc3fb75df9", "scanner": "scanner-primary", "fingerprint": "590b906e265c4ebb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-85dce5760ce6b41b", "level": "error", "message": {"text": "Dangling fetch: POST /api/verification-requests/complete (components/inventario/VerificationListModal.tsx:88)"}, "properties": {"repobilityId": "2eab20d2cb59b151", "scanner": "scanner-primary", "fingerprint": "85dce5760ce6b41b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-843c043db9c52cbf", "level": "error", "message": {"text": "Dangling fetch: GET /api/waste/location-products?locationId=${selectedLocation.id} (components/inventario/WasteTransferModal.tsx:73)"}, "properties": {"repobilityId": "89910137c4de583b", "scanner": "scanner-primary", "fingerprint": "843c043db9c52cbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f1e9f531cc9b6e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/location (components/inventario/WasteTransferModal.tsx:94)"}, "properties": {"repobilityId": "a749d95f3077bb58", "scanner": "scanner-primary", "fingerprint": "0f1e9f531cc9b6e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27d21c18e440ca33", "level": "error", "message": {"text": "Dangling fetch: POST /api/waste/transfer (components/inventario/WasteTransferModal.tsx:179)"}, "properties": {"repobilityId": "3b887e2aa58dcd64", "scanner": "scanner-primary", "fingerprint": "27d21c18e440ca33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0d56e00effe5ed5", "level": "error", "message": {"text": "Dangling fetch: HEAD /api/health (components/inventario/ConnectionStatus.tsx:15)"}, "properties": {"repobilityId": "cd877d19d8d1fd6f", "scanner": "scanner-primary", "fingerprint": "f0d56e00effe5ed5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c671a3245b53692", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (components/arrivo-merce/UnmatchedProductsHandler.tsx:55)"}, "properties": {"repobilityId": "850f7c5959cb2bcc", "scanner": "scanner-primary", "fingerprint": "2c671a3245b53692", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-131006bef0c3db70", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/download-attachment (components/arrivo-merce/AttachmentSelector.tsx:96)"}, "properties": {"repobilityId": "ef26c7a992795135", "scanner": "scanner-primary", "fingerprint": "131006bef0c3db70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aba3d028d90dd2bf", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/search-products (components/arrivo-merce/SearchProductModal.tsx:55)"}, "properties": {"repobilityId": "282d1a66768c0492", "scanner": "scanner-primary", "fingerprint": "aba3d028d90dd2bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb8ba178ef20bb38", "level": "error", "message": {"text": "Dangling fetch: GET /api/arrivo-merce/list-today (components/arrivo-merce/TodayArrivalsList.tsx:56)"}, "properties": {"repobilityId": "7355c8c5ee105370", "scanner": "scanner-primary", "fingerprint": "cb8ba178ef20bb38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a69b8a52c5edacc3", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/classify-attachments (components/arrivo-merce/TodayArrivalsList.tsx:100)"}, "properties": {"repobilityId": "ee69a42d28c3c509", "scanner": "scanner-primary", "fingerprint": "a69b8a52c5edacc3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-379d576da025246d", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:42)"}, "properties": {"repobilityId": "8e737689eb1a67be", "scanner": "scanner-primary", "fingerprint": "379d576da025246d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aac3ed523edf3489", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:69)"}, "properties": {"repobilityId": "3655742a43a01152", "scanner": "scanner-primary", "fingerprint": "aac3ed523edf3489", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2f8d2ff1e64514b", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/alerts (components/controllo-prezzi/AlertTab.tsx:93)"}, "properties": {"repobilityId": "7c1b8e28aefaf3f2", "scanner": "scanner-primary", "fingerprint": "a2f8d2ff1e64514b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7947eaab23d4aeb", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/fatture-bozza (components/controllo-prezzi/FattureBozzaTab.tsx:34)"}, "properties": {"repobilityId": "9862847ab6e96804", "scanner": "scanner-primary", "fingerprint": "a7947eaab23d4aeb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3bcce267693942d", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:198)"}, "properties": {"repobilityId": "4077759228da113e", "scanner": "scanner-primary", "fingerprint": "f3bcce267693942d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65b149e2e0c37fe3", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-to-odoo (components/social-ai/ShareMenu.tsx:243)"}, "properties": {"repobilityId": "42c62e1687dfa6ea", "scanner": "scanner-primary", "fingerprint": "65b149e2e0c37fe3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6a0ecc1894fb1f1", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/products?${params} (components/social-ai/ProductSelector.tsx:63)"}, "properties": {"repobilityId": "9f32883cad6a6ac6", "scanner": "scanner-primary", "fingerprint": "a6a0ecc1894fb1f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75a68a151e4d15d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/refine-video (components/social-ai/video/VideoEditor.tsx:74)"}, "properties": {"repobilityId": "7d0a44eae8933ce9", "scanner": "scanner-primary", "fingerprint": "75a68a151e4d15d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-787e2f06301a4861", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (components/social-ai/video/VideoEditor.tsx:126)"}, "properties": {"repobilityId": "415e7ed16279b51d", "scanner": "scanner-primary", "fingerprint": "787e2f06301a4861", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eae03b9ac139e32e", "level": "error", "message": {"text": "Dangling fetch: POST /api/maestro/create-sample-order (components/maestro/InteractionModal.tsx:70)"}, "properties": {"repobilityId": "bf2c7611ccae9ea1", "scanner": "scanner-primary", "fingerprint": "eae03b9ac139e32e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a985225962417fa7", "level": "error", "message": {"text": "Dangling fetch: POST /api/maestro/interactions (components/maestro/InteractionModal.tsx:134)"}, "properties": {"repobilityId": "e8ef388e06c72f86", "scanner": "scanner-primary", "fingerprint": "a985225962417fa7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ddaf8a969289e9ac", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (components/maestro/UrgentProductsModal.tsx:48)"}, "properties": {"repobilityId": "9c00a72aced8c7ec", "scanner": "scanner-primary", "fingerprint": "ddaf8a969289e9ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ad792c2671977b4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/UrgentProductsModal.tsx:67)"}, "properties": {"repobilityId": "60639585f2b46cc2", "scanner": "scanner-primary", "fingerprint": "2ad792c2671977b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd0ce817ed85c7c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/offer-products (components/maestro/OfferProductsModal.tsx:48)"}, "properties": {"repobilityId": "8d16784d4aadfd01", "scanner": "scanner-primary", "fingerprint": "fd0ce817ed85c7c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84c0482acb3b7e6d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/OfferProductsModal.tsx:67)"}, "properties": {"repobilityId": "30206ca1b3cf9975", "scanner": "scanner-primary", "fingerprint": "84c0482acb3b7e6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ade76caebe3d7adb", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/avatars?${params.toString()} (components/maestro/CustomerSearchInput.tsx:52)"}, "properties": {"repobilityId": "fb2ac7e976dbb67a", "scanner": "scanner-primary", "fingerprint": "ade76caebe3d7adb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ffb60b83508fd80", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (components/maestro/ProductManagementModal.tsx:49)"}, "properties": {"repobilityId": "9f0f8d2e0dc58ab4", "scanner": "scanner-primary", "fingerprint": "3ffb60b83508fd80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-14198b823d3cf011", "level": "error", "message": {"text": "Dangling fetch: GET /api/offer-products (components/maestro/ProductManagementModal.tsx:50)"}, "properties": {"repobilityId": "71a00e2b1bfd058e", "scanner": "scanner-primary", "fingerprint": "14198b823d3cf011", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c28acd4c7e9b35c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/urgent-products?id=${productId} (components/maestro/ProductManagementModal.tsx:73)"}, "properties": {"repobilityId": "14b9db01b4b82c4c", "scanner": "scanner-primary", "fingerprint": "0c28acd4c7e9b35c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b8d407185627416f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/offer-products?id=${productId} (components/maestro/ProductManagementModal.tsx:95)"}, "properties": {"repobilityId": "f86a87408cec063c", "scanner": "scanner-primary", "fingerprint": "b8d407185627416f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84b77d51230413ba", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/reservations (components/portale-clienti/ProductCard.tsx:83)"}, "properties": {"repobilityId": "ac603005e85f0611", "scanner": "scanner-primary", "fingerprint": "84b77d51230413ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-488980cde1641582", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/orders/${order.id}/reorder (components/portale-clienti/OrderCard.tsx:151)"}, "properties": {"repobilityId": "23f63ab331cd762f", "scanner": "scanner-primary", "fingerprint": "488980cde1641582", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96f86e2497df7c17", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart (components/portale-clienti/OrderCard.tsx:168)"}, "properties": {"repobilityId": "ecd85be97dea99be", "scanner": "scanner-primary", "fingerprint": "96f86e2497df7c17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3991630ce01d83cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/BatchAIImageModal.tsx:73)"}, "properties": {"repobilityId": "4dff6d95bcedfdb1", "scanner": "scanner-primary", "fingerprint": "3991630ce01d83cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8206c2f1170975f", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (components/catalogo-lapa/BatchAIImageModal.tsx:92)"}, "properties": {"repobilityId": "c4704dc6d433780f", "scanner": "scanner-primary", "fingerprint": "f8206c2f1170975f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2cdb803521241460", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-image (components/catalogo-lapa/AIImageModal.tsx:50)"}, "properties": {"repobilityId": "6b4b8fa0a4fe0a57", "scanner": "scanner-primary", "fingerprint": "2cdb803521241460", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2192c37b7c4e1f9", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/qr/validate (components/time-attendance/QRScanner.tsx:109)"}, "properties": {"repobilityId": "b7d8801508bfa2fc", "scanner": "scanner-primary", "fingerprint": "b2192c37b7c4e1f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d16d6a62dfd77fa", "level": "error", "message": {"text": "Dangling fetch: GET /api/inventory/search-furgoni-locations (app/resi-furgoni/page.tsx:91)"}, "properties": {"repobilityId": "cc7e28e28ecdba46", "scanner": "scanner-primary", "fingerprint": "0d16d6a62dfd77fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8bb683ef26a91198", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/create-van-returns (app/resi-furgoni/page.tsx:188)"}, "properties": {"repobilityId": "1c71184046a29330", "scanner": "scanner-primary", "fingerprint": "8bb683ef26a91198", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0a32fbf71e34212", "level": "error", "message": {"text": "Dangling fetch: GET /api/infra-monitor/status (app/infra-monitor/page.tsx:437)"}, "properties": {"repobilityId": "443988dc939d139f", "scanner": "scanner-primary", "fingerprint": "c0a32fbf71e34212", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3121f19331b09540", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/infra-monitor/page.tsx:464)"}, "properties": {"repobilityId": "6584ad3cd3efc699", "scanner": "scanner-primary", "fingerprint": "3121f19331b09540", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e212fee57145dbf1", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/infra-monitor/page.tsx:465)"}, "properties": {"repobilityId": "d16faafe79e33dda", "scanner": "scanner-primary", "fingerprint": "e212fee57145dbf1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d10c45a8503217d", "level": "error", "message": {"text": "Dangling fetch: GET /api/products-catalog (app/catalogo-prodotti/page.tsx:65)"}, "properties": {"repobilityId": "cf800b9892a6d126", "scanner": "scanner-primary", "fingerprint": "0d10c45a8503217d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb65ed810a0d9f77", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat-gestionale (app/chat-gestionale/page.tsx:577)"}, "properties": {"repobilityId": "30ddaee1556a3213", "scanner": "scanner-primary", "fingerprint": "eb65ed810a0d9f77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09e8c5ed236e8c8b", "level": "error", "message": {"text": "Dangling fetch: POST /api/transcribe (app/scan-contatto/VoiceContactCreator.tsx:207)"}, "properties": {"repobilityId": "ca035048f78964aa", "scanner": "scanner-primary", "fingerprint": "09e8c5ed236e8c8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d85a223ebee002ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:200)"}, "properties": {"repobilityId": "a5302aed40287b07", "scanner": "scanner-primary", "fingerprint": "d85a223ebee002ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-123206a3d21c0b99", "level": "error", "message": {"text": "Dangling fetch: PUT /api/odoo/contacts/${createdContact.id} (app/scan-contatto/page.tsx:304)"}, "properties": {"repobilityId": "5cef36a6a3bf5f57", "scanner": "scanner-primary", "fingerprint": "123206a3d21c0b99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2462e175e82a7e08", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto-complete (app/scan-contatto/page.tsx:369)"}, "properties": {"repobilityId": "68f7730ca884a062", "scanner": "scanner-primary", "fingerprint": "2462e175e82a7e08", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f81434df0060dcc1", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo-proxy (app/ordini-smart-ai/page.tsx:48)"}, "properties": {"repobilityId": "74006dd448e784a3", "scanner": "scanner-primary", "fingerprint": "f81434df0060dcc1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-642c46c75461acae", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-ai/analyze-supplier?supplierId=${supplierId}&months=6 (app/ordini-smart-ai/page.tsx:87)"}, "properties": {"repobilityId": "abe32a041de11dd5", "scanner": "scanner-primary", "fingerprint": "642c46c75461acae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-777400dd9a8600c1", "level": "error", "message": {"text": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:320)"}, "properties": {"repobilityId": "168deae9c503279b", "scanner": "scanner-primary", "fingerprint": "777400dd9a8600c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa3f86b8faf72486", "level": "error", "message": {"text": "Dangling fetch: GET /logo-lapa.png (app/social-ai-studio/page.tsx:356)"}, "properties": {"repobilityId": "0f7f7935b27eec4f", "scanner": "scanner-primary", "fingerprint": "fa3f86b8faf72486", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9b9f93e55a7451e", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/product-recipe (app/social-ai-studio/page.tsx:391)"}, "properties": {"repobilityId": "ac2e9416d3ce730c", "scanner": "scanner-primary", "fingerprint": "e9b9f93e55a7451e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-14dd7787cb841872", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-recipe (app/social-ai-studio/page.tsx:443)"}, "properties": {"repobilityId": "6cb070241488e27d", "scanner": "scanner-primary", "fingerprint": "14dd7787cb841872", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60d2a3201200ca68", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/product-story (app/social-ai-studio/page.tsx:540)"}, "properties": {"repobilityId": "743efcb677350313", "scanner": "scanner-primary", "fingerprint": "60d2a3201200ca68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c195f868b2dcc49", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-story (app/social-ai-studio/page.tsx:599)"}, "properties": {"repobilityId": "ae2fee20ac23836a", "scanner": "scanner-primary", "fingerprint": "6c195f868b2dcc49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c95f6ca1f89e2df7", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/food-curiosity (app/social-ai-studio/page.tsx:655)"}, "properties": {"repobilityId": "2788b2fa25a9ab49", "scanner": "scanner-primary", "fingerprint": "c95f6ca1f89e2df7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7439cfd26d1adde", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/generate-curiosity-image (app/social-ai-studio/page.tsx:696)"}, "properties": {"repobilityId": "46d46591ead28d30", "scanner": "scanner-primary", "fingerprint": "a7439cfd26d1adde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06c4ee42c0ccea41", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/translate-content (app/social-ai-studio/page.tsx:741)"}, "properties": {"repobilityId": "56e6b2cfc63b9fa8", "scanner": "scanner-primary", "fingerprint": "06c4ee42c0ccea41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4f3168dfdb4e860", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-curiosity (app/social-ai-studio/page.tsx:816)"}, "properties": {"repobilityId": "32cf3ee93d22ac8e", "scanner": "scanner-primary", "fingerprint": "b4f3168dfdb4e860", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-baf71ca033ce2511", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/free-article (app/social-ai-studio/page.tsx:991)"}, "properties": {"repobilityId": "5bb0c621ea2544b9", "scanner": "scanner-primary", "fingerprint": "baf71ca033ce2511", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b305f5addeab45cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-article (app/social-ai-studio/page.tsx:1038)"}, "properties": {"repobilityId": "e2333adfd1c9c589", "scanner": "scanner-primary", "fingerprint": "b305f5addeab45cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f60eb90966c61c21", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/regenerate-article-image (app/social-ai-studio/page.tsx:1106)"}, "properties": {"repobilityId": "6f73c421cb5cd32e", "scanner": "scanner-primary", "fingerprint": "f60eb90966c61c21", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd803af415b8107c", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1185)"}, "properties": {"repobilityId": "2a75bc1ef0d69254", "scanner": "scanner-primary", "fingerprint": "bd803af415b8107c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8bb8f01dfd05038c", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1243)"}, "properties": {"repobilityId": "d14cec5ca6af44b7", "scanner": "scanner-primary", "fingerprint": "8bb8f01dfd05038c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24a2d2d7c9b05550", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1327)"}, "properties": {"repobilityId": "8f862c7234bdaf07", "scanner": "scanner-primary", "fingerprint": "24a2d2d7c9b05550", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fab6516d7008de4e", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/generate-marketing (app/social-ai-studio/page.tsx:1398)"}, "properties": {"repobilityId": "e399c26bff40cdfa", "scanner": "scanner-primary", "fingerprint": "fab6516d7008de4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d251080c7518461", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/page.tsx:1481)"}, "properties": {"repobilityId": "d39cbeeb295e3711", "scanner": "scanner-primary", "fingerprint": "0d251080c7518461", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7f40b1b45761af5", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/publish-youtube (app/social-ai-studio/page.tsx:1575)"}, "properties": {"repobilityId": "7c87438031812830", "scanner": "scanner-primary", "fingerprint": "d7f40b1b45761af5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5fa6d52a5e857179", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-ai/analytics/summary?period=${period} (app/social-ai-studio/analytics/page.tsx:61)"}, "properties": {"repobilityId": "8af6ab7f84d53c45", "scanner": "scanner-primary", "fingerprint": "5fa6d52a5e857179", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-30b7fa31fadff89e", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/check-video-status (app/social-ai-studio/autopilot/page.tsx:52)"}, "properties": {"repobilityId": "0edf10b4256fc971", "scanner": "scanner-primary", "fingerprint": "30b7fa31fadff89e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08b49bbed66916e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-ai/autopilot/product-intelligence (app/social-ai-studio/autopilot/page.tsx:99)"}, "properties": {"repobilityId": "48fd1448277e014d", "scanner": "scanner-primary", "fingerprint": "08b49bbed66916e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9fd9b2da739628c", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/autopilot/generate-queue (app/social-ai-studio/autopilot/page.tsx:142)"}, "properties": {"repobilityId": "dd518c60f0680f79", "scanner": "scanner-primary", "fingerprint": "c9fd9b2da739628c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-024ba8671e5a3a69", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/autopilot/generate-post (app/social-ai-studio/autopilot/page.tsx:250)"}, "properties": {"repobilityId": "cbebde1b98bc9eea", "scanner": "scanner-primary", "fingerprint": "024ba8671e5a3a69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9414dbda89093d8c", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-ai/autopilot/approve (app/social-ai-studio/autopilot/page.tsx:319)"}, "properties": {"repobilityId": "f0adc7342428a673", "scanner": "scanner-primary", "fingerprint": "9414dbda89093d8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4a745e0b6833796", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/businesses (app/review-manager/page.tsx:55)"}, "properties": {"repobilityId": "69868743b6087152", "scanner": "scanner-primary", "fingerprint": "b4a745e0b6833796", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-274cee4081a0769d", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/businesses (app/review-manager/page.tsx:71)"}, "properties": {"repobilityId": "c3316760811a25d2", "scanner": "scanner-primary", "fingerprint": "274cee4081a0769d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-628f648762a79e2c", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/page.tsx:101)"}, "properties": {"repobilityId": "ce136914abb4bed9", "scanner": "scanner-primary", "fingerprint": "628f648762a79e2c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fee7926a226b69f", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/page.tsx:88)"}, "properties": {"repobilityId": "31b7918599f77eb1", "scanner": "scanner-primary", "fingerprint": "2fee7926a226b69f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff61a49f0a474e7e", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId}&pageSize=100 (app/review-manager/[businessId]/page.tsx:95)"}, "properties": {"repobilityId": "63e48c648dda7aeb", "scanner": "scanner-primary", "fingerprint": "ff61a49f0a474e7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a82e99fb2c24b82", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:110)"}, "properties": {"repobilityId": "43cfc68d942e1119", "scanner": "scanner-primary", "fingerprint": "7a82e99fb2c24b82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16732ec2f3ac3ffe", "level": "error", "message": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:130)"}, "properties": {"repobilityId": "01797f5dc3068885", "scanner": "scanner-primary", "fingerprint": "16732ec2f3ac3ffe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d68293a95c135237", "level": "error", "message": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:150)"}, "properties": {"repobilityId": "66f42a20afd778b0", "scanner": "scanner-primary", "fingerprint": "d68293a95c135237", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a33fe5d0198a94c", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/sync (app/review-manager/[businessId]/page.tsx:173)"}, "properties": {"repobilityId": "5aaafddfe651a7a7", "scanner": "scanner-primary", "fingerprint": "1a33fe5d0198a94c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13481984679bd657", "level": "error", "message": {"text": "Dangling fetch: PUT /api/review-manager/reviews/${reviewId} (app/review-manager/[businessId]/page.tsx:196)"}, "properties": {"repobilityId": "33b0dbea873a078c", "scanner": "scanner-primary", "fingerprint": "13481984679bd657", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-611eee47b9a8d97e", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:86)"}, "properties": {"repobilityId": "4d91d209edf6d568", "scanner": "scanner-primary", "fingerprint": "611eee47b9a8d97e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b982baab9cbb288", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/platforms?businessId=${businessId} (app/review-manager/[businessId]/settings/page.tsx:104)"}, "properties": {"repobilityId": "9b05108e058f67ea", "scanner": "scanner-primary", "fingerprint": "3b982baab9cbb288", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90220f20638c431f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/review-manager/businesses/${businessId} (app/review-manager/[businessId]/settings/page.tsx:135)"}, "properties": {"repobilityId": "4a3f9a915ed6fe62", "scanner": "scanner-primary", "fingerprint": "90220f20638c431f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c761a7b8c7bdf8c", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/platforms (app/review-manager/[businessId]/settings/page.tsx:162)"}, "properties": {"repobilityId": "f4645e68ad613ec7", "scanner": "scanner-primary", "fingerprint": "6c761a7b8c7bdf8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e815ca498ef23f03", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/review-manager/platforms?businessId=${businessId}&platform=${platform} (app/review-manager/[businessId]/settings/page.tsx:194)"}, "properties": {"repobilityId": "7ec63694c517f81c", "scanner": "scanner-primary", "fingerprint": "e815ca498ef23f03", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2c54e7c40af6b98", "level": "error", "message": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/test-chat-agenti/page.tsx:51)"}, "properties": {"repobilityId": "a6cc609b733846ef", "scanner": "scanner-primary", "fingerprint": "f2c54e7c40af6b98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-986cb398cf038fca", "level": "error", "message": {"text": "Dangling fetch: GET /api/odoo/customers (app/analisi-clienti/page.tsx:59)"}, "properties": {"repobilityId": "695cb9a47773c0a0", "scanner": "scanner-primary", "fingerprint": "986cb398cf038fca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2e8b45a5c14b02c", "level": "error", "message": {"text": "Dangling fetch: POST /api/analisi-clienti (app/analisi-clienti/page.tsx:127)"}, "properties": {"repobilityId": "a0f855427be2be23", "scanner": "scanner-primary", "fingerprint": "b2e8b45a5c14b02c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3cc9eff0f5fdff3", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/cassaforte (app/super-dashboard/cassaforte/page.tsx:99)"}, "properties": {"repobilityId": "58c194f4dcc91612", "scanner": "scanner-primary", "fingerprint": "d3cc9eff0f5fdff3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf16b84b60a668dc", "level": "error", "message": {"text": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/super-dashboard/cassaforte/page.tsx:133)"}, "properties": {"repobilityId": "e0ef3e7a0905e1ca", "scanner": "scanner-primary", "fingerprint": "cf16b84b60a668dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f73be732229d771", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/product-story/search?q=${encodeURIComponent(query)} (app/super-dashboard/product-story/page.tsx:251)"}, "properties": {"repobilityId": "f8376ddc363d7e5d", "scanner": "scanner-primary", "fingerprint": "4f73be732229d771", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f463c94c3b9a5da8", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/product-story?${params} (app/super-dashboard/product-story/page.tsx:287)"}, "properties": {"repobilityId": "9484923db4b2ebe5", "scanner": "scanner-primary", "fingerprint": "f463c94c3b9a5da8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81ad0f97eb450a5f", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/product-story/detective?productId=${productId} (app/super-dashboard/product-story/page.tsx:329)"}, "properties": {"repobilityId": "d181c93f3b287aa9", "scanner": "scanner-primary", "fingerprint": "81ad0f97eb450a5f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3afad5d6a94cd209", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/sales-radar-activity?period=${period} (app/super-dashboard/sales-radar-activity/page.tsx:50)"}, "properties": {"repobilityId": "542c446e75438ed0", "scanner": "scanner-primary", "fingerprint": "3afad5d6a94cd209", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c43e1f1574685bd6", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-picking/batches?date=${date} (app/super-dashboard/controllo-picking/page.tsx:55)"}, "properties": {"repobilityId": "50c56880b280e4ab", "scanner": "scanner-primary", "fingerprint": "c43e1f1574685bd6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae208bce103ce4c5", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-picking/batch/${batchId} (app/super-dashboard/controllo-picking/[batchId]/page.tsx:117)"}, "properties": {"repobilityId": "4b0609552e0d5d31", "scanner": "scanner-primary", "fingerprint": "ae208bce103ce4c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88934058632dc483", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-picking/analyze-video (app/super-dashboard/controllo-picking/[batchId]/page.tsx:220)"}, "properties": {"repobilityId": "e4bd661d017510d3", "scanner": "scanner-primary", "fingerprint": "88934058632dc483", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fadafbcf679eb1fa", "level": "error", "message": {"text": "Dangling fetch: GET /api/usage-stats?days=${days} (app/super-dashboard/app-usage/page.tsx:78)"}, "properties": {"repobilityId": "6cab37c281dfd4eb", "scanner": "scanner-primary", "fingerprint": "fadafbcf679eb1fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a5498daa728f399", "level": "error", "message": {"text": "Dangling fetch: GET /api/super-dashboard/margini?period=${period} (app/super-dashboard/margini/page.tsx:67)"}, "properties": {"repobilityId": "dbcd8a5f57fe22d0", "scanner": "scanner-primary", "fingerprint": "7a5498daa728f399", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-901cee7bb1b520bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/il-mio-hub (app/il-mio-hub/page.tsx:123)"}, "properties": {"repobilityId": "c4be13e05902cd6e", "scanner": "scanner-primary", "fingerprint": "901cee7bb1b520bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d0c89b6ace157cd", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/page.tsx:66)"}, "properties": {"repobilityId": "79c203e84d62a9dd", "scanner": "scanner-primary", "fingerprint": "2d0c89b6ace157cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-30f1eafc1245c74b", "level": "error", "message": {"text": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/page.tsx:73)"}, "properties": {"repobilityId": "dc23697de017ce05", "scanner": "scanner-primary", "fingerprint": "30f1eafc1245c74b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa9b8128887a4c2e", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/create-order (app/catalogo-venditori/page.tsx:256)"}, "properties": {"repobilityId": "518bcdc23fe350b8", "scanner": "scanner-primary", "fingerprint": "fa9b8128887a4c2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fafc1240bb4a7a82", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-orders/${selectedCustomerId} (app/catalogo-venditori/page.tsx:351)"}, "properties": {"repobilityId": "97bfbe9c087fc514", "scanner": "scanner-primary", "fingerprint": "fafc1240bb4a7a82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffa74c01cb54b37e", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/catalogo-venditori/components/ManualProductSearch.tsx:66)"}, "properties": {"repobilityId": "ba704c5ba8a51f89", "scanner": "scanner-primary", "fingerprint": "ffa74c01cb54b37e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66b90744cf12e8d7", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:186)"}, "properties": {"repobilityId": "48b04a43703b2b15", "scanner": "scanner-primary", "fingerprint": "66b90744cf12e8d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8dd230fa81ba918", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:207)"}, "properties": {"repobilityId": "27b13f67a8b41c75", "scanner": "scanner-primary", "fingerprint": "e8dd230fa81ba918", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7961507136e9fb36", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/catalogo-venditori/components/ManualProductSearch.tsx:230)"}, "properties": {"repobilityId": "cd02919cdb43ba4e", "scanner": "scanner-primary", "fingerprint": "7961507136e9fb36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71a54c64176ed38f", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:110)"}, "properties": {"repobilityId": "208c0ef50726401b", "scanner": "scanner-primary", "fingerprint": "71a54c64176ed38f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9cc71ce44f84e392", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/ai-process-order (app/catalogo-venditori/components/AIOrderInput.tsx:117)"}, "properties": {"repobilityId": "f910dd152f43eeb4", "scanner": "scanner-primary", "fingerprint": "9cc71ce44f84e392", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf0b89928fd7e7d1", "level": "error", "message": {"text": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/catalogo-venditori/components/CustomerSelector.tsx:68)"}, "properties": {"repobilityId": "2a9b7dc9a7c81a8a", "scanner": "scanner-primary", "fingerprint": "cf0b89928fd7e7d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-119c666f8afa94bf", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/customer-addresses (app/catalogo-venditori/components/CustomerSelector.tsx:146)"}, "properties": {"repobilityId": "45401f31fe4fc80e", "scanner": "scanner-primary", "fingerprint": "119c666f8afa94bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97d828702de81ebc", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/components/CustomerSelector.tsx:189)"}, "properties": {"repobilityId": "63be6e1402d17ecd", "scanner": "scanner-primary", "fingerprint": "97d828702de81ebc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-14a0e6d7d1d1d54d", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-stats?customerId=${customerId} (app/catalogo-venditori/components/CustomerSelector.tsx:208)"}, "properties": {"repobilityId": "fd151e6fe9544acd", "scanner": "scanner-primary", "fingerprint": "14a0e6d7d1d1d54d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16477077e225777c", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/last-delivery?customerId=${customerId} (app/catalogo-venditori/components/DeliveryDatePicker.tsx:25)"}, "properties": {"repobilityId": "a7b493a68f7cfd50", "scanner": "scanner-primary", "fingerprint": "16477077e225777c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aba41ed9d3735053", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:127)"}, "properties": {"repobilityId": "3c1df2bb66dc88e0", "scanner": "scanner-primary", "fingerprint": "aba41ed9d3735053", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-503dd6902b8582c3", "level": "error", "message": {"text": "Dangling fetch: GET /api/offer-products (app/catalogo-venditori/review-prices/[orderId]/page.tsx:134)"}, "properties": {"repobilityId": "e898642bc5b9769f", "scanner": "scanner-primary", "fingerprint": "503dd6902b8582c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b01511ef6a4d403", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/add-order-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:161)"}, "properties": {"repobilityId": "6399cfbab872ea11", "scanner": "scanner-primary", "fingerprint": "1b01511ef6a4d403", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bce4c46c4d02d313", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/order-prices/${orderId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:200)"}, "properties": {"repobilityId": "ed809d6c5b07345b", "scanner": "scanner-primary", "fingerprint": "bce4c46c4d02d313", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-413f5f503118f20e", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/customer-stats/${customerId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:243)"}, "properties": {"repobilityId": "aadc9464fa59dddb", "scanner": "scanner-primary", "fingerprint": "413f5f503118f20e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-140329de55b3ec97", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/global-stats (app/catalogo-venditori/review-prices/[orderId]/page.tsx:261)"}, "properties": {"repobilityId": "db402ae648ff2224", "scanner": "scanner-primary", "fingerprint": "140329de55b3ec97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-047dae2bf31a2d69", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/product-history/${productId} (app/catalogo-venditori/review-prices/[orderId]/page.tsx:282)"}, "properties": {"repobilityId": "dad1612c4d5071d0", "scanner": "scanner-primary", "fingerprint": "047dae2bf31a2d69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be64c3485375b8ee", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/delete-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:438)"}, "properties": {"repobilityId": "960eec95c21b34e8", "scanner": "scanner-primary", "fingerprint": "be64c3485375b8ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-003fd4b974849a94", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/add-line (app/catalogo-venditori/review-prices/[orderId]/page.tsx:484)"}, "properties": {"repobilityId": "5b3cd723c51e2af1", "scanner": "scanner-primary", "fingerprint": "003fd4b974849a94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e8379de37c5ccaa", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderData.id}/create-task (app/catalogo-venditori/review-prices/[orderId]/page.tsx:539)"}, "properties": {"repobilityId": "ef7b6afbc014f112", "scanner": "scanner-primary", "fingerprint": "9e8379de37c5ccaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e89aa2cebc09aa5", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/update-quantities (app/catalogo-venditori/review-prices/[orderId]/page.tsx:737)"}, "properties": {"repobilityId": "57677bdb1c02dc66", "scanner": "scanner-primary", "fingerprint": "7e89aa2cebc09aa5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70116a33e9606a0b", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/update-prices (app/catalogo-venditori/review-prices/[orderId]/page.tsx:765)"}, "properties": {"repobilityId": "50cba9e0bf359ca2", "scanner": "scanner-primary", "fingerprint": "70116a33e9606a0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eeba828065549698", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/add-order-message (app/catalogo-venditori/review-prices/[orderId]/page.tsx:812)"}, "properties": {"repobilityId": "ed23c6b036ec3ea9", "scanner": "scanner-primary", "fingerprint": "eeba828065549698", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a494645fd0a59cea", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/confirm-order (app/catalogo-venditori/review-prices/[orderId]/page.tsx:857)"}, "properties": {"repobilityId": "3860fb1c4e13844e", "scanner": "scanner-primary", "fingerprint": "a494645fd0a59cea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8dbeaddd924893fa", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/catalogo-venditori/order-prices/${orderId}/update-delivery (app/catalogo-venditori/review-prices/[orderId]/page.tsx:896)"}, "properties": {"repobilityId": "d93b65c33ccc652a", "scanner": "scanner-primary", "fingerprint": "8dbeaddd924893fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd347565a0a35b26", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/order-prices/${orderId}/cancel (app/catalogo-venditori/review-prices/[orderId]/page.tsx:928)"}, "properties": {"repobilityId": "e5faa1eeb0860e30", "scanner": "scanner-primary", "fingerprint": "bd347565a0a35b26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-188e7ec8d52f42d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-venditori/orders?period=${period} (app/catalogo-venditori/ordini/page.tsx:44)"}, "properties": {"repobilityId": "3af6a99afa054def", "scanner": "scanner-primary", "fingerprint": "188e7ec8d52f42d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40188d48e7e99de5", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/search (app/sales-radar/page.tsx:431)"}, "properties": {"repobilityId": "ba551ebbc1ce7de5", "scanner": "scanner-primary", "fingerprint": "40188d48e7e99de5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13ddbe7cc65f0c26", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/save-leads (app/sales-radar/page.tsx:498)"}, "properties": {"repobilityId": "b25d3730a9d57c52", "scanner": "scanner-primary", "fingerprint": "13ddbe7cc65f0c26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5c0ed110501ff35", "level": "error", "message": {"text": "Dangling fetch: GET /api/sales-radar/check-customer?${params} (app/sales-radar/page.tsx:565)"}, "properties": {"repobilityId": "0434b69a9f3b14eb", "scanner": "scanner-primary", "fingerprint": "f5c0ed110501ff35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f72bd7858625d0e6", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/create-contact (app/sales-radar/page.tsx:615)"}, "properties": {"repobilityId": "98d6f03558b963e4", "scanner": "scanner-primary", "fingerprint": "f72bd7858625d0e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99592a17bd7db32b", "level": "error", "message": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:689)"}, "properties": {"repobilityId": "aaca5dc1ec7ea0e3", "scanner": "scanner-primary", "fingerprint": "99592a17bd7db32b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3edf864227757fb7", "level": "error", "message": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:714)"}, "properties": {"repobilityId": "32a3cfb0b917951d", "scanner": "scanner-primary", "fingerprint": "3edf864227757fb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c323ce19c6b2d72", "level": "error", "message": {"text": "Dangling fetch: GET /api/sales-radar/load-from-odoo?${params} (app/sales-radar/page.tsx:746)"}, "properties": {"repobilityId": "d40f6892fc0f3612", "scanner": "scanner-primary", "fingerprint": "1c323ce19c6b2d72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1cebd2454875e0a", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:832)"}, "properties": {"repobilityId": "0189c72a6cdfc4d0", "scanner": "scanner-primary", "fingerprint": "d1cebd2454875e0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7a76652de670cd0", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:898)"}, "properties": {"repobilityId": "ef02931140cd616d", "scanner": "scanner-primary", "fingerprint": "c7a76652de670cd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-353d54a7719472cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/voice-note (app/sales-radar/page.tsx:956)"}, "properties": {"repobilityId": "26fbb993ea8f8846", "scanner": "scanner-primary", "fingerprint": "353d54a7719472cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a02203aa3fab3dc", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/create-appointment (app/sales-radar/page.tsx:1018)"}, "properties": {"repobilityId": "363aa7ea260f475b", "scanner": "scanner-primary", "fingerprint": "7a02203aa3fab3dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4deacb85b2e243a1", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/create-activity (app/sales-radar/page.tsx:1068)"}, "properties": {"repobilityId": "9f5f589a4ddda02f", "scanner": "scanner-primary", "fingerprint": "4deacb85b2e243a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5bed030989fa980a", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/mark-not-target (app/sales-radar/page.tsx:1097)"}, "properties": {"repobilityId": "a57e81e0de59fd6b", "scanner": "scanner-primary", "fingerprint": "5bed030989fa980a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8acef5101d9ca4c", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/reactivate-lead (app/sales-radar/page.tsx:1136)"}, "properties": {"repobilityId": "27535243c52798da", "scanner": "scanner-primary", "fingerprint": "c8acef5101d9ca4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e81297592c90274a", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/convert-lead-to-contact (app/sales-radar/page.tsx:1183)"}, "properties": {"repobilityId": "4d336779fa7ef3c3", "scanner": "scanner-primary", "fingerprint": "e81297592c90274a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ba15b5f7f2ad1a4", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/check-in (app/sales-radar/page.tsx:1241)"}, "properties": {"repobilityId": "8bb97a5024d6746b", "scanner": "scanner-primary", "fingerprint": "2ba15b5f7f2ad1a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cfee8ea1bf1417bc", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-radar/analyze-client (app/sales-radar/page.tsx:1367)"}, "properties": {"repobilityId": "6e2f094df8ab0705", "scanner": "scanner-primary", "fingerprint": "cfee8ea1bf1417bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-39a325eb7ce85387", "level": "error", "message": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-ocr/page.tsx:24)"}, "properties": {"repobilityId": "3c12a06cbbb1ac07", "scanner": "scanner-primary", "fingerprint": "39a325eb7ce85387", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-121c1491bb90dee3", "level": "error", "message": {"text": "Dangling fetch: POST /api/jetson/chat (app/jetson-ocr/page.tsx:52)"}, "properties": {"repobilityId": "d9ed29ecbdaa432e", "scanner": "scanner-primary", "fingerprint": "121c1491bb90dee3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a192195167cf7e42", "level": "error", "message": {"text": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:143)"}, "properties": {"repobilityId": "ad23542182b9a9da", "scanner": "scanner-primary", "fingerprint": "a192195167cf7e42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab7cee628b4c4f8e", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventario-vocale/transcribe (app/inventario-vocale/page.tsx:312)"}, "properties": {"repobilityId": "6dffe7e3a7b64409", "scanner": "scanner-primary", "fingerprint": "ab7cee628b4c4f8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b09108633876e44", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventario-vocale/extract-products (app/inventario-vocale/page.tsx:328)"}, "properties": {"repobilityId": "aa926b539124eff1", "scanner": "scanner-primary", "fingerprint": "2b09108633876e44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb5f175979c8ef3e", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventario-vocale/save (app/inventario-vocale/page.tsx:365)"}, "properties": {"repobilityId": "3a418f387001f099", "scanner": "scanner-primary", "fingerprint": "cb5f175979c8ef3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dff8476c6e9b7ca4", "level": "error", "message": {"text": "Dangling fetch: GET /api/inventario-vocale/history (app/inventario-vocale/page.tsx:384)"}, "properties": {"repobilityId": "b65425fcee120c62", "scanner": "scanner-primary", "fingerprint": "dff8476c6e9b7ca4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6126d0d72b7e424e", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventario-vocale/export/pdf (app/inventario-vocale/page.tsx:413)"}, "properties": {"repobilityId": "a786eb02c788a469", "scanner": "scanner-primary", "fingerprint": "6126d0d72b7e424e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efc3eda779337166", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventario-vocale/export/excel (app/inventario-vocale/page.tsx:437)"}, "properties": {"repobilityId": "d2b0e7489859c4ff", "scanner": "scanner-primary", "fingerprint": "efc3eda779337166", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b1cc049630120e8", "level": "error", "message": {"text": "Dangling fetch: GET /api/spese/submit?action=categories (app/spese/page.tsx:146)"}, "properties": {"repobilityId": "d0ae34405dae76c2", "scanner": "scanner-primary", "fingerprint": "5b1cc049630120e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2fdba07b81461b7", "level": "error", "message": {"text": "Dangling fetch: POST /api/spese/analyze (app/spese/page.tsx:216)"}, "properties": {"repobilityId": "b97e2c5f761ca8ad", "scanner": "scanner-primary", "fingerprint": "b2fdba07b81461b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b0821308bca83902", "level": "error", "message": {"text": "Dangling fetch: POST /api/spese/submit (app/spese/page.tsx:259)"}, "properties": {"repobilityId": "82e18c5aac4b3a00", "scanner": "scanner-primary", "fingerprint": "b0821308bca83902", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-024cfd2010c15b7c", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/convalida-residui/page.tsx:147)"}, "properties": {"repobilityId": "3cc0b00c80c80a8c", "scanner": "scanner-primary", "fingerprint": "024cfd2010c15b7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-268d7f5d769220dd", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-venditori/search-products (app/convalida-residui/page.tsx:1773)"}, "properties": {"repobilityId": "23338f4783c3a713", "scanner": "scanner-primary", "fingerprint": "268d7f5d769220dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b33dbf7de248204d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.d-id.com/talks/streams (app/api/stella/did-stream/route.ts:35)"}, "properties": {"repobilityId": "1858ac4f6be90ef0", "scanner": "scanner-primary", "fingerprint": "b33dbf7de248204d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c771e7759ce0548d", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.d-id.com/talks/streams/${streamId}/${sessionId} (app/api/stella/did-stream/route.ts:86)"}, "properties": {"repobilityId": "9ea449ce5a69f874", "scanner": "scanner-primary", "fingerprint": "c771e7759ce0548d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92b377e28a4f16d0", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:19)"}, "properties": {"repobilityId": "bedff97d594385a8", "scanner": "scanner-primary", "fingerprint": "92b377e28a4f16d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b2bbe5aeb811b6e", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:71)"}, "properties": {"repobilityId": "fde16290271f0d1f", "scanner": "scanner-primary", "fingerprint": "4b2bbe5aeb811b6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f913c5c1fd0f1bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:242)"}, "properties": {"repobilityId": "0f5395e79ebc170a", "scanner": "scanner-primary", "fingerprint": "0f913c5c1fd0f1bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f52beca20d4d1eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:327)"}, "properties": {"repobilityId": "bc7c13894423b03b", "scanner": "scanner-primary", "fingerprint": "2f52beca20d4d1eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6024b54127a2217b", "level": "error", "message": {"text": "Dangling fetch: POST /api/scan-contatto (app/api/scan-contatto/example-usage.ts:357)"}, "properties": {"repobilityId": "132021257f6a23ea", "scanner": "scanner-primary", "fingerprint": "6024b54127a2217b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03ec230369eda3dd", "level": "error", "message": {"text": "Dangling fetch: GET /api/scan-contatto (app/api/scan-contatto/example-usage.ts:381)"}, "properties": {"repobilityId": "7de24598330821df", "scanner": "scanner-primary", "fingerprint": "03ec230369eda3dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5758c31737fca115", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3002/api/inventory/location (app/api/inventory/test-all/route.ts:65)"}, "properties": {"repobilityId": "ffb5a61ee5a5d732", "scanner": "scanner-primary", "fingerprint": "5758c31737fca115", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29647981b14f3a51", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3002/api/inventory/products (app/api/inventory/test-all/route.ts:89)"}, "properties": {"repobilityId": "46fdeab624b6b85b", "scanner": "scanner-primary", "fingerprint": "29647981b14f3a51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f95a5c0747e5d48", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:3002/api/inventory/html-app (app/api/inventory/test-all/route.ts:113)"}, "properties": {"repobilityId": "62e174e15d5de174", "scanner": "scanner-primary", "fingerprint": "5f95a5c0747e5d48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7aa684073a2874ea", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/catalogo-venditori/ai-process-order/route.ts:131)"}, "properties": {"repobilityId": "8dac217d4451c0e6", "scanner": "scanner-primary", "fingerprint": "7aa684073a2874ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-416d547f1a828a74", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/catalogo-venditori/ai-process-order/route.ts:228)"}, "properties": {"repobilityId": "9df539f61f718a51", "scanner": "scanner-primary", "fingerprint": "416d547f1a828a74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18fb2425263c8f2a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (app/api/openai/chat/route.ts:78)"}, "properties": {"repobilityId": "16e0de95ff6cfe2d", "scanner": "scanner-primary", "fingerprint": "18fb2425263c8f2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1b968cba57531cc", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/realtime/sessions (app/api/openai/realtime/route.ts:184)"}, "properties": {"repobilityId": "667562acabeacc76", "scanner": "scanner-primary", "fingerprint": "e1b968cba57531cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c33faaff8a7c1bf0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (app/api/delivery/save-partial-justification/route.ts:27)"}, "properties": {"repobilityId": "b07e57e26bbbca83", "scanner": "scanner-primary", "fingerprint": "c33faaff8a7c1bf0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a410f3e8e341a81", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/videos/generations (app/api/avatar-generator/generate-video/route.ts:364)"}, "properties": {"repobilityId": "26d7aedd3a83e015", "scanner": "scanner-primary", "fingerprint": "8a410f3e8e341a81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad2d1714007eb9a8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openai.com/v1/videos/${videoId} (app/api/avatar-generator/generate-video/route.ts:422)"}, "properties": {"repobilityId": "3a2268a5c0ab84cb", "scanner": "scanner-primary", "fingerprint": "ad2d1714007eb9a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c26369dc5b9a58e6", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning?key=${process.env.GEMINI_API_KEY} (app/api/avatar-generator/generate-video/route.ts:466)"}, "properties": {"repobilityId": "3f8acbe8b5c9977a", "scanner": "scanner-primary", "fingerprint": "c26369dc5b9a58e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e17bf778c59f733", "level": "error", "message": {"text": "Dangling fetch: POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status (app/api/social-ai/publish-youtube/route.ts:79)"}, "properties": {"repobilityId": "aba158038398efd1", "scanner": "scanner-primary", "fingerprint": "2e17bf778c59f733", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0c65cb25d7371aa", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (app/api/cron/agents-healthcheck/route.ts:23)"}, "properties": {"repobilityId": "73bf041b1ed6713d", "scanner": "scanner-primary", "fingerprint": "f0c65cb25d7371aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d743379a232c162", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/images/generations (app/api/product-creator/generate-image/route.ts:27)"}, "properties": {"repobilityId": "bf0decf5cc32c12d", "scanner": "scanner-primary", "fingerprint": "9d743379a232c162", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-098fb8e708ffa747", "level": "error", "message": {"text": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(retailQuery)}&count=5 (app/api/product-creator/enrich-product/route.ts:100)"}, "properties": {"repobilityId": "79de9bc88626aa3e", "scanner": "scanner-primary", "fingerprint": "098fb8e708ffa747", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f0d56d98f11bf33", "level": "error", "message": {"text": "Dangling fetch: GET https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(wholesaleQuery)}&count=3 (app/api/product-creator/enrich-product/route.ts:133)"}, "properties": {"repobilityId": "c623c1ae82f94b9a", "scanner": "scanner-primary", "fingerprint": "7f0d56d98f11bf33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5bb9657ca9cdaaa4", "level": "error", "message": {"text": "Dangling fetch: GET /api/scarti/dashboard (app/scarti/page.tsx:94)"}, "properties": {"repobilityId": "aa4fc2aef93f9205", "scanner": "scanner-primary", "fingerprint": "5bb9657ca9cdaaa4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc670986ecbcfcce", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarti/generate-order (app/scarti/page.tsx:125)"}, "properties": {"repobilityId": "f6bde539e656cf44", "scanner": "scanner-primary", "fingerprint": "cc670986ecbcfcce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5fb23f577c24ce0e", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-agents/chat (app/sales-ai-hub/page.tsx:64)"}, "properties": {"repobilityId": "1f00281c4dee49bf", "scanner": "scanner-primary", "fingerprint": "5fb23f577c24ce0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb38ff1e8ffbd69b", "level": "error", "message": {"text": "Dangling fetch: GET /api/verification-requests (app/inventario/page.tsx:91)"}, "properties": {"repobilityId": "543b91e64de2d25d", "scanner": "scanner-primary", "fingerprint": "eb38ff1e8ffbd69b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-092667f7793ea1d9", "level": "error", "message": {"text": "Dangling fetch: GET /api/inventory/test-connection (app/inventario/page.tsx:111)"}, "properties": {"repobilityId": "dc2124b0b04cac28", "scanner": "scanner-primary", "fingerprint": "092667f7793ea1d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00df0ce3ca68ca38", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:364)"}, "properties": {"repobilityId": "9a1d041b626c3ac4", "scanner": "scanner-primary", "fingerprint": "00df0ce3ca68ca38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a429726b32ac186", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:792)"}, "properties": {"repobilityId": "c501638538de917f", "scanner": "scanner-primary", "fingerprint": "8a429726b32ac186", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-644465f8ee77dc05", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/page.tsx:911)"}, "properties": {"repobilityId": "84196ff5ae8096e8", "scanner": "scanner-primary", "fingerprint": "644465f8ee77dc05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24f20e9dd664975b", "level": "error", "message": {"text": "Dangling fetch: GET /api/verification-requests (app/inventario/verifica/page.tsx:94)"}, "properties": {"repobilityId": "d7a46e1aeace5179", "scanner": "scanner-primary", "fingerprint": "24f20e9dd664975b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c51fae6123d5fab", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/update-quantity (app/inventario/verifica/page.tsx:218)"}, "properties": {"repobilityId": "c31a918fee847537", "scanner": "scanner-primary", "fingerprint": "7c51fae6123d5fab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-541730f4bba17308", "level": "error", "message": {"text": "Dangling fetch: POST /api/verification-requests/complete (app/inventario/verifica/page.tsx:238)"}, "properties": {"repobilityId": "8e1472ab8f1c4bdc", "scanner": "scanner-primary", "fingerprint": "541730f4bba17308", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-91888d6867b1b937", "level": "error", "message": {"text": "Dangling fetch: GET /api/lapa-agents/status (app/lapa-ai-agents/page.tsx:287)"}, "properties": {"repobilityId": "9ce7c292199d45da", "scanner": "scanner-primary", "fingerprint": "91888d6867b1b937", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43845dbfd8e4dd60", "level": "error", "message": {"text": "Dangling fetch: GET /api/lapa-ai/rag-stats (app/lapa-ai-agents/page.tsx:312)"}, "properties": {"repobilityId": "c215445911f2fea8", "scanner": "scanner-primary", "fingerprint": "43845dbfd8e4dd60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70db5e075de07acc", "level": "error", "message": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/page.tsx:356)"}, "properties": {"repobilityId": "8bc6055c138d3e5a", "scanner": "scanner-primary", "fingerprint": "70db5e075de07acc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-733039c413d44a7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/lapa-agents/conversations?limit=50 (app/lapa-ai-agents/page.tsx:928)"}, "properties": {"repobilityId": "9ba9c53ddf9f60c9", "scanner": "scanner-primary", "fingerprint": "733039c413d44a7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9e3d38235bc297d", "level": "error", "message": {"text": "Dangling fetch: POST /api/debug/search-all-contacts (app/lapa-ai-agents/test/page.tsx:132)"}, "properties": {"repobilityId": "f63a7e8eeef65527", "scanner": "scanner-primary", "fingerprint": "b9e3d38235bc297d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7168f5a398302a45", "level": "error", "message": {"text": "Dangling fetch: POST /api/lapa-agents/chat (app/lapa-ai-agents/test/page.tsx:417)"}, "properties": {"repobilityId": "468cb736be078839", "scanner": "scanner-primary", "fingerprint": "7168f5a398302a45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76875826abf1e780", "level": "error", "message": {"text": "Dangling fetch: GET /api/lapa-agents/conversations?sessionId=${conversationId} (app/lapa-ai-agents/widget/page.tsx:191)"}, "properties": {"repobilityId": "78457d5db71ddeb4", "scanner": "scanner-primary", "fingerprint": "76875826abf1e780", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc984f37300862a4", "level": "error", "message": {"text": "Dangling fetch: GET /api/recupero-clienti (app/recupero-clienti/page.tsx:96)"}, "properties": {"repobilityId": "46321c9b24553759", "scanner": "scanner-primary", "fingerprint": "bc984f37300862a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0984fb966c518fdc", "level": "error", "message": {"text": "Dangling fetch: POST /api/recupero-clienti/nota (app/recupero-clienti/page.tsx:110)"}, "properties": {"repobilityId": "164302472d278bec", "scanner": "scanner-primary", "fingerprint": "0984fb966c518fdc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52cef56f4618179f", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/update-product-image (app/product-photo-manager/page.tsx:131)"}, "properties": {"repobilityId": "433a081f57fa9032", "scanner": "scanner-primary", "fingerprint": "52cef56f4618179f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49d122e19d727fee", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:165)"}, "properties": {"repobilityId": "38b95743f219a3e1", "scanner": "scanner-primary", "fingerprint": "49d122e19d727fee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-621fee46c4e0f653", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/product-photo-manager/page.tsx:205)"}, "properties": {"repobilityId": "96b2d88a76947fc0", "scanner": "scanner-primary", "fingerprint": "621fee46c4e0f653", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8413797f7d70ffd0", "level": "error", "message": {"text": "Dangling fetch: GET /api/jokes (app/components/JokeBanner.tsx:62)"}, "properties": {"repobilityId": "c4d99d528dbc0907", "scanner": "scanner-primary", "fingerprint": "8413797f7d70ffd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-201d8eabfbbbec6d", "level": "error", "message": {"text": "Dangling fetch: POST /api/test-ocr/gemini-flash (app/test-ocr/page.tsx:30)"}, "properties": {"repobilityId": "988b80f2eb4890bb", "scanner": "scanner-primary", "fingerprint": "201d8eabfbbbec6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9369cac603bcc57c", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/centralino-ai/page.tsx:37)"}, "properties": {"repobilityId": "e0fb2cb3272aca04", "scanner": "scanner-primary", "fingerprint": "9369cac603bcc57c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e1123ae4866587b", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/page.tsx:115)"}, "properties": {"repobilityId": "1e4202e2510c3971", "scanner": "scanner-primary", "fingerprint": "3e1123ae4866587b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed35c9e963addd3c", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pre-orders-summary (app/ordini-smart-v2/page.tsx:133)"}, "properties": {"repobilityId": "a8c716d5a49e1c98", "scanner": "scanner-primary", "fingerprint": "ed35c9e963addd3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b91eb10a9fd18f76", "level": "error", "message": {"text": "Dangling fetch: GET /api/supplier-cadence (app/ordini-smart-v2/page.tsx:149)"}, "properties": {"repobilityId": "20abf2246541e2f9", "scanner": "scanner-primary", "fingerprint": "b91eb10a9fd18f76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34aac8db0714f264", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/ordini-smart-v2/page.tsx:213)"}, "properties": {"repobilityId": "6cce888aaf2fb79f", "scanner": "scanner-primary", "fingerprint": "34aac8db0714f264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5a7199ff5bbe6810", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/page.tsx:347)"}, "properties": {"repobilityId": "9f84d6649a3e8f3e", "scanner": "scanner-primary", "fingerprint": "5a7199ff5bbe6810", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a989e3303a5f589", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/page.tsx:368)"}, "properties": {"repobilityId": "3e4c33603d9db6f0", "scanner": "scanner-primary", "fingerprint": "6a989e3303a5f589", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee90f439b36017b7", "level": "error", "message": {"text": "Dangling fetch: POST /api/ordini-fornitori/analyze-today?ai=${useAI} (app/ordini-smart-v2/page.tsx:396)"}, "properties": {"repobilityId": "6a3af537ff2727b1", "scanner": "scanner-primary", "fingerprint": "ee90f439b36017b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-05dc19bf9fa8d8f6", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/smart-ordering-v2/delete-preorder-assignments (app/ordini-smart-v2/page.tsx:1889)"}, "properties": {"repobilityId": "97bc602e4bdcd922", "scanner": "scanner-primary", "fingerprint": "05dc19bf9fa8d8f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa3f165bae8edfbc", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/ordini-smart-v2/page.tsx:1921)"}, "properties": {"repobilityId": "4003ddeaad343214", "scanner": "scanner-primary", "fingerprint": "aa3f165bae8edfbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ec835fc365b87d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/ordini-smart-v2/prodotti-critici/page.tsx:124)"}, "properties": {"repobilityId": "d87a3cf3fe961f26", "scanner": "scanner-primary", "fingerprint": "9ec835fc365b87d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bb136159856a25a", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/product-analytics/${product.id} (app/ordini-smart-v2/prodotti-critici/page.tsx:174)"}, "properties": {"repobilityId": "73742c0f02e135dc", "scanner": "scanner-primary", "fingerprint": "7bb136159856a25a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bbdd263eb91b416", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-order (app/ordini-smart-v2/prodotti-critici/page.tsx:191)"}, "properties": {"repobilityId": "2ad68d1fb18b3fdf", "scanner": "scanner-primary", "fingerprint": "6bbdd263eb91b416", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9bbb06a9980a3a3d", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pending-orders (app/ordini-smart-v2/ordini-in-corso/page.tsx:117)"}, "properties": {"repobilityId": "9aeb736017d197e2", "scanner": "scanner-primary", "fingerprint": "9bbb06a9980a3a3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-869f89adad597769", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/analyze-order/${order.id} (app/ordini-smart-v2/ordini-in-corso/page.tsx:136)"}, "properties": {"repobilityId": "091c243925105002", "scanner": "scanner-primary", "fingerprint": "869f89adad597769", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4802817b97ce0a0", "level": "error", "message": {"text": "Dangling fetch: GET /api/mappa-consegne?from=${from}&to=${to} (app/mappa-consegne/page.tsx:43)"}, "properties": {"repobilityId": "508118b89efb428d", "scanner": "scanner-primary", "fingerprint": "f4802817b97ce0a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f99f33856d1088c8", "level": "error", "message": {"text": "Dangling fetch: PUT /api/controllo-diretto/upload-video (app/controllo-diretto/page.tsx:488)"}, "properties": {"repobilityId": "6290c72922f10de9", "scanner": "scanner-primary", "fingerprint": "f99f33856d1088c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1c2258fd8f0943f", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/get-invoice-detail (app/valida-fatture/page.tsx:78)"}, "properties": {"repobilityId": "3468cef2b117eaf1", "scanner": "scanner-primary", "fingerprint": "a1c2258fd8f0943f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de7957a3011c1121", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/analyze-and-compare (app/valida-fatture/page.tsx:113)"}, "properties": {"repobilityId": "07e0b81c976845b4", "scanner": "scanner-primary", "fingerprint": "de7957a3011c1121", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b51422bdbf85d05", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/apply-corrections (app/valida-fatture/page.tsx:192)"}, "properties": {"repobilityId": "23688469691d89cf", "scanner": "scanner-primary", "fingerprint": "0b51422bdbf85d05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82bfb98df32b9e02", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:67)"}, "properties": {"repobilityId": "55a9b6dcc37f4cc0", "scanner": "scanner-primary", "fingerprint": "82bfb98df32b9e02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9f600e6dd3e48b6", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/search-products (app/valida-fatture/ManageMissingProductsView.tsx:115)"}, "properties": {"repobilityId": "a165d76f1dd8b90a", "scanner": "scanner-primary", "fingerprint": "c9f600e6dd3e48b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a60c408d0ac1be5d", "level": "error", "message": {"text": "Dangling fetch: POST /api/valida-fatture/add-product-line (app/valida-fatture/ManageMissingProductsView.tsx:163)"}, "properties": {"repobilityId": "223f205fa8779e24", "scanner": "scanner-primary", "fingerprint": "a60c408d0ac1be5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5c8ff6b7595c96e", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/add-product-to-picking (app/arrivo-merce/page.tsx:120)"}, "properties": {"repobilityId": "ee52f9b0c490d456", "scanner": "scanner-primary", "fingerprint": "e5c8ff6b7595c96e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23f0493403cd544f", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-invoice (app/arrivo-merce/page.tsx:207)"}, "properties": {"repobilityId": "9d2b4e023563427e", "scanner": "scanner-primary", "fingerprint": "23f0493403cd544f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b99b0ec66168fa1f", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:238)"}, "properties": {"repobilityId": "5f06d4c7d1e2bf13", "scanner": "scanner-primary", "fingerprint": "b99b0ec66168fa1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8146694ab88fb2be", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/find-receptions-by-supplier (app/arrivo-merce/page.tsx:280)"}, "properties": {"repobilityId": "869ac70526e983c7", "scanner": "scanner-primary", "fingerprint": "8146694ab88fb2be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94316f1bdb5b4ae8", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/find-reception (app/arrivo-merce/page.tsx:328)"}, "properties": {"repobilityId": "ad9454dcc7e03dc3", "scanner": "scanner-primary", "fingerprint": "94316f1bdb5b4ae8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec85710b200b67c3", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/process-reception (app/arrivo-merce/page.tsx:365)"}, "properties": {"repobilityId": "77ffad0f03de9e8c", "scanner": "scanner-primary", "fingerprint": "ec85710b200b67c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-12eacedd5b3eb85a", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/get-po-attachments (app/arrivo-merce/page.tsx:541)"}, "properties": {"repobilityId": "82903fe0101e7ebb", "scanner": "scanner-primary", "fingerprint": "12eacedd5b3eb85a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efa5ff7e0b23cf05", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-attachment (app/arrivo-merce/page.tsx:619)"}, "properties": {"repobilityId": "986e518f7e1cff26", "scanner": "scanner-primary", "fingerprint": "efa5ff7e0b23cf05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cda78e68a711b8c2", "level": "error", "message": {"text": "Dangling fetch: POST /api/arrivo-merce/parse-multiple-attachments (app/arrivo-merce/page.tsx:669)"}, "properties": {"repobilityId": "bbb61d5c30bb2240", "scanner": "scanner-primary", "fingerprint": "cda78e68a711b8c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-586984120a2e184e", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/counts (app/controllo-prezzi/page.tsx:84)"}, "properties": {"repobilityId": "bbe7250b47977acd", "scanner": "scanner-primary", "fingerprint": "586984120a2e184e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82a64dcd4dbbe4bd", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/block-requests (app/controllo-prezzi/page.tsx:107)"}, "properties": {"repobilityId": "6630ef8d871d5f05", "scanner": "scanner-primary", "fingerprint": "82a64dcd4dbbe4bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cfecbb50ec5fcaf7", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/products?category=${category}&days=90 (app/controllo-prezzi/page.tsx:148)"}, "properties": {"repobilityId": "5066b59d801b8396", "scanner": "scanner-primary", "fingerprint": "cfecbb50ec5fcaf7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-381dd355feba61a0", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/update-price (app/controllo-prezzi/page.tsx:346)"}, "properties": {"repobilityId": "5289e72649efe5c5", "scanner": "scanner-primary", "fingerprint": "381dd355feba61a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2191a84293f1e1bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/approve-block (app/controllo-prezzi/page.tsx:403)"}, "properties": {"repobilityId": "95725de50e78737f", "scanner": "scanner-primary", "fingerprint": "2191a84293f1e1bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec19bd77c3e75d75", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/reject-block (app/controllo-prezzi/page.tsx:443)"}, "properties": {"repobilityId": "6025886fdc0e5b51", "scanner": "scanner-primary", "fingerprint": "ec19bd77c3e75d75", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c29369d14e99b8c9", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/mark-reviewed (app/controllo-prezzi/page.tsx:474)"}, "properties": {"repobilityId": "faa60cb8e62a1d19", "scanner": "scanner-primary", "fingerprint": "c29369d14e99b8c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76f3318268392fe2", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/block-price (app/controllo-prezzi/page.tsx:504)"}, "properties": {"repobilityId": "531d48d200c0c7dc", "scanner": "scanner-primary", "fingerprint": "76f3318268392fe2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d711246e3b90d28", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/mark-pending (app/controllo-prezzi/page.tsx:535)"}, "properties": {"repobilityId": "f79b5d34a788eedf", "scanner": "scanner-primary", "fingerprint": "7d711246e3b90d28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed11257159a4972c", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/analisi-mensile?month=${month} (app/controllo-prezzi/analisi-mensile/page.tsx:77)"}, "properties": {"repobilityId": "ade9004eaf66cc5c", "scanner": "scanner-primary", "fingerprint": "ed11257159a4972c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c34fd8baaed2583b", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/main-pricelists (app/controllo-prezzi/imposta-listini/page.tsx:77)"}, "properties": {"repobilityId": "1937afc2164fcafb", "scanner": "scanner-primary", "fingerprint": "c34fd8baaed2583b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35c36ce1d5c865d6", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/products-without-rules?pricelistIds=${pricelistIds}&filter=${filter} (app/controllo-prezzi/imposta-listini/page.tsx:97)"}, "properties": {"repobilityId": "cfd8574d2ffa67ff", "scanner": "scanner-primary", "fingerprint": "35c36ce1d5c865d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b3ad364d6c9e5d2", "level": "error", "message": {"text": "Dangling fetch: GET /api/controllo-prezzi/product-pricelist-rules?productId=${product.id} (app/controllo-prezzi/imposta-listini/page.tsx:132)"}, "properties": {"repobilityId": "d8476e53f86a936d", "scanner": "scanner-primary", "fingerprint": "9b3ad364d6c9e5d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e40d6ed043245e15", "level": "error", "message": {"text": "Dangling fetch: POST /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:167)"}, "properties": {"repobilityId": "bb3b3369d551f794", "scanner": "scanner-primary", "fingerprint": "e40d6ed043245e15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a704627b1ee4a40a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/controllo-prezzi/set-product-pricelist-rule (app/controllo-prezzi/imposta-listini/page.tsx:194)"}, "properties": {"repobilityId": "546d27b65a9174a8", "scanner": "scanner-primary", "fingerprint": "a704627b1ee4a40a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b58a6503f0ca7f4b", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-alert/note (app/sales-alert/page.tsx:544)"}, "properties": {"repobilityId": "7c5a064647f8add0", "scanner": "scanner-primary", "fingerprint": "b58a6503f0ca7f4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23343766b7819c49", "level": "error", "message": {"text": "Dangling fetch: POST /api/sales-alert/analyze (app/sales-alert/page.tsx:661)"}, "properties": {"repobilityId": "f399043057a56330", "scanner": "scanner-primary", "fingerprint": "23343766b7819c49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9690bbbb9134aae9", "level": "error", "message": {"text": "Dangling fetch: GET /api/sales-alert (app/sales-alert/page.tsx:793)"}, "properties": {"repobilityId": "773758eca6b10880", "scanner": "scanner-primary", "fingerprint": "9690bbbb9134aae9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bdc13bb6d99ace23", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=employees (app/gestione-buste-paga/page.tsx:120)"}, "properties": {"repobilityId": "c3992c2f96e89ff1", "scanner": "scanner-primary", "fingerprint": "bdc13bb6d99ace23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6aa6f030b645d0b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=salary-rules (app/gestione-buste-paga/page.tsx:121)"}, "properties": {"repobilityId": "bd1fe62b1b0da170", "scanner": "scanner-primary", "fingerprint": "6aa6f030b645d0b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b62a61b1e359947", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=payslip-lines&payslipId=${payslipId} (app/gestione-buste-paga/page.tsx:165)"}, "properties": {"repobilityId": "c0b50b70cc93da3b", "scanner": "scanner-primary", "fingerprint": "3b62a61b1e359947", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f65068b75f3ca14", "level": "error", "message": {"text": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:184)"}, "properties": {"repobilityId": "53fd9a35fd8baa58", "scanner": "scanner-primary", "fingerprint": "9f65068b75f3ca14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60997b5e0c5c1cb5", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=employee-bonus&employeeId=${employeeId}&month=${month} (app/gestione-buste-paga/page.tsx:231)"}, "properties": {"repobilityId": "1d74d183180468a7", "scanner": "scanner-primary", "fingerprint": "60997b5e0c5c1cb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1186650e6ec3868", "level": "error", "message": {"text": "Dangling fetch: POST /api/hr-payslip/extract-pdf (app/gestione-buste-paga/page.tsx:286)"}, "properties": {"repobilityId": "a7e0a43d0c9ccf0e", "scanner": "scanner-primary", "fingerprint": "b1186650e6ec3868", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49c00297fe9baee8", "level": "error", "message": {"text": "Dangling fetch: POST /api/hr-payslip (app/gestione-buste-paga/page.tsx:347)"}, "properties": {"repobilityId": "a50cd2ee98907239", "scanner": "scanner-primary", "fingerprint": "49c00297fe9baee8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fca142eef5ee04aa", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:549)"}, "properties": {"repobilityId": "f7ad4f04c7df94af", "scanner": "scanner-primary", "fingerprint": "fca142eef5ee04aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-072b5fb613cb4156", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/disconnect (app/email-ai-monitor/page.tsx:596)"}, "properties": {"repobilityId": "d276cdd89815d7fd", "scanner": "scanner-primary", "fingerprint": "072b5fb613cb4156", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ed3a64e4f45432a", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/fetch-emails (app/email-ai-monitor/page.tsx:634)"}, "properties": {"repobilityId": "555d14422ff1fef5", "scanner": "scanner-primary", "fingerprint": "6ed3a64e4f45432a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aacbb2247a46700e", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/regenerate-summaries (app/email-ai-monitor/page.tsx:671)"}, "properties": {"repobilityId": "59faa0efe9dc0757", "scanner": "scanner-primary", "fingerprint": "aacbb2247a46700e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5512c5fe7807efc", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-ai/settings?connectionId=${connectionId} (app/email-ai-monitor/page.tsx:697)"}, "properties": {"repobilityId": "8fa2a9223f381bfe", "scanner": "scanner-primary", "fingerprint": "f5512c5fe7807efc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82461c6dca1bc6bc", "level": "error", "message": {"text": "Dangling fetch: PUT /api/email-ai/settings (app/email-ai-monitor/page.tsx:719)"}, "properties": {"repobilityId": "60ba5b1179f582e4", "scanner": "scanner-primary", "fingerprint": "82461c6dca1bc6bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e89686cb1ee7d96", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:769)"}, "properties": {"repobilityId": "6951aee6eac56b5e", "scanner": "scanner-primary", "fingerprint": "2e89686cb1ee7d96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e76137ffab6716b", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:831)"}, "properties": {"repobilityId": "83021990455b7954", "scanner": "scanner-primary", "fingerprint": "0e76137ffab6716b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2c6cedf09e04d7b", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/generate-reply (app/email-ai-monitor/page.tsx:853)"}, "properties": {"repobilityId": "d5e5955d3174fa5e", "scanner": "scanner-primary", "fingerprint": "e2c6cedf09e04d7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-469186fa517a8dbc", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/send (app/email-ai-monitor/page.tsx:885)"}, "properties": {"repobilityId": "a079a7012fa75552", "scanner": "scanner-primary", "fingerprint": "469186fa517a8dbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3059730f4dc098fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/sync (app/email-ai-monitor/page.tsx:921)"}, "properties": {"repobilityId": "7efbf39316de0a89", "scanner": "scanner-primary", "fingerprint": "3059730f4dc098fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf717c7a9c506b10", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/actions (app/email-ai-monitor/page.tsx:984)"}, "properties": {"repobilityId": "8f86c41966a6712d", "scanner": "scanner-primary", "fingerprint": "cf717c7a9c506b10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c23df434b3f2de6", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-ai/agent (app/email-ai-monitor/page.tsx:1012)"}, "properties": {"repobilityId": "81efde4a77c1c234", "scanner": "scanner-primary", "fingerprint": "7c23df434b3f2de6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0c69c3a6bbebf4f", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-ai/agent?connectionId=${connectionId}&action=stats (app/email-ai-monitor/page.tsx:1039)"}, "properties": {"repobilityId": "047c1c3c9d8a30be", "scanner": "scanner-primary", "fingerprint": "a0c69c3a6bbebf4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-326f49334ddecaab", "level": "error", "message": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-monitor/page.tsx:50)"}, "properties": {"repobilityId": "c62a78c1b64f2a0e", "scanner": "scanner-primary", "fingerprint": "326f49334ddecaab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4364d0e867e0ecd1", "level": "error", "message": {"text": "Dangling fetch: POST /api/jetson/chat (app/jetson-monitor/page.tsx:122)"}, "properties": {"repobilityId": "125912067753c991", "scanner": "scanner-primary", "fingerprint": "4364d0e867e0ecd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e962f13dccaea953", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(clientiQ)} (app/silvano/page.tsx:76)"}, "properties": {"repobilityId": "8ccacac91bd03e8d", "scanner": "scanner-primary", "fingerprint": "e962f13dccaea953", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b499d5e5c3e23c85", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/page.tsx:92)"}, "properties": {"repobilityId": "c333cf43137f47d4", "scanner": "scanner-primary", "fingerprint": "b499d5e5c3e23c85", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3837dfe15897b45b", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/categorie (app/silvano/page.tsx:108)"}, "properties": {"repobilityId": "5c613813f140f18d", "scanner": "scanner-primary", "fingerprint": "3837dfe15897b45b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf55a4d872f0b897", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/prodotti-cliente/${c.id} (app/silvano/page.tsx:113)"}, "properties": {"repobilityId": "c840e3520f766826", "scanner": "scanner-primary", "fingerprint": "bf55a4d872f0b897", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5769d163fa5d07e5", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/clienti/${c.id} (app/silvano/page.tsx:124)"}, "properties": {"repobilityId": "6789be515b64b160", "scanner": "scanner-primary", "fingerprint": "5769d163fa5d07e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee6793286da35996", "level": "error", "message": {"text": "Dangling fetch: POST /api/silvano/crea-ordine (app/silvano/page.tsx:162)"}, "properties": {"repobilityId": "cd7e5c9a749e8997", "scanner": "scanner-primary", "fingerprint": "ee6793286da35996", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28763424432d8341", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/ultimo-acquisto?clientId=${clientId}&productId=${p.id} (app/silvano/page.tsx:416)"}, "properties": {"repobilityId": "76385cca5d4afa74", "scanner": "scanner-primary", "fingerprint": "28763424432d8341", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b31d0912b3a0348", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/prodotto-info/${productId} (app/silvano/page.tsx:518)"}, "properties": {"repobilityId": "d76c57c8fab2b505", "scanner": "scanner-primary", "fingerprint": "0b31d0912b3a0348", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f39b1338f09fbdd6", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/dashboard?from=${from}&to=${to} (app/silvano/dashboard/page.tsx:49)"}, "properties": {"repobilityId": "da421d8fedac4572", "scanner": "scanner-primary", "fingerprint": "f39b1338f09fbdd6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8ccfef7691ff9f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/mappa (app/silvano/mappa/page.tsx:21)"}, "properties": {"repobilityId": "0dbcd31665177dd8", "scanner": "scanner-primary", "fingerprint": "a8ccfef7691ff9f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4dc8743c570b47b1", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/ordini?date=${date} (app/silvano/ordini/page.tsx:62)"}, "properties": {"repobilityId": "2f0063c2668c3956", "scanner": "scanner-primary", "fingerprint": "4dc8743c570b47b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c5593573c0bcf06", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:73)"}, "properties": {"repobilityId": "4e2aefaac9c7265d", "scanner": "scanner-primary", "fingerprint": "9c5593573c0bcf06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c17647351afbbb74", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/ordine/${id} (app/silvano/ordini/page.tsx:81)"}, "properties": {"repobilityId": "eef63e11bcdb58ba", "scanner": "scanner-primary", "fingerprint": "c17647351afbbb74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-734f6128b5d2dcc6", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:98)"}, "properties": {"repobilityId": "792c74cf4c938151", "scanner": "scanner-primary", "fingerprint": "734f6128b5d2dcc6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-728572fadc2ffc0d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/silvano/ordine/${sel.id} (app/silvano/ordini/page.tsx:121)"}, "properties": {"repobilityId": "4ecb5a67154faa9b", "scanner": "scanner-primary", "fingerprint": "728572fadc2ffc0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f1b124ba0369291", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/catalog?${params} (app/silvano/ordini/page.tsx:386)"}, "properties": {"repobilityId": "0b8787f3085cbf71", "scanner": "scanner-primary", "fingerprint": "4f1b124ba0369291", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3f5bdd4f9e0b939", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/clienti?q=${encodeURIComponent(q)} (app/silvano/clienti/page.tsx:46)"}, "properties": {"repobilityId": "c25b359c997fe619", "scanner": "scanner-primary", "fingerprint": "f3f5bdd4f9e0b939", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23ec6db851a17efb", "level": "error", "message": {"text": "Dangling fetch: GET /api/silvano/cliente/${id} (app/silvano/clienti/page.tsx:56)"}, "properties": {"repobilityId": "7d0950f5890ccb43", "scanner": "scanner-primary", "fingerprint": "23ec6db851a17efb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-534d1fc06994c17d", "level": "error", "message": {"text": "Dangling fetch: POST /api/test-ai-matching (app/test-ai-matching/page.tsx:23)"}, "properties": {"repobilityId": "2a1b24c4a014f131", "scanner": "scanner-primary", "fingerprint": "534d1fc06994c17d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-91f165942ed9f075", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-route-ai/session (app/smart-route-ai/page.tsx:216)"}, "properties": {"repobilityId": "4421c0a7c85b1ed8", "scanner": "scanner-primary", "fingerprint": "91f165942ed9f075", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f770b2f9586f594", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-route-ai/vehicles (app/smart-route-ai/page.tsx:240)"}, "properties": {"repobilityId": "44328041ed894e4e", "scanner": "scanner-primary", "fingerprint": "4f770b2f9586f594", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da9e09e67d4c7a2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/pickings (app/smart-route-ai/page.tsx:268)"}, "properties": {"repobilityId": "795f7f6009578c65", "scanner": "scanner-primary", "fingerprint": "da9e09e67d4c7a2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f72e73d7ef6f6581", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-route-ai/batches?date=${date} (app/smart-route-ai/page.tsx:306)"}, "properties": {"repobilityId": "44a48b8cd49f9fc3", "scanner": "scanner-primary", "fingerprint": "f72e73d7ef6f6581", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6fb022eadf6fbbc8", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches (app/smart-route-ai/page.tsx:324)"}, "properties": {"repobilityId": "38343122f973c17d", "scanner": "scanner-primary", "fingerprint": "6fb022eadf6fbbc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97ab3ff1720f492f", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:383)"}, "properties": {"repobilityId": "149d4fd0724742ed", "scanner": "scanner-primary", "fingerprint": "97ab3ff1720f492f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa5c5e99522be084", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-route-ai/quotations${qs} (app/smart-route-ai/page.tsx:426)"}, "properties": {"repobilityId": "1cc31fdb7c414b3b", "scanner": "scanner-primary", "fingerprint": "aa5c5e99522be084", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c9fa782329b1a3a", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/quotations (app/smart-route-ai/page.tsx:442)"}, "properties": {"repobilityId": "6512b2fb7e3328d7", "scanner": "scanner-primary", "fingerprint": "0c9fa782329b1a3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba4d34fa0516ef7d", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:533)"}, "properties": {"repobilityId": "1c21b8cbc209bfe7", "scanner": "scanner-primary", "fingerprint": "ba4d34fa0516ef7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-118272909013bb00", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/assign-vehicle (app/smart-route-ai/page.tsx:595)"}, "properties": {"repobilityId": "2ce3bdb95ac2d8c2", "scanner": "scanner-primary", "fingerprint": "118272909013bb00", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00ba7d999c50708a", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:611)"}, "properties": {"repobilityId": "6c52c0c6c6ea9b91", "scanner": "scanner-primary", "fingerprint": "00ba7d999c50708a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e7a5a38f7ef7306e", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/smart-route-ai/page.tsx:672)"}, "properties": {"repobilityId": "db8a0bc612bfc138", "scanner": "scanner-primary", "fingerprint": "e7a5a38f7ef7306e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f7ee2bd258e7854", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/batches/update-state (app/smart-route-ai/page.tsx:713)"}, "properties": {"repobilityId": "a36f2e5d55b67cec", "scanner": "scanner-primary", "fingerprint": "7f7ee2bd258e7854", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-775efa1da249df83", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/optimize (app/smart-route-ai/page.tsx:767)"}, "properties": {"repobilityId": "f7c8a39b01de2bcb", "scanner": "scanner-primary", "fingerprint": "775efa1da249df83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2f8fa57b506460a", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-route-ai/create-batches (app/smart-route-ai/page.tsx:814)"}, "properties": {"repobilityId": "18e239f1df70c9ee", "scanner": "scanner-primary", "fingerprint": "a2f8fa57b506460a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a7dd5280629b8f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery/van-pending?t=${Date.now()} (app/delivery/page.tsx:219)"}, "properties": {"repobilityId": "c0bdfd905b6b84c0", "scanner": "scanner-primary", "fingerprint": "6a7dd5280629b8f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-320532a6a8a1a7e2", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/delivery/page.tsx:259)"}, "properties": {"repobilityId": "246734e5a706acf1", "scanner": "scanner-primary", "fingerprint": "320532a6a8a1a7e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86426ef340bfceb5", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery/list${cacheBuster} (app/delivery/page.tsx:397)"}, "properties": {"repobilityId": "c2cca467fefc89cf", "scanner": "scanner-primary", "fingerprint": "86426ef340bfceb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4963018ebc4029c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/vehicle-check/get-info (app/delivery/page.tsx:696)"}, "properties": {"repobilityId": "d0814f1773ab6d4e", "scanner": "scanner-primary", "fingerprint": "4963018ebc4029c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e517a3f187769ff", "level": "error", "message": {"text": "Dangling fetch: POST /api/vehicle-check/save (app/delivery/page.tsx:821)"}, "properties": {"repobilityId": "b4ff48791c1c70e5", "scanner": "scanner-primary", "fingerprint": "2e517a3f187769ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a2bc5b6f490aa74", "level": "error", "message": {"text": "Dangling fetch: POST /api/vehicle-check/resolve-issue (app/delivery/page.tsx:858)"}, "properties": {"repobilityId": "8088d4316c4ca632", "scanner": "scanner-primary", "fingerprint": "7a2bc5b6f490aa74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ccadeee7006e3ee", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery/print (app/delivery/page.tsx:2125)"}, "properties": {"repobilityId": "57e35521dca21cf3", "scanner": "scanner-primary", "fingerprint": "1ccadeee7006e3ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0660059e7b18e7d", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery/calculate-eta (app/delivery/page.tsx:2328)"}, "properties": {"repobilityId": "7a67917cb20cc862", "scanner": "scanner-primary", "fingerprint": "d0660059e7b18e7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b5ec5c4f6947d8f", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery/optimize-route (app/delivery/page.tsx:2351)"}, "properties": {"repobilityId": "f694f15932154dcd", "scanner": "scanner-primary", "fingerprint": "3b5ec5c4f6947d8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a452e05c1d028cfd", "level": "error", "message": {"text": "Dangling fetch: GET /api/scarichi-parziali/list (app/scarichi-parziali/page.tsx:78)"}, "properties": {"repobilityId": "021207e607cc3249", "scanner": "scanner-primary", "fingerprint": "a452e05c1d028cfd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e2f32b519e5c9a3", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarichi-parziali/get-picking-id (app/scarichi-parziali/page.tsx:99)"}, "properties": {"repobilityId": "06bc066531ee86cf", "scanner": "scanner-primary", "fingerprint": "5e2f32b519e5c9a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b45fefdfd24187cc", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarichi-parziali/get-sales-order-id (app/scarichi-parziali/page.tsx:129)"}, "properties": {"repobilityId": "b021b06caea0a0b3", "scanner": "scanner-primary", "fingerprint": "b45fefdfd24187cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0bac28db8836c4d3", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:190)"}, "properties": {"repobilityId": "1b40c7b17522b4b1", "scanner": "scanner-primary", "fingerprint": "0bac28db8836c4d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b2f00ce674a571c", "level": "error", "message": {"text": "Dangling fetch: POST /api/scarichi-parziali/process-product (app/scarichi-parziali/page.tsx:227)"}, "properties": {"repobilityId": "3647bf79ba8fdefb", "scanner": "scanner-primary", "fingerprint": "7b2f00ce674a571c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-17a587fc3dba3778", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat-venditori (app/chat-venditori/page.tsx:585)"}, "properties": {"repobilityId": "7c767ddea33f7a08", "scanner": "scanner-primary", "fingerprint": "17a587fc3dba3778", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4abca607ea0e4d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/user/profile (app/stella-assistant/page.tsx:78)"}, "properties": {"repobilityId": "dec0a32c149bdaac", "scanner": "scanner-primary", "fingerprint": "e4abca607ea0e4d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53b7a68e45286174", "level": "error", "message": {"text": "Dangling fetch: POST /api/openai/realtime (app/stella-assistant/components/StellaRealTime.tsx:55)"}, "properties": {"repobilityId": "29175f9b16f7f965", "scanner": "scanner-primary", "fingerprint": "53b7a68e45286174", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77a13dc403a7bde6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17 (app/stella-assistant/components/StellaRealTime.tsx:141)"}, "properties": {"repobilityId": "791990c781951f68", "scanner": "scanner-primary", "fingerprint": "77a13dc403a7bde6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe8d9a492bc993b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:40)"}, "properties": {"repobilityId": "c89c76d83e6b8224", "scanner": "scanner-primary", "fingerprint": "fe8d9a492bc993b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be2a4679c8d9ec50", "level": "error", "message": {"text": "Dangling fetch: POST https://api.d-id.com/talks/streams/${didStreamIdRef.current}/sdp (app/stella-assistant/components/StellaVideoAvatar.tsx:91)"}, "properties": {"repobilityId": "203ba97990a73508", "scanner": "scanner-primary", "fingerprint": "be2a4679c8d9ec50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e772b8b1122bfd7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/stella/did-stream (app/stella-assistant/components/StellaVideoAvatar.tsx:120)"}, "properties": {"repobilityId": "d410482327fdd71f", "scanner": "scanner-primary", "fingerprint": "8e772b8b1122bfd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8f4f1ae7f5482bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:183)"}, "properties": {"repobilityId": "f40bc3107614933a", "scanner": "scanner-primary", "fingerprint": "c8f4f1ae7f5482bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ddc1c76b397c6dda", "level": "error", "message": {"text": "Dangling fetch: GET /api/user/profile (app/stella-assistant/chat/page.tsx:212)"}, "properties": {"repobilityId": "205fe575237ef42c", "scanner": "scanner-primary", "fingerprint": "ddc1c76b397c6dda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0fae5784690d3664", "level": "error", "message": {"text": "Dangling fetch: GET /api/stella/tasks?action_id=${selectedAction.id} (app/stella-assistant/chat/page.tsx:245)"}, "properties": {"repobilityId": "a0298dd1baa4079c", "scanner": "scanner-primary", "fingerprint": "0fae5784690d3664", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5befc7f2e8addffd", "level": "error", "message": {"text": "Dangling fetch: POST /api/openai/chat (app/stella-assistant/chat/page.tsx:389)"}, "properties": {"repobilityId": "d2a8c5c97d2cf152", "scanner": "scanner-primary", "fingerprint": "5befc7f2e8addffd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb2e11a6830791e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:465)"}, "properties": {"repobilityId": "d0f939002a933fd8", "scanner": "scanner-primary", "fingerprint": "fb2e11a6830791e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc02e1615bd784be", "level": "error", "message": {"text": "Dangling fetch: POST /api/stella/save-conversation (app/stella-assistant/chat/page.tsx:497)"}, "properties": {"repobilityId": "8e1318865ef4125a", "scanner": "scanner-primary", "fingerprint": "dc02e1615bd784be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-224867cfbaef693b", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-image (app/ai-image-studio/page.tsx:163)"}, "properties": {"repobilityId": "1a521fc9b077ed16", "scanner": "scanner-primary", "fingerprint": "224867cfbaef693b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f2963fca6b3900e", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-caption (app/ai-image-studio/page.tsx:330)"}, "properties": {"repobilityId": "ad588bdf152d0268", "scanner": "scanner-primary", "fingerprint": "8f2963fca6b3900e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9cdf6508ae5e15c", "level": "error", "message": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-stats/page.tsx:11)"}, "properties": {"repobilityId": "7252e9e32c8e867b", "scanner": "scanner-primary", "fingerprint": "d9cdf6508ae5e15c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-995f2ac17bd02026", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:165)"}, "properties": {"repobilityId": "0a06ae18fc421a02", "scanner": "scanner-primary", "fingerprint": "995f2ac17bd02026", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0687a6968c857a96", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-scadenze/extract-expiry (app/gestione-scadenze/page.tsx:223)"}, "properties": {"repobilityId": "ef9124424194f024", "scanner": "scanner-primary", "fingerprint": "0687a6968c857a96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-569084b29a4b34d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:268)"}, "properties": {"repobilityId": "71068bf919106097", "scanner": "scanner-primary", "fingerprint": "569084b29a4b34d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77f0515d45850e94", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-scadenze/save-expiry (app/gestione-scadenze/page.tsx:295)"}, "properties": {"repobilityId": "d06d384abbb22228", "scanner": "scanner-primary", "fingerprint": "77f0515d45850e94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a6a4f7cb524d62a", "level": "error", "message": {"text": "Dangling fetch: GET /api/supplier-cadence (app/gestione-cadenze-fornitori/page.tsx:55)"}, "properties": {"repobilityId": "b784755b534404c9", "scanner": "scanner-primary", "fingerprint": "8a6a4f7cb524d62a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6259114e24bf8b5a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/supplier-cadence/${supplierId} (app/gestione-cadenze-fornitori/page.tsx:170)"}, "properties": {"repobilityId": "332489a5349e01b8", "scanner": "scanner-primary", "fingerprint": "6259114e24bf8b5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2e1d8a70f5a22c7", "level": "error", "message": {"text": "Dangling fetch: POST /api/odoo/rpc (app/dashboard-venditori/hooks/useOdooData.ts:231)"}, "properties": {"repobilityId": "b98467c1238368fc", "scanner": "scanner-primary", "fingerprint": "f2e1d8a70f5a22c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5c0e959d5e75df8", "level": "error", "message": {"text": "Dangling fetch: GET /api/ferie/me (app/ferie/page.tsx:108)"}, "properties": {"repobilityId": "7664b56d33dc86cc", "scanner": "scanner-primary", "fingerprint": "c5c0e959d5e75df8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd6a9549bedd8053", "level": "error", "message": {"text": "Dangling fetch: GET /api/ferie/calendario?from=${from}&to=${to} (app/ferie/page.tsx:125)"}, "properties": {"repobilityId": "8b4c1116bd484984", "scanner": "scanner-primary", "fingerprint": "fd6a9549bedd8053", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f018858c95a392ce", "level": "error", "message": {"text": "Dangling fetch: POST /api/ferie/me (app/ferie/page.tsx:199)"}, "properties": {"repobilityId": "a458ebe4d774aabd", "scanner": "scanner-primary", "fingerprint": "f018858c95a392ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ff283a684f656e9", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/ferie/me (app/ferie/page.tsx:225)"}, "properties": {"repobilityId": "8dc28a0000642293", "scanner": "scanner-primary", "fingerprint": "6ff283a684f656e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab4b7c782ea31fe6", "level": "error", "message": {"text": "Dangling fetch: GET /api/ferie/admin?filter=${tab} (app/ferie/admin/page.tsx:82)"}, "properties": {"repobilityId": "76b3bfcd1c26b925", "scanner": "scanner-primary", "fingerprint": "ab4b7c782ea31fe6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3eb7031c22e0ce7", "level": "error", "message": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:102)"}, "properties": {"repobilityId": "ffe8ea7aa63faa94", "scanner": "scanner-primary", "fingerprint": "e3eb7031c22e0ce7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-affa751f681f32d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:122)"}, "properties": {"repobilityId": "b55bf23745d640ce", "scanner": "scanner-primary", "fingerprint": "affa751f681f32d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7f2af45eeca1f05", "level": "error", "message": {"text": "Dangling fetch: POST /api/ferie/admin (app/ferie/admin/page.tsx:152)"}, "properties": {"repobilityId": "f6de7fcdc772d25e", "scanner": "scanner-primary", "fingerprint": "f7f2af45eeca1f05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c16bd443aba2e5c", "level": "error", "message": {"text": "Dangling fetch: GET /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:160)"}, "properties": {"repobilityId": "6b676094b61afb82", "scanner": "scanner-primary", "fingerprint": "8c16bd443aba2e5c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0227983932c97db1", "level": "error", "message": {"text": "Dangling fetch: POST /api/ordini-fornitori/analyze (app/ordini-fornitori/page.tsx:189)"}, "properties": {"repobilityId": "df243ea2874d29d9", "scanner": "scanner-primary", "fingerprint": "0227983932c97db1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60fcb87f5c514c4a", "level": "error", "message": {"text": "Dangling fetch: POST /api/ordini-fornitori/cache (app/ordini-fornitori/page.tsx:202)"}, "properties": {"repobilityId": "b6622e3efcb0f5a9", "scanner": "scanner-primary", "fingerprint": "60fcb87f5c514c4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8755aa7c32c674b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/analisi-prodotto/top-products?${params} (app/analisi-prodotto/page.tsx:156)"}, "properties": {"repobilityId": "e43a125e289fd971", "scanner": "scanner-primary", "fingerprint": "8755aa7c32c674b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-730a710137777e37", "level": "error", "message": {"text": "Dangling fetch: GET /api/analisi-prodotto?${params} (app/analisi-prodotto/page.tsx:202)"}, "properties": {"repobilityId": "0d25f47dd448e00b", "scanner": "scanner-primary", "fingerprint": "730a710137777e37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a26966bf2a6aecac", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (app/gestione-visibilita-app/page.tsx:64)"}, "properties": {"repobilityId": "ac7b80b1fd874d4b", "scanner": "scanner-primary", "fingerprint": "a26966bf2a6aecac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24da0b67c42ee535", "level": "error", "message": {"text": "Dangling fetch: GET /api/apps/visibility (app/gestione-visibilita-app/page.tsx:76)"}, "properties": {"repobilityId": "8bceaf952759b328", "scanner": "scanner-primary", "fingerprint": "24da0b67c42ee535", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6091c04082f1f845", "level": "error", "message": {"text": "Dangling fetch: GET /api/odoo/employees (app/gestione-visibilita-app/page.tsx:152)"}, "properties": {"repobilityId": "629b33ee3de2bb2c", "scanner": "scanner-primary", "fingerprint": "6091c04082f1f845", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b161a1dbf762b52", "level": "error", "message": {"text": "Dangling fetch: GET /api/odoo/customers (app/gestione-visibilita-app/page.tsx:173)"}, "properties": {"repobilityId": "2be64b23183827d5", "scanner": "scanner-primary", "fingerprint": "3b161a1dbf762b52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43101c9e02fab5b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/apps/visibility (app/gestione-visibilita-app/page.tsx:287)"}, "properties": {"repobilityId": "1ce13815505fcb1f", "scanner": "scanner-primary", "fingerprint": "43101c9e02fab5b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41195a59d9421694", "level": "error", "message": {"text": "Dangling fetch: POST /api/maestro/sync/manual (app/gestione-visibilita-app/page.tsx:312)"}, "properties": {"repobilityId": "526622e8ea7d1c35", "scanner": "scanner-primary", "fingerprint": "41195a59d9421694", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-706ea0da0edd2ed5", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-withdrawn&teamId=${teamId} (app/dashboard-compensi/page.tsx:175)"}, "properties": {"repobilityId": "0e913a9bb51b119d", "scanner": "scanner-primary", "fingerprint": "706ea0da0edd2ed5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d6a35f176d2a38bd", "level": "error", "message": {"text": "Dangling fetch: GET /api/hr-payslip?action=team-bonus-cumulative&teamId=${teamId} (app/dashboard-compensi/page.tsx:196)"}, "properties": {"repobilityId": "884e807eb944e0a9", "scanner": "scanner-primary", "fingerprint": "d6a35f176d2a38bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-087fc20b8b041497", "level": "error", "message": {"text": "Dangling fetch: GET /api/compensi-venditori?monthsBack=${monthsBack} (app/dashboard-compensi/page.tsx:221)"}, "properties": {"repobilityId": "29868420e342d7a4", "scanner": "scanner-primary", "fingerprint": "087fc20b8b041497", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f66331b982b6e59", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user.email)} (app/profile/page.tsx:75)"}, "properties": {"repobilityId": "7e770bc1131a9c6f", "scanner": "scanner-primary", "fingerprint": "0f66331b982b6e59", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de499f92c2b8306f", "level": "error", "message": {"text": "Dangling fetch: POST /api/profile/update (app/profile/page.tsx:131)"}, "properties": {"repobilityId": "d6cae89ba256a9ea", "scanner": "scanner-primary", "fingerprint": "de499f92c2b8306f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abbc8461f8c56028", "level": "error", "message": {"text": "Dangling fetch: GET /api/missing-products?date=${selectedDate}&group_by=${groupBy} (app/prodotti-mancanti/page.tsx:89)"}, "properties": {"repobilityId": "57f5294d97020b37", "scanner": "scanner-primary", "fingerprint": "abbc8461f8c56028", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc48f3883938e099", "level": "error", "message": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:127)"}, "properties": {"repobilityId": "427208366f4aa26c", "scanner": "scanner-primary", "fingerprint": "dc48f3883938e099", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2195883c01746c87", "level": "error", "message": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:171)"}, "properties": {"repobilityId": "b8dbbef2405e238b", "scanner": "scanner-primary", "fingerprint": "2195883c01746c87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c904484d709d014", "level": "error", "message": {"text": "Dangling fetch: POST /api/missing-products/action (app/prodotti-mancanti/page.tsx:219)"}, "properties": {"repobilityId": "8d64a7dfc0b5165a", "scanner": "scanner-primary", "fingerprint": "1c904484d709d014", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c4ffde86a98387b", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/dashboard (app/portale-clienti/page.tsx:76)"}, "properties": {"repobilityId": "87d148d43acdfe9b", "scanner": "scanner-primary", "fingerprint": "2c4ffde86a98387b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22167a236ae742b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/page.tsx:102)"}, "properties": {"repobilityId": "eb895e98de2174cc", "scanner": "scanner-primary", "fingerprint": "22167a236ae742b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75d4129847354a0a", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:148)"}, "properties": {"repobilityId": "860bc1c65714b211", "scanner": "scanner-primary", "fingerprint": "75d4129847354a0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3cdd4a8a0f81d69", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/product-favorites (app/portale-clienti/catalogo/page.tsx:171)"}, "properties": {"repobilityId": "444700988f769eab", "scanner": "scanner-primary", "fingerprint": "c3cdd4a8a0f81d69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b933d63afc58987f", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/catalogo/page.tsx:207)"}, "properties": {"repobilityId": "aa13a52999241f69", "scanner": "scanner-primary", "fingerprint": "b933d63afc58987f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-400e15df3c6e65cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:223)"}, "properties": {"repobilityId": "b85c1adaae4b1d8a", "scanner": "scanner-primary", "fingerprint": "400e15df3c6e65cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-292363d1a46858d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:253)"}, "properties": {"repobilityId": "099f602208e86ba1", "scanner": "scanner-primary", "fingerprint": "292363d1a46858d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a748881d66ff5d3d", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/categories (app/portale-clienti/catalogo/page.tsx:308)"}, "properties": {"repobilityId": "269cf27bfd8e1a68", "scanner": "scanner-primary", "fingerprint": "a748881d66ff5d3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e0b9b7e86380afd", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/products?${params} (app/portale-clienti/catalogo/page.tsx:351)"}, "properties": {"repobilityId": "c194f5db5f8f3655", "scanner": "scanner-primary", "fingerprint": "0e0b9b7e86380afd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98531adfb1967e5a", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/catalogo/page.tsx:403)"}, "properties": {"repobilityId": "ab29589eabbefc04", "scanner": "scanner-primary", "fingerprint": "98531adfb1967e5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-164ac12a23b4f173", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:78)"}, "properties": {"repobilityId": "980a861960f85c2c", "scanner": "scanner-primary", "fingerprint": "164ac12a23b4f173", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f28aad0a306abbc", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/consegne/[id]/page.tsx:113)"}, "properties": {"repobilityId": "28a9c855db593566", "scanner": "scanner-primary", "fingerprint": "5f28aad0a306abbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49a71e2736b96220", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/invoices?${params.toString()} (app/portale-clienti/fatture/page.tsx:94)"}, "properties": {"repobilityId": "15ac3cb0d5215489", "scanner": "scanner-primary", "fingerprint": "49a71e2736b96220", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa028f5818be2cb8", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId} (app/portale-clienti/fatture/[id]/page.tsx:85)"}, "properties": {"repobilityId": "7155390afcce3075", "scanner": "scanner-primary", "fingerprint": "fa028f5818be2cb8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5aec2b636de3684d", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:35)"}, "properties": {"repobilityId": "9c2eea1b78a42873", "scanner": "scanner-primary", "fingerprint": "5aec2b636de3684d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-499c449289088cda", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId} (app/portale-clienti/components/DeliveryMapModal.tsx:65)"}, "properties": {"repobilityId": "669a24deb8589a7e", "scanner": "scanner-primary", "fingerprint": "499c449289088cda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fe15690b93ae796", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/ai-suggest-order (app/portale-clienti/components/QuickActions.tsx:21)"}, "properties": {"repobilityId": "614bd0dce369afd1", "scanner": "scanner-primary", "fingerprint": "2fe15690b93ae796", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3c6decd0661279f", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart (app/portale-clienti/components/QuickActions.tsx:37)"}, "properties": {"repobilityId": "e3a039a33ffd4f88", "scanner": "scanner-primary", "fingerprint": "f3c6decd0661279f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f33e1465817a3e7e", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/dashboard/details?type=${cardType} (app/portale-clienti/components/DashboardCardModal.tsx:107)"}, "properties": {"repobilityId": "60546c05e53f2b56", "scanner": "scanner-primary", "fingerprint": "f33e1465817a3e7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d9aeef30a7814c3", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/profile (app/portale-clienti/profilo/page.tsx:56)"}, "properties": {"repobilityId": "f1391e18e3580e1b", "scanner": "scanner-primary", "fingerprint": "2d9aeef30a7814c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd1de22fbb767d0a", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/orders?${params.toString()} (app/portale-clienti/ordini/page.tsx:86)"}, "properties": {"repobilityId": "9ce5f746a7e5ba46", "scanner": "scanner-primary", "fingerprint": "dd1de22fbb767d0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b0ba023d02636b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/orders/${orderId} (app/portale-clienti/ordini/[id]/page.tsx:52)"}, "properties": {"repobilityId": "142912f4558233e0", "scanner": "scanner-primary", "fingerprint": "4b0ba023d02636b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b938aa1dd8cd72f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/ordini/nuovo/page.tsx:62)"}, "properties": {"repobilityId": "1f20df29ff686b14", "scanner": "scanner-primary", "fingerprint": "b938aa1dd8cd72f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bc2cb958926265a", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/payment-terms (app/portale-clienti/ordini/nuovo/page.tsx:81)"}, "properties": {"repobilityId": "8c7d6b45cfb83af1", "scanner": "scanner-primary", "fingerprint": "6bc2cb958926265a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-286a5298c6d0a5e6", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/checkout (app/portale-clienti/ordini/nuovo/page.tsx:134)"}, "properties": {"repobilityId": "98d6dbfb92474cf1", "scanner": "scanner-primary", "fingerprint": "286a5298c6d0a5e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f0744053c0e572f", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/cart (app/portale-clienti/carrello/page.tsx:60)"}, "properties": {"repobilityId": "271b61dd906a6a85", "scanner": "scanner-primary", "fingerprint": "7f0744053c0e572f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7efc9e1b64c87f88", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart/sync-images (app/portale-clienti/carrello/page.tsx:114)"}, "properties": {"repobilityId": "720c3c64222eb686", "scanner": "scanner-primary", "fingerprint": "7efc9e1b64c87f88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e0c0fcd1d8e297a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:161)"}, "properties": {"repobilityId": "1db732839535a26c", "scanner": "scanner-primary", "fingerprint": "7e0c0fcd1d8e297a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bbc56954e2e5da5a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/portale-clienti/cart/items/${itemId} (app/portale-clienti/carrello/page.tsx:202)"}, "properties": {"repobilityId": "d85fa70986cef1c1", "scanner": "scanner-primary", "fingerprint": "bbc56954e2e5da5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36bdff7d0b32f4b6", "level": "error", "message": {"text": "Dangling fetch: POST /api/portale-clienti/cart/checkout (app/portale-clienti/carrello/page.tsx:231)"}, "properties": {"repobilityId": "c46ced85e9490c1d", "scanner": "scanner-primary", "fingerprint": "36bdff7d0b32f4b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2d8199c5d029083", "level": "error", "message": {"text": "Dangling fetch: GET /api/menu-pdf/restaurant-info (app/menu-pdf-generator/page.tsx:42)"}, "properties": {"repobilityId": "00acd5236940e391", "scanner": "scanner-primary", "fingerprint": "c2d8199c5d029083", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-59fba3bc7350896b", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-menu (app/menu-pdf-generator/page.tsx:153)"}, "properties": {"repobilityId": "a1e17891632cefac", "scanner": "scanner-primary", "fingerprint": "59fba3bc7350896b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0da619be38bbd06", "level": "error", "message": {"text": "Dangling fetch: POST /api/gemini/generate-menu-pdf (app/menu-pdf-generator/page.tsx:190)"}, "properties": {"repobilityId": "560b5ec00abc85fe", "scanner": "scanner-primary", "fingerprint": "f0da619be38bbd06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba881b6199026de8", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:52)"}, "properties": {"repobilityId": "8d4d0515d48190cc", "scanner": "scanner-primary", "fingerprint": "ba881b6199026de8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-063673724ee9bdeb", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-lapa/products (app/catalogo-lapa/page.tsx:91)"}, "properties": {"repobilityId": "3d3dc5dce37aaf8f", "scanner": "scanner-primary", "fingerprint": "063673724ee9bdeb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-303018b2990adc80", "level": "error", "message": {"text": "Dangling fetch: GET /api/food-news (app/food-news/page.tsx:38)"}, "properties": {"repobilityId": "c3098d40f48202a9", "scanner": "scanner-primary", "fingerprint": "303018b2990adc80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-532a961159f9b39b", "level": "error", "message": {"text": "Dangling fetch: POST /api/food-news/generate (app/food-news/page.tsx:59)"}, "properties": {"repobilityId": "f13789490cf60945", "scanner": "scanner-primary", "fingerprint": "532a961159f9b39b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49f4ce450e249c2e", "level": "error", "message": {"text": "Dangling fetch: POST /api/avatar-generator/generate-video (app/_avatar-generator-disabled/page.tsx:66)"}, "properties": {"repobilityId": "735299f84801804f", "scanner": "scanner-primary", "fingerprint": "49f4ce450e249c2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ed146db4c9862d3", "level": "error", "message": {"text": "Dangling fetch: GET /api/avatar-generator/generate-video?jobId=${jobId} (app/_avatar-generator-disabled/page.tsx:87)"}, "properties": {"repobilityId": "975e62fa3eed6045", "scanner": "scanner-primary", "fingerprint": "9ed146db4c9862d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e059c28659c883e2", "level": "error", "message": {"text": "Dangling fetch: POST /api/registro-cassaforte/recognize-banknote (app/registro-cassaforte/page.tsx:240)"}, "properties": {"repobilityId": "35b2315a7ce3c28f", "scanner": "scanner-primary", "fingerprint": "e059c28659c883e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4fffe775d81429b7", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:83)"}, "properties": {"repobilityId": "1676e2c3134b3107", "scanner": "scanner-primary", "fingerprint": "4fffe775d81429b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f19dea5870985aa3", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:161)"}, "properties": {"repobilityId": "2dcf13a22381049b", "scanner": "scanner-primary", "fingerprint": "f19dea5870985aa3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4813834085f9306", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/admin/page.tsx:191)"}, "properties": {"repobilityId": "f82bc7b3c334a96d", "scanner": "scanner-primary", "fingerprint": "f4813834085f9306", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-940d4b9a156c1607", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/admin/page.tsx:198)"}, "properties": {"repobilityId": "e73d9be83b4a548a", "scanner": "scanner-primary", "fingerprint": "940d4b9a156c1607", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ef02af0d6c9de92", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/registro-cassaforte/face-embeddings?employee_id=${employeeId} (app/registro-cassaforte/admin/page.tsx:218)"}, "properties": {"repobilityId": "f3c24bd0185c0155", "scanner": "scanner-primary", "fingerprint": "5ef02af0d6c9de92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe59a9421a2e3d62", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/face-embeddings (app/registro-cassaforte/prelievo/page.tsx:66)"}, "properties": {"repobilityId": "3c57226dd0818ba2", "scanner": "scanner-primary", "fingerprint": "fe59a9421a2e3d62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b65609553514e46", "level": "error", "message": {"text": "Dangling fetch: GET /api/registro-cassaforte/employees (app/registro-cassaforte/prelievo/page.tsx:142)"}, "properties": {"repobilityId": "9ba298ac97f3206b", "scanner": "scanner-primary", "fingerprint": "1b65609553514e46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37bce846d316059f", "level": "error", "message": {"text": "Dangling fetch: POST /api/registro-cassaforte/withdraw (app/registro-cassaforte/prelievo/page.tsx:178)"}, "properties": {"repobilityId": "149f0109e6556e09", "scanner": "scanner-primary", "fingerprint": "37bce846d316059f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89b8eaeed8686d83", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/pre-order-products (app/prodotti-preordine/page.tsx:105)"}, "properties": {"repobilityId": "0ac85f561f61a1c6", "scanner": "scanner-primary", "fingerprint": "89b8eaeed8686d83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65cef1f51e06a7f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:145)"}, "properties": {"repobilityId": "605beedbe3ffccc9", "scanner": "scanner-primary", "fingerprint": "65cef1f51e06a7f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd468613dddfbed8", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering-v2/suppliers (app/prodotti-preordine/page.tsx:177)"}, "properties": {"repobilityId": "8b8de283d1a89954", "scanner": "scanner-primary", "fingerprint": "bd468613dddfbed8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-039ab1ce5387ec10", "level": "error", "message": {"text": "Dangling fetch: GET /api/clienti/search?q=${encodeURIComponent(term)}&userId=7 (app/prodotti-preordine/page.tsx:240)"}, "properties": {"repobilityId": "cb33f13c13a35e57", "scanner": "scanner-primary", "fingerprint": "039ab1ce5387ec10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5220e9f04dbf478", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/toggle-preorder-tag (app/prodotti-preordine/page.tsx:293)"}, "properties": {"repobilityId": "1440a006b7a14204", "scanner": "scanner-primary", "fingerprint": "d5220e9f04dbf478", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3efc8e236e511f0", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/assign-preorder-customers (app/prodotti-preordine/page.tsx:402)"}, "properties": {"repobilityId": "71d219c5a65ad3ec", "scanner": "scanner-primary", "fingerprint": "b3efc8e236e511f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a25d8e83eda14974", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:524)"}, "properties": {"repobilityId": "0d30942f23718baa", "scanner": "scanner-primary", "fingerprint": "a25d8e83eda14974", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e0c56999645b06c", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering-v2/create-all-preorders (app/prodotti-preordine/page.tsx:646)"}, "properties": {"repobilityId": "0f608292c38335bb", "scanner": "scanner-primary", "fingerprint": "5e0c56999645b06c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90ce6351c37c232c", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabSkills.tsx:12)"}, "properties": {"repobilityId": "5167a613c4dae710", "scanner": "scanner-primary", "fingerprint": "90ce6351c37c232c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-785d930838a9c538", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills?skill=${encodeURIComponent(name)} (app/agenti-whatsapp/components/TabSkills.tsx:22)"}, "properties": {"repobilityId": "b104dc44e012bdc1", "scanner": "scanner-primary", "fingerprint": "785d930838a9c538", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a34631bef6c0b4ca", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/status (app/agenti-whatsapp/components/TabStato.tsx:21)"}, "properties": {"repobilityId": "0fc3adba962b0618", "scanner": "scanner-primary", "fingerprint": "a34631bef6c0b4ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3de84bec3459e91e", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/AgentCard.tsx:60)"}, "properties": {"repobilityId": "12568f68f79b9ec1", "scanner": "scanner-primary", "fingerprint": "3de84bec3459e91e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fcc1b31c963e2ca5", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/followups (app/agenti-whatsapp/components/TabFollowup.tsx:28)"}, "properties": {"repobilityId": "365a5db30aeaf73a", "scanner": "scanner-primary", "fingerprint": "fcc1b31c963e2ca5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37950b193b6e02eb", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/skills (app/agenti-whatsapp/components/TabMappa.tsx:45)"}, "properties": {"repobilityId": "1e97cb816fdb10ba", "scanner": "scanner-primary", "fingerprint": "37950b193b6e02eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a69ca74bb332fbf5", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMappa.tsx:46)"}, "properties": {"repobilityId": "0c10d39ea7b2f0cc", "scanner": "scanner-primary", "fingerprint": "a69ca74bb332fbf5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-569761bb5f44528d", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/config (app/agenti-whatsapp/components/TabSettaggi.tsx:33)"}, "properties": {"repobilityId": "9bb1a55f21a948cd", "scanner": "scanner-primary", "fingerprint": "569761bb5f44528d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6e9114f6b44befe", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:43)"}, "properties": {"repobilityId": "5cbcdcc63364eb8d", "scanner": "scanner-primary", "fingerprint": "b6e9114f6b44befe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4270263d4c4ec223", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/qr (app/agenti-whatsapp/components/TabSettaggi.tsx:54)"}, "properties": {"repobilityId": "dc73295980def977", "scanner": "scanner-primary", "fingerprint": "4270263d4c4ec223", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-513dafac9dd8d4a8", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/log?lines=100 (app/agenti-whatsapp/components/TabLog.tsx:15)"}, "properties": {"repobilityId": "9189afad706401ef", "scanner": "scanner-primary", "fingerprint": "513dafac9dd8d4a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2ee0ebdb1c9120e", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/stats (app/agenti-whatsapp/components/TabStatistiche.tsx:33)"}, "properties": {"repobilityId": "c84c7451bbd5ee84", "scanner": "scanner-primary", "fingerprint": "c2ee0ebdb1c9120e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df58bd9fe9c415b8", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/memory (app/agenti-whatsapp/components/TabMemoria.tsx:13)"}, "properties": {"repobilityId": "78adb3c5171efdee", "scanner": "scanner-primary", "fingerprint": "df58bd9fe9c415b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a250b8cd007102f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?limit=50 (app/agenti-whatsapp/components/TabConversazioni.tsx:69)"}, "properties": {"repobilityId": "40480c939200fb5d", "scanner": "scanner-primary", "fingerprint": "a250b8cd007102f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc7986b3b83b3f80", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/messages?chat=${encodeURIComponent(chatId)}&limit=100 (app/agenti-whatsapp/components/TabConversazioni.tsx:78)"}, "properties": {"repobilityId": "ca3d0e4b997df7dc", "scanner": "scanner-primary", "fingerprint": "dc7986b3b83b3f80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c3c37b7fdbc447f", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/components/TabErrori.tsx:30)"}, "properties": {"repobilityId": "512481b727476479", "scanner": "scanner-primary", "fingerprint": "9c3c37b7fdbc447f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-59a431ea77bd627c", "level": "error", "message": {"text": "Dangling fetch: GET /api/agenti-whatsapp/${slug}/errors?lines=2000 (app/agenti-whatsapp/alerts/page.tsx:26)"}, "properties": {"repobilityId": "8547d9c50e04c185", "scanner": "scanner-primary", "fingerprint": "59a431ea77bd627c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43b1f078a0d0c47c", "level": "error", "message": {"text": "Dangling fetch: POST /api/jetson/ocr (app/jetson-upload/page.tsx:43)"}, "properties": {"repobilityId": "763d71455ecbadec", "scanner": "scanner-primary", "fingerprint": "43b1f078a0d0c47c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1571b7e2c6038241", "level": "error", "message": {"text": "Dangling fetch: GET /api/scadenze/counts?warehouseId=${warehouseId} (app/scadenze/page.tsx:127)"}, "properties": {"repobilityId": "72c3c4593274f0dc", "scanner": "scanner-primary", "fingerprint": "1571b7e2c6038241", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a74ae66da867830", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (app/scadenze/page.tsx:146)"}, "properties": {"repobilityId": "27720143d387d955", "scanner": "scanner-primary", "fingerprint": "1a74ae66da867830", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef63fa4206c8479c", "level": "error", "message": {"text": "Dangling fetch: GET /api/offer-products (app/scadenze/page.tsx:147)"}, "properties": {"repobilityId": "938e0f02fd8ff4db", "scanner": "scanner-primary", "fingerprint": "ef63fa4206c8479c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1bc157cd403b70e4", "level": "error", "message": {"text": "Dangling fetch: GET /api/verification-requests (app/scadenze/page.tsx:148)"}, "properties": {"repobilityId": "f83ff4c0356ee28d", "scanner": "scanner-primary", "fingerprint": "1bc157cd403b70e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64296dec9673fa71", "level": "error", "message": {"text": "Dangling fetch: GET /api/scadenze/products?urgency=${urgency}&days=7&warehouseId=${selectedWarehouse} (app/scadenze/page.tsx:184)"}, "properties": {"repobilityId": "9845d8c1a05d3d74", "scanner": "scanner-primary", "fingerprint": "64296dec9673fa71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c81828c1f4ad3d1", "level": "error", "message": {"text": "Dangling fetch: GET /api/scadenze/products?urgency=${selectedUrgency}&days=7&warehouseId=${warehouseId} (app/scadenze/page.tsx:220)"}, "properties": {"repobilityId": "98f649eddc40b8d3", "scanner": "scanner-primary", "fingerprint": "0c81828c1f4ad3d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04533f4fe6766453", "level": "error", "message": {"text": "Dangling fetch: GET /api/scadenze/product-prices?productId=${productId} (app/scadenze/page.tsx:272)"}, "properties": {"repobilityId": "ad91217248a0d10f", "scanner": "scanner-primary", "fingerprint": "04533f4fe6766453", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bceaa188efe30f0e", "level": "error", "message": {"text": "Dangling fetch: POST /api/verification-requests (app/scadenze/page.tsx:301)"}, "properties": {"repobilityId": "7c609c129be2438c", "scanner": "scanner-primary", "fingerprint": "bceaa188efe30f0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db186f0b12a2d0c7", "level": "error", "message": {"text": "Dangling fetch: POST /api/urgent-products (app/scadenze/page.tsx:360)"}, "properties": {"repobilityId": "adba54ebd0b7acbe", "scanner": "scanner-primary", "fingerprint": "db186f0b12a2d0c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78a8582e650a3761", "level": "error", "message": {"text": "Dangling fetch: POST /api/offer-products (app/scadenze/page.tsx:418)"}, "properties": {"repobilityId": "e2463955b316b14a", "scanner": "scanner-primary", "fingerprint": "78a8582e650a3761", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e3351c6d3a31eec", "level": "error", "message": {"text": "Dangling fetch: POST /api/import-ubs/parse (app/import-movimenti-ubs/page.tsx:99)"}, "properties": {"repobilityId": "0d94960676fe4681", "scanner": "scanner-primary", "fingerprint": "8e3351c6d3a31eec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-69a4cc16fa38e5e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/import-ubs/import (app/import-movimenti-ubs/page.tsx:168)"}, "properties": {"repobilityId": "bc3386590b2f3d7a", "scanner": "scanner-primary", "fingerprint": "69a4cc16fa38e5e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96717ba95040ce86", "level": "error", "message": {"text": "Dangling fetch: POST /api/stella/tasks (app/stella-setup/page.tsx:25)"}, "properties": {"repobilityId": "cefc469907cc85a1", "scanner": "scanner-primary", "fingerprint": "96717ba95040ce86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5dff9e55d6b9ff7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/stella/tasks?action_id=${actionId} (app/stella-setup/page.tsx:52)"}, "properties": {"repobilityId": "c829a1c98ff6e6a7", "scanner": "scanner-primary", "fingerprint": "5dff9e55d6b9ff7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3daeb8db935601e0", "level": "error", "message": {"text": "Dangling fetch: GET /api/jetson/ocr (app/jetson-dashboard/page.tsx:57)"}, "properties": {"repobilityId": "8c5cc3660deb3e59", "scanner": "scanner-primary", "fingerprint": "3daeb8db935601e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64a0903dde465bac", "level": "error", "message": {"text": "Dangling fetch: GET /api/gestione-arrivi/list-today?company_id=${selectedCompany} (app/gestione-arrivi/page.tsx:64)"}, "properties": {"repobilityId": "38ea0052811f5812", "scanner": "scanner-primary", "fingerprint": "64a0903dde465bac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e29827e40f425231", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-arrivi/read-documents (app/gestione-arrivi/page.tsx:108)"}, "properties": {"repobilityId": "e7809a5db366289c", "scanner": "scanner-primary", "fingerprint": "e29827e40f425231", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1ba2dcd64ce3a6c", "level": "error", "message": {"text": "Dangling fetch: POST /api/gestione-arrivi/process-arrival (app/gestione-arrivi/page.tsx:167)"}, "properties": {"repobilityId": "d233e13fee618bed", "scanner": "scanner-primary", "fingerprint": "b1ba2dcd64ce3a6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1343d816056bf159", "level": "error", "message": {"text": "Dangling fetch: POST /api/test-web-search (app/test-web-search/page.tsx:18)"}, "properties": {"repobilityId": "02d9d0d916adc7b9", "scanner": "scanner-primary", "fingerprint": "1343d816056bf159", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7cd4cc3b1c481b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/chat/page.tsx:291)"}, "properties": {"repobilityId": "7f0c6aadf50dd9a8", "scanner": "scanner-primary", "fingerprint": "f7cd4cc3b1c481b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b8a0ae3e7e6de7ac", "level": "error", "message": {"text": "Dangling fetch: POST /api/wine/sommelier (app/w/[slug]/[tavolo]/chat/page.tsx:417)"}, "properties": {"repobilityId": "c6207c170f79b498", "scanner": "scanner-primary", "fingerprint": "b8a0ae3e7e6de7ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f47a86e401cba06f", "level": "error", "message": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/confirm/page.tsx:41)"}, "properties": {"repobilityId": "6c2dd9da797ed42d", "scanner": "scanner-primary", "fingerprint": "f47a86e401cba06f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-504da89f3842faaa", "level": "error", "message": {"text": "Dangling fetch: GET /api/wine/catalog?slug=${encodeURIComponent(params.slug)} (app/w/[slug]/[tavolo]/wines/page.tsx:82)"}, "properties": {"repobilityId": "6e6606c22307e85d", "scanner": "scanner-primary", "fingerprint": "504da89f3842faaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6954a0f12efadac2", "level": "error", "message": {"text": "Dangling fetch: GET /api/urgent-products (app/maestro-ai/page.tsx:139)"}, "properties": {"repobilityId": "ee6dc71608ee6ec8", "scanner": "scanner-primary", "fingerprint": "6954a0f12efadac2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc156f3b6ef17e40", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/analytics/orders?${params} (app/maestro-ai/analytics/orders/page.tsx:98)"}, "properties": {"repobilityId": "820aef999c91a610", "scanner": "scanner-primary", "fingerprint": "dc156f3b6ef17e40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1065f0f99d168641", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/analytics/customers?${params} (app/maestro-ai/analytics/customers/page.tsx:89)"}, "properties": {"repobilityId": "945967c8fea91c46", "scanner": "scanner-primary", "fingerprint": "1065f0f99d168641", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65b448b62beafda7", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/analytics/avg-order-value?${params} (app/maestro-ai/analytics/avg-order-value/page.tsx:105)"}, "properties": {"repobilityId": "413d19d913bf0b81", "scanner": "scanner-primary", "fingerprint": "65b448b62beafda7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e70ff81b92635f2", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/customers/${customerId} (app/maestro-ai/customers/[id]/page.tsx:50)"}, "properties": {"repobilityId": "07a78050cada4308", "scanner": "scanner-primary", "fingerprint": "6e70ff81b92635f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9e979d28c04e858", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/daily-plan?${params.toString()} (app/maestro-ai/daily-plan/page.tsx:161)"}, "properties": {"repobilityId": "0a9e4925e200c762", "scanner": "scanner-primary", "fingerprint": "b9e979d28c04e858", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-465f756eff2381ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/wine/sommelier-personality?slug=${encodeURIComponent(DEMO_SLUG)} (app/lapa-wine/sommelier/page.tsx:36)"}, "properties": {"repobilityId": "19dd3767b475a3c0", "scanner": "scanner-primary", "fingerprint": "465f756eff2381ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4518694d499d5d4", "level": "error", "message": {"text": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:65)"}, "properties": {"repobilityId": "63ef21998ce5919b", "scanner": "scanner-primary", "fingerprint": "e4518694d499d5d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b63f206db3fa6837", "level": "error", "message": {"text": "Dangling fetch: POST /api/wine/sommelier-personality (app/lapa-wine/sommelier/page.tsx:88)"}, "properties": {"repobilityId": "ef46a00d2bf71309", "scanner": "scanner-primary", "fingerprint": "b63f206db3fa6837", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa4f73e0b027caad", "level": "error", "message": {"text": "Dangling fetch: POST /api/ubicazioni/buffer-count (app/ubicazioni/page.tsx:129)"}, "properties": {"repobilityId": "03cf96cbeaca1822", "scanner": "scanner-primary", "fingerprint": "aa4f73e0b027caad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5d404470b7343d55", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:180)"}, "properties": {"repobilityId": "c31e93c8959220e4", "scanner": "scanner-primary", "fingerprint": "5d404470b7343d55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1bade2cbb92a9c1", "level": "error", "message": {"text": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:225)"}, "properties": {"repobilityId": "5547bace23fa5c44", "scanner": "scanner-primary", "fingerprint": "b1bade2cbb92a9c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f006e149a2873e70", "level": "error", "message": {"text": "Dangling fetch: POST /api/ubicazioni/buffer-products (app/ubicazioni/page.tsx:270)"}, "properties": {"repobilityId": "6870949c3c6e51cb", "scanner": "scanner-primary", "fingerprint": "f006e149a2873e70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bdf3eb4c7e26443b", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/location (app/ubicazioni/page.tsx:326)"}, "properties": {"repobilityId": "7fb13789f0cb364c", "scanner": "scanner-primary", "fingerprint": "bdf3eb4c7e26443b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a66676dceb1f72e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/ubicazioni/check-product (app/ubicazioni/page.tsx:351)"}, "properties": {"repobilityId": "8ec748a14422be01", "scanner": "scanner-primary", "fingerprint": "a66676dceb1f72e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d77d5a34d025664b", "level": "error", "message": {"text": "Dangling fetch: POST /api/ubicazioni/transfer (app/ubicazioni/page.tsx:402)"}, "properties": {"repobilityId": "b8543ac24b49e886", "scanner": "scanner-primary", "fingerprint": "d77d5a34d025664b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d467627eb363aac6", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (app/my-reviews/page.tsx:75)"}, "properties": {"repobilityId": "ac9360b3a02b7aaa", "scanner": "scanner-primary", "fingerprint": "d467627eb363aac6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4512b370acdc8a2e", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/my-business (app/my-reviews/page.tsx:86)"}, "properties": {"repobilityId": "febab337427a3437", "scanner": "scanner-primary", "fingerprint": "4512b370acdc8a2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25e39670e7b74293", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/reviews?businessId=${businessId} (app/my-reviews/page.tsx:107)"}, "properties": {"repobilityId": "05fc3bd69a74f83e", "scanner": "scanner-primary", "fingerprint": "25e39670e7b74293", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60ad842374426549", "level": "error", "message": {"text": "Dangling fetch: GET /api/review-manager/stats?businessId=${businessId} (app/my-reviews/page.tsx:115)"}, "properties": {"repobilityId": "1ebeab21fff63748", "scanner": "scanner-primary", "fingerprint": "60ad842374426549", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0b76cc84e40dfe5", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/sync (app/my-reviews/page.tsx:126)"}, "properties": {"repobilityId": "22d45026a5baa036", "scanner": "scanner-primary", "fingerprint": "f0b76cc84e40dfe5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8561bb71459ce04a", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/generate (app/my-reviews/page.tsx:147)"}, "properties": {"repobilityId": "0a37d48022a95693", "scanner": "scanner-primary", "fingerprint": "8561bb71459ce04a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa3323c399c4b5d8", "level": "error", "message": {"text": "Dangling fetch: POST /api/review-manager/reviews/${reviewId}/publish (app/my-reviews/page.tsx:168)"}, "properties": {"repobilityId": "c05565b9f248598b", "scanner": "scanner-primary", "fingerprint": "fa3323c399c4b5d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84c9eabf3b971e2c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/review-manager/reviews/${reviewId} (app/my-reviews/page.tsx:194)"}, "properties": {"repobilityId": "ab7d0be27d799976", "scanner": "scanner-primary", "fingerprint": "84c9eabf3b971e2c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a7dd28ccaff5e8e", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(email)} (app/time-attendance/page.tsx:329)"}, "properties": {"repobilityId": "ca2881f0196245f8", "scanner": "scanner-primary", "fingerprint": "6a7dd28ccaff5e8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26637c7643528f6a", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/clock?contact_id=${contactId} (app/time-attendance/page.tsx:355)"}, "properties": {"repobilityId": "7499c91f52d5a2aa", "scanner": "scanner-primary", "fingerprint": "26637c7643528f6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba9c6393ad409c04", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId} (app/time-attendance/page.tsx:369)"}, "properties": {"repobilityId": "126c07332a313125", "scanner": "scanner-primary", "fingerprint": "ba9c6393ad409c04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d50ffe84877e7b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/export?contact_id=${contactId}&company_id=${company?.id || 0}&start_date=${date}&end_date=${date}&format=json (app/time-attendance/page.tsx:396)"}, "properties": {"repobilityId": "69a084e9c0e99775", "scanner": "scanner-primary", "fingerprint": "7d50ffe84877e7b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b6b327cfda691e9", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/employee-stats?contact_id=${employee.contact_id}&company_id=${contact?.id || company?.id || 0} (app/time-attendance/page.tsx:431)"}, "properties": {"repobilityId": "543bef81472dbe68", "scanner": "scanner-primary", "fingerprint": "9b6b327cfda691e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc7113ebf65b5729", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/consent?contact_id=${contactId} (app/time-attendance/page.tsx:479)"}, "properties": {"repobilityId": "b4410e7543c2a969", "scanner": "scanner-primary", "fingerprint": "dc7113ebf65b5729", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f5c66381f3f3cd3", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/consent (app/time-attendance/page.tsx:501)"}, "properties": {"repobilityId": "23dc584026c82a28", "scanner": "scanner-primary", "fingerprint": "9f5c66381f3f3cd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82709e091e4f2a28", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:551)"}, "properties": {"repobilityId": "73b5b48438a1d05c", "scanner": "scanner-primary", "fingerprint": "82709e091e4f2a28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-720d3b9f63646360", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/clock (app/time-attendance/page.tsx:600)"}, "properties": {"repobilityId": "9b046dded74c56f8", "scanner": "scanner-primary", "fingerprint": "720d3b9f63646360", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-866abb151c29749f", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/contact?email=${encodeURIComponent(user!.email)} (app/time-attendance/admin/page.tsx:143)"}, "properties": {"repobilityId": "786d338ac7e42c9b", "scanner": "scanner-primary", "fingerprint": "866abb151c29749f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58d2bf870e9eb1b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/dashboard?company_id=${companyId}&date=${selectedDate} (app/time-attendance/admin/page.tsx:172)"}, "properties": {"repobilityId": "12cbd4d90c6cf1cc", "scanner": "scanner-primary", "fingerprint": "58d2bf870e9eb1b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66baace467d69fde", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/migrate?secret=lapa2024migrate (app/time-attendance/admin/page.tsx:198)"}, "properties": {"repobilityId": "e18810c6f38aad97", "scanner": "scanner-primary", "fingerprint": "66baace467d69fde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06295837218a5d39", "level": "error", "message": {"text": "Dangling fetch: GET /api/time-attendance/locations?company_id=${companyId} (app/time-attendance/admin/page.tsx:219)"}, "properties": {"repobilityId": "1321994e91dc5332", "scanner": "scanner-primary", "fingerprint": "06295837218a5d39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a100745f9b3bc040", "level": "error", "message": {"text": "Dangling fetch: POST /api/time-attendance/locations (app/time-attendance/admin/page.tsx:266)"}, "properties": {"repobilityId": "19263247a9e64cb6", "scanner": "scanner-primary", "fingerprint": "a100745f9b3bc040", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-599c0e2ec9e2fd20", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/time-attendance/locations?id=${locationId} (app/time-attendance/admin/page.tsx:352)"}, "properties": {"repobilityId": "5add5e6d8a4b5a35", "scanner": "scanner-primary", "fingerprint": "599c0e2ec9e2fd20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51a6ba63f633e499", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-creator/parse-invoice (app/product-creator/page.tsx:65)"}, "properties": {"repobilityId": "60e2615aeab30f5f", "scanner": "scanner-primary", "fingerprint": "51a6ba63f633e499", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4228f6efe86065f4", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-creator/enrich-product (app/product-creator/select-products/page.tsx:178)"}, "properties": {"repobilityId": "c476b5f9ac3489ea", "scanner": "scanner-primary", "fingerprint": "4228f6efe86065f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b67e4591a7b1499", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-creator/create-products (app/product-creator/select-products/page.tsx:257)"}, "properties": {"repobilityId": "4fb70085838684c8", "scanner": "scanner-primary", "fingerprint": "9b67e4591a7b1499", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08ae3deac49394ca", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-foto/upload (app/catalogo-foto/page.tsx:181)"}, "properties": {"repobilityId": "ae6f14ac284eb978", "scanner": "scanner-primary", "fingerprint": "08ae3deac49394ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41245109956d1b2f", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-foto/jobs (app/catalogo-foto/page.tsx:190)"}, "properties": {"repobilityId": "8fe0d56a10c69b62", "scanner": "scanner-primary", "fingerprint": "41245109956d1b2f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dceefbe95758a74d", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-foto/jobs?limit=50 (app/catalogo-foto/page.tsx:209)"}, "properties": {"repobilityId": "4da3b53a19138451", "scanner": "scanner-primary", "fingerprint": "dceefbe95758a74d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2403a0788c979845", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:241)"}, "properties": {"repobilityId": "8c98b0aa7267a2b9", "scanner": "scanner-primary", "fingerprint": "2403a0788c979845", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67c4cee2c99f77b0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/catalogo-foto/jobs/${jobId} (app/catalogo-foto/page.tsx:262)"}, "properties": {"repobilityId": "9a255f14aab63376", "scanner": "scanner-primary", "fingerprint": "67c4cee2c99f77b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5293f540c401a13a", "level": "error", "message": {"text": "Dangling fetch: POST /api/catalogo-foto/location-products (app/catalogo-foto/page.tsx:281)"}, "properties": {"repobilityId": "c55f993d7f0be1b7", "scanner": "scanner-primary", "fingerprint": "5293f540c401a13a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4aae9c3e7cbb5d90", "level": "error", "message": {"text": "Dangling fetch: GET /api/catalogo-foto/location-map (app/catalogo-foto/page.tsx:307)"}, "properties": {"repobilityId": "2c889699fb655bfb", "scanner": "scanner-primary", "fingerprint": "4aae9c3e7cbb5d90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c13b30cc5562cb20", "level": "error", "message": {"text": "Dangling fetch: GET /api/smart-ordering/data (app/ordini-smart/page.tsx:112)"}, "properties": {"repobilityId": "fe248a5966c3cd65", "scanner": "scanner-primary", "fingerprint": "c13b30cc5562cb20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e0f1451a99ef410", "level": "error", "message": {"text": "Dangling fetch: POST /api/smart-ordering/data (app/ordini-smart/page.tsx:135)"}, "properties": {"repobilityId": "d0e569a6c5846aa2", "scanner": "scanner-primary", "fingerprint": "4e0f1451a99ef410", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2910b49e43672f2f", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/facebook.ts:197)"}, "properties": {"repobilityId": "faf5b860106f5901", "scanner": "scanner-primary", "fingerprint": "2910b49e43672f2f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a53160f43c70a588", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/ (lib/review-manager/platforms/tiktok.ts:48)"}, "properties": {"repobilityId": "82706cd0423a420c", "scanner": "scanner-primary", "fingerprint": "a53160f43c70a588", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef0997281ccb682f", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/list/ (lib/review-manager/platforms/tiktok.ts:80)"}, "properties": {"repobilityId": "f63942be65e4ed08", "scanner": "scanner-primary", "fingerprint": "ef0997281ccb682f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3428dbd66a3b1d9", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/comment/reply/ (lib/review-manager/platforms/tiktok.ts:148)"}, "properties": {"repobilityId": "b1c26944827b3781", "scanner": "scanner-primary", "fingerprint": "b3428dbd66a3b1d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c92cd7cd9ac746b", "level": "error", "message": {"text": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/ (lib/review-manager/platforms/tiktok.ts:185)"}, "properties": {"repobilityId": "fdc9c4a5e5eca538", "scanner": "scanner-primary", "fingerprint": "7c92cd7cd9ac746b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23106cf26cc22571", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:244)"}, "properties": {"repobilityId": "5f93433e6276d922", "scanner": "scanner-primary", "fingerprint": "23106cf26cc22571", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04a4362fec8c31b8", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (lib/review-manager/platforms/tiktok.ts:285)"}, "properties": {"repobilityId": "b8d8d91f9286e5d0", "scanner": "scanner-primary", "fingerprint": "04a4362fec8c31b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6048b4c77de98aa6", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v18.0/oauth/access_token (lib/review-manager/platforms/instagram.ts:253)"}, "properties": {"repobilityId": "5bf33297930e4e7e", "scanner": "scanner-primary", "fingerprint": "6048b4c77de98aa6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd62a8925aed85cb", "level": "error", "message": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpilot.ts:225)"}, "properties": {"repobilityId": "35c428290df9bcc9", "scanner": "scanner-primary", "fingerprint": "dd62a8925aed85cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a4c2a5929f3f9211", "level": "error", "message": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/search?name=${encodeURIComponent(query)} (lib/review-manager/platforms/trustpilot.ts:256)"}, "properties": {"repobilityId": "d16b401744b13d8e", "scanner": "scanner-primary", "fingerprint": "a4c2a5929f3f9211", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c5130735aa443f4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken (lib/review-manager/platforms/trustpilot.ts:310)"}, "properties": {"repobilityId": "e3a2b4a72d707490", "scanner": "scanner-primary", "fingerprint": "7c5130735aa443f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-013a145e18e420c0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh (lib/review-manager/platforms/trustpilot.ts:350)"}, "properties": {"repobilityId": "2b3319d0cce331f0", "scanner": "scanner-primary", "fingerprint": "013a145e18e420c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a458938d35c87938", "level": "error", "message": {"text": "Dangling fetch: GET https://api.trustpilot.com/v1/business-units/${businessUnitId} (lib/review-manager/platforms/trustpilot.ts:392)"}, "properties": {"repobilityId": "63c684d12dec7a21", "scanner": "scanner-primary", "fingerprint": "a458938d35c87938", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1aee39800088248b", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:168)"}, "properties": {"repobilityId": "4f920d86b67d2a7a", "scanner": "scanner-primary", "fingerprint": "1aee39800088248b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9300377f1edac229", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (lib/review-manager/platforms/google.ts:219)"}, "properties": {"repobilityId": "7a3a6ad7560abc52", "scanner": "scanner-primary", "fingerprint": "9300377f1edac229", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36a8b8bc7376d965", "level": "error", "message": {"text": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts/${accountId}/locations (lib/review-manager/platforms/google.ts:254)"}, "properties": {"repobilityId": "89d939ffa48dd4c6", "scanner": "scanner-primary", "fingerprint": "36a8b8bc7376d965", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b38a3fbc061aa84c", "level": "error", "message": {"text": "Dangling fetch: GET https://mybusiness.googleapis.com/v4/accounts (lib/review-manager/platforms/google.ts:282)"}, "properties": {"repobilityId": "0ac85095901e03b5", "scanner": "scanner-primary", "fingerprint": "b38a3fbc061aa84c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35517d017fc26634", "level": "error", "message": {"text": "Dangling fetch: GET /api/dashboard?period=${period} (lib/super-dashboard/hooks/useDashboardData.ts:92)"}, "properties": {"repobilityId": "c80f994534185cb0", "scanner": "scanner-primary", "fingerprint": "35517d017fc26634", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d05369885532463", "level": "error", "message": {"text": "Dangling fetch: POST /api/dashboard/refresh (lib/super-dashboard/hooks/useDashboardData.ts:155)"}, "properties": {"repobilityId": "7fb97ac3d5b75c0f", "scanner": "scanner-primary", "fingerprint": "8d05369885532463", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70bf10495481e082", "level": "error", "message": {"text": "Dangling fetch: GET /api/dashboard/export?format=${format} (lib/super-dashboard/hooks/useDashboardData.ts:187)"}, "properties": {"repobilityId": "a25534b7f14c67c9", "scanner": "scanner-primary", "fingerprint": "70bf10495481e082", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99bb98a6dbf21a66", "level": "error", "message": {"text": "Dangling fetch: GET /api/odoo/journals (lib/config/bank-journals.ts:84)"}, "properties": {"repobilityId": "b0ee993fadadc6a2", "scanner": "scanner-primary", "fingerprint": "99bb98a6dbf21a66", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9336faaf16a30416", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/location (lib/odoo/inventoryClient.ts:128)"}, "properties": {"repobilityId": "6796363180183d84", "scanner": "scanner-primary", "fingerprint": "9336faaf16a30416", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f39deb8510a3296", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/quants (lib/odoo/inventoryClient.ts:165)"}, "properties": {"repobilityId": "66540e3656800c88", "scanner": "scanner-primary", "fingerprint": "7f39deb8510a3296", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c4f0263ce20ccf5", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:196)"}, "properties": {"repobilityId": "60872edd56a1cb66", "scanner": "scanner-primary", "fingerprint": "8c4f0263ce20ccf5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5af79ba83b1cce6", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/products (lib/odoo/inventoryClient.ts:227)"}, "properties": {"repobilityId": "7812cd4581689f4c", "scanner": "scanner-primary", "fingerprint": "b5af79ba83b1cce6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4571bed95650c9d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/buffer-search (lib/odoo/inventoryClient.ts:258)"}, "properties": {"repobilityId": "715795884e664a34", "scanner": "scanner-primary", "fingerprint": "4571bed95650c9d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0fb438c321540adc", "level": "error", "message": {"text": "Dangling fetch: POST /api/inventory/transfer (lib/odoo/inventoryClient.ts:295)"}, "properties": {"repobilityId": "01e415fa71a8573d", "scanner": "scanner-primary", "fingerprint": "0fb438c321540adc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18b7c6f538d48f7c", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:175)"}, "properties": {"repobilityId": "dc9a05dccdddfda3", "scanner": "scanner-primary", "fingerprint": "18b7c6f538d48f7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-17234c2673eac000", "level": "error", "message": {"text": "Dangling fetch: GET /api/helpdesk?customerId=123 (lib/lapa-agents/agents/example-api-route.ts:196)"}, "properties": {"repobilityId": "b77e9bf12ffccd58", "scanner": "scanner-primary", "fingerprint": "17234c2673eac000", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7a6c330a7234990", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:206)"}, "properties": {"repobilityId": "d7050017eacd7afe", "scanner": "scanner-primary", "fingerprint": "c7a6c330a7234990", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-beac1f1ac43d24a1", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-api-route.ts:225)"}, "properties": {"repobilityId": "bf69793bb820ce4e", "scanner": "scanner-primary", "fingerprint": "beac1f1ac43d24a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92801256a4cc40c2", "level": "error", "message": {"text": "Dangling fetch: GET /api/helpdesk?customerId=${customerId} (lib/lapa-agents/agents/example-component.tsx:44)"}, "properties": {"repobilityId": "133da0c54ebacc29", "scanner": "scanner-primary", "fingerprint": "92801256a4cc40c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3a29d91c85b5d8f", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:60)"}, "properties": {"repobilityId": "922f00244d920c19", "scanner": "scanner-primary", "fingerprint": "c3a29d91c85b5d8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-943e0e4549e52ec5", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:303)"}, "properties": {"repobilityId": "b4b455051cefad83", "scanner": "scanner-primary", "fingerprint": "943e0e4549e52ec5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60748c392d367b5a", "level": "error", "message": {"text": "Dangling fetch: POST /api/helpdesk (lib/lapa-agents/agents/example-component.tsx:329)"}, "properties": {"repobilityId": "d6d3aae078aafcd4", "scanner": "scanner-primary", "fingerprint": "60748c392d367b5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94d00884b4d1cf7e", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/orders/${orderId}/pdf (lib/utils/download-pdf.ts:11)"}, "properties": {"repobilityId": "e23c59f3f7d7ec12", "scanner": "scanner-primary", "fingerprint": "94d00884b4d1cf7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ef215a4ebf4549f", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/deliveries/${deliveryId}/pdf (lib/utils/download-pdf.ts:47)"}, "properties": {"repobilityId": "de8bc5af12fb3531", "scanner": "scanner-primary", "fingerprint": "2ef215a4ebf4549f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d48c232069d11c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/portale-clienti/invoices/${invoiceId}/pdf (lib/utils/download-pdf.ts:82)"}, "properties": {"repobilityId": "a4cd2d33cefc06f2", "scanner": "scanner-primary", "fingerprint": "3d48c232069d11c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d92e9ceeca7f2003", "level": "error", "message": {"text": "Dangling fetch: GET /api/blog/posts (lib/utils/blogArticles.ts:8)"}, "properties": {"repobilityId": "1776a854ba126bca", "scanner": "scanner-primary", "fingerprint": "d92e9ceeca7f2003", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b21784aa2147081", "level": "error", "message": {"text": "Dangling fetch: GET /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:65)"}, "properties": {"repobilityId": "6db4887a015146f9", "scanner": "scanner-primary", "fingerprint": "8b21784aa2147081", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f00df954a54af97", "level": "error", "message": {"text": "Dangling fetch: POST /api/supplier-cadence (lib/hooks/useSupplierCadence.ts:79)"}, "properties": {"repobilityId": "7671a170a11870c7", "scanner": "scanner-primary", "fingerprint": "9f00df954a54af97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b639717cbb6c335", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:102)"}, "properties": {"repobilityId": "9166fc5c13e030a0", "scanner": "scanner-primary", "fingerprint": "3b639717cbb6c335", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c98bea2d94212fd7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/supplier-cadence/${id} (lib/hooks/useSupplierCadence.ts:122)"}, "properties": {"repobilityId": "a8327f3ab72c69ac", "scanner": "scanner-primary", "fingerprint": "c98bea2d94212fd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f671809989e2db19", "level": "error", "message": {"text": "Dangling fetch: GET /api/supplier-cadence/today (lib/hooks/useOrderTimeline.ts:43)"}, "properties": {"repobilityId": "13c84f8ff64ccf5f", "scanner": "scanner-primary", "fingerprint": "f671809989e2db19", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-189d21de7a817aa2", "level": "error", "message": {"text": "Dangling fetch: GET /api/supplier-cadence/upcoming?days=${days} (lib/hooks/useOrderTimeline.ts:56)"}, "properties": {"repobilityId": "1f388af8eb7f3042", "scanner": "scanner-primary", "fingerprint": "189d21de7a817aa2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0cc7fcbcebd3dbac", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/search (lib/services/web-search.ts:322)"}, "properties": {"repobilityId": "a1f68be8f032b5df", "scanner": "scanner-primary", "fingerprint": "0cc7fcbcebd3dbac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7dfd180af72dc27b", "level": "error", "message": {"text": "Dangling fetch: GET /api/user/favorites?userId=${userId} (lib/store/appStore.ts:35)"}, "properties": {"repobilityId": "bc2cc66c1444e095", "scanner": "scanner-primary", "fingerprint": "7dfd180af72dc27b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d84f83afcd709085", "level": "error", "message": {"text": "Dangling fetch: PUT /api/user/favorites (lib/store/appStore.ts:51)"}, "properties": {"repobilityId": "59c91cf0aa2d8340", "scanner": "scanner-primary", "fingerprint": "d84f83afcd709085", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00578a615122fa97", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/login (lib/store/authStore.ts:20)"}, "properties": {"repobilityId": "9c1592be91698aaa", "scanner": "scanner-primary", "fingerprint": "00578a615122fa97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-222ef92fba3523ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (lib/store/authStore.ts:58)"}, "properties": {"repobilityId": "8c95dc41975bcf25", "scanner": "scanner-primary", "fingerprint": "222ef92fba3523ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc13adcd0cdd147f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (lib/store/authStore.ts:98)"}, "properties": {"repobilityId": "c95367cf74ff1115", "scanner": "scanner-primary", "fingerprint": "dc13adcd0cdd147f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a409d2f2b4504a0b", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/update-profile (lib/store/authStore.ts:134)"}, "properties": {"repobilityId": "6405bf8b2aac8ff6", "scanner": "scanner-primary", "fingerprint": "a409d2f2b4504a0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c82f6a2d663bb061", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (lib/store/authStore.ts:167)"}, "properties": {"repobilityId": "b611c9593a39da58", "scanner": "scanner-primary", "fingerprint": "c82f6a2d663bb061", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-108ed23c5f043601", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/users (lib/store/authStore.ts:227)"}, "properties": {"repobilityId": "c3e074bbd6becf52", "scanner": "scanner-primary", "fingerprint": "108ed23c5f043601", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb9b1f8aef0bba82", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/users (lib/store/authStore.ts:248)"}, "properties": {"repobilityId": "606ac8ce4e433247", "scanner": "scanner-primary", "fingerprint": "cb9b1f8aef0bba82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-235c82c3d44e1e05", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/${id} (lib/store/authStore.ts:273)"}, "properties": {"repobilityId": "46cfdc6f38144ac1", "scanner": "scanner-primary", "fingerprint": "235c82c3d44e1e05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e94d79bfa3738414", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/users/${id} (lib/store/authStore.ts:298)"}, "properties": {"repobilityId": "f9525354b2b42849", "scanner": "scanner-primary", "fingerprint": "e94d79bfa3738414", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7fc8525bd6f16db", "level": "error", "message": {"text": "Dangling fetch: POST /web/session/get_session_info (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:236)"}, "properties": {"repobilityId": "bb0c07c7a6dc36ab", "scanner": "scanner-primary", "fingerprint": "b7fc8525bd6f16db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf96b950a78618cf", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:249)"}, "properties": {"repobilityId": "da8b6dddce19059f", "scanner": "scanner-primary", "fingerprint": "bf96b950a78618cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-991e32b3839868bf", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:450)"}, "properties": {"repobilityId": "2c10381fb6066931", "scanner": "scanner-primary", "fingerprint": "991e32b3839868bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38252ce8c3220e82", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:458)"}, "properties": {"repobilityId": "1ac27ccc3d0f7a93", "scanner": "scanner-primary", "fingerprint": "38252ce8c3220e82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e8d941ee9bbd27e", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:548)"}, "properties": {"repobilityId": "b05ca6c9fdc253d6", "scanner": "scanner-primary", "fingerprint": "1e8d941ee9bbd27e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec58c61c18cb77ea", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:585)"}, "properties": {"repobilityId": "ecfd79799c8b27e4", "scanner": "scanner-primary", "fingerprint": "ec58c61c18cb77ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c4bc4e107a5ecaea", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:614)"}, "properties": {"repobilityId": "f313e030d4f8735c", "scanner": "scanner-primary", "fingerprint": "c4bc4e107a5ecaea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adf4211d29f99aea", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:631)"}, "properties": {"repobilityId": "8f7eaf8a6a91f525", "scanner": "scanner-primary", "fingerprint": "adf4211d29f99aea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67f0d6a19d40fe77", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/chatbot-v3-helpdesk.ts:655)"}, "properties": {"repobilityId": "a28e93240bb916d2", "scanner": "scanner-primary", "fingerprint": "67f0d6a19d40fe77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60f1c59788307e55", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:230)"}, "properties": {"repobilityId": "8dce5ff39c40e6bd", "scanner": "scanner-primary", "fingerprint": "60f1c59788307e55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6272024ae01ccacd", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/setup-chatbot-complete.ts:254)"}, "properties": {"repobilityId": "53f6c7c476d2d64f", "scanner": "scanner-primary", "fingerprint": "6272024ae01ccacd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1014cd985ef91e62", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:273)"}, "properties": {"repobilityId": "a7029a5c12580c92", "scanner": "scanner-primary", "fingerprint": "1014cd985ef91e62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-297041eb44a37528", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/update-chatbot-v2.ts:295)"}, "properties": {"repobilityId": "0bee847a7485be7c", "scanner": "scanner-primary", "fingerprint": "297041eb44a37528", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e451574c9860b8c", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:325)"}, "properties": {"repobilityId": "9669ff9a7b8285c0", "scanner": "scanner-primary", "fingerprint": "6e451574c9860b8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b69a1d56e8e1ec8e", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:348)"}, "properties": {"repobilityId": "e68b93e9bbda7017", "scanner": "scanner-primary", "fingerprint": "b69a1d56e8e1ec8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21f5fe9292787ce7", "level": "error", "message": {"text": "Dangling fetch: POST /web/dataset/call_kw (seo-geo-optimizer/scripts/update-chatbot-v2.ts:371)"}, "properties": {"repobilityId": "19e0f96b7777ad9a", "scanner": "scanner-primary", "fingerprint": "21f5fe9292787ce7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0ddb311855582553", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (seo-geo-optimizer/scripts/create-chatbot-endpoint.ts:107)"}, "properties": {"repobilityId": "049d6ee67bb85038", "scanner": "scanner-primary", "fingerprint": "0ddb311855582553", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5837b1b90cda3b40", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/daily-plan?salesperson_id=${salespersonId} (hooks/useMaestroAI.ts:66)"}, "properties": {"repobilityId": "ecc8f329e8a7fb4c", "scanner": "scanner-primary", "fingerprint": "5837b1b90cda3b40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0cd3d069dd0955a8", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/dashboard (hooks/useMaestroAI.ts:72)"}, "properties": {"repobilityId": "1de303f59eef0c63", "scanner": "scanner-primary", "fingerprint": "0cd3d069dd0955a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21433848a95d65eb", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/customers/${customerId} (hooks/useMaestroAI.ts:78)"}, "properties": {"repobilityId": "9ad56dc7f7fa5440", "scanner": "scanner-primary", "fingerprint": "21433848a95d65eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88da7ac9b7c36fed", "level": "error", "message": {"text": "Dangling fetch: POST /api/maestro/interactions (hooks/useMaestroAI.ts:142)"}, "properties": {"repobilityId": "52d8ac645193d86b", "scanner": "scanner-primary", "fingerprint": "88da7ac9b7c36fed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4828c2a070077754", "level": "error", "message": {"text": "Dangling fetch: GET /api/maestro/analytics/period?${params} (hooks/useMaestroAI.ts:228)"}, "properties": {"repobilityId": "6618ab6bd8e73dac", "scanner": "scanner-primary", "fingerprint": "4828c2a070077754", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ae26425dd898307", "level": "error", "message": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:32)"}, "properties": {"repobilityId": "fbfc55341152b4a1", "scanner": "scanner-primary", "fingerprint": "3ae26425dd898307", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-020e2fb26197a7e3", "level": "error", "message": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:64)"}, "properties": {"repobilityId": "e69c6cc808fcfcaf", "scanner": "scanner-primary", "fingerprint": "020e2fb26197a7e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1af7fa4f961eaae", "level": "error", "message": {"text": "Dangling fetch: POST /api/track-usage (hooks/useAppTracking.ts:89)"}, "properties": {"repobilityId": "3c70675eb05b14a6", "scanner": "scanner-primary", "fingerprint": "a1af7fa4f961eaae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-576b2d1085b8c697", "level": "error", "message": {"text": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:35)"}, "properties": {"repobilityId": "e1e69db0b4c5985c", "scanner": "scanner-primary", "fingerprint": "576b2d1085b8c697", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78c1f48c64a391ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/apps/check-access (hooks/useAppAccess.ts:118)"}, "properties": {"repobilityId": "1d4310d47582f655", "scanner": "scanner-primary", "fingerprint": "78c1f48c64a391ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-862f61998c6e1f71", "level": "error", "message": {"text": "Dangling fetch: POST /api/maestro/agent-chat (hooks/useMaestroChat.ts:222)"}, "properties": {"repobilityId": "78c572022c08bfbb", "scanner": "scanner-primary", "fingerprint": "862f61998c6e1f71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71435472e7365aab", "level": "note", "message": {"text": "Unused endpoint: POST /analyze-pdf"}, "properties": {"repobilityId": "1b87c368b58b5d86", "scanner": "scanner-primary", "fingerprint": "71435472e7365aab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a436691337284d03", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/health"}, "properties": {"repobilityId": "e603d53c81f959f8", "scanner": "scanner-primary", "fingerprint": "a436691337284d03", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01b860baedd8ee76", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/metrics"}, "properties": {"repobilityId": "be4f719750e5b497", "scanner": "scanner-primary", "fingerprint": "01b860baedd8ee76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd4027f9ab4d8baf", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ocr/analyze"}, "properties": {"repobilityId": "a1c228abec0c4037", "scanner": "scanner-primary", "fingerprint": "cd4027f9ab4d8baf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9f224f5718ea698", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ocr/batch"}, "properties": {"repobilityId": "e3172cb3059002eb", "scanner": "scanner-primary", "fingerprint": "e9f224f5718ea698", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2859020023ef48c7", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/ocr/status/:jobId"}, "properties": {"repobilityId": "4da72ef6e13eca32", "scanner": "scanner-primary", "fingerprint": "2859020023ef48c7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1adff1b078fea8ed", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/ocr/queue"}, "properties": {"repobilityId": "34dfe800e14ea4bd", "scanner": "scanner-primary", "fingerprint": "1adff1b078fea8ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41257132d4e6daf4", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/chat"}, "properties": {"repobilityId": "af1b85777f48320f", "scanner": "scanner-primary", "fingerprint": "41257132d4e6daf4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b49dd1c49b264c63", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/extract-data"}, "properties": {"repobilityId": "1eabcde32445d019", "scanner": "scanner-primary", "fingerprint": "b49dd1c49b264c63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a58d1b0e3686cdc", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ask-document"}, "properties": {"repobilityId": "3b0a0da0c3cc368e", "scanner": "scanner-primary", "fingerprint": "1a58d1b0e3686cdc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3852da67e71c3d3a", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/extract-contact"}, "properties": {"repobilityId": "d3345b3c5b953b86", "scanner": "scanner-primary", "fingerprint": "3852da67e71c3d3a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-acc446e0aaef6cca", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/banknote/recognize"}, "properties": {"repobilityId": "349666842e65f45d", "scanner": "scanner-primary", "fingerprint": "acc446e0aaef6cca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b992bd1069c3304a", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/banknote/denominations"}, "properties": {"repobilityId": "78db3fa8ee9104df", "scanner": "scanner-primary", "fingerprint": "b992bd1069c3304a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f789f043f5d89783", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/face/recognize"}, "properties": {"repobilityId": "d104c28f981c7ad5", "scanner": "scanner-primary", "fingerprint": "f789f043f5d89783", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-434448688e8280d2", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/face/enroll"}, "properties": {"repobilityId": "ea66fd7b91a11f9e", "scanner": "scanner-primary", "fingerprint": "434448688e8280d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-42e092b740e4e756", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/face/enroll/:employeeId"}, "properties": {"repobilityId": "4ff8cab365860387", "scanner": "scanner-primary", "fingerprint": "42e092b740e4e756", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90a17491ecc3a1a8", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/face/enrolled"}, "properties": {"repobilityId": "e1abe6827e72841d", "scanner": "scanner-primary", "fingerprint": "90a17491ecc3a1a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-06af0be98cd88f47", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/face/enrolled/:employeeId"}, "properties": {"repobilityId": "badee5d83740b931", "scanner": "scanner-primary", "fingerprint": "06af0be98cd88f47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}