diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index def89cb2f..5463f7674 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,26 @@ jobs: SMOKE_FAIL_ON_DEGRADED: '0' run: node scripts/smoke-tests.mjs + # Job dedicado de typecheck para PRs — fail-fast ANTES do quality. + # Com baseline zerado (totalErrors=0), qualquer erro novo bloqueia o merge + # em ~3-4min (npm ci + tsc) em vez de ~15min (quality completo). + # Roda somente em pull_request para nao duplicar o step ja presente no quality. + typecheck-pr-gate: + name: TypeScript gate (PR fail-fast) + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + timeout-minutes: 10 + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v6 + with: + node-version-file: '.nvmrc' + cache: npm + - name: Install dependencies + run: npm ci + - name: TypeScript type check (zero-tolerance baseline) + run: npm run typecheck + quality: name: Lint, Typecheck & Test runs-on: ubuntu-latest @@ -98,13 +118,15 @@ jobs: # ESLint baseline gate — único step de lint: roda ESLint internamente # e falha SOMENTE para erros NOVOS vs .eslint-baseline.json. # Step informacional separado removido (era redundante e dobrava o tempo de CI). + # TypeScript gate ANTES do lint — fail-fast: se houver regressao de tipo, + # mata o job sem gastar os ~5min de testes. Com baseline zerado (0 erros), + # qualquer erro novo (mesmo 1) falha imediatamente. + - name: TypeScript type check (fail-fast gate) + run: npm run typecheck + - name: ESLint baseline gate (bloqueia apenas regressões novas) run: npm run lint:baseline - - - name: TypeScript type check - run: npm run typecheck - # hooks já cobertos pelo job dedicado hooks-tests (timeout-minutes: 10). # test:strict-ref e test:coverage omitidos aqui — rodam em ref-warning-suite # e integration-tests respectivamente, evitando tripla execução da suite. diff --git a/.tsc-baseline.json b/.tsc-baseline.json index bf34cb110..d94e92397 100644 --- a/.tsc-baseline.json +++ b/.tsc-baseline.json @@ -1,1088 +1,5 @@ { - "generatedAt": "2026-05-23T19:03:16.446Z", - "totalErrors": 1060, - "counts": { - "src/components/admin/DiscountApprovalQueue.tsx": { - "TS18048": 1 - }, - "src/components/admin/MockupPromptManager.tsx": { - "TS2322": 2, - "TS2345": 2, - "TS2352": 1, - "TS2353": 1, - "TS2769": 1 - }, - "src/components/admin/SellerDiscountLimitsPanel.tsx": { - "TS2353": 1 - }, - "src/components/admin/TechniquesManager.tsx": { - "TS2322": 1 - }, - "src/components/admin/connections/Bitrix24Tab.tsx": { - "TS2322": 1 - }, - "src/components/admin/connections/DataSourceDebugTab.tsx": { - "TS2339": 1 - }, - "src/components/admin/connections/ExternalConnectionsSyncLogPanel.tsx": { - "TS2352": 1 - }, - "src/components/admin/connections/InboundEventsPanel.tsx": { - "TS2352": 1 - }, - "src/components/admin/connections/KeysValidationTab.tsx": { - "TS2339": 1 - }, - "src/components/admin/connections/LastSyncRunPanel.tsx": { - "TS2352": 1 - }, - "src/components/admin/connections/N8nTab.tsx": { - "TS2322": 1 - }, - "src/components/admin/connections/WebhooksTab.tsx": { - "TS2352": 1 - }, - "src/components/admin/connections/useSeverityChangeNotifier.ts": { - "TS2353": 1 - }, - "src/components/admin/products/BulkImportDialog.tsx": { - "TS2322": 1 - }, - "src/components/admin/products/ProductFormFullscreen.tsx": { - "TS2352": 1 - }, - "src/components/admin/products/ProductFormHelpers.tsx": { - "TS7016": 1 - }, - "src/components/admin/products/ProductFormStepContent.tsx": { - "TS2322": 7 - }, - "src/components/admin/products/hooks/useProductFormDraft.ts": { - "TS2307": 1 - }, - "src/components/admin/products/hooks/useSkuValidation.ts": { - "TS2339": 1 - }, - "src/components/admin/products/sections/ProductClassificationSection.tsx": { - "TS2322": 1 - }, - "src/components/admin/products/sections/ProductEngravingSection.tsx": { - "TS18047": 1 - }, - "src/components/admin/products/sections/ProductSupplierSection.tsx": { - "TS2339": 2 - }, - "src/components/admin/products/sections/engraving/useEngravingWizard.ts": { - "TS18048": 3, - "TS2322": 1 - }, - "src/components/admin/products/useProductsManager.ts": { - "TS2322": 1, - "TS2345": 3, - "TS2352": 1 - }, - "src/components/admin/products/video-gallery/VideoMetaEditor.tsx": { - "TS2322": 2 - }, - "src/components/admin/security/SecureUploadManager.tsx": { - "TS18046": 4, - "TS2322": 3, - "TS2339": 1, - "TS2769": 1 - }, - "src/components/admin/security/keys/audit/McpAuditRow.tsx": { - "TS2322": 1 - }, - "src/components/admin/security/keys/audit/useMcpAuditFeed.ts": { - "TS7053": 1 - }, - "src/components/admin/suppliers-manager/useSuppliersManager.ts": { - "TS2352": 4 - }, - "src/components/admin/telemetry/AppHealthDashboard.tsx": { - "TS18048": 2 - }, - "src/components/admin/telemetry/ColdVsWarmCrmCard.tsx": { - "TS18048": 4, - "TS2345": 1 - }, - "src/components/auth/KnownDevicesManager.tsx": { - "TS2352": 1 - }, - "src/components/cart/CartCompanyPicker.tsx": { - "TS2459": 1 - }, - "src/components/cart/CartCompanyPickerDialog.tsx": { - "TS2459": 1 - }, - "src/components/cart/SortableCartItem.tsx": { - "TS2304": 2 - }, - "src/components/cart/__tests__/SortableCartItemExcellence.test.tsx": { - "TS2739": 1 - }, - "src/components/catalog/CatalogActiveFilters.tsx": { - "TS2345": 1 - }, - "src/components/catalog/CatalogContent.tsx": { - "TS2322": 1, - "TS2741": 1 - }, - "src/components/catalog/CatalogHeader.tsx": { - "TS2322": 1 - }, - "src/components/categories/CategoryTreeNavigation.tsx": { - "TS17001": 1 - }, - "src/components/collections/CollectionTableView.tsx": { - "TS2322": 2, - "TS2339": 2 - }, - "src/components/collections/CollectionsTrashView.tsx": { - "TS2322": 1 - }, - "src/components/command/GlobalCommandBar.tsx": { - "TS2322": 1 - }, - "src/components/common/BulkActionsBar.tsx": { - "TS2322": 1 - }, - "src/components/common/IntelligenceBadges.tsx": { - "TS18048": 3 - }, - "src/components/compare/AIComparisonAdvisor.tsx": { - "TS2339": 3, - "TS2551": 2 - }, - "src/components/compare/ComparisonDuelView.tsx": { - "TS2339": 5, - "TS2345": 1, - "TS2551": 2 - }, - "src/components/compare/ComparisonMobileView.tsx": { - "TS18047": 1, - "TS18048": 1, - "TS2339": 1, - "TS2345": 1, - "TS2551": 1 - }, - "src/components/compare/ComparisonPresentationLauncher.tsx": { - "TS2339": 2, - "TS2345": 1, - "TS2551": 2, - "TS7006": 4 - }, - "src/components/compare/ComparisonRadarChart.tsx": { - "TS2551": 2 - }, - "src/components/compare/ComparisonScoreCard.tsx": { - "TS2322": 2 - }, - "src/components/compare/ExportComparisonButton.tsx": { - "TS2339": 2 - }, - "src/components/compare/FloatingCompareBar.tsx": { - "TS18047": 1, - "TS2345": 1, - "TS2488": 1 - }, - "src/components/compare/HistoricalPriceOverlay.tsx": { - "TS2345": 1, - "TS2352": 1 - }, - "src/components/compare/PriceSparkline.tsx": { - "TS2345": 2 - }, - "src/components/compare/SimilarProductsRail.tsx": { - "TS2339": 3, - "TS7006": 2 - }, - "src/components/dev/BridgeMetricsOverlay.tsx": { - "TS4104": 1 - }, - "src/components/dev/DiagnosticProfiler.tsx": { - "TS2339": 2, - "TS2352": 1 - }, - "src/components/dev/__tests__/BridgeMetricsOverlay.test.tsx": { - "TS2345": 1 - }, - "src/components/expert/chat/ChatInputBar.tsx": { - "TS2322": 1, - "TS2552": 1 - }, - "src/components/expert/chat/ChatMessageList.tsx": { - "TS2322": 1 - }, - "src/components/expert/chat/useExpertChat.ts": { - "TS1345": 2 - }, - "src/components/favorites/FavoritesTrashView.tsx": { - "TS2322": 1 - }, - "src/components/filters/ExternalCategoryFilter.tsx": { - "TS2345": 1 - }, - "src/components/filters/FilterPanel.tsx": { - "TS2322": 4 - }, - "src/components/filters/FilterPresets.ts": { - "TS2322": 2, - "TS2339": 6, - "TS2345": 3 - }, - "src/components/filters/filter-panel/sections/MaterialsFilter.tsx": { - "TS18046": 13, - "TS2322": 6, - "TS2345": 5 - }, - "src/components/filters/filter-panel/sections/RamosFilter.tsx": { - "TS18046": 8, - "TS2322": 6, - "TS2345": 4, - "TS2740": 1 - }, - "src/components/filters/preset-utils.ts": { - "TS2339": 5, - "TS2551": 7 - }, - "src/components/goals/SalesGoalsCard.tsx": { - "TS2322": 1 - }, - "src/components/intelligence/CategoryRanking.tsx": { - "TS18046": 1, - "TS2322": 1, - "TS2345": 2 - }, - "src/components/intelligence/MarketIntelligenceChart.tsx": { - "TS18046": 6, - "TS2322": 2 - }, - "src/components/intelligence/SalesOverviewChart.tsx": { - "TS18046": 4, - "TS2322": 4, - "TS2345": 2 - }, - "src/components/inventory/risk/ProductRiskDetail.tsx": { - "TS2339": 10, - "TS7006": 2, - "TS7053": 1 - }, - "src/components/inventory/risk/RiskTooltip.tsx": { - "TS18048": 1, - "TS2322": 2, - "TS2345": 2, - "TS2554": 1 - }, - "src/components/inventory/risk/types.ts": { - "TS18048": 2 - }, - "src/components/kit-builder/BoxSelector.tsx": { - "TS2322": 1 - }, - "src/components/kit-builder/KitComparisonDialog.tsx": { - "TS2322": 3 - }, - "src/components/kit-builder/KitSmartSuggestions.tsx": { - "TS18046": 5 - }, - "src/components/kit-builder/PersonalizationConfig.tsx": { - "TS18048": 1, - "TS2345": 4 - }, - "src/components/layout/sidebar/__tests__/SidebarNavGroup.a11y.test.tsx": { - "TS2749": 3 - }, - "src/components/layout/sidebar/__tests__/SidebarNavGroup.collapse.test.tsx": { - "TS2749": 3 - }, - "src/components/layout/sidebar/__tests__/SidebarNavGroup.history.test.tsx": { - "TS2749": 3 - }, - "src/components/layout/sidebar/__tests__/SidebarNavGroup.suspense.test.tsx": { - "TS2749": 1 - }, - "src/components/loading/SkeletonMonitor.tsx": { - "TS2339": 1 - }, - "src/components/loading/index.ts": { - "TS2305": 5, - "TS2724": 2 - }, - "src/components/magic-up/AdImageResult.tsx": { - "TS2300": 2, - "TS2693": 1, - "TS7006": 1 - }, - "src/components/mobile/index.ts": { - "TS2305": 1 - }, - "src/components/mockup/LogoColorAnalyzer.tsx": { - "TS18048": 1 - }, - "src/components/mockup/MockupClientSelector.tsx": { - "TS2322": 1 - }, - "src/components/mockup/MockupColorSelector.tsx": { - "TS2339": 2, - "TS2345": 2 - }, - "src/components/mockup/MockupConfigPanel.tsx": { - "TS2322": 1 - }, - "src/components/mockup/MockupProductSelector.tsx": { - "TS2345": 2 - }, - "src/components/mockup/MockupResultCard.tsx": { - "TS7016": 1 - }, - "src/components/mockup/TechniqueColorConfigDialog.tsx": { - "TS2304": 3 - }, - "src/components/mockup/TechniqueTooltip.tsx": { - "TS18048": 2 - }, - "src/components/mockup/TemplatePreview.tsx": { - "TS17001": 1 - }, - "src/components/mockup/approval/MockupLayoutButtons.tsx": { - "TS2339": 1 - }, - "src/components/mockup/approval/OffscreenLayoutCapture.tsx": { - "TS2345": 1 - }, - "src/components/mockup/logo-editor/LogoPreviewCanvas.tsx": { - "TS2322": 1 - }, - "src/components/navigation/Breadcrumbs.tsx": { - "TS2686": 2 - }, - "src/components/navigation/DynamicBreadcrumbs.tsx": { - "TS2304": 1 - }, - "src/components/notifications/NotificationsBadgeStatsPanel.tsx": { - "TS2322": 1, - "TS2339": 6, - "TS2352": 1 - }, - "src/components/novelties/NoveltyProductGrid.tsx": { - "TS2322": 1, - "TS2339": 1 - }, - "src/components/personalization/TechniqueSLACard.tsx": { - "TS2352": 2 - }, - "src/components/personalization/TechniqueSelector.tsx": { - "TS2322": 1, - "TS2352": 2 - }, - "src/components/pricing/ProductPriceSimulator.tsx": { - "TS2305": 4 - }, - "src/components/pricing/calculator/QuantityComparisonTable.tsx": { - "TS2339": 6 - }, - "src/components/pricing/calculator/TechniqueMultiSelector.tsx": { - "TS2339": 4 - }, - "src/components/pricing/simulator/ProductSearch.tsx": { - "TS2551": 1 - }, - "src/components/products/EnhancedProductCard.tsx": { - "TS2339": 2 - }, - "src/components/products/FutureStockModal.tsx": { - "TS2322": 1, - "TS2339": 17, - "TS2345": 1 - }, - "src/components/products/InlinePriceCalculator.tsx": { - "TS2339": 2, - "TS2353": 2 - }, - "src/components/products/ProductCard.tsx": { - "TS2322": 3 - }, - "src/components/products/ProductCardActions.tsx": { - "TS2322": 2 - }, - "src/components/products/ProductCardImage.tsx": { - "TS18048": 1 - }, - "src/components/products/ProductCategoryBadges.tsx": { - "TS2345": 1 - }, - "src/components/products/ProductCustomizationOptions.tsx": { - "TS2322": 1 - }, - "src/components/products/ProductPersonalizationRules.tsx": { - "TS2322": 1 - }, - "src/components/products/ProductQuickActions.tsx": { - "TS2322": 1 - }, - "src/components/products/ProductQuickView.tsx": { - "TS2322": 1, - "TS2339": 1 - }, - "src/components/products/ProductTableView.tsx": { - "TS7006": 2 - }, - "src/components/products/RelatedProducts.tsx": { - "TS2322": 1 - }, - "src/components/products/SalesHistoryChart.tsx": { - "TS18046": 8, - "TS2322": 5, - "TS2345": 2 - }, - "src/components/products/StockHistoryChart.tsx": { - "TS2339": 7, - "TS2769": 1 - }, - "src/components/products/VariantGridMatrix.tsx": { - "TS18048": 1 - }, - "src/components/products/customization/ConfigurationPanel.tsx": { - "TS2345": 1 - }, - "src/components/products/customization/ConfigurationPanelV6.tsx": { - "TS18048": 8 - }, - "src/components/products/customization/__tests__/LocationPanel.test.tsx": { - "TS2739": 2 - }, - "src/components/products/customization/__tests__/LocationPanelAdvanced.test.tsx": { - "TS2339": 1, - "TS2353": 1 - }, - "src/components/products/customization/__tests__/LocationPanelPrice.test.tsx": { - "TS2339": 1, - "TS2353": 1 - }, - "src/components/products/index.ts": { - "TS2305": 1 - }, - "src/components/products/kit-composition/KitComponentCard.tsx": { - "TS18048": 6, - "TS2345": 1 - }, - "src/components/products/share/ShareContactSelector.tsx": { - "TS2339": 1, - "TS2345": 1 - }, - "src/components/products/useStockChartData.ts": { - "TS2339": 6, - "TS7006": 3, - "TS7053": 1 - }, - "src/components/providers/AppBootstrap.tsx": { - "TS2339": 1 - }, - "src/components/quotes/DraggableQuoteItems.tsx": { - "TS2304": 2, - "TS2322": 1 - }, - "src/components/quotes/MarginInsightBadge.tsx": { - "TS18048": 2 - }, - "src/components/quotes/QuoteAutoSave.tsx": { - "TS2339": 1 - }, - "src/components/quotes/QuoteItemsTable.tsx": { - "TS2719": 1 - }, - "src/components/quotes/QuoteKanbanBoard.tsx": { - "TS7016": 1 - }, - "src/components/quotes/QuoteRowQuickActions.tsx": { - "TS2367": 1 - }, - "src/components/quotes/QuoteTemplateForm.tsx": { - "TS2345": 1 - }, - "src/components/quotes/company-contact/ContactSelector.tsx": { - "TS2322": 3 - }, - "src/components/ramo-atividade/SegmentoCheckbox.tsx": { - "TS2339": 3 - }, - "src/components/ramo-atividade/index.ts": { - "TS2724": 1 - }, - "src/components/replenishments/ReplenishmentProductGrid.tsx": { - "TS2304": 1, - "TS2322": 1, - "TS2339": 1 - }, - "src/components/search/AdvancedSearch.tsx": { - "TS2304": 6, - "TS2345": 1 - }, - "src/components/search/GlobalSearch.tsx": { - "TS2322": 1 - }, - "src/components/search/GlobalSearchIdleState.tsx": { - "TS2322": 1 - }, - "src/components/search/GlobalSearchPalette.tsx": { - "TS2339": 1 - }, - "src/components/search/SearchWithSuggestions.tsx": { - "TS2304": 1, - "TS2552": 1, - "TS2687": 1 - }, - "src/components/search/useGlobalSearch.ts": { - "TS2322": 2, - "TS2339": 5, - "TS2345": 3, - "TS2352": 6 - }, - "src/components/security/MfaEnrollmentDialog.tsx": { - "TS2367": 1 - }, - "src/components/security/useSecurityData.ts": { - "TS2345": 2, - "TS2769": 1 - }, - "src/components/simulator/wizard/PersonalizationSummary.tsx": { - "TS2322": 1 - }, - "src/components/simulator/wizard/QuantityRangeComparison.tsx": { - "TS2345": 1 - }, - "src/components/system/CloudStatusBanner.tsx": { - "TS2367": 1 - }, - "src/components/ui/StatusBadge.tsx": { - "TS2322": 1, - "TS2430": 1 - }, - "src/components/ui/sonner.tsx": { - "TS2322": 1 - }, - "src/contexts/AuthContext.test.tsx": { - "TS2345": 2 - }, - "src/contexts/ProductsContext.tsx": { - "TS2345": 1 - }, - "src/hooks/__tests__/useAutoSaveQuote.test.ts": { - "TS18047": 4 - }, - "src/hooks/__tests__/useCatalogState.unit.test.tsx": { - "TS2322": 2 - }, - "src/hooks/__tests__/useIPValidation.test.ts": { - "TS2339": 7, - "TS2345": 1, - "TS7005": 1, - "TS7034": 1 - }, - "src/hooks/admin/useAllowedIPs.ts": { - "TS2322": 5, - "TS2345": 3, - "TS2769": 4 - }, - "src/hooks/admin/useAuditLog.ts": { - "TS2345": 5, - "TS2353": 1, - "TS2589": 2, - "TS2769": 3 - }, - "src/hooks/admin/useDeviceDetection.ts": { - "TS2353": 1 - }, - "src/hooks/admin/useGeoBlocking.ts": { - "TS2322": 3, - "TS2345": 3, - "TS2769": 2 - }, - "src/hooks/admin/useSecretsManager.ts": { - "TS2322": 6 - }, - "src/hooks/auth/use2FA.ts": { - "TS2322": 5, - "TS2339": 2, - "TS2345": 4, - "TS2353": 1, - "TS2769": 4 - }, - "src/hooks/auth/useAccessSecurity.ts": { - "TS2345": 7, - "TS2589": 3, - "TS2769": 9 - }, - "src/hooks/auth/useAuthMFA.ts": { - "TS2339": 2 - }, - "src/hooks/collections/useCollections.ts": { - "TS2345": 1 - }, - "src/hooks/common/useGenericFuzzySearch.ts": { - "TS2322": 1 - }, - "src/hooks/common/useOrgData.ts": { - "TS2589": 1 - }, - "src/hooks/comparison/useComparisonWeights.ts": { - "TS2352": 1 - }, - "src/hooks/crm/useRamoAtividadeFilter.ts": { - "TS7006": 2 - }, - "src/hooks/favorites/useEnrichedFavoriteItems.ts": { - "TS2322": 1 - }, - "src/hooks/favorites/useFavoriteLists.ts": { - "TS2345": 1 - }, - "src/hooks/favorites/useFavoritesPageState.ts": { - "TS2339": 4, - "TS2345": 1 - }, - "src/hooks/gravacao/gravacao-constants.ts": { - "TS2769": 1 - }, - "src/hooks/gravacao/useFornecedoresGravacao.ts": { - "TS2322": 1 - }, - "src/hooks/gravacao/useTecnicasGravacao.ts": { - "TS18047": 1, - "TS2322": 2 - }, - "src/hooks/intelligence/useCommercialIntelligence.ts": { - "TS2345": 1 - }, - "src/hooks/intelligence/useContextualSuggestions.ts": { - "TS7006": 1 - }, - "src/hooks/intelligence/useExternalDatabase.ts": { - "TS2339": 4, - "TS2345": 1, - "TS2638": 3 - }, - "src/hooks/intelligence/useMagicUpGeneration.ts": { - "TS2322": 1 - }, - "src/hooks/intelligence/useMagicUpState.ts": { - "TS2322": 1, - "TS2345": 4, - "TS2769": 1, - "TS2783": 2 - }, - "src/hooks/intelligence/useScheduledReports.ts": { - "TS2322": 1 - }, - "src/hooks/intelligence/useSpeechRecognition.ts": { - "TS2687": 2, - "TS2717": 2 - }, - "src/hooks/intelligence/useStockHistory.ts": { - "TS2769": 2 - }, - "src/hooks/intelligence/useVoiceAgent.ts": { - "TS2322": 1 - }, - "src/hooks/intelligence/useVoiceCommandHistory.ts": { - "TS2769": 1 - }, - "src/hooks/kit-builder/useKitBuilderPageState.ts": { - "TS2345": 1, - "TS7016": 1 - }, - "src/hooks/kit-builder/useKitBuilderTransformers.ts": { - "TS2345": 4 - }, - "src/hooks/kit-builder/useKitTemplates.ts": { - "TS2322": 3 - }, - "src/hooks/mockup/mockupGenerationService.ts": { - "TS2322": 1, - "TS2345": 4, - "TS2769": 1 - }, - "src/hooks/mockup/useMockupDraft.ts": { - "TS18046": 9, - "TS2345": 3, - "TS2769": 2 - }, - "src/hooks/mockup/useMockupGenerator.ts": { - "TS2339": 2, - "TS2345": 1 - }, - "src/hooks/products/index.ts": { - "TS2308": 2 - }, - "src/hooks/products/useCartTemplates.ts": { - "TS2322": 1 - }, - "src/hooks/products/useCatalogFiltering.ts": { - "TS2322": 1, - "TS2339": 1 - }, - "src/hooks/products/useCatalogState.ts": { - "TS2322": 1, - "TS2345": 4, - "TS2448": 1, - "TS2454": 1, - "TS2769": 1 - }, - "src/hooks/products/useCategoryIcons.ts": { - "TS2769": 1 - }, - "src/hooks/products/useColorEnrichment.ts": { - "TS2322": 1 - }, - "src/hooks/products/useColorSystem.ts": { - "TS2345": 1, - "TS2352": 1, - "TS2769": 1 - }, - "src/hooks/products/useNoveltiesSelectionMode.ts": { - "TS2352": 1 - }, - "src/hooks/products/usePrefetchProduct.ts": { - "TS2551": 1 - }, - "src/hooks/products/useProductInsights.ts": { - "TS18047": 1, - "TS2345": 1, - "TS2531": 1 - }, - "src/hooks/products/useProductIntelligenceBadges.ts": { - "TS2339": 10, - "TS7006": 2, - "TS7053": 1 - }, - "src/hooks/products/useProducts.ts": { - "TS2769": 3 - }, - "src/hooks/products/useProductsByColor.ts": { - "TS2345": 1 - }, - "src/hooks/products/useReplenishmentsSelectionMode.ts": { - "TS2352": 1 - }, - "src/hooks/products/useSupplierComparison.ts": { - "TS2339": 2, - "TS7006": 2 - }, - "src/hooks/products/useSupplierFiscalData.ts": { - "TS2352": 2 - }, - "src/hooks/quotes/useAutoSaveQuote.ts": { - "TS2339": 2 - }, - "src/hooks/quotes/useQuoteBuilderState.ts": { - "TS2304": 2, - "TS2345": 3 - }, - "src/hooks/quotes/useQuoteComments.ts": { - "TS2322": 3, - "TS2353": 1 - }, - "src/hooks/quotes/useQuoteFunnel.ts": { - "TS2367": 1 - }, - "src/hooks/quotes/useQuoteHistory.ts": { - "TS2345": 1 - }, - "src/hooks/quotes/useQuoteTemplates.ts": { - "TS2322": 1, - "TS2339": 3, - "TS2353": 2 - }, - "src/hooks/simulation/index.ts": { - "TS2308": 2 - }, - "src/hooks/simulation/useCustomizationPrice.ts": { - "TS18048": 2 - }, - "src/hooks/simulation/useGravacaoPriceV2.ts": { - "TS2345": 3 - }, - "src/hooks/simulation/usePrintAreas.ts": { - "TS2322": 1 - }, - "src/hooks/simulation/useSimulation.ts": { - "TS2345": 1, - "TS2352": 2, - "TS2589": 1, - "TS2769": 3 - }, - "src/hooks/simulation/useSimulatorPreferences.ts": { - "TS2322": 1 - }, - "src/hooks/simulation/useTechniquePricing.ts": { - "TS2362": 1, - "TS2363": 1 - }, - "src/hooks/simulator/useLivePricePreview.ts": { - "TS2345": 1 - }, - "src/hooks/simulator/useSimulatorWizard.ts": { - "TS2820": 1 - }, - "src/hooks/simulator/useUndoRedo.ts": { - "TS2345": 2 - }, - "src/hooks/simulator/useWizardDrafts.ts": { - "TS2322": 2 - }, - "src/hooks/simulator/useWizardPricing.ts": { - "TS2339": 1, - "TS2345": 2 - }, - "src/hooks/simulator/wizardReducer.ts": { - "TS2322": 3, - "TS2678": 1 - }, - "src/hooks/ui/useErrorHandler.ts": { - "TS2322": 1 - }, - "src/hooks/ui/usePushNotifications.tsx": { - "TS2353": 1 - }, - "src/lib/access/log-access-denied.ts": { - "TS2322": 1 - }, - "src/lib/crm-db.ts": { - "TS2322": 1 - }, - "src/lib/external-db/batch-import.ts": { - "TS2352": 2 - }, - "src/lib/external-db/bridge.ts": { - "TS2353": 2 - }, - "src/lib/external-db/invoke.ts": { - "TS2322": 1, - "TS2353": 3 - }, - "src/lib/kit-builder/types.ts": { - "TS18048": 2 - }, - "src/lib/pdf/whitelabel-comparison.ts": { - "TS2322": 3, - "TS2345": 1, - "TS2352": 1, - "TS2769": 1 - }, - "src/lib/personalization/repositories/technique.repository.ts": { - "TS7006": 1 - }, - "src/lib/query-config.ts": { - "TS2352": 1 - }, - "src/lib/security/rls-denial-logger.ts": { - "TS2322": 6 - }, - "src/lib/stock-chart-utils.ts": { - "TS2322": 2 - }, - "src/lib/system/dev-infra-messages.ts": { - "TS2345": 1 - }, - "src/pages/Index.tsx": { - "TS2322": 1, - "TS2339": 5, - "TS2551": 1 - }, - "src/pages/SidebarQAPage.tsx": { - "TS2322": 1 - }, - "src/pages/admin/AdminClientPerformancePage.tsx": { - "TS2322": 1 - }, - "src/pages/admin/DevChallengeExamplesPage.tsx": { - "TS2322": 1 - }, - "src/pages/admin/PermissionsPage.tsx": { - "TS2345": 5 - }, - "src/pages/admin/RolePermissionsPage.tsx": { - "TS18046": 2, - "TS2345": 4 - }, - "src/pages/admin/RolesPage.tsx": { - "TS2322": 4, - "TS2345": 2, - "TS2769": 4 - }, - "src/pages/admin/telemetry/useOptimizationQueue.ts": { - "TS2339": 1 - }, - "src/pages/admin/telemetry/useProductsListingLatencyAlert.ts": { - "TS2367": 1 - }, - "src/pages/advanced-price-search/ResultViews.tsx": { - "TS2551": 6 - }, - "src/pages/advanced-price-search/useAdvancedPriceSearch.ts": { - "TS2339": 3, - "TS7006": 6 - }, - "src/pages/auth/Auth.tsx": { - "TS2367": 2 - }, - "src/pages/auth/AuthBranding.tsx": { - "TS2345": 1 - }, - "src/pages/bi/TrendsPage.tsx": { - "TS2322": 2, - "TS2339": 1, - "TS2345": 2 - }, - "src/pages/collections/CollectionsPage.tsx": { - "TS2304": 2 - }, - "src/pages/filters/useFiltersPageState.ts": { - "TS2339": 1, - "TS2345": 3 - }, - "src/pages/kit-builder/KitBuilderPage.tsx": { - "TS2322": 3, - "TS2551": 2, - "TS2741": 1 - }, - "src/pages/kit-builder/useKitBuilderQuote.ts": { - "TS2305": 1, - "TS2345": 2, - "TS7006": 3 - }, - "src/pages/magic-up/MagicUpConfigPanel.tsx": { - "TS2322": 1, - "TS2345": 1 - }, - "src/pages/mockups/MockupGenerator.tsx": { - "TS2322": 1 - }, - "src/pages/mockups/MockupHistoryPage.tsx": { - "TS2345": 1, - "TS2352": 1 - }, - "src/pages/products/ComparePage.tsx": { - "TS18047": 3, - "TS2322": 4, - "TS2345": 1, - "TS2551": 2 - }, - "src/pages/products/FavoritesPage.tsx": { - "TS2322": 9, - "TS2339": 2, - "TS2345": 1 - }, - "src/pages/products/FiltersPage.tsx": { - "TS2339": 2 - }, - "src/pages/products/ProductDetail.tsx": { - "TS2322": 10, - "TS2339": 2 - }, - "src/pages/products/ProductMatchPage.tsx": { - "TS2322": 1, - "TS2339": 3, - "TS2345": 1, - "TS7006": 2 - }, - "src/pages/products/product-detail/ProductDetailHero.tsx": { - "TS2322": 6, - "TS2339": 4 - }, - "src/pages/products/product-match/ProductSearchPanel.tsx": { - "TS2488": 1 - }, - "src/pages/products/seller-carts/CartSidebar.tsx": { - "TS2322": 1 - }, - "src/pages/quotes/QuoteBuilderPage.tsx": { - "TS2339": 1 - }, - "src/pages/quotes/QuoteViewPage.tsx": { - "TS2322": 1, - "TS2345": 3 - }, - "src/pages/quotes/QuotesKanbanPage.tsx": { - "TS2345": 1, - "TS2769": 1 - }, - "src/pages/quotes/QuotesListPage.tsx": { - "TS2345": 1, - "TS2554": 1, - "TS7016": 1 - }, - "src/pages/quotes/quote-view/QuoteActionHandlers.ts": { - "TS2345": 5, - "TS2532": 1 - }, - "src/pages/quotes/quote-view/QuoteBitrixSync.ts": { - "TS2322": 1, - "TS2345": 5, - "TS2532": 1 - }, - "src/pages/quotes/quote-view/useQuoteViewData.ts": { - "TS2322": 1, - "TS2339": 1, - "TS2345": 1 - }, - "src/pages/quotes/quotes-dashboard/useQuotesDashboard.ts": { - "TS2322": 1, - "TS2339": 1, - "TS2769": 3 - }, - "src/pages/quotes/useQuotesListPage.ts": { - "TS7016": 1 - }, - "src/pages/trends/TrendsCharts.tsx": { - "TS18046": 1, - "TS18047": 2, - "TS2322": 10, - "TS2362": 1, - "TS2365": 1 - }, - "src/services/__tests__/productService.test.ts": { - "TS2345": 3 - }, - "src/services/__tests__/quoteService.test.ts": { - "TS18048": 1 - }, - "src/services/materialService.ts": { - "TS2322": 4 - }, - "src/services/quoteService.ts": { - "TS2322": 1 - }, - "src/tests/AdminStructuralComparison.test.tsx": { - "TS2304": 19 - }, - "src/tests/MockupDeletion.test.tsx": { - "TS2769": 1 - }, - "src/types/index.ts": { - "TS2308": 1 - }, - "src/utils/color-image-resolver.ts": { - "TS2305": 1 - }, - "src/utils/kitPdfGenerator.ts": { - "TS2322": 10 - }, - "src/utils/personalizationExport.ts": { - "TS2322": 2 - }, - "src/utils/product-colors.ts": { - "TS18046": 16 - }, - "src/utils/product-mapper.ts": { - "TS2322": 3, - "TS2339": 6, - "TS2345": 1, - "TS2551": 1 - }, - "src/utils/productPdfExport.ts": { - "TS18048": 1 - } - } + "generatedAt": "2026-05-24T13:03:13.090Z", + "totalErrors": 0, + "counts": {} }