Files
airport-wiki/concepts/knowledge-management/quality-control.md
T
2026-04-15 14:48:14 +08:00

18 KiB
Raw Blame History

title, created, updated, type, tags, confidence, sources_count, last_confirmed, status, relationships
title created updated type tags confidence sources_count last_confirmed status relationships
质量控制与自我纠正机制 2026-04-13 2026-04-13 concept
knowledge-management
quality-control
self-correction
validation
0.9 4 2026-04-13 active
target type detail confidence
automation-hooks.md integrates-with 质量检查触发事件 0.95
target type detail confidence
knowledge-management/knowledge-lifecycle.md informs 置信度评估依据 0.9
target type detail confidence
knowledge-management/knowledge-graph.md validates 关系一致性检查 0.85
target type detail confidence
hybrid-search.md improves 搜索结果质量提升 0.8

🔍 质量控制与自我纠正机制

为机场智能化 wiki 建立多层次质量验证自动纠错系统,确保技术参数准确、内容一致、关系完整。通过规则检查、语义验证和用户反馈,实现持续质量改进。

质量目标:零技术参数错误,内容一致性 >95%,关系完整性 >90%,用户满意度 >85%。


🏗️ 质量框架层次

层次 1: 语法与格式检查 (Syntax & Format)

检查项 规则 自动修复 严重性
Markdown 语法 链接格式、标题层级、列表 自动修复
YAML 前端元数据 必需字段、类型验证 自动修复
文件命名规范 小写、连字符、无空格 自动修复
编码与换行 UTF-8, LF 换行 自动修复

层次 2: 内容一致性检查 (Content Consistency)

检查项 规则 自动修复 严重性
技术参数一致性 同一参数多源一致 ⚠️ 标记冲突
单位统一性 kW vs MW, GB vs GiB 自动转换
术语标准化 统一技术术语 建议替换
日期格式 ISO 8601 标准 自动转换

层次 3: 语义与逻辑检查 (Semantic & Logic)

检查项 规则 自动修复 严重性
事实冲突检测 矛盾陈述识别 人工审核
因果关系验证 逻辑链完整性 ⚠️ 标记缺失
数值合理性 功率/容量范围检查 ⚠️ 标记异常
时间线一致性 事件顺序验证 ⚠️ 标记矛盾

层次 4: 关系完整性检查 (Relationship Integrity)

检查项 规则 自动修复 严重性
死链检测 内部链接有效性 自动修复
孤立页面 无入链页面识别 ⚠️ 标记孤立
循环引用 循环依赖检测 ⚠️ 标记循环
关系对称性 双向关系验证 自动修复

🔧 自动检查规则库

技术参数验证规则

TECHNICAL_RULES = {
    "power_consumption": {
        "pattern": r"(\d+(?:\.\d+)?)\s*(kW|MW|W)",
        "validation": lambda value, unit: (
            # 数据中心功率范围检查
            if unit == "MW" and value > 100:
                return False, "数据中心功率超过100MW需验证"
            elif unit == "kW" and value < 1:
                return False, "功率低于1kW可能错误"
            else:
                return True, ""
        ),
        "auto_correct": lambda value, unit: (
            # 自动单位转换 kW → MW
            if unit == "kW" and value >= 1000:
                return f"{value/1000:.2f} MW"
            else:
                return None
        )
    },
    
    "temperature_range": {
        "pattern": r"(\d+(?:\.\d+)?)\s*°?[CF]",
        "validation": lambda value, unit: (
            # 数据中心温度范围检查
            if unit == "C" and (value < 18 or value > 27):
                return False, "数据中心温度超出推荐范围 (18-27°C)"
            elif unit == "F" and (value < 64 or value > 81):
                return False, "数据中心温度超出推荐范围 (64-81°F)"
            else:
                return True, ""
        ),
        "auto_correct": lambda value, unit: (
            # 温度单位转换
            if unit == "F":
                return f"{(value-32)*5/9:.1f}°C"
            else:
                return None
        )
    },
    
    "rack_power_density": {
        "pattern": r"(\d+(?:\.\d+)?)\s*(kW/rack|kW per rack)",
        "validation": lambda value, unit: (
            # 机架功率密度检查
            if value > 50:
                return False, "机架功率密度超过50kW/rack需液冷"
            elif value < 1:
                return False, "机架功率密度低于1kW/rack可能错误"
            else:
                return True, ""
        )
    }
}

