feat: 사용자 요구사항 기능 완전 구현 및 전체 카테고리 추가
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
- 사용자 요구사항 저장/로드/엑셀 내보내기 기능 완전 구현 - 백엔드 API 수정: Request Body 방식으로 변경 - 데이터베이스 스키마: material_id 컬럼 추가 - 프론트엔드 상태 관리 개선: 저장 후 자동 리로드 - 입력 필드 연결 문제 해결: 누락된 onChange 핸들러 추가 - NewMaterialsPage에 '전체' 카테고리 버튼 추가 (기본 선택) - Docker 환경 개선: 프론트엔드 볼륨 마운트 및 포트 수정 - UI 개선: 벌레 이모지 제거, 디버그 코드 정리
This commit is contained in:
@@ -2,6 +2,7 @@ from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Form, R
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import text
|
||||
from typing import List, Optional, Dict
|
||||
from pydantic import BaseModel
|
||||
import os
|
||||
import shutil
|
||||
from datetime import datetime
|
||||
@@ -2629,6 +2630,7 @@ async def get_user_requirements(
|
||||
{
|
||||
"id": req.id,
|
||||
"file_id": req.file_id,
|
||||
"material_id": req.material_id,
|
||||
"original_filename": req.original_filename,
|
||||
"job_no": req.job_no,
|
||||
"revision": req.revision,
|
||||
@@ -2651,17 +2653,20 @@ async def get_user_requirements(
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"사용자 요구사항 조회 실패: {str(e)}")
|
||||
|
||||
class UserRequirementCreate(BaseModel):
|
||||
file_id: int
|
||||
material_id: Optional[int] = None
|
||||
requirement_type: str
|
||||
requirement_title: str
|
||||
requirement_description: Optional[str] = None
|
||||
requirement_spec: Optional[str] = None
|
||||
priority: str = "NORMAL"
|
||||
assigned_to: Optional[str] = None
|
||||
due_date: Optional[str] = None
|
||||
|
||||
@router.post("/user-requirements")
|
||||
async def create_user_requirement(
|
||||
file_id: int,
|
||||
requirement_type: str,
|
||||
requirement_title: str,
|
||||
material_id: Optional[int] = None,
|
||||
requirement_description: Optional[str] = None,
|
||||
requirement_spec: Optional[str] = None,
|
||||
priority: str = "NORMAL",
|
||||
assigned_to: Optional[str] = None,
|
||||
due_date: Optional[str] = None,
|
||||
requirement: UserRequirementCreate,
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
"""
|
||||
@@ -2681,15 +2686,15 @@ async def create_user_requirement(
|
||||
""")
|
||||
|
||||
result = db.execute(insert_query, {
|
||||
"file_id": file_id,
|
||||
"material_id": material_id,
|
||||
"requirement_type": requirement_type,
|
||||
"requirement_title": requirement_title,
|
||||
"requirement_description": requirement_description,
|
||||
"requirement_spec": requirement_spec,
|
||||
"priority": priority,
|
||||
"assigned_to": assigned_to,
|
||||
"due_date": due_date
|
||||
"file_id": requirement.file_id,
|
||||
"material_id": requirement.material_id,
|
||||
"requirement_type": requirement.requirement_type,
|
||||
"requirement_title": requirement.requirement_title,
|
||||
"requirement_description": requirement.requirement_description,
|
||||
"requirement_spec": requirement.requirement_spec,
|
||||
"priority": requirement.priority,
|
||||
"assigned_to": requirement.assigned_to,
|
||||
"due_date": requirement.due_date
|
||||
})
|
||||
|
||||
requirement_id = result.fetchone()[0]
|
||||
|
||||
Reference in New Issue
Block a user