refactor: replace issues backend with milestone tasks
This commit is contained in:
@@ -4,9 +4,7 @@ from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class IssueTypeEnum(str, Enum):
|
||||
MEETING = "meeting"
|
||||
SUPPORT = "support"
|
||||
class TaskTypeEnum(str, Enum):
|
||||
ISSUE = "issue"
|
||||
MAINTENANCE = "maintenance"
|
||||
RESEARCH = "research"
|
||||
@@ -14,40 +12,39 @@ class IssueTypeEnum(str, Enum):
|
||||
STORY = "story"
|
||||
TEST = "test"
|
||||
RESOLUTION = "resolution"
|
||||
TASK = "task" # legacy
|
||||
TASK = "task"
|
||||
|
||||
|
||||
class IssueStatusEnum(str, Enum):
|
||||
class TaskStatusEnum(str, Enum):
|
||||
OPEN = "open"
|
||||
IN_PROGRESS = "in_progress"
|
||||
RESOLVED = "resolved"
|
||||
PENDING = "pending"
|
||||
PROGRESSING = "progressing"
|
||||
CLOSED = "closed"
|
||||
BLOCKED = "blocked"
|
||||
|
||||
|
||||
class IssuePriorityEnum(str, Enum):
|
||||
class TaskPriorityEnum(str, Enum):
|
||||
LOW = "low"
|
||||
MEDIUM = "medium"
|
||||
HIGH = "high"
|
||||
CRITICAL = "critical"
|
||||
|
||||
|
||||
# Issue schemas
|
||||
class IssueBase(BaseModel):
|
||||
# Task schemas
|
||||
class TaskBase(BaseModel):
|
||||
title: str
|
||||
description: Optional[str] = None
|
||||
issue_type: IssueTypeEnum = IssueTypeEnum.ISSUE
|
||||
issue_subtype: Optional[str] = None
|
||||
priority: IssuePriorityEnum = IssuePriorityEnum.MEDIUM
|
||||
task_type: TaskTypeEnum = TaskTypeEnum.TASK
|
||||
task_subtype: Optional[str] = None
|
||||
priority: TaskPriorityEnum = TaskPriorityEnum.MEDIUM
|
||||
tags: Optional[str] = None
|
||||
depends_on_id: Optional[int] = None
|
||||
due_date: Optional[datetime] = None
|
||||
estimated_effort: Optional[int] = None
|
||||
estimated_working_time: Optional[str] = None
|
||||
|
||||
|
||||
class TaskCreate(TaskBase):
|
||||
project_id: Optional[int] = None
|
||||
milestone_id: Optional[int] = None
|
||||
|
||||
|
||||
class IssueCreate(IssueBase):
|
||||
project_id: int
|
||||
reporter_id: int
|
||||
reporter_id: Optional[int] = None
|
||||
assignee_id: Optional[int] = None
|
||||
# Resolution specific
|
||||
resolution_summary: Optional[str] = None
|
||||
@@ -55,37 +52,35 @@ class IssueCreate(IssueBase):
|
||||
pending_matters: Optional[str] = None
|
||||
|
||||
|
||||
class IssueUpdate(BaseModel):
|
||||
class TaskUpdate(BaseModel):
|
||||
title: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
issue_type: Optional[IssueTypeEnum] = None
|
||||
issue_subtype: Optional[str] = None
|
||||
status: Optional[IssueStatusEnum] = None
|
||||
priority: Optional[IssuePriorityEnum] = None
|
||||
task_type: Optional[TaskTypeEnum] = None
|
||||
task_subtype: Optional[str] = None
|
||||
status: Optional[TaskStatusEnum] = None
|
||||
priority: Optional[TaskPriorityEnum] = None
|
||||
assignee_id: Optional[int] = None
|
||||
tags: Optional[str] = None
|
||||
depends_on_id: Optional[int] = None
|
||||
due_date: Optional[datetime] = None
|
||||
milestone_id: Optional[int] = None
|
||||
estimated_effort: Optional[int] = None
|
||||
# Resolution specific
|
||||
resolution_summary: Optional[str] = None
|
||||
positions: Optional[str] = None
|
||||
pending_matters: Optional[str] = None
|
||||
|
||||
|
||||
class IssueResponse(IssueBase):
|
||||
class TaskResponse(TaskBase):
|
||||
id: int
|
||||
status: IssueStatusEnum
|
||||
status: TaskStatusEnum
|
||||
task_code: Optional[str] = None
|
||||
project_id: int
|
||||
milestone_id: int
|
||||
reporter_id: int
|
||||
assignee_id: Optional[int]
|
||||
resolution_summary: Optional[str]
|
||||
positions: Optional[str]
|
||||
pending_matters: Optional[str]
|
||||
due_date: Optional[datetime] = None
|
||||
milestone_id: Optional[int] = None
|
||||
assignee_id: Optional[int] = None
|
||||
resolution_summary: Optional[str] = None
|
||||
positions: Optional[str] = None
|
||||
pending_matters: Optional[str] = None
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime]
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -97,7 +92,7 @@ class CommentBase(BaseModel):
|
||||
|
||||
|
||||
class CommentCreate(CommentBase):
|
||||
issue_id: int
|
||||
task_id: int
|
||||
author_id: int
|
||||
|
||||
|
||||
@@ -107,10 +102,10 @@ class CommentUpdate(BaseModel):
|
||||
|
||||
class CommentResponse(CommentBase):
|
||||
id: int
|
||||
issue_id: int
|
||||
task_id: int
|
||||
author_id: int
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime]
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -147,15 +142,6 @@ class ProjectResponse(BaseModel):
|
||||
owner_id: int
|
||||
created_at: datetime
|
||||
|
||||
class _ProjectResponse_Inactive(ProjectBase):
|
||||
id: int
|
||||
owner_id: int
|
||||
project_code: str | None = None
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# User schemas
|
||||
class UserBase(BaseModel):
|
||||
|
||||
@@ -6,7 +6,7 @@ from datetime import datetime
|
||||
class WebhookCreate(BaseModel):
|
||||
url: str
|
||||
secret: Optional[str] = None
|
||||
events: str # comma-separated: "issue.created,issue.updated"
|
||||
events: str # comma-separated: "task.created,task.updated"
|
||||
project_id: Optional[int] = None
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user