vigil_types/audit.rs
1//! AuditEvent:append-only 审计事件(接入 vigil-audit 的 hash chain 账本)。
2
3use serde::{Deserialize, Serialize};
4
5/// append-only 事件条目。
6///
7/// 不变量:
8/// - `payload_json` 必须已由 `vigil-redaction` 脱敏,不得含原始 secret。
9/// - `event_hash = SHA256(prev_hash || canonical_json(payload) || created_at)`(I01 实装)。
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
11pub struct AuditEvent {
12 /// 自增序号(由账本签发)。
13 pub event_id: i64,
14 /// 所属 session。
15 pub session_id: String,
16 /// 事件类型(如 `tool_call.evaluated` / `secret.lease_minted` / `approval.resolved`)。
17 pub event_type: String,
18 /// 已脱敏的负载。
19 pub payload_json: serde_json::Value,
20 /// 供 FTS 检索的脱敏纯文本摘要(可选)。
21 pub redacted_text: Option<String>,
22 /// 前一条事件的 `event_hash`(创世块为空串)。
23 pub prev_hash: String,
24 /// 本条事件的 hash。
25 pub event_hash: String,
26 /// 创建时间(Unix epoch 秒)。
27 pub created_at: i64,
28}