一致性检查规则

CONSISTENCY_RULES = {
    "vendor_product_names": {
        "mappings": {
            "NVIDIA": ["nvidia", "Nvidia", "NVIDIA Corporation"],
            "Intel": ["intel", "Intel Corporation", "Intel Corp"],
            "华为": ["Huawei", "huawei", "华为技术有限公司"],
            "曙光": ["Sugon", "曙光信息", "中科曙光"]
        },
        "action": "standardize"  # 标准化为规范名称
    },
    
    "date_formats": {
        "patterns": [
            r"\d{4}-\d{2}-\d{2}",  # ISO 8601
            r"\d{2}/\d{2}/\d{4}",   # MM/DD/YYYY
            r"\d{4}年\d{1,2}月\d{1,2}日"  # 中文日期
        ],
        "target_format": "%Y-%m-%d",  # 统一为 ISO 8601
        "action": "convert"
    },
    
    "capacity_units": {
        "mappings": {
            "GB": ["gb", "gigabyte", "gigabytes"],
            "TB": ["tb", "terabyte", "terabytes"],
            "PB": ["pb", "petabyte", "petabytes"],
            "GiB": ["gib", "gibibyte"],
            "TiB": ["tib", "tebibyte"]
        },
        "action": "standardize"
    }
}

🛠️ 自我纠正机制

1. 自动修复流程

def auto_correction_pipeline(content: str) -> Tuple[str, List[Correction]]:
    """
    自动纠正管道:多层修复策略
    返回: (修正后内容, 修正记录列表)
    """
    corrections = []
    
    # 第1层:语法修复
    content, syntax_fixes = fix_markdown_syntax(content)
    corrections.extend(syntax_fixes)
    
    # 第2层:格式修复
    content, format_fixes = fix_yaml_frontmatter(content)
    corrections.extend(format_fixes)
    
    # 第3层:单位标准化
    content, unit_fixes = standardize_units(content)
    corrections.extend(unit_fixes)
    
    # 第4层:术语标准化
    content, term_fixes = standardize_terminology(content)
    corrections.extend(term_fixes)
    
    # 第5层:链接修复
    content, link_fixes = fix_broken_links(content)
    corrections.extend(link_fixes)
    
    return content, corrections

2. 冲突解决策略

def resolve_content_conflict(existing_content: str, 
                            new_content: str,
                            conflict_type: str) -> ResolutionResult:
    """
    解决内容冲突的策略
    """
    
    if conflict_type == "factual_conflict":
        # 事实冲突:基于置信度选择
        existing_confidence = calculate_confidence(existing_content)
        new_confidence = calculate_confidence(new_content)
        
        if new_confidence > existing_confidence * 1.2:
            # 新内容置信度显著更高
            return ResolutionResult.REPLACE
        elif existing_confidence > new_confidence * 1.2:
            # 现有内容置信度显著更高
            return ResolutionResult.KEEP
        else:
            # 置信度相近:标记为待审核
            return ResolutionResult.FLAG_FOR_REVIEW
    
    elif conflict_type == "complementary_info":
        # 互补信息:合并
        return ResolutionResult.MERGE
    
    elif conflict_type == "version_update":
        # 版本更新:建立 superseded_by 关系
        return ResolutionResult.SUPERSEDE
    
    elif conflict_type == "formatting_only":
        # 仅格式差异:保留更好格式
        return ResolutionResult.KEEP_BETTER_FORMAT
    
    else:
        # 未知冲突类型:人工审核
        return ResolutionResult.MANUAL_REVIEW

3. 质量评分系统

