[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AF20B2KWN15T4WNH7M8462":3,"skill-same:01M6AF20B2KWN15T4WNH7M8462":96},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6AF20B2KWN15T4WNH7M8462","privacy-metrics-dashboard",null,"Build privacy KPI dashboards tracking DSAR volume and response time, breach count and severity, DPIA completion rate, training coverage, and consent rates. Includes metric definitions, data collection patterns, visualization designs, and executive reporting templates for privacy program measurement.","mukul975\u002FPrivacy-Data-Protection-Skills","mukul975","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42860185?v=4","01M6ADEQR8T5M4EEG6C67BQCWF","Mahipal","01M6ADNKWX1HF4Q5DKEXT5M774",336,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41],"dashboard","metrics","privacy","privacy metrics dashboard","training","visualization","reporting","engineering","data","severity","kpi","templates","dpia","2026-11-10 10:12:30",false,"---\nname: privacy-metrics-dashboard\ndescription: >-\n  Build privacy KPI dashboards tracking DSAR volume and response time, breach\n  count and severity, DPIA completion rate, training coverage, and consent rates.\n  Includes metric definitions, data collection patterns, visualization designs,\n  and executive reporting templates for privacy program measurement.\nlicense: Apache-2.0\nmetadata:\n  author: mukul975\n  version: \"1.0\"\n  domain: privacy\n  subdomain: privacy-engineering\n  tags: \"privacy-metrics, kpi-dashboard, dsar-tracking, breach-metrics, privacy-reporting\"\n---\n\n# Privacy Metrics Dashboard\n\n## Overview\n\nA privacy metrics dashboard provides quantitative visibility into the effectiveness and maturity of an organization's privacy program. This skill defines the key privacy performance indicators (KPIs), data collection methods, visualization patterns, and reporting cadences needed to measure, monitor, and continuously improve privacy operations.\n\n## Core Privacy KPI Categories\n\n### 1. Data Subject Access Requests (DSARs)\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| DSAR Volume | Total DSARs received per period | Trend monitoring | Monthly |\n| DSAR by Type | Breakdown by right exercised (access, deletion, portability, rectification) | N\u002FA (distribution) | Monthly |\n| Average Response Time | Mean calendar days from receipt to completion | \u003C 25 days (GDPR: 30 day limit) | Monthly |\n| Median Response Time | Median calendar days from receipt to completion | \u003C 20 days | Monthly |\n| P95 Response Time | 95th percentile response time | \u003C 28 days | Monthly |\n| On-Time Completion Rate | % completed within regulatory deadline | > 98% | Monthly |\n| DSAR Backlog | Open DSARs at period end | \u003C 10% of monthly volume | Weekly |\n| Automated Fulfillment Rate | % of DSARs fulfilled without manual intervention | > 60% | Quarterly |\n| Identity Verification Failure Rate | % of DSARs where identity could not be verified | \u003C 5% | Monthly |\n| Cost per DSAR | Average cost to process one DSAR | Trend reduction | Quarterly |\n\n### 2. Data Breaches\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Breach Count | Total confirmed breaches per period | 0 (minimize) | Monthly |\n| Breach Severity Distribution | Count by severity level (low\u002Fmedium\u002Fhigh\u002Fcritical) | No critical breaches | Monthly |\n| Mean Time to Detect (MTTD) | Average hours from breach occurrence to detection | \u003C 24 hours | Per incident |\n| Mean Time to Notify (MTTN) | Average hours from detection to regulatory notification | \u003C 48 hours (GDPR: 72 hours) | Per incident |\n| Mean Time to Contain (MTTC) | Average hours from detection to containment | \u003C 12 hours | Per incident |\n| Records Affected | Total data subject records affected | Minimize | Per incident |\n| Repeat Breach Rate | % of breaches with same root cause as prior breach | 0% | Quarterly |\n| Regulatory Fines | Total fines imposed due to breaches | $0 | Annual |\n| Breach Simulation Score | Score from most recent tabletop exercise | > 85% | Semi-annual |\n\n### 3. Privacy Impact Assessments (DPIAs)\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| DPIA Completion Rate | % of high-risk processing with completed DPIA | 100% | Quarterly |\n| DPIA Backlog | DPIAs required but not yet started | 0 | Monthly |\n| Average DPIA Duration | Mean days from initiation to sign-off | \u003C 30 days | Quarterly |\n| DPIA Findings Remediated | % of identified risks with implemented mitigations | > 90% | Quarterly |\n| DPIA Review Rate | % of existing DPIAs reviewed within their review cycle | > 95% | Quarterly |\n| New Processing Without DPIA | Count of new high-risk processing launched without DPIA | 0 | Monthly |\n\n### 4. Training and Awareness\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Training Completion Rate | % of staff who completed required privacy training | > 95% | Quarterly |\n| Training Pass Rate | % passing the assessment on first attempt | > 85% | Quarterly |\n| New Hire Training Time | Average days from start date to training completion | \u003C 14 days | Monthly |\n| Specialist Certification Rate | % of privacy team with professional certification | > 80% | Annual |\n| Privacy Champion Coverage | % of business units with designated privacy champion | 100% | Quarterly |\n| Phishing Simulation Pass Rate | % of staff correctly identifying privacy-related phishing | > 90% | Quarterly |\n\n### 5. Consent Management\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Consent Rate | % of users providing consent (by purpose) | Trend monitoring | Monthly |\n| Opt-in Rate | % choosing to opt in to optional processing | Trend monitoring | Monthly |\n| Opt-out\u002FWithdrawal Rate | % withdrawing previously given consent | \u003C 5% monthly | Monthly |\n| Consent Freshness | % of active consents collected within last 12 months | > 70% | Quarterly |\n| Consent Collection Coverage | % of data processing with documented consent\u002Flegal basis | 100% | Quarterly |\n| Cookie Consent Rate | % of website visitors accepting cookies (by category) | Trend monitoring | Monthly |\n| Consent Record Accuracy | % of consent records matching actual processing | > 99% | Quarterly |\n\n### 6. Operational Metrics\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Privacy Incidents Reported | Internal privacy incidents reported (not just breaches) | Trend monitoring | Monthly |\n| Vendor Privacy Assessments Completed | % of high-risk vendors assessed | 100% | Quarterly |\n| Data Inventory Completeness | % of processing activities documented in ROPA | > 95% | Quarterly |\n| Policy Acknowledgment Rate | % of staff acknowledging updated privacy policies | > 98% | Per update |\n| Privacy-by-Design Gate Pass Rate | % of projects passing privacy review at design gate | > 85% | Quarterly |\n| Regulatory Inquiry Response Time | Average days to respond to regulatory inquiries | \u003C 5 days | Per event |\n\n## Data Collection Architecture\n\n```\nData Sources                    Collection Layer              Dashboard Layer\n+------------------+\n| DSAR Platform    |---+\n+------------------+   |\n                       |    +-------------------+    +-----------------------+\n+------------------+   +--->|                   |    |                       |\n| Breach Tracker   |------->| Data Integration  |--->| Visualization Engine  |\n+------------------+   +--->| (ETL Pipeline)    |    | (Grafana \u002F Tableau \u002F  |\n                       |    |                   |    |  Power BI \u002F Metabase) |\n+------------------+   |    +-------------------+    +-----------------------+\n| DPIA Register    |---+           |                          |\n+------------------+   |           v                          v\n                       |    +-------------------+    +-----------------------+\n+------------------+   |    | Metrics Database  |    | Alerting System       |\n| LMS (Training)   |---+    | (Time-series \u002F    |    | - Threshold breaches  |\n+------------------+   |    |  PostgreSQL)      |    | - Trend deviations    |\n                       |    +-------------------+    | - SLA warnings        |\n+------------------+   |                              +-----------------------+\n| Consent Platform |---+\n+------------------+\n```\n\n## Metric Collection Implementation\n\n```python\n\"\"\"\nPrivacy metrics collection and aggregation engine.\nCollects KPI data from multiple privacy operational systems\nand computes dashboard-ready metrics.\n\"\"\"\n\nfrom dataclasses import dataclass\nfrom datetime import datetime, timedelta\nfrom typing import Optional\nimport statistics\n\n\n@dataclass\nclass DSARMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_received: int\n    total_completed: int\n    total_overdue: int\n    avg_response_days: float\n    median_response_days: float\n    p95_response_days: float\n    on_time_rate: float\n    by_type: dict[str, int]\n    backlog: int\n    automated_rate: float\n\n\n@dataclass\nclass BreachMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_breaches: int\n    by_severity: dict[str, int]\n    avg_detection_hours: float\n    avg_notification_hours: float\n    avg_containment_hours: float\n    total_records_affected: int\n    repeat_breach_count: int\n\n\n@dataclass\nclass ConsentMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_consent_events: int\n    opt_in_rate: float\n    withdrawal_rate: float\n    consent_rate_by_purpose: dict[str, float]\n    cookie_acceptance_rate: float\n    consent_freshness_pct: float\n\n\nclass PrivacyMetricsCollector:\n    \"\"\"\n    Collect and compute privacy KPIs from operational data sources.\n    \"\"\"\n\n    def __init__(self, dsar_repo, breach_repo, dpia_repo, training_repo, consent_repo):\n        self.dsar_repo = dsar_repo\n        self.breach_repo = breach_repo\n        self.dpia_repo = dpia_repo\n        self.training_repo = training_repo\n        self.consent_repo = consent_repo\n\n    def compute_dsar_metrics(\n        self,\n        start_date: datetime,\n        end_date: datetime,\n        regulatory_deadline_days: int = 30\n    ) -> DSARMetrics:\n        \"\"\"Compute DSAR KPIs for a given period.\"\"\"\n        dsars = self.dsar_repo.get_by_period(start_date, end_date)\n\n        completed = [d for d in dsars if d.status == \"completed\"]\n        response_times = [\n            (d.completed_at - d.received_at).days\n            for d in completed\n            if d.completed_at and d.received_at\n        ]\n\n        on_time = [\n            d for d in completed\n            if (d.completed_at - d.received_at).days \u003C= regulatory_deadline_days\n        ]\n\n        automated = [d for d in completed if d.automated]\n        open_dsars = [d for d in dsars if d.status in (\"open\", \"in_progress\")]\n\n        by_type = {}\n        for d in dsars:\n            by_type[d.request_type] = by_type.get(d.request_type, 0) + 1\n\n        return DSARMetrics(\n            period_start=start_date,\n            period_end=end_date,\n            total_received=len(dsars),\n            total_completed=len(completed),\n            total_overdue=len(dsars) - len(on_time) - len(open_dsars),\n            avg_response_days=statistics.mean(response_times) if response_times else 0,\n            median_response_days=statistics.median(response_times) if response_times else 0,\n            p95_response_days=(\n                sorted(response_times)[int(len(response_times) * 0.95)]\n                if len(response_times) >= 20 else\n                max(response_times) if response_times else 0\n            ),\n            on_time_rate=len(on_time) \u002F len(completed) if completed else 1.0,\n            by_type=by_type,\n            backlog=len(open_dsars),\n            automated_rate=len(automated) \u002F len(completed) if completed else 0,\n        )\n\n    def compute_breach_metrics(\n        self,\n        start_date: datetime,\n        end_date: datetime\n    ) -> BreachMetrics:\n        \"\"\"Compute breach KPIs for a given period.\"\"\"\n        breaches = self.breach_repo.get_by_period(start_date, end_date)\n\n        by_severity = {}\n        detection_hours = []\n        notification_hours = []\n        containment_hours = []\n        total_records = 0\n\n        for b in breaches:\n            by_severity[b.severity] = by_severity.get(b.severity, 0) + 1\n            total_records += b.records_affected or 0\n\n            if b.detected_at and b.occurred_at:\n                detection_hours.append(\n                    (b.detected_at - b.occurred_at).total_seconds() \u002F 3600\n                )\n            if b.notified_at and b.detected_at:\n                notification_hours.append(\n                    (b.notified_at - b.detected_at).total_seconds() \u002F 3600\n                )\n            if b.contained_at and b.detected_at:\n                containment_hours.append(\n                    (b.contained_at - b.detected_at).total_seconds() \u002F 3600\n                )\n\n        # Count repeat breaches (same root cause as previous)\n        root_causes = [b.root_cause for b in breaches if b.root_cause]\n        repeat_count = len(root_causes) - len(set(root_causes))\n\n        return BreachMetrics(\n            period_start=start_date,\n            period_end=end_date,\n            total_breaches=len(breaches),\n            by_severity=by_severity,\n            avg_detection_hours=statistics.mean(detection_hours) if detection_hours else 0,\n            avg_notification_hours=statistics.mean(notification_hours) if notification_hours else 0,\n            avg_containment_hours=statistics.mean(containment_hours) if containment_hours else 0,\n            total_records_affected=total_records,\n            repeat_breach_count=repeat_count,\n        )\n\n    def generate_executive_report(\n        self,\n        period_start: datetime,\n        period_end: datetime\n    ) -> dict:\n        \"\"\"\n        Generate a comprehensive executive privacy report.\n        Combines all KPI categories into a single report structure.\n        \"\"\"\n        dsar = self.compute_dsar_metrics(period_start, period_end)\n        breach = self.compute_breach_metrics(period_start, period_end)\n\n        # Calculate overall privacy health score (0-100)\n        health_components = []\n\n        # DSAR component (25% weight)\n        dsar_score = min(100, dsar.on_time_rate * 100)\n        health_components.append((\"DSAR Compliance\", dsar_score, 0.25))\n\n        # Breach component (30% weight)\n        breach_score = 100 if breach.total_breaches == 0 else max(0, 100 - breach.total_breaches * 20)\n        health_components.append((\"Breach Prevention\", breach_score, 0.30))\n\n        # Response time component (20% weight)\n        response_score = min(100, max(0, (30 - dsar.avg_response_days) \u002F 30 * 100))\n        health_components.append((\"Response Timeliness\", response_score, 0.20))\n\n        # Detection speed component (25% weight)\n        detection_score = min(100, max(0, (72 - breach.avg_detection_hours) \u002F 72 * 100)) if breach.total_breaches > 0 else 100\n        health_components.append((\"Detection Speed\", detection_score, 0.25))\n\n        overall_score = sum(score * weight for _, score, weight in health_components)\n\n        return {\n            \"period\": {\n                \"start\": period_start.isoformat(),\n                \"end\": period_end.isoformat()\n            },\n            \"overall_privacy_health_score\": round(overall_score, 1),\n            \"health_rating\": (\n                \"Excellent\" if overall_score >= 90 else\n                \"Good\" if overall_score >= 75 else\n                \"Needs Improvement\" if overall_score >= 60 else\n                \"Critical\"\n            ),\n            \"components\": {\n                name: {\"score\": round(score, 1), \"weight\": f\"{weight*100:.0f}%\"}\n                for name, score, weight in health_components\n            },\n            \"dsar_summary\": {\n                \"volume\": dsar.total_received,\n                \"on_time_rate\": f\"{dsar.on_time_rate*100:.1f}%\",\n                \"avg_response_days\": round(dsar.avg_response_days, 1),\n                \"backlog\": dsar.backlog\n            },\n            \"breach_summary\": {\n                \"count\": breach.total_breaches,\n                \"severity_distribution\": breach.by_severity,\n                \"avg_detection_hours\": round(breach.avg_detection_hours, 1),\n                \"records_affected\": breach.total_records_affected\n            },\n        }\n```\n\n## Dashboard Visualization Patterns\n\n### Executive Summary View\n\n| Panel | Chart Type | Metrics Displayed | Refresh Rate |\n|-------|-----------|-------------------|-------------|\n| Privacy Health Score | Gauge (0-100) | Overall weighted score | Daily |\n| DSAR Volume Trend | Line chart | Monthly DSAR count (12-month rolling) | Daily |\n| Breach Timeline | Event timeline | Breaches by severity over time | Real-time |\n| On-Time Rate | Single stat with spark line | DSAR on-time completion % | Daily |\n| Training Coverage | Horizontal bar | Completion rate by department | Weekly |\n| Consent Rate Trend | Multi-line chart | Opt-in rate by purpose (6-month) | Daily |\n\n### Operational View\n\n| Panel | Chart Type | Metrics Displayed | Refresh Rate |\n|-------|-----------|-------------------|-------------|\n| Active DSARs | Table with status | Open requests with deadlines | Hourly |\n| DSAR Aging | Histogram | Distribution of open DSAR ages | Daily |\n| Response Time Box Plot | Box plot | Response time distribution by month | Daily |\n| Breach Detection Funnel | Funnel chart | Detection > Assessment > Notification > Resolution | Per event |\n| DPIA Pipeline | Kanban | DPIAs by status (draft, review, approved) | Daily |\n| Vendor Risk Heat Map | Heat map | Vendors by risk score and last assessment date | Weekly |\n\n## Alerting Rules\n\n| Alert | Condition | Severity | Recipient |\n|-------|-----------|----------|-----------|\n| DSAR SLA Warning | Any DSAR open > 21 days | Warning | DSAR team |\n| DSAR SLA Breach | Any DSAR open > 28 days | Critical | CPO + Legal |\n| Breach Detected | New breach record created | Critical | Incident team + CPO |\n| Training Compliance Drop | Department completion \u003C 90% | Warning | HR + Privacy |\n| Consent Rate Anomaly | Opt-in rate drops > 20% in a week | Warning | Privacy + Marketing |\n| DPIA Overdue | DPIA review past scheduled date | Warning | DPIA owner + CPO |\n| Vendor Assessment Due | High-risk vendor assessment > 11 months old | Warning | Procurement + Privacy |\n\n## Executive Reporting Template\n\n### Monthly Privacy Board Report Structure\n\n1. **Privacy Health Score**: Overall score with trend arrow\n2. **Key Highlights**: 3-5 bullet points on notable events\n3. **DSAR Performance**: Volume, on-time rate, top request types\n4. **Breach Status**: Count, severity, response times, lessons learned\n5. **Compliance Posture**: DPIA coverage, training rates, policy updates\n6. **Risk Outlook**: Emerging risks, regulatory developments, planned changes\n7. **Resource Needs**: Budget requests, headcount, tooling\n\n## References\n\n- IAPP Privacy Program Management Guide (CIPM Body of Knowledge)\n- NIST Privacy Framework — GV.MT Monitoring and Review\n- ISO\u002FIEC 27701:2019 — Clause 9 (Performance Evaluation)\n- EDPB Guidelines on Data Breach Notification (WP250 rev.01)\n- Gartner Privacy Program Metrics Framework\n- ISACA Privacy Audit and Assurance Program\n","# Privacy Metrics Dashboard\n\n## Overview\n\nA privacy metrics dashboard provides quantitative visibility into the effectiveness and maturity of an organization's privacy program. This skill defines the key privacy performance indicators (KPIs), data collection methods, visualization patterns, and reporting cadences needed to measure, monitor, and continuously improve privacy operations.\n\n## Core Privacy KPI Categories\n\n### 1. Data Subject Access Requests (DSARs)\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| DSAR Volume | Total DSARs received per period | Trend monitoring | Monthly |\n| DSAR by Type | Breakdown by right exercised (access, deletion, portability, rectification) | N\u002FA (distribution) | Monthly |\n| Average Response Time | Mean calendar days from receipt to completion | \u003C 25 days (GDPR: 30 day limit) | Monthly |\n| Median Response Time | Median calendar days from receipt to completion | \u003C 20 days | Monthly |\n| P95 Response Time | 95th percentile response time | \u003C 28 days | Monthly |\n| On-Time Completion Rate | % completed within regulatory deadline | > 98% | Monthly |\n| DSAR Backlog | Open DSARs at period end | \u003C 10% of monthly volume | Weekly |\n| Automated Fulfillment Rate | % of DSARs fulfilled without manual intervention | > 60% | Quarterly |\n| Identity Verification Failure Rate | % of DSARs where identity could not be verified | \u003C 5% | Monthly |\n| Cost per DSAR | Average cost to process one DSAR | Trend reduction | Quarterly |\n\n### 2. Data Breaches\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Breach Count | Total confirmed breaches per period | 0 (minimize) | Monthly |\n| Breach Severity Distribution | Count by severity level (low\u002Fmedium\u002Fhigh\u002Fcritical) | No critical breaches | Monthly |\n| Mean Time to Detect (MTTD) | Average hours from breach occurrence to detection | \u003C 24 hours | Per incident |\n| Mean Time to Notify (MTTN) | Average hours from detection to regulatory notification | \u003C 48 hours (GDPR: 72 hours) | Per incident |\n| Mean Time to Contain (MTTC) | Average hours from detection to containment | \u003C 12 hours | Per incident |\n| Records Affected | Total data subject records affected | Minimize | Per incident |\n| Repeat Breach Rate | % of breaches with same root cause as prior breach | 0% | Quarterly |\n| Regulatory Fines | Total fines imposed due to breaches | $0 | Annual |\n| Breach Simulation Score | Score from most recent tabletop exercise | > 85% | Semi-annual |\n\n### 3. Privacy Impact Assessments (DPIAs)\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| DPIA Completion Rate | % of high-risk processing with completed DPIA | 100% | Quarterly |\n| DPIA Backlog | DPIAs required but not yet started | 0 | Monthly |\n| Average DPIA Duration | Mean days from initiation to sign-off | \u003C 30 days | Quarterly |\n| DPIA Findings Remediated | % of identified risks with implemented mitigations | > 90% | Quarterly |\n| DPIA Review Rate | % of existing DPIAs reviewed within their review cycle | > 95% | Quarterly |\n| New Processing Without DPIA | Count of new high-risk processing launched without DPIA | 0 | Monthly |\n\n### 4. Training and Awareness\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Training Completion Rate | % of staff who completed required privacy training | > 95% | Quarterly |\n| Training Pass Rate | % passing the assessment on first attempt | > 85% | Quarterly |\n| New Hire Training Time | Average days from start date to training completion | \u003C 14 days | Monthly |\n| Specialist Certification Rate | % of privacy team with professional certification | > 80% | Annual |\n| Privacy Champion Coverage | % of business units with designated privacy champion | 100% | Quarterly |\n| Phishing Simulation Pass Rate | % of staff correctly identifying privacy-related phishing | > 90% | Quarterly |\n\n### 5. Consent Management\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Consent Rate | % of users providing consent (by purpose) | Trend monitoring | Monthly |\n| Opt-in Rate | % choosing to opt in to optional processing | Trend monitoring | Monthly |\n| Opt-out\u002FWithdrawal Rate | % withdrawing previously given consent | \u003C 5% monthly | Monthly |\n| Consent Freshness | % of active consents collected within last 12 months | > 70% | Quarterly |\n| Consent Collection Coverage | % of data processing with documented consent\u002Flegal basis | 100% | Quarterly |\n| Cookie Consent Rate | % of website visitors accepting cookies (by category) | Trend monitoring | Monthly |\n| Consent Record Accuracy | % of consent records matching actual processing | > 99% | Quarterly |\n\n### 6. Operational Metrics\n\n| Metric | Definition | Target | Frequency |\n|--------|-----------|--------|-----------|\n| Privacy Incidents Reported | Internal privacy incidents reported (not just breaches) | Trend monitoring | Monthly |\n| Vendor Privacy Assessments Completed | % of high-risk vendors assessed | 100% | Quarterly |\n| Data Inventory Completeness | % of processing activities documented in ROPA | > 95% | Quarterly |\n| Policy Acknowledgment Rate | % of staff acknowledging updated privacy policies | > 98% | Per update |\n| Privacy-by-Design Gate Pass Rate | % of projects passing privacy review at design gate | > 85% | Quarterly |\n| Regulatory Inquiry Response Time | Average days to respond to regulatory inquiries | \u003C 5 days | Per event |\n\n## Data Collection Architecture\n\n```\nData Sources                    Collection Layer              Dashboard Layer\n+------------------+\n| DSAR Platform    |---+\n+------------------+   |\n                       |    +-------------------+    +-----------------------+\n+------------------+   +--->|                   |    |                       |\n| Breach Tracker   |------->| Data Integration  |--->| Visualization Engine  |\n+------------------+   +--->| (ETL Pipeline)    |    | (Grafana \u002F Tableau \u002F  |\n                       |    |                   |    |  Power BI \u002F Metabase) |\n+------------------+   |    +-------------------+    +-----------------------+\n| DPIA Register    |---+           |                          |\n+------------------+   |           v                          v\n                       |    +-------------------+    +-----------------------+\n+------------------+   |    | Metrics Database  |    | Alerting System       |\n| LMS (Training)   |---+    | (Time-series \u002F    |    | - Threshold breaches  |\n+------------------+   |    |  PostgreSQL)      |    | - Trend deviations    |\n                       |    +-------------------+    | - SLA warnings        |\n+------------------+   |                              +-----------------------+\n| Consent Platform |---+\n+------------------+\n```\n\n## Metric Collection Implementation\n\n```python\n\"\"\"\nPrivacy metrics collection and aggregation engine.\nCollects KPI data from multiple privacy operational systems\nand computes dashboard-ready metrics.\n\"\"\"\n\nfrom dataclasses import dataclass\nfrom datetime import datetime, timedelta\nfrom typing import Optional\nimport statistics\n\n\n@dataclass\nclass DSARMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_received: int\n    total_completed: int\n    total_overdue: int\n    avg_response_days: float\n    median_response_days: float\n    p95_response_days: float\n    on_time_rate: float\n    by_type: dict[str, int]\n    backlog: int\n    automated_rate: float\n\n\n@dataclass\nclass BreachMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_breaches: int\n    by_severity: dict[str, int]\n    avg_detection_hours: float\n    avg_notification_hours: float\n    avg_containment_hours: float\n    total_records_affected: int\n    repeat_breach_count: int\n\n\n@dataclass\nclass ConsentMetrics:\n    period_start: datetime\n    period_end: datetime\n    total_consent_events: int\n    opt_in_rate: float\n    withdrawal_rate: float\n    consent_rate_by_purpose: dict[str, float]\n    cookie_acceptance_rate: float\n    consent_freshness_pct: float\n\n\nclass PrivacyMetricsCollector:\n    \"\"\"\n    Collect and compute privacy KPIs from operational data sources.\n    \"\"\"\n\n    def __init__(self, dsar_repo, breach_repo, dpia_repo, training_repo, consent_repo):\n        self.dsar_repo = dsar_repo\n        self.breach_repo = breach_repo\n        self.dpia_repo = dpia_repo\n        self.training_repo = training_repo\n        self.consent_repo = consent_repo\n\n    def compute_dsar_metrics(\n        self,\n        start_date: datetime,\n        end_date: datetime,\n        regulatory_deadline_days: int = 30\n    ) -> DSARMetrics:\n        \"\"\"Compute DSAR KPIs for a given period.\"\"\"\n        dsars = self.dsar_repo.get_by_period(start_date, end_date)\n\n        completed = [d for d in dsars if d.status == \"completed\"]\n        response_times = [\n            (d.completed_at - d.received_at).days\n            for d in completed\n            if d.completed_at and d.received_at\n        ]\n\n        on_time = [\n            d for d in completed\n            if (d.completed_at - d.received_at).days \u003C= regulatory_deadline_days\n        ]\n\n        automated = [d for d in completed if d.automated]\n        open_dsars = [d for d in dsars if d.status in (\"open\", \"in_progress\")]\n\n        by_type = {}\n        for d in dsars:\n            by_type[d.request_type] = by_type.get(d.request_type, 0) + 1\n\n        return DSARMetrics(\n            period_start=start_date,\n            period_end=end_date,\n            total_received=len(dsars),\n            total_completed=len(completed),\n            total_overdue=len(dsars) - len(on_time) - len(open_dsars),\n            avg_response_days=statistics.mean(response_times) if response_times else 0,\n            median_response_days=statistics.median(response_times) if response_times else 0,\n            p95_response_days=(\n                sorted(response_times)[int(len(response_times) * 0.95)]\n                if len(response_times) >= 20 else\n                max(response_times) if response_times else 0\n            ),\n            on_time_rate=len(on_time) \u002F len(completed) if completed else 1.0,\n            by_type=by_type,\n            backlog=len(open_dsars),\n            automated_rate=len(automated) \u002F len(completed) if completed else 0,\n        )\n\n    def compute_breach_metrics(\n        self,\n        start_date: datetime,\n        end_date: datetime\n    ) -> BreachMetrics:\n        \"\"\"Compute breach KPIs for a given period.\"\"\"\n        breaches = self.breach_repo.get_by_period(start_date, end_date)\n\n        by_severity = {}\n        detection_hours = []\n        notification_hours = []\n        containment_hours = []\n        total_records = 0\n\n        for b in breaches:\n            by_severity[b.severity] = by_severity.get(b.severity, 0) + 1\n            total_records += b.records_affected or 0\n\n            if b.detected_at and b.occurred_at:\n                detection_hours.append(\n                    (b.detected_at - b.occurred_at).total_seconds() \u002F 3600\n                )\n            if b.notified_at and b.detected_at:\n                notification_hours.append(\n                    (b.notified_at - b.detected_at).total_seconds() \u002F 3600\n                )\n            if b.contained_at and b.detected_at:\n                containment_hours.append(\n                    (b.contained_at - b.detected_at).total_seconds() \u002F 3600\n                )\n\n        # Count repeat breaches (same root cause as previous)\n        root_causes = [b.root_cause for b in breaches if b.root_cause]\n        repeat_count = len(root_causes) - len(set(root_causes))\n\n        return BreachMetrics(\n            period_start=start_date,\n            period_end=end_date,\n            total_breaches=len(breaches),\n            by_severity=by_severity,\n            avg_detection_hours=statistics.mean(detection_hours) if detection_hours else 0,\n            avg_notification_hours=statistics.mean(notification_hours) if notification_hours else 0,\n            avg_containment_hours=statistics.mean(containment_hours) if containment_hours else 0,\n            total_records_affected=total_records,\n            repeat_breach_count=repeat_count,\n        )\n\n    def generate_executive_report(\n        self,\n        period_start: datetime,\n        period_end: datetime\n    ) -> dict:\n        \"\"\"\n        Generate a comprehensive executive privacy report.\n        Combines all KPI categories into a single report structure.\n        \"\"\"\n        dsar = self.compute_dsar_metrics(period_start, period_end)\n        breach = self.compute_breach_metrics(period_start, period_end)\n\n        # Calculate overall privacy health score (0-100)\n        health_components = []\n\n        # DSAR component (25% weight)\n        dsar_score = min(100, dsar.on_time_rate * 100)\n        health_components.append((\"DSAR Compliance\", dsar_score, 0.25))\n\n        # Breach component (30% weight)\n        breach_score = 100 if breach.total_breaches == 0 else max(0, 100 - breach.total_breaches * 20)\n        health_components.append((\"Breach Prevention\", breach_score, 0.30))\n\n        # Response time component (20% weight)\n        response_score = min(100, max(0, (30 - dsar.avg_response_days) \u002F 30 * 100))\n        health_components.append((\"Response Timeliness\", response_score, 0.20))\n\n        # Detection speed component (25% weight)\n        detection_score = min(100, max(0, (72 - breach.avg_detection_hours) \u002F 72 * 100)) if breach.total_breaches > 0 else 100\n        health_components.append((\"Detection Speed\", detection_score, 0.25))\n\n        overall_score = sum(score * weight for _, score, weight in health_components)\n\n        return {\n            \"period\": {\n                \"start\": period_start.isoformat(),\n                \"end\": period_end.isoformat()\n            },\n            \"overall_privacy_health_score\": round(overall_score, 1),\n            \"health_rating\": (\n                \"Excellent\" if overall_score >= 90 else\n                \"Good\" if overall_score >= 75 else\n                \"Needs Improvement\" if overall_score >= 60 else\n                \"Critical\"\n            ),\n            \"components\": {\n                name: {\"score\": round(score, 1), \"weight\": f\"{weight*100:.0f}%\"}\n                for name, score, weight in health_components\n            },\n            \"dsar_summary\": {\n                \"volume\": dsar.total_received,\n                \"on_time_rate\": f\"{dsar.on_time_rate*100:.1f}%\",\n                \"avg_response_days\": round(dsar.avg_response_days, 1),\n                \"backlog\": dsar.backlog\n            },\n            \"breach_summary\": {\n                \"count\": breach.total_breaches,\n                \"severity_distribution\": breach.by_severity,\n                \"avg_detection_hours\": round(breach.avg_detection_hours, 1),\n                \"records_affected\": breach.total_records_affected\n            },\n        }\n```\n\n## Dashboard Visualization Patterns\n\n### Executive Summary View\n\n| Panel | Chart Type | Metrics Displayed | Refresh Rate |\n|-------|-----------|-------------------|-------------|\n| Privacy Health Score | Gauge (0-100) | Overall weighted score | Daily |\n| DSAR Volume Trend | Line chart | Monthly DSAR count (12-month rolling) | Daily |\n| Breach Timeline | Event timeline | Breaches by severity over time | Real-time |\n| On-Time Rate | Single stat with spark line | DSAR on-time completion % | Daily |\n| Training Coverage | Horizontal bar | Completion rate by department | Weekly |\n| Consent Rate Trend | Multi-line chart | Opt-in rate by purpose (6-month) | Daily |\n\n### Operational View\n\n| Panel | Chart Type | Metrics Displayed | Refresh Rate |\n|-------|-----------|-------------------|-------------|\n| Active DSARs | Table with status | Open requests with deadlines | Hourly |\n| DSAR Aging | Histogram | Distribution of open DSAR ages | Daily |\n| Response Time Box Plot | Box plot | Response time distribution by month | Daily |\n| Breach Detection Funnel | Funnel chart | Detection > Assessment > Notification > Resolution | Per event |\n| DPIA Pipeline | Kanban | DPIAs by status (draft, review, approved) | Daily |\n| Vendor Risk Heat Map | Heat map | Vendors by risk score and last assessment date | Weekly |\n\n## Alerting Rules\n\n| Alert | Condition | Severity | Recipient |\n|-------|-----------|----------|-----------|\n| DSAR SLA Warning | Any DSAR open > 21 days | Warning | DSAR team |\n| DSAR SLA Breach | Any DSAR open > 28 days | Critical | CPO + Legal |\n| Breach Detected | New breach record created | Critical | Incident team + CPO |\n| Training Compliance Drop | Department completion \u003C 90% | Warning | HR + Privacy |\n| Consent Rate Anomaly | Opt-in rate drops > 20% in a week | Warning | Privacy + Marketing |\n| DPIA Overdue | DPIA review past scheduled date | Warning | DPIA owner + CPO |\n| Vendor Assessment Due | High-risk vendor assessment > 11 months old | Warning | Procurement + Privacy |\n\n## Executive Reporting Template\n\n### Monthly Privacy Board Report Structure\n\n1. **Privacy Health Score**: Overall score with trend arrow\n2. **Key Highlights**: 3-5 bullet points on notable events\n3. **DSAR Performance**: Volume, on-time rate, top request types\n4. **Breach Status**: Count, severity, response times, lessons learned\n5. **Compliance Posture**: DPIA coverage, training rates, policy updates\n6. **Risk Outlook**: Emerging risks, regulatory developments, planned changes\n7. **Resource Needs**: Budget requests, headcount, tooling\n\n## References\n\n- IAPP Privacy Program Management Guide (CIPM Body of Knowledge)\n- NIST Privacy Framework — GV.MT Monitoring and Review\n- ISO\u002FIEC 27701:2019 — Clause 9 (Performance Evaluation)\n- EDPB Guidelines on Data Breach Notification (WP250 rev.01)\n- Gartner Privacy Program Metrics Framework\n- ISACA Privacy Audit and Assurance Program\n",{"name":5,"license":15,"metadata":47,"description":7},{"tags":48,"author":9,"domain":31,"version":49,"subdomain":50},"privacy-metrics, kpi-dashboard, dsar-tracking, breach-metrics, privacy-reporting","1.0","privacy-engineering","main","9b2ef9eae161c00a17241d42a388571321b33e9f","plugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard",67,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills","https:\u002F\u002Fgithub.com\u002Fmukul975","Mahipal.engineer","🔐 Cybersecurity | 💻 Dev | 📷 Street Photographer\r\n🎓 MSc | 📚 Research & AI Security","2026-03-17 04:06:52",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add mukul975\u002FPrivacy-Data-Protection-Skills --skill privacy-metrics-dashboard",{"tool":66,"command":67},"bunx","bunx skills add mukul975\u002FPrivacy-Data-Protection-Skills --skill privacy-metrics-dashboard",{"tool":69,"command":70},"pnpm","pnpm dlx skills add mukul975\u002FPrivacy-Data-Protection-Skills --skill privacy-metrics-dashboard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002FSKILL.md",true,[74,80,86,90],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"assets\u002Ftemplate.md","ASSET","资产文件",1194,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002Fassets\u002Ftemplate.md",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fstandards.md","REFERENCE","参考文档",834,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002Freferences\u002Fstandards.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fworkflows.md",1049,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002Freferences\u002Fworkflows.md",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fprocess.py","SCRIPT","脚本",6361,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fplugins\u002Fprivacy-skills-complete\u002Fskills\u002Fprivacy-metrics-dashboard\u002Fscripts\u002Fprocess.py",[97,121,135,148,165,178],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":112,"publishedAt":42},"01M6AG6K8R3XW10ENWH2FH18RH","workplace-email-privacy","Implements email and internet monitoring compliance in the workplace per Barbulescu v Romania (ECHR Grand Chamber), EDPB guidance, and national labour law. Covers acceptable use policies, legitimate expectation of privacy, proportionality testing, and content vs metadata monitoring. Keywords: email monitoring, Barbulescu, workplace privacy, internet monitoring, acceptable use policy, ECHR, proportionality.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fworkplace-email-privacy\u002FSKILL.md",[103,106,109],{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":110,"categoryName":111,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[113,114,31,115,116,37,117,118,119,120],"email","workplace email privacy","compliance","content","policy","testing","monitoring","metadata",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":129,"publishedAt":42},"01M6AG6FRCBJY7D061BJZMNV49","whistleblower-data","Implements data protection compliance for whistleblowing systems under EU Directive 2019\u002F1937 and GDPR. Covers anonymous reporting channels, identity protection for whistleblowers and accused persons, retention limits, access restrictions, and retaliation prevention. Addresses national transpositions and DPA guidance. Keywords: whistleblower, Directive 2019\u002F1937, anonymous reporting, identity protection, retaliation, retention, reporting channel.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fwhistleblower-data\u002FSKILL.md",[127,128],{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},{"categoryNo":110,"categoryName":111,"taxonomyType":26,"taxonomyTypeDesc":27},[37,130,131,35,115,132,133,31,134],"whistleblower data","identity","data protection","gdpr","prevention",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":42},"01M6AG6CJP0PW3X65HC7VP9SR9","vendor-termination-data","Vendor termination data return and deletion procedures per GDPR Article 28(3)(g). Covers data extraction formats, deletion certification requirements, transition planning, residual data handling, and post-termination verification.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fvendor-termination-data\u002FSKILL.md",[141],{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[37,143,144,145,146,133,31,147],"vendor termination data","planning","verification","extraction","certification",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":42},"01M6AG69E277DXZB2NF6KV17ZA","vendor-risk-scoring","Vendor privacy risk tiering methodology for processor management. Covers scoring factors including data volume, sensitivity, transfer locations, certifications, breach history, and control maturity with weighted risk calculation and tier assignment.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fvendor-risk-scoring\u002FSKILL.md",[154],{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[156,157,158,159,160,161,162,163,31,37,164],"vendor risk scoring","risk","risk scoring","methodology","risk-scoring","assessment","transfer","certifications","processor",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":42},"01M6AG6655ABFKT2BBWHCP4PAT","vendor-privacy-due-diligence","Pre-contract vendor privacy due diligence per GDPR Article 28(1). Covers risk questionnaires, technical controls assessment, certification review, data flow analysis, and documented sufficiency decisions for processor engagement.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fvendor-privacy-due-diligence\u002FSKILL.md",[171],{"categoryNo":110,"categoryName":111,"taxonomyType":26,"taxonomyTypeDesc":27},[31,173,133,174,161,175,176,37,164,157,147,177],"vendor privacy due diligence","review","onboarding","flow","analysis",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":191,"publishedAt":42},"01M6AG62C3VD8SYNGH4N7RHZTE","vendor-privacy-audit","On-site and remote vendor audit procedures per GDPR Article 28(3)(h). Covers audit planning, evidence collection methodologies, finding classification, remediation tracking, and audit report generation for processor compliance verification.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FPrivacy-Data-Protection-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy\u002Fvendor-privacy-audit\u002FSKILL.md",[184,187,190],{"categoryNo":185,"categoryName":186,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":188,"categoryName":189,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",{"categoryNo":110,"categoryName":111,"taxonomyType":26,"taxonomyTypeDesc":27},[192,193,31,194,145,195,115,133,196,164,197,198,199,144],"vendor privacy audit","audit","report","audit report","remediation","collection","remediation-tracking","classification"]