module projects import base // StorySize represents the size/complexity of a user story pub enum StorySize { xs // 1 point s // 2 points m // 3 points l // 5 points xl // 8 points xxl // 13 points } // AcceptanceCriteria represents a single acceptance criterion for a story pub struct AcceptanceCriteria { pub mut: description string satisfied bool } // Story represents a user story in the project management system pub struct Story { base.Base pub mut: title string description string project_id u32 // ID of the project this story belongs to epic_id u32 // ID of the epic this story belongs to (if any) sprint_id u32 // ID of the sprint this story is scheduled for (if any) owner_id u32 // ID of the user who owns this story assignee_id u32 // ID of the user assigned to this story status Status priority Priority size StorySize points f32 // Story points (if not using standard sizes) acceptance_criteria []AcceptanceCriteria // List of acceptance criteria issue_ids []u32 // IDs of the issues related to this story label_ids []u32 // IDs of the labels applied to this story dependencies []u32 // IDs of stories that this story depends on blockers []string // List of blockers preventing progress business_value u32 // Business value (1-10) user_persona string // User persona this story relates to start_date string // Start date in ISO format due_date string // Due date in ISO format estimated_hours f32 // Estimated hours to complete actual_hours f32 // Actual hours spent tags []string } // StoryTask represents a task that needs to be completed for a story pub struct StoryTask { base.Base pub mut: story_id u32 title string description string assignee_id u32 // ID of the user assigned to this task status Status estimated_hours f32 // Estimated hours to complete actual_hours f32 // Actual hours spent order u32 // Order of the task in the story }