class QualityScorer:
    """质量评分系统"""
    
    def __init__(self):
        self.weights = {
            "technical_accuracy": 0.30,
            "consistency": 0.25,
            "completeness": 0.20,
            "recency": 0.15,
            "source_credibility": 0.10
        }
    
    def score_page(self, page: Page) -> QualityScore:
        """计算页面质量分数 (0-100)"""
        
        scores = {}
        
        # 1. 技术准确性
        scores["technical_accuracy"] = self._score_technical_accuracy(page)
        
        # 2. 一致性
        scores["consistency"] = self._score_consistency(page)
        
        # 3. 完整性
        scores["completeness"] = self._score_completeness(page)
        
        # 4. 时效性
        scores["recency"] = self._score_recency(page)
        
        # 5. 来源可信度
        scores["source_credibility"] = self._score_source_credibility(page)
        
        # 加权总分
        total_score = sum(
            score * self.weights[metric]
            for metric, score in scores.items()
        )
        
        return QualityScore(
            total=total_score,
            breakdown=scores,
            grade=self._assign_grade(total_score)
        )
    
    def _assign_grade(self, score: float) -> str:
        """分配质量等级"""
        if score >= 90:
            return "A+"
        elif score >= 80:
            return "A"
        elif score >= 70:
            return "B"
        elif score >= 60:
            return "C"
        elif score >= 50:
            return "D"
        else:
            return "F"

📊 质量监控仪表板

关键质量指标 (KQIs)

KQI_METRICS = {
    "technical_accuracy_rate": {
        "description": "技术参数准确率",
        "calculation": "accurate_params / total_params",
        "target": ">98%",
        "weight": 0.35
    },
    
    "consistency_score": {
        "description": "内容一致性评分",
        "calculation": "average_consistency_score",
        "target": ">95",
        "weight": 0.25
    },
    
    "completeness_index": {
        "description": "页面完整性指数",
        "calculation": "filled_sections / total_sections",
        "target": ">90%",
        "weight": 0.20
    },
    
    "freshness_score": {
        "description": "内容新鲜度评分",
        "calculation": "weighted_average(recency)",
        "target": ">85",
        "weight": 0.10
    },
    
    "user_satisfaction": {
        "description": "用户满意度",
        "calculation": "positive_feedback / total_feedback",
        "target": ">85%",
        "weight": 0.10
    }
}

质量趋势分析

def analyze_quality_trends(time_period: str = "monthly"):
    """
    分析质量趋势
    """
    
    # 获取历史数据
    history = get_quality_history(time_period)
    
    trends = {}
    
    for metric in KQI_METRICS:
        values = [h[metric] for h in history]
        
        # 计算趋势
        if len(values) >= 2:
            slope = calculate_slope(values)
            trend = "improving" if slope > 0.01 else "declining" if slope < -0.01 else "stable"
            
            # 检测异常点
            anomalies = detect_anomalies(values)
            
            trends[metric] = {
                "current": values[-1],
                "trend": trend,
                "slope": slope,
                "anomalies": anomalies,
                "target": KQI_METRICS[metric]["target"]
            }
    
    # 综合质量指数
    composite_score = calculate_composite_quality_index(trends)
    
    return {
        "period": time_period,
        "composite_score": composite_score,
        "trends": trends,
        "recommendations": generate_quality_recommendations(trends)
    }

🚨 异常检测与告警

异常检测规则

ANOMALY_RULES = {
    "sudden_confidence_drop": {
        "condition": "confidence_change < -0.2",
        "severity": "high",
        "action": "investigate_source_changes"
    },
    
    "technical_parameter_outlier": {
        "condition": "parameter_value outside 3σ",
        "severity": "critical",
        "action": "verify_with_primary_source"
    },
    
    "multiple_conflicts_detected": {
        "condition": "conflict_count > 3",
        "severity": "medium",
        "action": "initiate_review_process"
    },
    
    "orphaned_page_created": {
        "condition": "incoming_links == 0 AND outgoing_links > 5",
        "severity": "low",
        "action": "suggest_relationships"
    },
    
    "stale_content_alert": {
        "condition": "last_updated > 180 days AND confidence > 0.7",
        "severity": "medium",
        "action": "schedule_refresh"
    }
}

告警处理流程

def handle_quality_alert(alert: Alert):
    """
    处理质量告警
    """
    
    # 1. 记录告警
    log_alert(alert)
    
    # 2. 根据严重性采取行动
    if alert.severity == "critical":
        # 立即处理:暂停相关页面,通知维护者
        suspend_page(alert.page_id)
        notify_maintainer(alert, priority="high")
        
        # 启动调查
        investigation = investigate_alert(alert)
        
        # 根据调查结果采取行动
        if investigation["requires_manual_fix"]:
            create_maintenance_task(alert)
        else:
            apply_auto_fix(alert, investigation)
    
    elif alert.severity == "high":
        # 高优先级:标记为待处理,24小时内处理
        create_maintenance_task(alert, due_in_hours=24)
        notify_maintainer(alert, priority="medium")
    
    elif alert.severity == "medium":
        # 中优先级:加入待办队列,72小时内处理
        create_maintenance_task(alert, due_in_hours=72)
    
    elif alert.severity == "low":
        # 低优先级:批量处理,每周统一处理
        queue_for_batch_processing(alert)
    
    # 3. 更新告警状态
    update_alert_status(alert, "handled")

