1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| """ IMS 法规合规检查器 覆盖 EU GSR + Euro NCAP 2026 + 日本 MLIT 2031 """
from dataclasses import dataclass from typing import List, Tuple from enum import Enum
class Regulation(Enum): EU_GSR_ADDDW = "EU GSR R171 ADDW" EU_GSR_DDAW = "EU GSR R171 DDAW" EURO_NCAP_2026_DSM = "Euro NCAP 2026 DSM" EURO_NCAP_2026_OMS = "Euro NCAP 2026 OMS" EURO_NCAP_2026_CPD = "Euro NCAP 2026 CPD" JAPAN_MLIT_2031 = "Japan MLIT 2031 DMS"
class ComplianceStatus(Enum): COMPLIANT = "✅ 合规" PARTIAL = "⚠️ 部分合规" NON_COMPLIANT = "❌ 不合规" NOT_APPLICABLE = "— 不适用"
@dataclass class ComplianceItem: regulation: Regulation requirement: str status: ComplianceStatus gap: str = "" action: str = "" deadline: str = ""
class IMSComplianceChecker: """IMS 法规合规检查器""" def __init__(self): self.items = self._init_checklist() def _init_checklist(self) -> List[ComplianceItem]: return [ ComplianceItem( regulation=Regulation.EU_GSR_ADDDW, requirement="驾驶员注意力衰减警告(ADDW):视线偏离道路 ≥3.5s 发出警告", status=ComplianceStatus.NON_COMPLIANT, gap="ADDW 算法未实现 3.5s 阈值", action="实现 Euro NCAP D-03 场景", deadline="2026-Q4" ), ComplianceItem( regulation=Regulation.EU_GSR_ADDDW, requirement="ADDW 警告延迟 ≤1s(从检测到警告)", status=ComplianceStatus.PARTIAL, gap="当前延迟 1.5s", action="优化推理管线", deadline="2026-Q4" ), ComplianceItem( regulation=Regulation.EURO_NCAP_2026_DSM, requirement="疲劳检测:PERCLOS ≥30% 触发二级警告", status=ComplianceStatus.COMPLIANT, ), ComplianceItem( regulation=Regulation.EURO_NCAP_2026_DSM, requirement="分心检测:手机使用 ≤3s 发出一级警告", status=ComplianceStatus.PARTIAL, gap="手机检测精度 85%,需≥90%", action="增加训练数据+优化模型", deadline="2026-Q3" ), ComplianceItem( regulation=Regulation.EURO_NCAP_2026_DSM, requirement="5种疲劳场景+8种分心场景全部通过", status=ComplianceStatus.PARTIAL, gap="F-03/04 场景未通过", action="优化 PERCLOS 阈值自适应", deadline="2026-Q4" ), ComplianceItem( regulation=Regulation.EURO_NCAP_2026_CPD, requirement="CPD:6种场景(新生儿/幼儿/儿童/宠物/成人/空座)", status=ComplianceStatus.NON_COMPLIANT, gap="CPD 算法未集成", action="采购 UWB/mmWave 评估板", deadline="2027-Q1" ), ComplianceItem( regulation=Regulation.JAPAN_MLIT_2031, requirement="DMS 摄像头+疲劳/分心检测", status=ComplianceStatus.PARTIAL, gap="需符合日本特定测试标准", action="跟踪 MLIT 详细协议", deadline="2030" ), ] def report(self) -> str: lines = ["=" * 60, "IMS 法规合规报告", "=" * 60] compliant = sum(1 for i in self.items if i.status == ComplianceStatus.COMPLIANT) partial = sum(1 for i in self.items if i.status == ComplianceStatus.PARTIAL) non = sum(1 for i in self.items if i.status == ComplianceStatus.NON_COMPLIANT) lines.append(f"✅ 合规: {compliant}/{len(self.items)}") lines.append(f"⚠️ 部分合规: {partial}/{len(self.items)}") lines.append(f"❌ 不合规: {non}/{len(self.items)}") lines.append("-" * 60) for item in self.items: lines.append(f"\n[{item.regulation.value}]") lines.append(f" 要求: {item.requirement}") lines.append(f" 状态: {item.status.value}") if item.gap: lines.append(f" 差距: {item.gap}") if item.action: lines.append(f" 行动: {item.action} (截止: {item.deadline})") return "\n".join(lines)
if __name__ == "__main__": checker = IMSComplianceChecker() print(checker.report())
|