Skip to content

Commit 6191d2f

Browse files
jeremymanningclaude
andcommitted
Issue #314: Complete Stream C - Quality Reporting & Analytics System
- Implement comprehensive metrics collection with time-series data management - Build analytics engine with trend analysis and actionable insights generation - Create alerting system with multi-channel notifications and threshold monitoring - Develop quality dashboard with real-time visualization and web interface - Add quality thresholds configuration for all quality control components - Create extensive test suites covering all reporting system functionality Components implemented: - src/orchestrator/quality/reporting/metrics.py - Quality metrics collection and aggregation - src/orchestrator/quality/reporting/analytics.py - Trend analysis and insights engine - src/orchestrator/quality/reporting/alerts.py - Alerting system with notification channels - src/orchestrator/quality/reporting/dashboard.py - Web-based quality monitoring dashboard - config/quality/quality_thresholds.yaml - Comprehensive thresholds configuration - Complete test coverage for all reporting components Integration points: ✅ Uses validation data from completed Stream A ✅ Uses logging infrastructure from completed Stream B ✅ Provides actionable insights for quality improvement ✅ Supports real-time monitoring and alerting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent a09de2d commit 6191d2f

File tree

11 files changed

+6825
-0
lines changed

11 files changed

+6825
-0
lines changed
Lines changed: 337 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,337 @@
1+
# Quality Control Thresholds Configuration
2+
#
3+
# This configuration defines quality thresholds for alerting, analytics, and
4+
# dashboard visualizations. Thresholds are used by the reporting system to
5+
# trigger alerts, generate insights, and provide quality scoring.
6+
7+
# Global quality thresholds
8+
quality_thresholds:
9+
# Overall quality score thresholds (0-100)
10+
quality_score:
11+
excellent: 90.0 # Green indicator
12+
good: 75.0 # Yellow indicator
13+
fair: 60.0 # Orange indicator
14+
poor: 40.0 # Red indicator
15+
critical: 25.0 # Critical alert threshold
16+
17+
# Validation success rate thresholds (0.0-1.0)
18+
success_rate:
19+
excellent: 0.98 # 98% success rate
20+
good: 0.95 # 95% success rate
21+
warning: 0.90 # 90% warning threshold
22+
critical: 0.75 # 75% critical threshold
23+
24+
# Violation rate thresholds (violations per validation session)
25+
violation_rate:
26+
low: 0.05 # 5% violation rate is acceptable
27+
moderate: 0.10 # 10% violation rate warning
28+
high: 0.20 # 20% violation rate error
29+
critical: 0.35 # 35% violation rate critical
30+
31+
# Performance thresholds
32+
performance:
33+
# Validation execution time (milliseconds)
34+
execution_time_ms:
35+
fast: 1000 # Under 1 second is fast
36+
acceptable: 5000 # Under 5 seconds is acceptable
37+
slow: 15000 # Over 15 seconds is slow
38+
critical: 30000 # Over 30 seconds is critical
39+
40+
# Memory usage (MB)
41+
memory_usage_mb:
42+
low: 256 # Under 256MB is low
43+
normal: 512 # Under 512MB is normal
44+
high: 1024 # Under 1GB is high
45+
critical: 2048 # Over 2GB is critical
46+
47+
# Severity-specific thresholds
48+
severity_thresholds:
49+
critical:
50+
# Critical violations per session
51+
max_critical_violations: 1
52+
# Critical quality score threshold
53+
min_quality_score: 25.0
54+
# Critical success rate threshold
55+
min_success_rate: 0.50
56+
57+
error:
58+
# Error violations per session
59+
max_error_violations: 5
60+
# Error quality score threshold
61+
min_quality_score: 40.0
62+
# Error success rate threshold
63+
min_success_rate: 0.75
64+
65+
warning:
66+
# Warning violations per session
67+
max_warning_violations: 10
68+
# Warning quality score threshold
69+
min_quality_score: 60.0
70+
# Warning success rate threshold
71+
min_success_rate: 0.85
72+
73+
info:
74+
# Info violations per session (high tolerance)
75+
max_info_violations: 50
76+
# Info quality score threshold
77+
min_quality_score: 75.0
78+
79+
# Category-specific thresholds
80+
category_thresholds:
81+
content:
82+
# Content-related quality thresholds
83+
min_quality_score: 70.0
84+
max_violations_per_session: 15
85+
performance_threshold_ms: 10000
86+
87+
format:
88+
# Format validation thresholds
89+
min_quality_score: 85.0
90+
max_violations_per_session: 5
91+
performance_threshold_ms: 5000
92+
93+
structure:
94+
# Structure validation thresholds
95+
min_quality_score: 90.0
96+
max_violations_per_session: 3
97+
performance_threshold_ms: 3000
98+
99+
security:
100+
# Security validation thresholds (strict)
101+
min_quality_score: 95.0
102+
max_violations_per_session: 1
103+
performance_threshold_ms: 8000
104+
105+
compliance:
106+
# Compliance validation thresholds (strict)
107+
min_quality_score: 95.0
108+
max_violations_per_session: 2
109+
performance_threshold_ms: 10000
110+
111+
performance:
112+
# Performance validation thresholds
113+
min_quality_score: 80.0
114+
max_violations_per_session: 8
115+
performance_threshold_ms: 2000
116+
117+
# Rule-specific thresholds
118+
rule_thresholds:
119+
file_size_limit:
120+
# File size validation thresholds
121+
warning_threshold: 0.8 # 80% of max size
122+
error_threshold: 0.95 # 95% of max size
123+
max_execution_time_ms: 1000
124+
125+
content_quality:
126+
# Content quality thresholds
127+
min_score_warning: 70.0
128+
min_score_error: 50.0
129+
max_execution_time_ms: 15000
130+
131+
content_format:
132+
# Content format thresholds
133+
min_score_warning: 85.0
134+
min_score_error: 70.0
135+
max_execution_time_ms: 5000
136+
137+
performance_metrics:
138+
# Performance metrics thresholds
139+
max_memory_warning_mb: 1024
140+
max_memory_error_mb: 2048
141+
max_time_warning_ms: 10000
142+
max_time_error_ms: 30000
143+
144+
# Trend analysis thresholds
145+
trend_thresholds:
146+
# Percentage change thresholds for trend detection
147+
significant_change_percent: 10.0 # 10% change is significant
148+
major_change_percent: 25.0 # 25% change is major
149+
critical_change_percent: 50.0 # 50% change is critical
150+
151+
# Time windows for trend analysis (hours)
152+
short_term_window: 1 # 1 hour for immediate trends
153+
medium_term_window: 24 # 24 hours for daily trends
154+
long_term_window: 168 # 1 week for weekly trends
155+
156+
# Confidence thresholds for trend reporting
157+
min_trend_confidence: 0.7 # 70% confidence minimum
158+
high_confidence_threshold: 0.9 # 90% confidence for high confidence
159+
160+
# Volatility thresholds (standard deviation / mean)
161+
low_volatility: 0.1 # 10% volatility is low
162+
moderate_volatility: 0.3 # 30% volatility is moderate
163+
high_volatility: 0.5 # 50% volatility is high
164+
165+
# Alerting thresholds
166+
alert_thresholds:
167+
# Rate limiting
168+
max_alerts_per_hour: 10
169+
max_alerts_per_day: 50
170+
171+
# Cooldown periods (seconds)
172+
info_cooldown: 300 # 5 minutes
173+
warning_cooldown: 600 # 10 minutes
174+
error_cooldown: 900 # 15 minutes
175+
critical_cooldown: 1800 # 30 minutes
176+
177+
# Escalation thresholds
178+
escalation_after_alerts: 3 # Escalate after 3 alerts
179+
escalation_time_window_minutes: 60 # Within 1 hour
180+
181+
# Suppression thresholds
182+
auto_suppress_after_count: 20 # Auto-suppress after 20 alerts
183+
auto_suppress_duration_hours: 4 # Suppress for 4 hours
184+
185+
# Dashboard visualization thresholds
186+
dashboard_thresholds:
187+
# Color coding thresholds for visualizations
188+
gauge_colors:
189+
red_threshold: 40.0 # Below 40% is red
190+
yellow_threshold: 75.0 # Below 75% is yellow
191+
green_threshold: 90.0 # Above 90% is green
192+
193+
# Chart display thresholds
194+
max_data_points: 1000 # Maximum points to display on charts
195+
max_table_rows: 100 # Maximum rows in data tables
196+
197+
# Refresh intervals (seconds)
198+
fast_refresh: 10 # Fast refresh for critical metrics
199+
normal_refresh: 30 # Normal refresh interval
200+
slow_refresh: 300 # Slow refresh for historical data
201+
202+
# Widget thresholds
203+
max_alerts_display: 20 # Maximum alerts to display
204+
max_insights_display: 10 # Maximum insights to display
205+
max_trends_display: 15 # Maximum trends to display
206+
207+
# Environment-specific threshold overrides
208+
environment_overrides:
209+
development:
210+
# Relaxed thresholds for development
211+
quality_thresholds:
212+
quality_score:
213+
good: 60.0 # Lower bar for development
214+
fair: 45.0
215+
critical: 20.0
216+
violation_rate:
217+
moderate: 0.20 # Allow more violations in dev
218+
high: 0.35
219+
critical: 0.50
220+
alert_thresholds:
221+
max_alerts_per_hour: 20 # More alerts allowed in dev
222+
223+
staging:
224+
# Moderate thresholds for staging
225+
quality_thresholds:
226+
quality_score:
227+
good: 70.0 # Moderate bar for staging
228+
fair: 55.0
229+
critical: 30.0
230+
violation_rate:
231+
moderate: 0.15 # Moderate violations in staging
232+
high: 0.25
233+
critical: 0.40
234+
235+
production:
236+
# Strict thresholds for production
237+
quality_thresholds:
238+
quality_score:
239+
excellent: 95.0 # Higher bar for production
240+
good: 85.0
241+
fair: 70.0
242+
critical: 40.0
243+
violation_rate:
244+
low: 0.03 # Stricter violation rates
245+
moderate: 0.05
246+
high: 0.10
247+
critical: 0.20
248+
alert_thresholds:
249+
max_alerts_per_hour: 5 # Fewer alerts in production
250+
escalation_after_alerts: 2 # Faster escalation
251+
252+
# Pipeline-specific threshold overrides
253+
pipeline_overrides:
254+
data_processing:
255+
# Data processing pipelines may have different requirements
256+
performance:
257+
execution_time_ms:
258+
acceptable: 30000 # Allow longer execution for data processing
259+
slow: 60000
260+
critical: 120000
261+
quality_thresholds:
262+
quality_score:
263+
good: 80.0 # Higher quality bar for data
264+
265+
model_training:
266+
# Model training pipelines have different performance characteristics
267+
performance:
268+
execution_time_ms:
269+
acceptable: 300000 # 5 minutes acceptable for training
270+
slow: 1800000 # 30 minutes is slow
271+
critical: 3600000 # 1 hour is critical
272+
memory_usage_mb:
273+
normal: 4096 # 4GB normal for model training
274+
high: 8192 # 8GB is high
275+
critical: 16384 # 16GB is critical
276+
277+
documentation:
278+
# Documentation pipelines focus on content quality
279+
category_thresholds:
280+
content:
281+
min_quality_score: 85.0 # High content quality required
282+
max_violations_per_session: 5
283+
structure:
284+
min_quality_score: 90.0 # Well-structured docs required
285+
286+
api_integration:
287+
# API integration pipelines focus on reliability
288+
quality_thresholds:
289+
success_rate:
290+
excellent: 0.999 # 99.9% success rate target
291+
good: 0.995 # 99.5% success rate minimum
292+
warning: 0.99 # 99% warning threshold
293+
critical: 0.95 # 95% critical threshold
294+
295+
# Notification channel thresholds
296+
notification_thresholds:
297+
email:
298+
# Email notification thresholds
299+
min_severity: "warning" # Only warning and above via email
300+
max_notifications_per_hour: 5 # Rate limit email notifications
301+
302+
slack:
303+
# Slack notification thresholds
304+
min_severity: "error" # Only error and above via Slack
305+
max_notifications_per_hour: 10 # Rate limit Slack notifications
306+
307+
sms:
308+
# SMS notification thresholds (critical only)
309+
min_severity: "critical" # Only critical via SMS
310+
max_notifications_per_day: 5 # Strict rate limiting for SMS
311+
312+
webhook:
313+
# Webhook notification thresholds
314+
min_severity: "info" # All severities via webhook
315+
max_notifications_per_hour: 50 # Higher rate limit for webhooks
316+
317+
dashboard:
318+
# Dashboard notification thresholds
319+
min_severity: "info" # Show all severities on dashboard
320+
max_notifications_displayed: 100 # Limit dashboard display
321+
322+
# Integration thresholds
323+
integration_thresholds:
324+
# Metrics collector integration
325+
metrics_collection:
326+
max_collection_errors_per_hour: 10 # Alert if collection failing
327+
max_collection_duration_ms: 5000 # Alert if collection too slow
328+
329+
# Analytics integration
330+
analytics_processing:
331+
max_analysis_duration_minutes: 30 # Alert if analysis too slow
332+
min_data_points_for_trends: 10 # Minimum data for trend analysis
333+
334+
# External monitoring integration
335+
external_monitoring:
336+
heartbeat_interval_minutes: 5 # Send heartbeat every 5 minutes
337+
max_missed_heartbeats: 3 # Alert after 3 missed heartbeats

0 commit comments

Comments
 (0)