🔄 持续改进循环

PDCA 循环 (Plan-Do-Check-Act)

def quality_improvement_cycle():
    """
    质量持续改进循环
    """
    
    while True:
        # 1. PLAN: 分析质量数据,制定改进计划
        quality_report = analyze_quality_trends("weekly")
        improvement_plan = create_improvement_plan(quality_report)
        
        # 2. DO: 执行改进措施
        implemented_changes = execute_improvement_plan(improvement_plan)
        
        # 3. CHECK: 评估改进效果
        effect_measurement = measure_improvement_effect(implemented_changes)
        
        # 4. ACT: 标准化成功措施,调整失败措施
        if effect_measurement["successful"]:
            standardize_successful_changes(implemented_changes)
        else:
            adjust_failed_changes(implemented_changes, effect_measurement)
        
        # 等待下一周期
        time.sleep(7 * 24 * 3600)  # 每周一次

A/B 测试框架

def run_quality_ab_test(test_name: str, variant_a: Dict, variant_b: Dict):
    """
    运行质量改进A/B测试
    """
    
    # 1. 随机分配页面到测试组
    group_a, group_b = random_split_pages(test_name, 50)
    
    # 2. 应用不同变体
    apply_variant(group_a, variant_a)
    apply_variant(group_b, variant_b)
    
    # 3. 收集指标
    metrics_a = collect_metrics(group_a, duration_days=14)
    metrics_b = collect_metrics(group_b, duration_days=14)
    
    # 4. 统计分析
    result = statistical_analysis(metrics_a, metrics_b)
    
    # 5. 决定获胜变体
    if result["significant"] and result["winner"] == "A":
        winning_variant = variant_a
    elif result["significant"] and result["winner"] == "B":
        winning_variant = variant_b
    else:
        winning_variant = None  # 无显著差异
    
    # 6. 记录测试结果
    log_ab_test_result(test_name, result, winning_variant)
    
    return {
        "test_name": test_name,
        "result": result,
        "winning_variant": winning_variant,
        "recommendation": "implement" if winning_variant else "no_change"
    }

📋 质量检查清单

每日检查

  • 语法检查报告(自动)
  • 新内容质量评分(自动)
  • 冲突检测(自动)
  • 链接有效性检查(自动)

每周检查

  • 技术参数一致性验证(半自动)
  • 关系完整性检查(自动)
  • 质量趋势分析(自动)
  • 用户反馈分析(半自动)

每月检查

  • 全面质量审计(手动)
  • 规则库更新评估(手动)
  • 自我纠正效果评估(半自动)
  • 质量改进计划制定(手动)

季度检查

  • 质量框架评估(手动)
  • 用户满意度调查(手动)
  • 基准对比分析(半自动)
  • 战略调整(手动)

🚀 实施路线图

阶段 1:基础检查(当前)

  • 语法和格式检查
  • 基本一致性验证
  • 🔄 自动修复简单问题
  • 🔄 质量评分基础框架

阶段 2:智能验证(2-4周)

  • 🔄 技术参数验证规则
  • 🔄 语义冲突检测
  • 🔄 自动冲突解决策略
  • 🔄 质量监控仪表板

阶段 3:自我纠正(1-2月)

  • 🔄 多层修复管道
  • 🔄 异常检测和告警
  • 🔄 用户反馈集成
  • 🔄 A/B测试框架

阶段 4:持续改进(未来)

  • 🔄 自适应质量规则
  • 🔄 预测性质量维护
  • 🔄 跨wiki质量同步
  • 🔄 自主质量优化

📚 相关文档


状态: 基础语法检查和一致性验证已实现。下一步:集成技术参数验证和冲突检测。最后更新:2026-04-13。