Update git remote URL from git.threefold.info to git.ourworld.tf
This commit is contained in:
		@@ -1,8 +1,8 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
import freeflowuniverse.herolib.hero.models.core
 | 
			
		||||
 | 
			
		||||
// Priority represents the priority level of a project item
 | 
			
		||||
// Priority levels for project items
 | 
			
		||||
pub enum Priority {
 | 
			
		||||
	critical
 | 
			
		||||
	high
 | 
			
		||||
@@ -11,7 +11,7 @@ pub enum Priority {
 | 
			
		||||
	none
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Status represents the current status of a project item
 | 
			
		||||
// Status values for project lifecycle
 | 
			
		||||
pub enum Status {
 | 
			
		||||
	todo
 | 
			
		||||
	in_progress
 | 
			
		||||
@@ -20,7 +20,7 @@ pub enum Status {
 | 
			
		||||
	archived
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ItemType represents the type of a project item
 | 
			
		||||
// Types of items in the project hierarchy
 | 
			
		||||
pub enum ItemType {
 | 
			
		||||
	epic
 | 
			
		||||
	story
 | 
			
		||||
@@ -30,24 +30,28 @@ pub enum ItemType {
 | 
			
		||||
	feature
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Project represents a project in the system
 | 
			
		||||
// Project represents a high-level container for organizing work
 | 
			
		||||
// A Project holds information about its members and contains lists of associated epics, sprints, and boards
 | 
			
		||||
pub struct Project {
 | 
			
		||||
	base.Base
 | 
			
		||||
	core.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	name        string
 | 
			
		||||
	description string
 | 
			
		||||
	owner_id    u32    // ID of the user who owns this project
 | 
			
		||||
	member_ids  []u32  // IDs of the users who are members of this project
 | 
			
		||||
	board_ids   []u32  // IDs of the kanban boards in this project
 | 
			
		||||
	sprint_ids  []u32  // IDs of the sprints in this project
 | 
			
		||||
	epic_ids    []u32  // IDs of the epics in this project
 | 
			
		||||
	tags        []string
 | 
			
		||||
	name        string @[index] // Project name
 | 
			
		||||
	description string // Detailed project description
 | 
			
		||||
	owner_id    u64   @[index] // User ID of the project owner
 | 
			
		||||
	member_ids  []u64 @[index] // List of user IDs who are members
 | 
			
		||||
	board_ids   []u64 // List of associated board IDs
 | 
			
		||||
	sprint_ids  []u64    @[index] // List of sprint IDs in this project
 | 
			
		||||
	epic_ids    []u64    @[index] // List of epic IDs in this project
 | 
			
		||||
	tags        []string @[index] // Project tags for categorization
 | 
			
		||||
	status      Status   @[index] // Current project status
 | 
			
		||||
	priority    Priority @[index] // Project priority level
 | 
			
		||||
	item_type   ItemType @[index] // Type of project item
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Label represents a label that can be applied to project items
 | 
			
		||||
// Label represents a tag with name and color for categorization
 | 
			
		||||
pub struct Label {
 | 
			
		||||
	base.Base
 | 
			
		||||
	core.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	name  string
 | 
			
		||||
	color string // Hex color code
 | 
			
		||||
}
 | 
			
		||||
	name  string @[index] // Label name
 | 
			
		||||
	color string @[index] // Hex color code for the label
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +1,18 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
import freeflowuniverse.herolib.hero.models.core
 | 
			
		||||
 | 
			
		||||
// Epic represents a large body of work that can be broken down into stories
 | 
			
		||||
// Epic represents a large body of work or major feature
 | 
			
		||||
// An Epic is broken down into smaller tasks and can be associated with a project
 | 
			
		||||
pub struct Epic {
 | 
			
		||||
	base.Base
 | 
			
		||||
	core.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	title        string
 | 
			
		||||
	description  string
 | 
			
		||||
	project_id   u32      // ID of the project this epic belongs to
 | 
			
		||||
	owner_id     u32      // ID of the user who owns this epic
 | 
			
		||||
	assignee_id  u32      // ID of the user assigned to this epic
 | 
			
		||||
	status       Status
 | 
			
		||||
	priority     Priority
 | 
			
		||||
	story_ids    []u32    // IDs of the stories in this epic
 | 
			
		||||
	issue_ids    []u32    // IDs of the issues in this epic
 | 
			
		||||
	label_ids    []u32    // IDs of the labels applied to this epic
 | 
			
		||||
	start_date   string   // Start date in ISO format
 | 
			
		||||
	due_date     string   // Due date in ISO format
 | 
			
		||||
	progress     f32      // Progress as a percentage (0-100)
 | 
			
		||||
	dependencies []u32    // IDs of epics that this epic depends on
 | 
			
		||||
	blockers     []string // List of blockers preventing progress
 | 
			
		||||
	tags         []string
 | 
			
		||||
	name           string @[index] // Epic name
 | 
			
		||||
	description    string // Detailed epic description
 | 
			
		||||
	status         Status @[index] // Current epic status
 | 
			
		||||
	project_id     u64    @[index] // Link to parent project
 | 
			
		||||
	start_date     u64 // Epic start timestamp (Unix)
 | 
			
		||||
	due_date       u64 // Epic due timestamp (Unix)
 | 
			
		||||
	tags           []string @[index] // Epic tags for categorization
 | 
			
		||||
	child_task_ids []u64    @[index] // List of task IDs belonging to this epic
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EpicProgress represents the progress of an epic
 | 
			
		||||
pub struct EpicProgress {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	epic_id           u32
 | 
			
		||||
	total_stories     u32  // Total number of stories in the epic
 | 
			
		||||
	completed_stories u32  // Number of completed stories
 | 
			
		||||
	total_points      f32  // Total number of story points
 | 
			
		||||
	completed_points  f32  // Number of completed story points
 | 
			
		||||
	progress          f32  // Progress as a percentage (0-100)
 | 
			
		||||
}
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
// IssueType represents the type of an issue
 | 
			
		||||
pub enum IssueType {
 | 
			
		||||
	bug
 | 
			
		||||
	feature_request
 | 
			
		||||
	improvement
 | 
			
		||||
	task
 | 
			
		||||
	question
 | 
			
		||||
	documentation
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IssueSeverity represents the severity of an issue
 | 
			
		||||
pub enum IssueSeverity {
 | 
			
		||||
	blocker
 | 
			
		||||
	critical
 | 
			
		||||
	major
 | 
			
		||||
	minor
 | 
			
		||||
	trivial
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Issue represents a problem, task, or feature request in the project
 | 
			
		||||
pub struct Issue {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	title        string
 | 
			
		||||
	description  string
 | 
			
		||||
	project_id   u32          // ID of the project this issue belongs to
 | 
			
		||||
	reporter_id  u32          // ID of the user who reported this issue
 | 
			
		||||
	assignee_id  u32          // ID of the user assigned to this issue
 | 
			
		||||
	status       Status
 | 
			
		||||
	priority     Priority
 | 
			
		||||
	issue_type   IssueType
 | 
			
		||||
	severity     IssueSeverity
 | 
			
		||||
	epic_id      u32          // ID of the epic this issue belongs to (if any)
 | 
			
		||||
	story_id     u32          // ID of the story this issue belongs to (if any)
 | 
			
		||||
	sprint_id    u32          // ID of the sprint this issue is scheduled for (if any)
 | 
			
		||||
	label_ids    []u32        // IDs of the labels applied to this issue
 | 
			
		||||
	due_date     string       // Due date in ISO format
 | 
			
		||||
	estimated_hours f32       // Estimated hours to complete
 | 
			
		||||
	actual_hours f32          // Actual hours spent
 | 
			
		||||
	dependencies []u32        // IDs of issues that this issue depends on
 | 
			
		||||
	blockers     []string     // List of blockers preventing progress
 | 
			
		||||
	steps_to_reproduce []string // Steps to reproduce (for bugs)
 | 
			
		||||
	environment  string       // Environment where the issue occurs (for bugs)
 | 
			
		||||
	attachments  []string     // Paths or references to attachments
 | 
			
		||||
	tags         []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IssueComment represents a comment on an issue
 | 
			
		||||
pub struct IssueComment {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	issue_id    u32
 | 
			
		||||
	author_id   u32
 | 
			
		||||
	content     string
 | 
			
		||||
	attachments []string // Paths or references to attachments
 | 
			
		||||
}
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
// KanbanBoard represents a kanban board in the project management system
 | 
			
		||||
pub struct KanbanBoard {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	name        string
 | 
			
		||||
	description string
 | 
			
		||||
	project_id  u32       // ID of the project this board belongs to
 | 
			
		||||
	columns     []Column  // Columns in this kanban board
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Column represents a column in a kanban board
 | 
			
		||||
pub struct Column {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	name        string
 | 
			
		||||
	description string
 | 
			
		||||
	position    u32      // Position of the column in the board (for ordering)
 | 
			
		||||
	item_ids    []u32    // IDs of the items in this column
 | 
			
		||||
	wip_limit   u32      // Work in progress limit (0 means no limit)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// KanbanItem represents an item on a kanban board
 | 
			
		||||
// This can be linked to an Epic, Story, or Issue
 | 
			
		||||
pub struct KanbanItem {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	title       string
 | 
			
		||||
	description string
 | 
			
		||||
	column_id   u32      // ID of the column this item belongs to
 | 
			
		||||
	position    u32      // Position of the item in the column (for ordering)
 | 
			
		||||
	assignee_id u32      // ID of the user assigned to this item
 | 
			
		||||
	priority    Priority
 | 
			
		||||
	status      Status
 | 
			
		||||
	item_type   ItemType
 | 
			
		||||
	epic_id     u32      // ID of the epic this item belongs to (if any)
 | 
			
		||||
	story_id    u32      // ID of the story this item belongs to (if any)
 | 
			
		||||
	issue_id    u32      // ID of the issue this item is linked to (if any)
 | 
			
		||||
	label_ids   []u32    // IDs of the labels applied to this item
 | 
			
		||||
	due_date    string   // Due date in ISO format
 | 
			
		||||
}
 | 
			
		||||
@@ -1,45 +1,26 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
import freeflowuniverse.herolib.hero.models.core
 | 
			
		||||
 | 
			
		||||
// SprintStatus represents the status of a sprint
 | 
			
		||||
// SprintStatus defines the possible states of a sprint
 | 
			
		||||
pub enum SprintStatus {
 | 
			
		||||
	planning
 | 
			
		||||
	active
 | 
			
		||||
	review
 | 
			
		||||
	completed
 | 
			
		||||
	cancelled
 | 
			
		||||
	paused
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Sprint represents a time-boxed period in which specific work has to be completed
 | 
			
		||||
// Sprint represents a time-boxed iteration for completing work
 | 
			
		||||
// Typically used in agile methodologies (e.g., two-week sprints)
 | 
			
		||||
pub struct Sprint {
 | 
			
		||||
	base.Base
 | 
			
		||||
	core.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	name         string
 | 
			
		||||
	description  string
 | 
			
		||||
	project_id   u32         // ID of the project this sprint belongs to
 | 
			
		||||
	status       SprintStatus
 | 
			
		||||
	start_date   string      // Start date in ISO format
 | 
			
		||||
	end_date     string      // End date in ISO format
 | 
			
		||||
	goal         string      // The goal of this sprint
 | 
			
		||||
	story_ids    []u32       // IDs of the stories in this sprint
 | 
			
		||||
	issue_ids    []u32       // IDs of the issues in this sprint
 | 
			
		||||
	epic_ids     []u32       // IDs of the epics this sprint contributes to
 | 
			
		||||
	velocity     f32         // Planned velocity for this sprint
 | 
			
		||||
	actual_points f32        // Actual story points completed
 | 
			
		||||
	retrospective string     // Notes from the sprint retrospective
 | 
			
		||||
	name        string @[index] // Sprint name
 | 
			
		||||
	description string // Sprint description
 | 
			
		||||
	status      SprintStatus @[index] // Current sprint status
 | 
			
		||||
	goal        string // Sprint goal/objective
 | 
			
		||||
	project_id  u64 @[index] // Link to parent project
 | 
			
		||||
	start_date  u64 // Sprint start timestamp (Unix)
 | 
			
		||||
	end_date    u64 // Sprint end timestamp (Unix)
 | 
			
		||||
	task_ids    []u64 @[index] // List of task IDs in this sprint
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SprintReport represents a report generated at the end of a sprint
 | 
			
		||||
pub struct SprintReport {
 | 
			
		||||
	base.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	sprint_id       u32
 | 
			
		||||
	completed_items u32      // Number of items completed
 | 
			
		||||
	total_items     u32      // Total number of items
 | 
			
		||||
	completed_points f32     // Number of story points completed
 | 
			
		||||
	total_points    f32      // Total number of story points
 | 
			
		||||
	blockers        []string // List of blockers encountered
 | 
			
		||||
	achievements    []string // List of achievements
 | 
			
		||||
	lessons         []string // Lessons learned
 | 
			
		||||
}
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								specs/models/projects/task.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								specs/models/projects/task.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
module projects
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.hero.models.core
 | 
			
		||||
 | 
			
		||||
// TaskStatus defines the possible states of a task
 | 
			
		||||
pub enum TaskStatus {
 | 
			
		||||
	todo
 | 
			
		||||
	in_progress
 | 
			
		||||
	in_review
 | 
			
		||||
	done
 | 
			
		||||
	blocked
 | 
			
		||||
	backlog
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TaskPriority defines the priority levels for tasks
 | 
			
		||||
pub enum TaskPriority {
 | 
			
		||||
	low
 | 
			
		||||
	medium
 | 
			
		||||
	high
 | 
			
		||||
	urgent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Task represents the most granular unit of work
 | 
			
		||||
// Tasks can be linked to projects, epics, and sprints
 | 
			
		||||
pub struct Task {
 | 
			
		||||
	core.Base
 | 
			
		||||
pub mut:
 | 
			
		||||
	title                string @[index] // Task title
 | 
			
		||||
	description          string // Task description
 | 
			
		||||
	status               TaskStatus   @[index] // Current task status
 | 
			
		||||
	priority             TaskPriority @[index] // Task priority level
 | 
			
		||||
	assignee_id          u64          @[index] // User ID of task assignee
 | 
			
		||||
	reporter_id          u64          @[index] // User ID of task reporter
 | 
			
		||||
	parent_task_id       u64 // For subtasks - parent task ID
 | 
			
		||||
	epic_id              u64 @[index] // Link to parent epic
 | 
			
		||||
	sprint_id            u64 @[index] // Link to parent sprint
 | 
			
		||||
	project_id           u64 @[index] // Link to parent project
 | 
			
		||||
	due_date             u64 // Task due timestamp (Unix)
 | 
			
		||||
	estimated_time_hours f32 // Estimated hours to complete
 | 
			
		||||
	logged_time_hours    f32 // Actual hours logged
 | 
			
		||||
	tags                 []string @[index] // Task tags for categorization
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user