use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Page {
pub id: String,
pub title: String,
pub summary: Option<String>,
pub content: String,
pub entity_id: Option<String>,
#[serde(default, alias = "domain")]
pub space: Option<String>,
pub source_memory_ids: Vec<String>,
pub version: i64,
pub status: String,
pub created_at: String,
pub last_compiled: String,
pub last_modified: String,
pub sources_updated_count: i64,
pub stale_reason: Option<String>,
pub user_edited: bool,
#[serde(default, skip_serializing_if = "is_zero_f32")]
pub relevance_score: f32,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_edited_by: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_edited_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_delta_summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub changelog: Option<String>,
#[serde(default = "default_creation_kind")]
pub creation_kind: String,
#[serde(default = "default_review_status")]
pub review_status: String,
}
fn default_creation_kind() -> String {
"distilled".to_string()
}
fn default_review_status() -> String {
"confirmed".to_string()
}
fn is_zero_f32(v: &f32) -> bool {
*v == 0.0
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct PageEvidence {
pub page_id: String,
pub source_kind: String, pub locator: Option<String>,
pub title: Option<String>,
pub linked_at: i64,
pub link_reason: Option<String>,
}