From 045614dc5b2a0ce0b3704011a56bc430bee37a16 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sat, 25 Oct 2025 14:48:31 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EA=B4=80=EB=A6=AC=ED=95=A8=20?= =?UTF-8?q?=ED=86=B5=EA=B3=84=20=EC=84=B9=EC=85=98=20=EA=B0=9C=EC=84=A0=20?= =?UTF-8?q?=EB=B0=8F=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ“Š Statistics Section Redesign: - κΈ°μ‘΄ 5개 톡계 μΉ΄λ“œμ—μ„œ 3개둜 λ‹¨μˆœν™” - 총 뢀적합 | μ§„ν–‰ 쀑 | μ™„λ£Œλ¨ ꡬ쑰둜 λ³€κ²½ - ν”„λ‘œμ νŠΈ 선택 μ•„λž˜λ‘œ 톡계 μ„Ήμ…˜ 이동 - ν”„λ‘œμ νŠΈλ³„ 필터링에 λ”°λ₯Έ 동적 톡계 μ—…λ°μ΄νŠΈ πŸ—‘οΈ Unnecessary Features Removal: - 일괄 처리 λ²„νŠΌ 제거 (λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œ κ΅¬ν˜„ μ˜ˆμ •) - μ—‘μ…€ 내보내기 λ²„νŠΌ 제거 (λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œ κ΅¬ν˜„ μ˜ˆμ •) - bulkAction, exportData ν•¨μˆ˜ 제거 🎯 Enhanced User Experience: - ν”„λ‘œμ νŠΈ 선택 μ‹œ ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ ν†΅κ³„λ§Œ ν‘œμ‹œ - νƒ­ μ „ν™˜ μ‹œμ—λ„ 톡계 μžλ™ μ—…λ°μ΄νŠΈ - μ„ νƒλœ ν”„λ‘œμ νŠΈ κΈ°μ€€μœΌλ‘œ μ •ν™•ν•œ 카운트 제곡 πŸ”§ Technical Implementation: - updateStatistics() ν•¨μˆ˜ μΆ”κ°€ - filterIssues()에 톡계 μ—…λ°μ΄νŠΈ 둜직 톡합 - ν”„λ‘œμ νŠΈ 필터와 νƒ­ μƒνƒœμ— λ”°λ₯Έ 쑰건뢀 μΉ΄μš΄νŒ… - μ‹€μ‹œκ°„ 톡계 반영으둜 μ‚¬μš©μž νŽΈμ˜μ„± ν–₯상 πŸ’‘ Logical Flow: 1. ν”„λ‘œμ νŠΈ 선택 β†’ ν•΄λ‹Ή ν”„λ‘œμ νŠΈ 톡계 ν‘œμ‹œ 2. μƒνƒœ νƒ­ μ „ν™˜ β†’ μ„ νƒλœ ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ μƒνƒœλ³„ 필터링 3. ν†΅κ³„λŠ” 항상 μ„ νƒλœ ν”„λ‘œμ νŠΈ κΈ°μ€€μœΌλ‘œ 계산 Expected Result: βœ… ν”„λ‘œμ νŠΈλ³„ μ •ν™•ν•œ 톡계 ν‘œμ‹œ βœ… 총 뢀적합, μ§„ν–‰ 쀑, μ™„λ£Œλ¨ 3개 μΉ΄λ“œλ‘œ λ‹¨μˆœν™” βœ… λΆˆν•„μš”ν•œ λ²„νŠΌ 제거둜 κΉ”λ”ν•œ UI βœ… μ‹€μ‹œκ°„ 톡계 μ—…λ°μ΄νŠΈλ‘œ ν–₯μƒλœ UX --- frontend/issues-management.html | 153 ++++++++++++++------------------ 1 file changed, 67 insertions(+), 86 deletions(-) diff --git a/frontend/issues-management.html b/frontend/issues-management.html index 2288e14..eddc6e9 100644 --- a/frontend/issues-management.html +++ b/frontend/issues-management.html @@ -154,66 +154,8 @@

뢀적합 사항을 μ²˜λ¦¬ν•˜κ³  μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜μ„Έμš”

-
- - -
- -
-
-
- -
-

처리 ν•„μš”

-

0

-
-
-
-
-
- -
-

처리 쀑

-

0

-
-
-
-
-
- -
-

λŒ€κΈ° 쀑

-

0

-
-
-
-
-
- -
-

μ™„λ£Œ

-

0

-
-
-
-
-
- -
-

전체

-

0

-
-
-
-
@@ -240,6 +182,37 @@ μ™„λ£Œλ¨ + + +
+
+
+ +
+

총 뢀적합

+

0

+
+
+
+
+
+ +
+

μ§„ν–‰ 쀑

+

0

+
+
+
+
+
+ +
+

μ™„λ£Œλ¨

+

0

+
+
+
+
@@ -425,26 +398,47 @@ completedTab.className = 'flex-1 px-4 py-2 text-sm font-medium rounded-md transition-colors duration-200 bg-green-500 text-white'; } - filterIssues(); + filterIssues(); // 이미 updateStatistics()κ°€ 포함됨 } - // 필터링 및 ν‘œμ‹œ ν•¨μˆ˜λ“€ - function filterIssues() { - const projectFilter = document.getElementById('projectFilter').value; - - filteredIssues = issues.filter(issue => { - // ν˜„μž¬ 탭에 λ”°λ₯Έ μƒνƒœ 필터링 - if (issue.review_status !== currentTab) return false; + // 톡계 μ—…λ°μ΄νŠΈ ν•¨μˆ˜ + function updateStatistics() { + const projectFilter = document.getElementById('projectFilter').value; - // ν”„λ‘œμ νŠΈ 필터링 - if (projectFilter && issue.project_id != projectFilter) return false; + // μ„ νƒλœ ν”„λ‘œμ νŠΈμ— λ”°λ₯Έ 이슈 필터링 + const projectIssues = projectFilter + ? issues.filter(issue => issue.project_id == projectFilter) + : issues; - return true; - }); + // μƒνƒœλ³„ 카운트 + const totalCount = projectIssues.length; + const inProgressCount = projectIssues.filter(issue => issue.review_status === 'in_progress').length; + const completedCount = projectIssues.filter(issue => issue.review_status === 'completed').length; + + // 톡계 μ—…λ°μ΄νŠΈ + document.getElementById('totalCount').textContent = totalCount; + document.getElementById('inProgressCount').textContent = inProgressCount; + document.getElementById('completedCount').textContent = completedCount; + } - sortIssues(); - displayIssues(); - } + // 필터링 및 ν‘œμ‹œ ν•¨μˆ˜λ“€ + function filterIssues() { + const projectFilter = document.getElementById('projectFilter').value; + + filteredIssues = issues.filter(issue => { + // ν˜„μž¬ 탭에 λ”°λ₯Έ μƒνƒœ 필터링 + if (issue.review_status !== currentTab) return false; + + // ν”„λ‘œμ νŠΈ 필터링 + if (projectFilter && issue.project_id != projectFilter) return false; + + return true; + }); + + sortIssues(); + displayIssues(); + updateStatistics(); // 톡계 μ—…λ°μ΄νŠΈ μΆ”κ°€ + } function sortIssues() { const sortOrder = document.getElementById('sortOrder').value; @@ -729,19 +723,6 @@ } // 기타 ν•¨μˆ˜λ“€ - function bulkAction() { - if (selectedIssues.size === 0) { - alert('μ²˜λ¦¬ν•  뢀적합을 μ„ νƒν•΄μ£Όμ„Έμš”.'); - return; - } - // 일괄 처리 둜직 κ΅¬ν˜„ - alert(`${selectedIssues.size}개의 뢀적합을 일괄 μ²˜λ¦¬ν•©λ‹ˆλ‹€.`); - } - - function exportData() { - // 데이터 내보내기 둜직 κ΅¬ν˜„ - alert('데이터λ₯Ό λ‚΄λ³΄λƒ…λ‹ˆλ‹€.'); - } function viewIssueDetail(issueId) { window.location.href = `/issue-view.html#detail-${issueId}`;