Skip to main content

lean_ctx/core/triage/
profile.rs

1#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
2pub struct TaskProfileLocal {
3    pub task_class: String,
4    pub intent: String,
5    pub complexity: String,
6    pub scope: TaskScopeLocal,
7    pub context_need_milli: u16,
8    pub reasoning_need_milli: u16,
9    pub risk_signal_milli: u16,
10    pub confidence_milli: u16,
11}
12
13#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
14pub enum TaskScopeLocal {
15    #[default]
16    SingleFile,
17    MultiFile,
18    CrossModule,
19    CrossProject,
20}
21
22impl Default for TaskProfileLocal {
23    fn default() -> Self {
24        Self {
25            task_class: String::new(),
26            intent: String::new(),
27            complexity: "low".into(),
28            scope: TaskScopeLocal::default(),
29            context_need_milli: 0,
30            reasoning_need_milli: 0,
31            risk_signal_milli: 0,
32            confidence_milli: 0,
33        }
34    }
35}
36
37#[cfg(test)]
38mod tests {
39    use super::*;
40    #[test]
41    fn default_scope_is_single_file() {
42        assert_eq!(TaskScopeLocal::default(), TaskScopeLocal::SingleFile);
43    }
44    #[test]
45    fn default_complexity_is_low() {
46        assert_eq!(TaskProfileLocal::default().complexity, "low");
47    }
48    #[test]
49    fn default_confidence_is_zero() {
50        assert_eq!(TaskProfileLocal::default().confidence_milli, 0);
51    }
52}