feat: 관리함 완전 개편 - 편집 가능한 테이블 및 완료 처리 기능
🎯 Major Management Page Overhaul: - 테이블 최소 너비 2000px로 확장 (좌우 스크롤 최적화) - 컬럼별 개별 너비 설정으로 내용에 맞는 크기 조정 - 편집 가능한 필드들 (해결방안, 담당부서, 담당자, 조치예상일, 원인부서, 의견) - 진행 중 → 완료됨 처리 버튼 추가 📊 Enhanced Table Structure: - 업로드 사진 2장 표시 (photo_path, photo_path2) - 완료 사진 별도 컬럼으로 표시 - 작업 컬럼 추가 (저장 버튼) - 완료 확인 컬럼 (진행 중: 완료 처리 버튼, 완료됨: 완료일) ✏️ Editable Fields Implementation: - createEditableField() 함수로 동적 입력 필드 생성 - textarea, select, date, text 타입 지원 - 부서 선택 드롭다운 (생산, 품질, 구매, 설계, 영업) - 실시간 편집 및 저장 기능 🔧 Backend API Enhancement: - PUT /api/issues/{issue_id}/management 엔드포인트 추가 - ManagementUpdateRequest 스키마 활용 - 관리함 페이지 권한 검증 - 완료 사진 업로드 지원 📈 Smart Sequencing System: - 수신함에서 넘어온 순서대로 No. 할당 (reviewed_at 기준) - 프로젝트별 그룹화 후 순번 재할당 - 진행 중 A → 진행 중 B → 완료됨 C → 진행 중 D = 1, 2, 3, 4 🎨 UI/UX Improvements: - 컬럼별 CSS 클래스로 일관된 스타일링 - 편집 가능한 필드 포커스 효과 - 사진 컨테이너로 2장 사진 깔끔한 배치 - 버튼 크기 최적화 (btn-sm 클래스) 🚀 Functional Features: - completeIssue(): 진행 중 → 완료됨 처리 - saveIssueChanges(): 편집된 필드들 일괄 저장 - 실시간 목록 새로고침 - 확인 다이얼로그로 안전한 작업 처리 Expected Result: ✅ 좌우 스크롤로 모든 정보 편리하게 확인 ✅ 관리함에서 필요한 정보 직접 입력/수정 ✅ 진행 중에서 완료 처리 원클릭 ✅ 수신함 순서 기반 체계적인 No. 관리 ✅ 업로드 사진 2장 + 완료 사진 명확한 구분
This commit is contained in:
Binary file not shown.
@@ -7,6 +7,7 @@ from database.database import get_db
|
||||
from database.models import Issue, IssueStatus, User, UserRole
|
||||
from database import schemas
|
||||
from routers.auth import get_current_user, get_current_admin
|
||||
from routers.page_permissions import check_page_access
|
||||
from services.file_service import save_base64_image, delete_file
|
||||
|
||||
router = APIRouter(prefix="/api/issues", tags=["issues"])
|
||||
@@ -224,3 +225,45 @@ async def get_issue_stats(
|
||||
"progress": progress,
|
||||
"complete": complete
|
||||
}
|
||||
|
||||
@router.put("/{issue_id}/management")
|
||||
async def update_issue_management(
|
||||
issue_id: int,
|
||||
management_update: schemas.ManagementUpdateRequest,
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
"""
|
||||
관리함에서 이슈의 관리 관련 필드들을 업데이트합니다.
|
||||
"""
|
||||
# 관리함 페이지 권한 확인
|
||||
if not (current_user.role == UserRole.admin or check_page_access(current_user.id, 'issues_management', db)):
|
||||
raise HTTPException(status_code=403, detail="관리함 접근 권한이 없습니다.")
|
||||
|
||||
# 이슈 조회
|
||||
issue = db.query(Issue).filter(Issue.id == issue_id).first()
|
||||
if not issue:
|
||||
raise HTTPException(status_code=404, detail="부적합을 찾을 수 없습니다.")
|
||||
|
||||
# 관리함에서만 수정 가능한 필드들만 업데이트
|
||||
update_data = management_update.dict(exclude_unset=True)
|
||||
|
||||
for field, value in update_data.items():
|
||||
if field == 'completion_photo' and value:
|
||||
# 완료 사진 업로드 처리
|
||||
try:
|
||||
completion_photo_path = save_base64_image(value, "completion")
|
||||
setattr(issue, 'completion_photo_path', completion_photo_path)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=f"완료 사진 저장 실패: {str(e)}")
|
||||
elif field != 'completion_photo': # completion_photo는 위에서 처리됨
|
||||
setattr(issue, field, value)
|
||||
|
||||
db.commit()
|
||||
db.refresh(issue)
|
||||
|
||||
return {
|
||||
"message": "관리 정보가 업데이트되었습니다.",
|
||||
"issue_id": issue.id,
|
||||
"updated_fields": list(update_data.keys())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user