feat: add code fields - milestoneCode, taskCode, supportCode, meetingCode

This commit is contained in:
Zhi
2026-03-12 22:48:04 +00:00
parent 5297711c77
commit a1a99bb838
5 changed files with 22 additions and 20 deletions

View File

@@ -24,6 +24,7 @@ class Meeting(Base):
description = Column(Text, nullable=True)
status = Column(Enum(MeetingStatus), default=MeetingStatus.SCHEDULED)
priority = Column(Enum(MeetingPriority), default=MeetingPriority.MEDIUM)
meeting_code = Column(String(64), nullable=True, unique=True, index=True)
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
milestone_id = Column(Integer, ForeignKey("milestones.id"), nullable=False)
@@ -34,6 +35,3 @@ class Meeting(Base):
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
reporter = relationship("User", foreign_keys=[reporter_id])

View File

@@ -1,10 +1,9 @@
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum, Time
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.core.config import Base
import enum
class MilestoneStatus(str, enum.Enum):
OPEN = "open"
PENDING = "pending"
@@ -12,20 +11,20 @@ class MilestoneStatus(str, enum.Enum):
PROGRESSING = "progressing"
CLOSED = "closed"
class Milestone(Base):
__tablename__ = "milestones"
id = Column(Integer, primary_key=True, index=True)
title = Column(String(255), nullable=False)
description = Column(Text, nullable=True)
status = Column(Enum(MilestoneStatus), default=MilestoneStatus.OPEN)
milestone_code = Column(String(64), nullable=True, unique=True, index=True)
due_date = Column(DateTime(timezone=True), nullable=True)
planned_release_date = Column(DateTime(timezone=True), nullable=True)
depend_on_milestones = Column(Text, nullable=True) # JSON list of milestone codes
depend_on_tasks = Column(Text, nullable=True) # JSON list of task IDs
depend_on_milestones = Column(Text, nullable=True)
depend_on_tasks = Column(Text, nullable=True)
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
project = relationship("Project")

View File

@@ -24,6 +24,7 @@ class Support(Base):
description = Column(Text, nullable=True)
status = Column(Enum(SupportStatus), default=SupportStatus.OPEN)
priority = Column(Enum(SupportPriority), default=SupportPriority.MEDIUM)
support_code = Column(String(64), nullable=True, unique=True, index=True)
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
milestone_id = Column(Integer, ForeignKey("milestones.id"), nullable=False)
@@ -32,7 +33,3 @@ class Support(Base):
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
reporter = relationship("User", foreign_keys=[reporter_id])
assignee = relationship("User", foreign_keys=[assignee_id])

View File

@@ -24,6 +24,7 @@ class Task(Base):
description = Column(Text, nullable=True)
status = Column(Enum(TaskStatus), default=TaskStatus.OPEN)
priority = Column(Enum(TaskPriority), default=TaskPriority.MEDIUM)
task_code = Column(String(64), nullable=True, unique=True, index=True)
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
milestone_id = Column(Integer, ForeignKey("milestones.id"), nullable=False)
@@ -31,7 +32,6 @@ class Task(Base):
assignee_id = Column(Integer, ForeignKey("users.id"), nullable=True)
created_by_id = Column(Integer, ForeignKey("users.id"), nullable=True)
task_code = Column(String(64), nullable=True, unique=True, index=True)
depend_on = Column(Text, nullable=True)
estimated_effort = Column(Integer, nullable=True)
estimated_working_time = Column(Time, nullable=True)
@@ -41,5 +41,3 @@ class Task(Base):
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())