#![cfg_attr(coverage_nightly, coverage(off))]
use super::{Complexity, HashMap, Priority, QualityGateConfig, Sprint, Task, TaskStatus};
use crate::models::pdmt::{PdmtQualityConfig, PdmtTodo};
use crate::services::pdmt_service::PdmtService;
use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RoadmapTask {
pub id: String,
pub title: String,
pub description: String,
pub status: TaskStatus,
pub priority: Priority,
pub estimated_hours: f64,
pub assigned_to: Option<String>,
pub dependencies: Vec<String>,
pub tags: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QualityEnforcedTodo {
pub id: String,
pub task_id: String, pub description: String,
pub implementation_spec: String,
pub quality_requirements: QualityRequirements,
pub validation_commands: Vec<String>,
pub success_criteria: Vec<String>,
pub estimated_time: std::time::Duration,
pub dependencies: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QualityRequirements {
pub max_complexity: u32,
pub min_test_coverage: u8,
pub required_docs: bool,
pub satd_allowed: u32, pub lint_compliance: bool,
}
impl Default for QualityRequirements {
fn default() -> Self {
Self {
max_complexity: 20,
min_test_coverage: 80,
required_docs: true,
satd_allowed: 0,
lint_compliance: true,
}
}
}
pub struct RoadmapTodoGenerator {
pdmt_service: PdmtService,
quality_config: QualityGateConfig,
}
include!("generator_core.rs");
include!("generator_formatting.rs");
include!("generator_tests.rs");