Skip to main content

mindgraph/schema/props/
intent.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4#[serde(default)]
5pub struct GoalProps {
6    pub description: String,
7    pub goal_type: Option<String>,
8    pub status: Option<String>,
9    pub priority: Option<String>,
10    pub deadline: Option<f64>,
11    pub success_criteria: Vec<String>,
12    pub progress: f64,
13}
14
15impl Default for GoalProps {
16    fn default() -> Self {
17        Self {
18            description: String::new(),
19            goal_type: None,
20            status: None,
21            priority: None,
22            deadline: None,
23            success_criteria: Vec::new(),
24            progress: 0.0,
25        }
26    }
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
30#[serde(default)]
31pub struct ProjectProps {
32    pub name: String,
33    pub description: String,
34    pub status: Option<String>,
35    pub started_at: Option<f64>,
36    pub target_completion: Option<f64>,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
40#[serde(default)]
41pub struct DecisionProps {
42    pub question: String,
43    pub status: Option<String>,
44    pub decided_option_uid: Option<String>,
45    pub decided_at: Option<f64>,
46    pub decision_rationale: Option<String>,
47    pub reversibility: Option<String>,
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
51#[serde(default)]
52pub struct OptionProps {
53    pub description: String,
54    pub pros: Vec<String>,
55    pub cons: Vec<String>,
56    pub estimated_effort: Option<String>,
57    pub estimated_risk: Option<String>,
58    pub score: Option<f64>,
59}
60
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
62#[serde(default)]
63pub struct ConstraintProps {
64    pub description: String,
65    pub constraint_type: Option<String>,
66    pub hard: bool,
67    pub value: Option<String>,
68    pub unit: Option<String>,
69}
70
71impl Default for ConstraintProps {
72    fn default() -> Self {
73        Self {
74            description: String::new(),
75            constraint_type: None,
76            hard: true,
77            value: None,
78            unit: None,
79        }
80    }
81}
82
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
84#[serde(default)]
85pub struct MilestoneProps {
86    pub description: String,
87    pub status: Option<String>,
88    pub target_date: Option<f64>,
89    pub reached_at: Option<f64>,
90    pub criteria: Vec<String>,
91}