diff --git a/app/api/routers/misc.py b/app/api/routers/misc.py index 2cb09f3..5454ccf 100644 --- a/app/api/routers/misc.py +++ b/app/api/routers/misc.py @@ -547,8 +547,10 @@ def create_task(project_code: str, milestone_id: int, task_data: dict, db: Sessi if ms.status and hasattr(ms.status, "value") and ms.status.value == "progressing": raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress") - max_task = db.query(Task).filter(Task.project_id == project.id).order_by(Task.id.desc()).first() - next_id = (max_task.id + 1) if max_task else 1 + # Generate task_code: milestoneCode:T{i:05x} + milestone_code = ms.milestone_code or f"m{ms.id}" + max_task = db.query(Task).filter(Task.milestone_id == ms.id).order_by(Task.id.desc()).first() + next_num = (max_task.id + 1) if max_task else 1 task_code = f"{milestone_code}:T{next_num:05x}" est_time = None @@ -695,6 +697,12 @@ def create_support(project_code: str, milestone_id: int, support_data: dict, db: if ms.status and hasattr(ms.status, "value") and ms.status.value == "progressing": raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress") + # Generate support_code: milestoneCode:S{i:05x} + milestone_code = ms.milestone_code or f"m{ms.id}" + max_support = db.query(Support).filter(Support.milestone_id == milestone_id).order_by(Support.id.desc()).first() + next_num = (max_support.id + 1) if max_support else 1 + support_code = f"{milestone_code}:S{next_num:05x}" + support = Support( title=support_data.get("title"), description=support_data.get("description"), @@ -703,6 +711,7 @@ def create_support(project_code: str, milestone_id: int, support_data: dict, db: project_id=project.id, milestone_id=milestone_id, reporter_id=current_user.id, + support_code=support_code, ) db.add(support) db.commit() @@ -750,6 +759,12 @@ def create_meeting(project_code: str, milestone_id: int, meeting_data: dict, db: if ms.status and hasattr(ms.status, "value") and ms.status.value == "progressing": raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress") + # Generate meeting_code: milestoneCode:M{i:05x} + milestone_code = ms.milestone_code or f"m{ms.id}" + max_meeting = db.query(Meeting).filter(Meeting.milestone_id == milestone_id).order_by(Meeting.id.desc()).first() + next_num = (max_meeting.id + 1) if max_meeting else 1 + meeting_code = f"{milestone_code}:M{next_num:05x}" + scheduled_at = None if meeting_data.get("scheduled_at"): try: @@ -765,6 +780,7 @@ def create_meeting(project_code: str, milestone_id: int, meeting_data: dict, db: project_id=project.id, milestone_id=milestone_id, reporter_id=current_user.id, + meeting_code=meeting_code, scheduled_at=scheduled_at, duration_minutes=meeting_data.get("duration_minutes"), )