feat: 모든 페이지에서 최신순 정렬 적용
📅 Sorting Order Improvements: - 모든 이슈 목록에서 최신 항목이 위로 오도록 정렬 순서 통일 - report_date 기준 내림차순(DESC) 정렬로 일관성 확보 🔧 Backend API Updates: - GET /api/issues/: order_by(Issue.report_date.desc()) 추가 - GET /api/issues/admin/all: order_by(Issue.report_date.desc()) 추가 - GET /api/reports/issues: order_by(Issue.report_date.desc()) 변경 🎨 Frontend Sorting Updates: - issues-inbox.html: created_at → report_date 기준 정렬 - issues-management.html: created_at → report_date 기준 정렬 - issues-archive.html: updated_at/created_at → report_date 기준 정렬 - 폐기함 'completed' 정렬: disposed_at 우선, 없으면 report_date 사용 📋 Consistency Improvements: - 수신함, 관리함, 폐기함 모든 페이지에서 동일한 정렬 기준 적용 - 백엔드 API와 프론트엔드 정렬 로직 일치 - 사용자 경험 향상: 최신 이슈를 먼저 확인 가능 🚀 User Experience: - 최신 부적합 사항을 즉시 확인 가능 - 시간순 정렬로 업무 우선순위 파악 용이 - 일관된 정렬 순서로 사용자 혼란 방지 Expected Result: ✅ 모든 이슈 목록에서 최신 항목이 맨 위에 표시 ✅ 백엔드 API와 프론트엔드 정렬 로직 일치 ✅ 수신함/관리함/폐기함 정렬 순서 통일 ✅ 사용자가 최신 이슈를 우선적으로 확인 가능
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -65,7 +65,8 @@ async def read_issues(
|
||||
if status:
|
||||
query = query.filter(Issue.status == status)
|
||||
|
||||
issues = query.offset(skip).limit(limit).all()
|
||||
# 최신순 정렬 (report_date 기준)
|
||||
issues = query.order_by(Issue.report_date.desc()).offset(skip).limit(limit).all()
|
||||
return issues
|
||||
|
||||
@router.get("/admin/all", response_model=List[schemas.Issue])
|
||||
@@ -93,7 +94,8 @@ async def read_all_issues_admin(
|
||||
if status:
|
||||
query = query.filter(Issue.status == status)
|
||||
|
||||
issues = query.offset(skip).limit(limit).all()
|
||||
# 최신순 정렬 (report_date 기준)
|
||||
issues = query.order_by(Issue.report_date.desc()).offset(skip).limit(limit).all()
|
||||
return issues
|
||||
|
||||
@router.get("/{issue_id}", response_model=schemas.Issue)
|
||||
|
||||
@@ -92,7 +92,7 @@ async def get_report_issues(
|
||||
if current_user.role == UserRole.user:
|
||||
query = query.filter(Issue.reporter_id == current_user.id)
|
||||
|
||||
issues = query.order_by(Issue.report_date).all()
|
||||
issues = query.order_by(Issue.report_date.desc()).all()
|
||||
|
||||
return [{
|
||||
"id": issue.id,
|
||||
|
||||
@@ -395,15 +395,15 @@
|
||||
filteredIssues.sort((a, b) => {
|
||||
switch (sortOrder) {
|
||||
case 'newest':
|
||||
return new Date(b.updated_at || b.created_at) - new Date(a.updated_at || a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
case 'oldest':
|
||||
return new Date(a.updated_at || a.created_at) - new Date(b.updated_at || b.created_at);
|
||||
return new Date(a.report_date) - new Date(b.report_date);
|
||||
case 'completed':
|
||||
return new Date(b.updated_at || b.created_at) - new Date(a.updated_at || a.created_at);
|
||||
return new Date(b.disposed_at || b.report_date) - new Date(a.disposed_at || a.report_date);
|
||||
case 'category':
|
||||
return (a.category || '').localeCompare(b.category || '');
|
||||
default:
|
||||
return new Date(b.updated_at || b.created_at) - new Date(a.updated_at || a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -703,14 +703,14 @@
|
||||
filteredIssues.sort((a, b) => {
|
||||
switch (sortOrder) {
|
||||
case 'newest':
|
||||
return new Date(b.created_at) - new Date(a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
case 'oldest':
|
||||
return new Date(a.created_at) - new Date(b.created_at);
|
||||
return new Date(a.report_date) - new Date(b.report_date);
|
||||
case 'priority':
|
||||
const priorityOrder = { 'high': 3, 'medium': 2, 'low': 1 };
|
||||
return (priorityOrder[b.priority] || 1) - (priorityOrder[a.priority] || 1);
|
||||
default:
|
||||
return new Date(b.created_at) - new Date(a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -406,14 +406,14 @@
|
||||
const priorityOrder = { 'high': 3, 'medium': 2, 'low': 1 };
|
||||
return (priorityOrder[b.priority] || 1) - (priorityOrder[a.priority] || 1);
|
||||
case 'newest':
|
||||
return new Date(b.created_at) - new Date(a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
case 'oldest':
|
||||
return new Date(a.created_at) - new Date(b.created_at);
|
||||
return new Date(a.report_date) - new Date(b.report_date);
|
||||
case 'status':
|
||||
const statusOrder = { 'new': 4, 'processing': 3, 'pending': 2, 'completed': 1 };
|
||||
return (statusOrder[b.status] || 0) - (statusOrder[a.status] || 0);
|
||||
default:
|
||||
return new Date(b.created_at) - new Date(a.created_at);
|
||||
return new Date(b.report_date) - new Date(a.report_date);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user