Skip to main content

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}