viberadar 0.3.79 → 0.3.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,6 +69,7 @@ export interface ObservabilityCatalogItem {
69
69
  recommendation: 'suppress' | 'downgrade level' | 'enrich fields' | 'add event';
70
70
  missingFields: string[];
71
71
  noisyMessages: string[];
72
+ featureKeys: string[];
72
73
  }
73
74
  export interface ObservabilityMetrics {
74
75
  noise_ratio: number;
@@ -109,6 +110,19 @@ export interface ObservabilityReport {
109
110
  missingCriticalLogs: ObservabilityInsightItem[];
110
111
  missingCriticalLogsV2: MissingCriticalLogItem[];
111
112
  fieldGaps: Record<string, number>;
113
+ byFeature?: FeatureObservabilityResult[];
114
+ }
115
+ export interface FeatureObservabilityResult {
116
+ key: string;
117
+ label: string;
118
+ color: string;
119
+ score: number;
120
+ metrics: ObservabilityMetrics;
121
+ catalogCount: number;
122
+ noisyPatternCount: number;
123
+ missingCriticalCount: number;
124
+ fieldGapCount: number;
125
+ failurePointCount: number;
112
126
  }
113
127
  export declare function scanProject(projectRoot: string): Promise<ScanResult>;
114
128
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
@@ -477,7 +477,7 @@ function bucketFrequency(count) {
477
477
  return 'medium';
478
478
  return 'low';
479
479
  }
480
- function computeObservabilityReport(modules, projectRoot) {
480
+ function computeObservabilityReport(modules, projectRoot, configFeatures) {
481
481
  const sourceModules = modules.filter(m => m.type !== 'test' && !m.isInfra);
482
482
  const catalog = [];
483
483
  let totalLogs = 0;
@@ -503,6 +503,8 @@ function computeObservabilityReport(modules, projectRoot) {
503
503
  const noisyMap = new Map();
504
504
  const criticalCoverage = new Set();
505
505
  const moduleFailureData = new Map();
506
+ // Per-module stats for efficient per-feature aggregation
507
+ const moduleStats = new Map();
506
508
  for (const module of sourceModules) {
507
509
  let content = '';
508
510
  try {
@@ -524,19 +526,26 @@ function computeObservabilityReport(modules, projectRoot) {
524
526
  /(todo|temp|debug|test|ping|heartbeat|started|done|ok|loaded)/i.test(c.message || c.argsSnippet) ||
525
527
  c.message.length < 12);
526
528
  const moduleMissingFields = new Set();
529
+ let mTotalLogs = 0, mTotalErrors = 0, mActionableErrors = 0, mFieldChecks = 0, mFieldHits = 0;
527
530
  for (const c of calls) {
528
531
  totalLogs += 1;
532
+ mTotalLogs += 1;
529
533
  if (c.level === 'error') {
530
534
  totalErrors += 1;
531
- if (c.actionableError)
535
+ mTotalErrors += 1;
536
+ if (c.actionableError) {
532
537
  actionableErrors += 1;
538
+ mActionableErrors += 1;
539
+ }
533
540
  }
534
541
  const isWarnError = c.level === 'warn' || c.level === 'error' || c.level === 'fatal';
535
542
  const applicableFields = REQUIRED_FIELDS.filter(f => !f.warnErrorOnly || isWarnError);
536
543
  requiredFieldsChecks += applicableFields.length;
544
+ mFieldChecks += applicableFields.length;
537
545
  for (const field of applicableFields) {
538
546
  if (field.re.test(c.argsSnippet)) {
539
547
  requiredFieldsHits += 1;
548
+ mFieldHits += 1;
540
549
  }
541
550
  else {
542
551
  fieldGapCounts[field.name] += 1;
@@ -582,14 +591,21 @@ function computeObservabilityReport(modules, projectRoot) {
582
591
  recommendation,
583
592
  missingFields: Array.from(moduleMissingFields).sort(),
584
593
  noisyMessages,
594
+ featureKeys: module.featureKeys || [],
585
595
  });
586
596
  for (const noisy of noisyCandidates) {
587
597
  const key = (noisy.message || noisy.argsSnippet || '[unknown]').slice(0, 90);
588
598
  noisyMap.set(key, (noisyMap.get(key) || 0) + 1);
589
599
  }
590
- if (calls.some(c => c.level === 'error' || c.level === 'warn')) {
600
+ const hasCritCov = calls.some(c => c.level === 'error' || c.level === 'warn');
601
+ if (hasCritCov) {
591
602
  criticalCoverage.add(module.relativePath);
592
603
  }
604
+ moduleStats.set(module.relativePath, {
605
+ totalLogs: mTotalLogs, noiseLogs: noisyCandidates.length,
606
+ totalErrors: mTotalErrors, actionableErrors: mActionableErrors,
607
+ fieldChecks: mFieldChecks, fieldHits: mFieldHits, hasCritCov,
608
+ });
593
609
  }
594
610
  const classifiedTrash = noiseLogs;
595
611
  const classifiedCritical = actionableErrors;
@@ -659,6 +675,60 @@ function computeObservabilityReport(modules, projectRoot) {
659
675
  structured_completeness: requiredFieldsChecks ? requiredFieldsHits / requiredFieldsChecks : 0,
660
676
  coverage_of_key_flows: criticalCoverage.size / totalSource,
661
677
  };
678
+ // ── Build per-feature observability results ──
679
+ let byFeature;
680
+ if (configFeatures) {
681
+ const sortedCatalog = catalog.sort((a, b) => a.modulePath.localeCompare(b.modulePath));
682
+ // Build module→featureKeys lookup for missingCriticalLogsV2 matching
683
+ const moduleFeatureMap = new Map();
684
+ for (const m of sourceModules)
685
+ moduleFeatureMap.set(m.relativePath, m.featureKeys || []);
686
+ byFeature = Object.entries(configFeatures).map(([key, feat]) => {
687
+ const fCatalog = sortedCatalog.filter(c => c.featureKeys.includes(key));
688
+ const fMissing = missingCriticalLogsV2.filter(m => (moduleFeatureMap.get(m.modulePath) || []).includes(key));
689
+ const fSourceModules = sourceModules.filter(m => (m.featureKeys || []).includes(key));
690
+ // Aggregate from pre-computed per-module stats (no file re-reading)
691
+ let fTotalLogs = 0, fNoiseLogs = 0, fTotalErrors = 0, fActionableErrors = 0;
692
+ let fFieldChecks = 0, fFieldHits = 0;
693
+ let fCritCovCount = 0;
694
+ for (const m of fSourceModules) {
695
+ const s = moduleStats.get(m.relativePath);
696
+ if (!s)
697
+ continue;
698
+ fTotalLogs += s.totalLogs;
699
+ fNoiseLogs += s.noiseLogs;
700
+ fTotalErrors += s.totalErrors;
701
+ fActionableErrors += s.actionableErrors;
702
+ fFieldChecks += s.fieldChecks;
703
+ fFieldHits += s.fieldHits;
704
+ if (s.hasCritCov)
705
+ fCritCovCount++;
706
+ }
707
+ const fTotalSource = fSourceModules.length || 1;
708
+ const fMetrics = {
709
+ noise_ratio: fTotalLogs ? fNoiseLogs / fTotalLogs : 0,
710
+ error_actionability: fTotalErrors ? fActionableErrors / fTotalErrors : 0,
711
+ structured_completeness: fFieldChecks ? fFieldHits / fFieldChecks : 0,
712
+ coverage_of_key_flows: fCritCovCount / fTotalSource,
713
+ };
714
+ const score = Math.round((1 - fMetrics.noise_ratio) * 25 +
715
+ fMetrics.structured_completeness * 25 +
716
+ fMetrics.error_actionability * 25 +
717
+ fMetrics.coverage_of_key_flows * 25);
718
+ return {
719
+ key,
720
+ label: feat.label,
721
+ color: feat.color,
722
+ score,
723
+ metrics: fMetrics,
724
+ catalogCount: fCatalog.length,
725
+ noisyPatternCount: fCatalog.reduce((s, c) => s + c.noisyMessages.length, 0),
726
+ missingCriticalCount: fMissing.length,
727
+ fieldGapCount: fCatalog.reduce((s, c) => s + c.missingFields.length, 0),
728
+ failurePointCount: fMissing.reduce((s, m) => s + m.failurePoints.length, 0),
729
+ };
730
+ });
731
+ }
662
732
  return {
663
733
  catalog: catalog.sort((a, b) => a.modulePath.localeCompare(b.modulePath)),
664
734
  metrics,
@@ -671,6 +741,7 @@ function computeObservabilityReport(modules, projectRoot) {
671
741
  missingCriticalLogs,
672
742
  missingCriticalLogsV2,
673
743
  fieldGaps: fieldGapCounts,
744
+ byFeature,
674
745
  };
675
746
  }
676
747
  function loadCoverageMap(projectRoot) {
@@ -965,7 +1036,7 @@ async function scanProject(projectRoot) {
965
1036
  infraCount: modules.filter(m => m.isInfra).length,
966
1037
  agent: config?.agent,
967
1038
  testRunner,
968
- observability: computeObservabilityReport(modules, projectRoot),
1039
+ observability: computeObservabilityReport(modules, projectRoot, config?.features),
969
1040
  };
970
1041
  }
971
1042
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
@@ -787,6 +787,34 @@
787
787
  .obs-hint-label.before { color: var(--red); }
788
788
  .obs-hint-label.after { color: var(--green); }
789
789
 
790
+ /* ── Progress & baseline delta badges ── */
791
+ .obs-kpi-delta {
792
+ display: block; font-size: 11px; font-weight: 700; margin-top: 2px; letter-spacing: 0.01em;
793
+ }
794
+ .obs-baseline-strip {
795
+ display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
796
+ padding: 4px 12px; background: rgba(255,255,255,0.02);
797
+ border: 1px solid rgba(255,255,255,0.07); border-radius: 6px;
798
+ font-size: 11px; color: var(--dim); margin-bottom: 6px;
799
+ }
800
+ .obs-baseline-strip button {
801
+ background: none; border: none; color: var(--accent); cursor: pointer;
802
+ font-size: 11px; padding: 0 2px; text-decoration: underline; text-underline-offset: 2px;
803
+ }
804
+ .obs-progress-banner {
805
+ display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
806
+ padding: 8px 14px;
807
+ background: rgba(63,185,80,0.07); border: 1px solid rgba(63,185,80,0.2);
808
+ border-radius: 8px; margin-bottom: 8px; font-size: 12px;
809
+ }
810
+ .obs-progress-banner.has-regression {
811
+ background: rgba(248,81,73,0.07); border-color: rgba(248,81,73,0.2);
812
+ }
813
+ .obs-pb-title { color: #3fb950; font-weight: 700; font-size: 13px; flex-shrink: 0; }
814
+ .obs-pb-title.mixed { color: var(--yellow); }
815
+ .obs-pb-item { color: #3fb950; white-space: nowrap; }
816
+ .obs-pb-worse { color: #f85149; white-space: nowrap; }
817
+
790
818
  /* ── Floating selection action bar ── */
791
819
  .obs-floating-bar {
792
820
  position: fixed;
@@ -2330,6 +2358,20 @@ function obsDispatchFloating() {
2330
2358
  bar.classList.remove('visible');
2331
2359
  }
2332
2360
 
2361
+ function obsTimeAgo(ts) {
2362
+ const s = Math.floor((Date.now() - ts) / 1000);
2363
+ if (s < 60) return `${s}с назад`;
2364
+ if (s < 3600) return `${Math.floor(s / 60)} мин назад`;
2365
+ if (s < 86400) return `${Math.floor(s / 3600)}ч назад`;
2366
+ return `${Math.floor(s / 86400)}д назад`;
2367
+ }
2368
+
2369
+ function obsResetBaseline(key) {
2370
+ try { localStorage.removeItem('vr_obs_bl_' + key); } catch(e) {}
2371
+ const c = document.getElementById('content');
2372
+ if (c) renderObservability(c);
2373
+ }
2374
+
2333
2375
  function obsFloatingDismiss() {
2334
2376
  const bar = document.getElementById('obsFloatingBar');
2335
2377
  if (!bar) return;
@@ -2669,22 +2711,126 @@ function renderObservability(c) {
2669
2711
  return;
2670
2712
  }
2671
2713
 
2672
- const noiseRatio = Math.round(o.metrics.noise_ratio * 100);
2673
- const structPct = Math.round(o.metrics.structured_completeness * 100);
2674
- const actionPct = Math.round(o.metrics.error_actionability * 100);
2675
- const coveragePct = Math.round(o.metrics.coverage_of_key_flows * 100);
2714
+ // Feature-based routing (mirrors QA coverage pattern)
2715
+ if (D.hasConfig && D.features && o.byFeature && !drillFeatureKey) {
2716
+ renderObsFeatureCards(c);
2717
+ return;
2718
+ }
2719
+ if (drillFeatureKey) {
2720
+ renderObsFeatureDetail(c);
2721
+ return;
2722
+ }
2723
+
2724
+ renderObsGlobalDetail(c);
2725
+ }
2726
+
2727
+ function renderObsGlobalDetail(c, filterFeatureKey) {
2728
+ const o = D.observability;
2729
+ if (!o) return;
2730
+
2731
+ // If filtering by feature, scope data to that feature's modules
2732
+ let catalog = o.catalog;
2733
+ let missingV2 = o.missingCriticalLogsV2 || [];
2734
+ let topNoisy = o.topNoisyPatterns;
2735
+ let fieldGapsData = o.fieldGaps || {};
2736
+ let metricsData = o.metrics;
2737
+
2738
+ if (filterFeatureKey) {
2739
+ const isUnmapped = filterFeatureKey === '__unmapped__';
2740
+ catalog = o.catalog.filter(ci => isUnmapped ? (!ci.featureKeys || ci.featureKeys.length === 0) : (ci.featureKeys || []).includes(filterFeatureKey));
2741
+ // Build set of module paths in this feature for missingV2 filtering
2742
+ const featureModulePaths = new Set(
2743
+ (D.modules || []).filter(m => {
2744
+ if (isUnmapped) return !m.featureKeys || m.featureKeys.length === 0;
2745
+ return (m.featureKeys || []).includes(filterFeatureKey);
2746
+ }).map(m => m.relativePath)
2747
+ );
2748
+ missingV2 = (o.missingCriticalLogsV2 || []).filter(m => featureModulePaths.has(m.modulePath));
2749
+ // Re-derive noisy patterns from filtered catalog
2750
+ const noisyAgg = new Map();
2751
+ for (const ci of catalog) {
2752
+ for (const nm of (ci.noisyMessages || [])) {
2753
+ noisyAgg.set(nm, (noisyAgg.get(nm) || 0) + 1);
2754
+ }
2755
+ }
2756
+ topNoisy = Array.from(noisyAgg.entries())
2757
+ .sort((a, b) => b[1] - a[1])
2758
+ .slice(0, 8)
2759
+ .map(([pattern, count], i) => ({
2760
+ pattern, count,
2761
+ priority: i < 3 ? 'high' : i < 6 ? 'medium' : 'low',
2762
+ recommendation: count >= 3 ? 'suppress' : 'downgrade level',
2763
+ }));
2764
+ // Re-derive field gaps from filtered catalog
2765
+ fieldGapsData = {};
2766
+ for (const ci of catalog) {
2767
+ for (const f of (ci.missingFields || [])) {
2768
+ fieldGapsData[f] = (fieldGapsData[f] || 0) + 1;
2769
+ }
2770
+ }
2771
+ // Use per-feature metrics if available
2772
+ if (!isUnmapped && o.byFeature) {
2773
+ const bf = o.byFeature.find(f => f.key === filterFeatureKey);
2774
+ if (bf) metricsData = bf.metrics;
2775
+ }
2776
+ }
2777
+
2778
+ const noiseRatio = Math.round(metricsData.noise_ratio * 100);
2779
+ const structPct = Math.round(metricsData.structured_completeness * 100);
2780
+ const actionPct = Math.round(metricsData.error_actionability * 100);
2781
+ const coveragePct = Math.round(metricsData.coverage_of_key_flows * 100);
2676
2782
 
2677
2783
  function metricColor(val, goodThreshold, warnThreshold, invert) {
2678
- // invert=true: higher is worse (noise), invert=false: higher is better (coverage)
2679
2784
  if (invert) return val > warnThreshold ? 'var(--red)' : val > goodThreshold ? 'var(--yellow)' : 'var(--green)';
2680
2785
  return val < warnThreshold ? 'var(--red)' : val < goodThreshold ? 'var(--yellow)' : 'var(--green)';
2681
2786
  }
2682
2787
 
2788
+ // ── Baseline & delta tracking ──
2789
+ const _bsKey = String(D.currentFeatureKey || 'global').replace(/[^a-z0-9_-]/gi, '_');
2790
+ let _bl = null;
2791
+ try { _bl = JSON.parse(localStorage.getItem('vr_obs_bl_' + _bsKey) || 'null'); } catch(e) {}
2792
+
2793
+ // Pre-compute current snapshot values (before tierSections so _d is in scope)
2794
+ const _blCurrMissing = missingV2.length;
2795
+ const _blCurrFPs = missingV2.reduce((s, m) => s + (m.failurePoints || []).length, 0);
2796
+ const _blCurrNoise = topNoisy.length;
2797
+ const _blCurrEnrich = Object.entries(fieldGapsData).filter(([, v]) => v > 0).length;
2798
+ const _blCurrTiers = {};
2799
+ ['critical', 'important', 'normal'].forEach(tier => {
2800
+ const items = missingV2.filter(m => m.riskTier === tier);
2801
+ _blCurrTiers[tier] = { modules: items.length, fps: items.reduce((s, m) => s + (m.failurePoints || []).length, 0) };
2802
+ });
2803
+
2804
+ if (!_bl) {
2805
+ _bl = { ts: Date.now(), noiseRatio, structPct, actionPct, coveragePct,
2806
+ missing: _blCurrMissing, fps: _blCurrFPs, noise: _blCurrNoise, enrich: _blCurrEnrich,
2807
+ tiers: _blCurrTiers };
2808
+ try { localStorage.setItem('vr_obs_bl_' + _bsKey, JSON.stringify(_bl)); } catch(e) {}
2809
+ }
2810
+
2811
+ // Delta badge helpers
2812
+ const _d = (curr, base, invert = false) => {
2813
+ if (base == null || curr === base) return '';
2814
+ const diff = curr - base;
2815
+ const good = invert ? diff > 0 : diff < 0;
2816
+ const color = good ? '#3fb950' : '#f85149';
2817
+ const sign = diff > 0 ? '+' : '';
2818
+ return `<span style="color:${color};font-size:11px;font-weight:700;margin-left:5px">(${sign}${diff})</span>`;
2819
+ };
2820
+ const _dp = (curr, base, invert = false) => {
2821
+ if (base == null || curr === base) return '';
2822
+ const diff = curr - base;
2823
+ const good = invert ? diff > 0 : diff < 0;
2824
+ const color = good ? '#3fb950' : '#f85149';
2825
+ const arrow = good ? '↓' : '↑';
2826
+ return `<span class="obs-kpi-delta" style="color:${color}">${arrow}${Math.abs(diff)}%</span>`;
2827
+ };
2828
+
2683
2829
  const formatLabels = { structured: 'structured', mixed: 'mixed', unstructured: 'unstructured' };
2684
2830
  const sourceByFormat = [
2685
- { label: 'Structured', count: o.catalog.filter(c => c.format === 'structured').length, color: 'var(--green)' },
2686
- { label: 'Mixed', count: o.catalog.filter(c => c.format === 'mixed').length, color: 'var(--yellow)' },
2687
- { label: 'Unstructured', count: o.catalog.filter(c => c.format === 'unstructured').length, color: 'var(--red)' },
2831
+ { label: 'Structured', count: catalog.filter(c => c.format === 'structured').length, color: 'var(--green)' },
2832
+ { label: 'Mixed', count: catalog.filter(c => c.format === 'mixed').length, color: 'var(--yellow)' },
2833
+ { label: 'Unstructured', count: catalog.filter(c => c.format === 'unstructured').length, color: 'var(--red)' },
2688
2834
  ].filter(x => x.count > 0);
2689
2835
 
2690
2836
  const recLabels = {
@@ -2696,9 +2842,9 @@ function renderObservability(c) {
2696
2842
  const hasAgent = !!D.agent;
2697
2843
 
2698
2844
  // Store catalog for buttons to reference by index (avoids inline JSON in onclick)
2699
- window.__obsCatalog = o.catalog;
2845
+ window.__obsCatalog = catalog;
2700
2846
 
2701
- const noisyRows = o.topNoisyPatterns.map(i => {
2847
+ const noisyRows = topNoisy.map(i => {
2702
2848
  const safePattern = escapeHtml(i.pattern).replace(/'/g, '&#39;');
2703
2849
  const btn = hasAgent
2704
2850
  ? `<button class="obs-action-btn" onclick="event.stopPropagation();runAgentTask('obs-suppress-pattern',null,null,null,{pattern:'${safePattern}',recommendation:'${i.recommendation}'})">убрать</button>`
@@ -2713,7 +2859,7 @@ function renderObservability(c) {
2713
2859
  }).join('') || '<div class="obs-sub">Шумных паттернов не обнаружено</div>';
2714
2860
 
2715
2861
  // ── Missing critical logs (V2: grouped by risk tier with failure points) ──
2716
- const v2Data = o.missingCriticalLogsV2 || [];
2862
+ const v2Data = missingV2;
2717
2863
  window.__obsMissingV2 = v2Data;
2718
2864
  const fpTypeLabels = {
2719
2865
  'empty-catch':'пустой catch','catch-no-log':'catch без лога','promise-catch-no-log':'.catch без лога',
@@ -2756,10 +2902,11 @@ function renderObservability(c) {
2756
2902
  <div class="obs-detail-list">${detailItems}</div>
2757
2903
  <div class="obs-detail-bar">${addBtn}</div>
2758
2904
  </div>` : '';
2905
+ const _blTier = _bl?.tiers?.[tier];
2759
2906
  return `<div class="obs-tier-group">
2760
2907
  <div class="obs-tier-group-header">
2761
2908
  <span class="obs-tier-badge obs-tier-${tier}">${tierLabels[tier]}</span>
2762
- <span>${items.length} модулей, ${totalFPs} точек отказа</span>
2909
+ <span>${items.length}${_d(items.length, _blTier?.modules)} модулей, ${totalFPs}${_d(totalFPs, _blTier?.fps)} точек отказа</span>
2763
2910
  ${expandBtn}
2764
2911
  </div>
2765
2912
  ${detail}
@@ -2770,14 +2917,14 @@ function renderObservability(c) {
2770
2917
  missingSection = '<div class="obs-sub" style="color:var(--green)">Критичные сценарии покрыты</div>';
2771
2918
  }
2772
2919
 
2773
- const fieldGaps = o.fieldGaps || {};
2920
+ const fieldGaps = fieldGapsData;
2774
2921
  const fieldGapEntries = Object.entries(fieldGaps).filter(([,v]) => v > 0).sort((a,b) => b[1] - a[1]);
2775
2922
  const fieldGapRows = fieldGapEntries.map(([name, count]) => {
2776
2923
  const groupId = 'field-' + name.replace(/[^a-z0-9]/gi, '_');
2777
- const affectedItems = o.catalog.filter(c => (c.missingFields||[]).includes(name));
2924
+ const affectedItems = catalog.filter(c => (c.missingFields||[]).includes(name));
2778
2925
  const expandBtn = hasAgent ? `<button class="obs-expand-btn" onclick="event.stopPropagation();toggleObsDetail('${groupId}')">▼</button>` : '';
2779
2926
  const detailItems = affectedItems.map(ci => {
2780
- const catIdx = o.catalog.indexOf(ci);
2927
+ const catIdx = catalog.indexOf(ci);
2781
2928
  return `<label class="obs-detail-item"><input type="checkbox" data-idx="${catIdx}" onchange="obsUpdateSelectedCount('${groupId}')"><span title="${escapeHtml(ci.modulePath)}">${escapeHtml(ci.modulePath.split('/').slice(-2).join('/'))}</span><span style="color:var(--dim);flex-shrink:0">${ci.format}</span></label>`;
2782
2929
  }).join('');
2783
2930
  const detail = hasAgent ? `
@@ -2800,7 +2947,7 @@ function renderObservability(c) {
2800
2947
  </div>`;
2801
2948
  }).join('') || '<div class="obs-sub" style="color:var(--green)">Все обязательные поля на месте</div>';
2802
2949
 
2803
- const catalogRows = o.catalog.map((i, idx) => {
2950
+ const catalogRows = catalog.map((i, idx) => {
2804
2951
  const missing = (i.missingFields || []);
2805
2952
  const missingStr = missing.length ? missing.join(', ') : '—';
2806
2953
  const btn = hasAgent
@@ -2817,32 +2964,82 @@ function renderObservability(c) {
2817
2964
  ${btn}
2818
2965
  </div>`}).join('');
2819
2966
 
2820
- const noisyCount = o.topNoisyPatterns.length;
2967
+ const noisyCount = topNoisy.length;
2821
2968
  const missingCount = v2Data.length;
2822
2969
  const enrichCount = fieldGapEntries.length;
2823
- const catalogCount = o.catalog.length;
2970
+ const catalogCount = catalog.length;
2971
+
2972
+ // ── Build progress banner comparing to baseline ──
2973
+ const _blItems = [];
2974
+ if (_bl.missing != null && missingCount !== _bl.missing)
2975
+ _blItems.push({ label: `модулей без логов: ${_bl.missing} → ${missingCount}`, good: missingCount < _bl.missing });
2976
+ if (_bl.fps != null && _blCurrFPs !== _bl.fps)
2977
+ _blItems.push({ label: `точек отказа: ${_bl.fps} → ${_blCurrFPs}`, good: _blCurrFPs < _bl.fps });
2978
+ if (_bl.noise != null && noisyCount !== _bl.noise)
2979
+ _blItems.push({ label: `шумных паттернов: ${_bl.noise} → ${noisyCount}`, good: noisyCount < _bl.noise });
2980
+ if (_bl.enrich != null && enrichCount !== _bl.enrich)
2981
+ _blItems.push({ label: `нужно обогатить: ${_bl.enrich} → ${enrichCount}`, good: enrichCount < _bl.enrich });
2982
+
2983
+ const _hasReg = _blItems.some(x => !x.good);
2984
+ const _hasImp = _blItems.some(x => x.good);
2985
+ const _progressBanner = _blItems.length ? `
2986
+ <div class="obs-progress-banner${_hasReg ? ' has-regression' : ''}">
2987
+ <span class="obs-pb-title${_hasReg && _hasImp ? ' mixed' : _hasReg ? ' obs-pb-worse' : ''}">📊 прогресс</span>
2988
+ ${_blItems.map(it => `<span class="${it.good ? 'obs-pb-item' : 'obs-pb-worse'}">${it.good ? '✅' : '⚠️'} ${it.label}</span>`).join('')}
2989
+ </div>` : '';
2990
+
2991
+ const _baselineStrip = `
2992
+ <div class="obs-baseline-strip">
2993
+ <span>📍 baseline: ${obsTimeAgo(_bl.ts)}</span>
2994
+ <button onclick="obsResetBaseline('${_bsKey}')">обновить</button>
2995
+ </div>`;
2996
+
2997
+ // Feature drill-down header
2998
+ const _featureHeader = filterFeatureKey ? (() => {
2999
+ const isUnmapped = filterFeatureKey === '__unmapped__';
3000
+ const bf = !isUnmapped && o.byFeature ? o.byFeature.find(f => f.key === filterFeatureKey) : null;
3001
+ const label = isUnmapped ? 'Unmapped' : (bf ? bf.label : filterFeatureKey);
3002
+ const color = isUnmapped ? '#e3b341' : (bf ? bf.color : '#484f58');
3003
+ const score = bf ? bf.score : null;
3004
+ return `<div class="feature-detail-header">
3005
+ <button class="back-btn" onclick="setFeatureDrill(null)">← Все фичи</button>
3006
+ <span class="feature-detail-name">
3007
+ <span class="feature-dot" style="background:${color}"></span>
3008
+ ${escapeHtml(label)}
3009
+ </span>
3010
+ ${score != null ? `<span style="font-size:20px;font-weight:700;color:${covColor(score)}">${score}%</span>` : ''}
3011
+ </div>`;
3012
+ })() : '';
2824
3013
 
2825
3014
  c.innerHTML = `
2826
- <div class="onboarding-block">
3015
+ ${_featureHeader}
3016
+ ${!filterFeatureKey ? `<div class="onboarding-block">
2827
3017
  <h3>Наблюдаемость: что это?</h3>
2828
3018
  <p>Аудит покрытия логами: что добавить, что убрать, что обогатить — на основе статического анализа лог-вызовов.</p>
2829
- </div>
3019
+ </div>` : ''}
3020
+
3021
+ ${_progressBanner}
3022
+ ${_baselineStrip}
2830
3023
 
2831
3024
  <div class="obs-kpi-strip">
2832
3025
  <div class="obs-kpi">
2833
3026
  <span class="obs-kpi-value" style="color:${metricColor(noiseRatio,10,30,true)}">${noiseRatio}%</span>
3027
+ ${_dp(noiseRatio, _bl?.noiseRatio, true)}
2834
3028
  <span class="obs-kpi-label">Шум</span>
2835
3029
  </div>
2836
3030
  <div class="obs-kpi">
2837
3031
  <span class="obs-kpi-value" style="color:${metricColor(structPct,80,50,false)}">${structPct}%</span>
3032
+ ${_dp(structPct, _bl?.structPct)}
2838
3033
  <span class="obs-kpi-label">Структурированность</span>
2839
3034
  </div>
2840
3035
  <div class="obs-kpi">
2841
3036
  <span class="obs-kpi-value" style="color:${metricColor(actionPct,80,50,false)}">${actionPct}%</span>
3037
+ ${_dp(actionPct, _bl?.actionPct)}
2842
3038
  <span class="obs-kpi-label">Actionable ошибки</span>
2843
3039
  </div>
2844
3040
  <div class="obs-kpi">
2845
3041
  <span class="obs-kpi-value" style="color:${metricColor(coveragePct,80,50,false)}">${coveragePct}%</span>
3042
+ ${_dp(coveragePct, _bl?.coveragePct)}
2846
3043
  <span class="obs-kpi-label">Покрытие сценариев</span>
2847
3044
  </div>
2848
3045
  </div>
@@ -2908,12 +3105,12 @@ function renderObservability(c) {
2908
3105
  <div class="obs-title">Рекомендации</div>
2909
3106
  <div class="obs-list" style="gap:2px">
2910
3107
  ${['suppress','enrich fields','add event','downgrade level'].map(rec => {
2911
- const items = o.catalog.filter(c => c.recommendation === rec);
3108
+ const items = catalog.filter(c => c.recommendation === rec);
2912
3109
  if (!items.length) return '';
2913
3110
  const groupId = 'rec-' + rec.replace(/\s+/g, '-');
2914
3111
  const expandBtn = hasAgent ? `<button class="obs-expand-btn" onclick="event.stopPropagation();toggleObsDetail('${groupId}')">▼</button>` : '';
2915
3112
  const detailItems = items.map((ci, i) => {
2916
- const catIdx = o.catalog.indexOf(ci);
3113
+ const catIdx = catalog.indexOf(ci);
2917
3114
  const mf = (ci.missingFields||[]).join(', ') || '—';
2918
3115
  return `<label class="obs-detail-item"><input type="checkbox" data-idx="${catIdx}" onchange="obsUpdateSelectedCount('${groupId}')"><span title="${escapeHtml(ci.modulePath)}">${escapeHtml(ci.modulePath.split('/').slice(-2).join('/'))}</span><span style="color:var(--dim);flex-shrink:0">${ci.format}</span></label>`;
2919
3116
  }).join('');
@@ -3139,6 +3336,127 @@ function renderObservability(c) {
3139
3336
  switchObsTab(obsActiveTab);
3140
3337
  }
3141
3338
 
3339
+ function renderObsFeatureDetail(c) {
3340
+ D.currentFeatureKey = drillFeatureKey;
3341
+ renderObsGlobalDetail(c, drillFeatureKey);
3342
+ }
3343
+
3344
+ function renderObsFeatureCards(c) {
3345
+ const o = D.observability;
3346
+ if (!o || !o.byFeature) return;
3347
+
3348
+ const q = searchQuery.toLowerCase();
3349
+ const list = o.byFeature.filter(f =>
3350
+ !q || f.label.toLowerCase().includes(q) || f.key.toLowerCase().includes(q)
3351
+ );
3352
+
3353
+ // Global KPI strip (compact)
3354
+ const gNoiseRatio = Math.round(o.metrics.noise_ratio * 100);
3355
+ const gStructPct = Math.round(o.metrics.structured_completeness * 100);
3356
+ const gActionPct = Math.round(o.metrics.error_actionability * 100);
3357
+ const gCoveragePct = Math.round(o.metrics.coverage_of_key_flows * 100);
3358
+ function mc(val, good, warn, inv) {
3359
+ if (inv) return val > warn ? 'var(--red)' : val > good ? 'var(--yellow)' : 'var(--green)';
3360
+ return val < warn ? 'var(--red)' : val < good ? 'var(--yellow)' : 'var(--green)';
3361
+ }
3362
+
3363
+ const globalStrip = `
3364
+ <div class="obs-kpi-strip" style="margin-bottom:16px">
3365
+ <div class="obs-kpi"><span class="obs-kpi-value" style="color:${mc(gNoiseRatio,10,30,true)}">${gNoiseRatio}%</span><span class="obs-kpi-label">Шум</span></div>
3366
+ <div class="obs-kpi"><span class="obs-kpi-value" style="color:${mc(gStructPct,80,50,false)}">${gStructPct}%</span><span class="obs-kpi-label">Структ.</span></div>
3367
+ <div class="obs-kpi"><span class="obs-kpi-value" style="color:${mc(gActionPct,80,50,false)}">${gActionPct}%</span><span class="obs-kpi-label">Actionable</span></div>
3368
+ <div class="obs-kpi"><span class="obs-kpi-value" style="color:${mc(gCoveragePct,80,50,false)}">${gCoveragePct}%</span><span class="obs-kpi-label">Покрытие</span></div>
3369
+ </div>`;
3370
+
3371
+ c.innerHTML = globalStrip + '<div class="features-grid" id="obsGrid"></div>';
3372
+ const grid = document.getElementById('obsGrid');
3373
+
3374
+ list.forEach(f => {
3375
+ const card = document.createElement('div');
3376
+ card.className = 'feature-card';
3377
+
3378
+ // Per-feature baseline
3379
+ const bsKey = String(f.key).replace(/[^a-z0-9_-]/gi, '_');
3380
+ let bl = null;
3381
+ try { bl = JSON.parse(localStorage.getItem('vr_obs_bl_' + bsKey) || 'null'); } catch(e) {}
3382
+ const scoreDelta = bl && bl.score != null && f.score !== bl.score
3383
+ ? (() => {
3384
+ const diff = f.score - bl.score;
3385
+ const good = diff > 0;
3386
+ const color = good ? '#3fb950' : '#f85149';
3387
+ const sign = diff > 0 ? '+' : '';
3388
+ return `<span style="color:${color};font-size:11px;font-weight:700;margin-left:4px">(${sign}${diff})</span>`;
3389
+ })() : '';
3390
+
3391
+ // Mini KPI
3392
+ const n = Math.round(f.metrics.noise_ratio * 100);
3393
+ const s = Math.round(f.metrics.structured_completeness * 100);
3394
+ const a = Math.round(f.metrics.error_actionability * 100);
3395
+ const cv = Math.round(f.metrics.coverage_of_key_flows * 100);
3396
+
3397
+ // Issue counts for badges
3398
+ const issues = f.noisyPatternCount + f.missingCriticalCount + f.fieldGapCount;
3399
+
3400
+ card.innerHTML = `
3401
+ <div class="feature-accent" style="background:${f.color}"></div>
3402
+ <div class="feature-body">
3403
+ <div class="feature-title">
3404
+ <span>${escapeHtml(f.label)}</span>
3405
+ <span class="feature-file-count">${f.catalogCount} лог-модулей</span>
3406
+ </div>
3407
+ <div style="display:flex;align-items:center;gap:8px;margin-bottom:10px">
3408
+ <span style="font-size:24px;font-weight:700;line-height:1;color:${covColor(f.score)}">${f.score}%</span>
3409
+ ${scoreDelta}
3410
+ <div style="flex:1">
3411
+ <div style="font-size:10px;color:var(--muted);margin-bottom:3px;text-transform:uppercase;letter-spacing:0.4px">Observability Score</div>
3412
+ <div style="height:4px;background:var(--border);border-radius:2px;overflow:hidden">
3413
+ <div style="width:${f.score}%;height:100%;background:${covColor(f.score)};border-radius:2px;transition:width 0.4s"></div>
3414
+ </div>
3415
+ </div>
3416
+ </div>
3417
+ <div style="display:flex;gap:12px;font-size:11px;color:var(--dim);margin-bottom:8px">
3418
+ <span title="Шум">🔇 <span style="color:${mc(n,10,30,true)}">${n}%</span></span>
3419
+ <span title="Структурированность">📋 <span style="color:${mc(s,80,50,false)}">${s}%</span></span>
3420
+ <span title="Actionable ошибки">🎯 <span style="color:${mc(a,80,50,false)}">${a}%</span></span>
3421
+ <span title="Покрытие сценариев">🛡️ <span style="color:${mc(cv,80,50,false)}">${cv}%</span></span>
3422
+ </div>
3423
+ ${issues > 0 ? `<div style="font-size:11px;color:var(--muted)">
3424
+ ${f.noisyPatternCount ? `<span style="color:var(--red)">${f.noisyPatternCount} шум</span> ` : ''}
3425
+ ${f.missingCriticalCount ? `<span style="color:var(--yellow)">${f.missingCriticalCount} без логов</span> ` : ''}
3426
+ ${f.failurePointCount ? `<span style="color:var(--yellow)">${f.failurePointCount} точек отказа</span> ` : ''}
3427
+ ${f.fieldGapCount ? `<span style="color:var(--muted)">${f.fieldGapCount} пробелов</span>` : ''}
3428
+ </div>` : '<div style="font-size:11px;color:var(--green)">Всё ок</div>'}
3429
+ </div>`;
3430
+
3431
+ card.onclick = () => setFeatureDrill(f.key);
3432
+ card.onmousedown = (e) => { if (e.button === 1) e.preventDefault(); };
3433
+ card.onauxclick = (e) => {
3434
+ if (e.button !== 1) return;
3435
+ e.preventDefault();
3436
+ openFeatureInNewTab(f.key);
3437
+ };
3438
+ grid.appendChild(card);
3439
+ });
3440
+
3441
+ // Unmapped card
3442
+ const unmappedCatalog = o.catalog.filter(ci => !ci.featureKeys || ci.featureKeys.length === 0);
3443
+ if (unmappedCatalog.length > 0) {
3444
+ const uCard = document.createElement('div');
3445
+ uCard.className = 'feature-card unmapped-card';
3446
+ uCard.innerHTML = `
3447
+ <div class="feature-accent" style="background:#e3b341"></div>
3448
+ <div class="feature-body">
3449
+ <div class="feature-title">
3450
+ <span>Unmapped</span>
3451
+ <span class="feature-file-count">${unmappedCatalog.length} лог-модулей</span>
3452
+ </div>
3453
+ <div style="font-size:12px;color:var(--dim);margin-top:4px">Модули с логами, не привязанные к фичам</div>
3454
+ </div>`;
3455
+ uCard.onclick = () => setFeatureDrill('__unmapped__');
3456
+ grid.appendChild(uCard);
3457
+ }
3458
+ }
3459
+
3142
3460
  function backToFeatureDetail() {
3143
3461
  drillTestType = null;
3144
3462
  activePanelKey = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viberadar",
3
- "version": "0.3.79",
3
+ "version": "0.3.81",
4
4
  "description": "Live module map with test coverage for vibecoding projects",
5
5
  "main": "./dist/cli.js",
6
6
  "bin": {