Skip to main content

aios_spec/traits/
privacy.rs

1use crate::event::{RawEvent, SourceTier};
2use crate::sanitized::SanitizedEvent;
3
4/// 隐私脱敏引擎
5///
6/// 所有 RawEvent 在此处被转化为 SanitizedEvent。
7/// 原始数据 (通知正文、文件名、Binder 参数) 在此边界之后不可访问。
8pub trait PrivacySanitizer {
9    /// 对单个原始事件进行脱敏 (使用类型默认的 SourceTier)
10    fn sanitize(&self, raw: RawEvent) -> SanitizedEvent;
11
12    /// 对单个原始事件进行脱敏,并以入口声明的 `source_tier` 覆盖结果。
13    ///
14    /// Ingress 边界 (Android envelope / Rust 内部采集) 应当通过此方法
15    /// 调用脱敏器,使得能力等级在管线后段保持权威。
16    fn sanitize_with_tier(&self, raw: RawEvent, source_tier: SourceTier) -> SanitizedEvent {
17        let mut event = self.sanitize(raw);
18        event.source_tier = source_tier;
19        event
20    }
21
22    /// 批量脱敏
23    fn sanitize_batch(&self, raw_events: Vec<RawEvent>) -> Vec<SanitizedEvent> {
24        raw_events.into_iter().map(|e| self.sanitize(e)).collect()
25    }
26}