mindgraph/schema/props/
intent.rs1use 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}