feat: 原始上报数据存储(raw_batch 表/脱敏/访客关联/详情页 Tab/30天清理)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,19 @@ def _walk_props(v, depth=0):
|
||||
return True, False, True
|
||||
return True, False, False
|
||||
|
||||
def sanitize_payload(obj):
|
||||
"""原始批次快照脱敏:递归遍历 dict/list,键名命中 SENSITIVE_KEY_PATTERNS(大小写不敏感)
|
||||
→ 值替换为字符串 "[FILTERED]"(结构保留,便于排查时仍看清字段形态)。
|
||||
返回新对象(容器全部重建,叶值原样共享)——调用方在 ingest 之前对 payload 深拷贝后传入,
|
||||
与 ingest/validate_event 的就地改写互不影响。"""
|
||||
if isinstance(obj, dict):
|
||||
return {k: ("[FILTERED]" if _SENSITIVE.search(str(k)) else sanitize_payload(v))
|
||||
for k, v in obj.items()}
|
||||
if isinstance(obj, list):
|
||||
return [sanitize_payload(x) for x in obj]
|
||||
return obj
|
||||
|
||||
|
||||
def validate_event(ev) -> str | None:
|
||||
"""返回 None 表示通过;否则返回拒绝原因码。类型/白名单/体积/深度全在此守门。
|
||||
通过时会就地截断/清洗并写回 ev(path 先 sanitize_url 再截 MAX_PATH_LEN,title 截
|
||||
|
||||
Reference in New Issue
Block a user