diff --git a/design/uiux/prototype/12-회의록목록조회.html b/design/uiux/prototype/12-회의록목록조회.html
index b48e26a..7c03754 100644
--- a/design/uiux/prototype/12-회의록목록조회.html
+++ b/design/uiux/prototype/12-회의록목록조회.html
@@ -368,6 +368,19 @@
color: var(--gray-500);
}
+ /* 검증완료율 표시 */
+ .completion-rate {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ padding: 4px 8px;
+ background: rgba(77, 213, 167, 0.1);
+ color: var(--primary);
+ border-radius: 12px;
+ font-size: var(--font-small);
+ font-weight: var(--font-weight-medium);
+ }
+
/* 빈 상태 */
.empty-state {
text-align: center;
@@ -592,7 +605,11 @@
'
확정완료' :
'
작성중';
const crownEmoji = isCreator ? '
👑' : '';
- const completionRate = minute.status === 'draft' ? `
${minute.completionRate}% 완료` : '';
+
+ // 검증완료율 실시간 계산 (작성중 상태일 때만 표시)
+ const completionRate = minute.status === 'draft'
+ ? `
✓ ${calculateCompletionRate(minute)}% 검증완료`
+ : '';
return `
diff --git a/design/uiux/prototype/common.js b/design/uiux/prototype/common.js
index 7f5ee05..6e57a0a 100644
--- a/design/uiux/prototype/common.js
+++ b/design/uiux/prototype/common.js
@@ -140,8 +140,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 4,
lastUpdated: '2025-10-23',
- completionRate: 75,
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '신제품 기획 방향', verified: true },
+ { id: 'section-2', title: '개발 일정 및 리소스', verified: true },
+ { id: 'section-3', title: '마케팅 전략', verified: false }
+ ],
todos: 5
},
{
@@ -158,8 +161,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-21',
- completionRate: 60,
- sections: 2,
+ sections: [
+ { id: 'section-1', title: '지난주 진행 사항', verified: true },
+ { id: 'section-2', title: '이번주 계획', verified: false }
+ ],
todos: 8
},
{
@@ -175,7 +180,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 2,
lastUpdated: '2025-10-23',
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '현재 AI 모델 성능 분석', verified: true },
+ { id: 'section-2', title: '개선 방향 논의', verified: true },
+ { id: 'section-3', title: '기술 스택 검토', verified: true },
+ { id: 'section-4', title: '일정 계획', verified: true }
+ ],
todos: 3
},
{
@@ -194,8 +204,13 @@ const SAMPLE_MINUTES = [
],
participantCount: 5,
lastUpdated: '2025-10-22',
- completionRate: 50,
- sections: 5,
+ sections: [
+ { id: 'section-1', title: '현재 리소스 현황', verified: true },
+ { id: 'section-2', title: '프로젝트 우선순위', verified: true },
+ { id: 'section-3', title: '인력 배분 계획', verified: false },
+ { id: 'section-4', title: '채용 계획', verified: true },
+ { id: 'section-5', title: '일정 조정', verified: false }
+ ],
todos: 7
},
{
@@ -212,7 +227,13 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-18',
- sections: 5,
+ sections: [
+ { id: 'section-1', title: '현재 영업 현황', verified: true },
+ { id: 'section-2', title: '타겟 고객 분석', verified: true },
+ { id: 'section-3', title: '영업 전략 수립', verified: true },
+ { id: 'section-4', title: '목표 설정', verified: true },
+ { id: 'section-5', title: '실행 계획', verified: true }
+ ],
todos: 6
},
{
@@ -229,7 +250,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-20',
- sections: 3,
+ sections: [
+ { id: 'section-1', title: 'Keep (유지할 것)', verified: true },
+ { id: 'section-2', title: 'Problem (문제점)', verified: true },
+ { id: 'section-3', title: 'Try (시도할 것)', verified: true }
+ ],
todos: 4
},
{
@@ -247,8 +272,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 4,
lastUpdated: '2025-10-19',
- completionRate: 40,
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '디자인 시스템 검토', verified: true },
+ { id: 'section-2', title: '사용자 플로우 검증', verified: true },
+ { id: 'section-3', title: '접근성 개선', verified: false },
+ { id: 'section-4', title: '다음 스프린트 계획', verified: false }
+ ],
todos: 5
},
{
@@ -265,7 +294,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-20',
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '경쟁사 A 분석', verified: true },
+ { id: 'section-2', title: '경쟁사 B 분석', verified: true },
+ { id: 'section-3', title: '차별화 전략', verified: true }
+ ],
todos: 2
},
{
@@ -281,8 +314,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 2,
lastUpdated: '2025-10-18',
- completionRate: 75,
- sections: 2,
+ sections: [
+ { id: 'section-1', title: '인터뷰 결과 요약', verified: true },
+ { id: 'section-2', title: '다음 액션 아이템', verified: false }
+ ],
todos: 4
},
{
@@ -299,7 +334,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-17',
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '보안 취약점 분석', verified: true },
+ { id: 'section-2', title: '대응 방안', verified: true },
+ { id: 'section-3', title: '후속 조치', verified: true }
+ ],
todos: 5
},
{
@@ -317,7 +356,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 4,
lastUpdated: '2025-10-16',
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '시장 분석', verified: true },
+ { id: 'section-2', title: '타겟 고객층', verified: true },
+ { id: 'section-3', title: '마케팅 채널 선정', verified: true },
+ { id: 'section-4', title: '예산 계획', verified: true }
+ ],
todos: 6
},
{
@@ -337,8 +381,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 6,
lastUpdated: '2025-10-15',
- completionRate: 20,
- sections: 2,
+ sections: [
+ { id: 'section-1', title: '분기 성과 분석', verified: true },
+ { id: 'section-2', title: '개선 계획', verified: false }
+ ],
todos: 3
},
{
@@ -357,7 +403,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 5,
lastUpdated: '2025-10-14',
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '프로젝트 목표', verified: true },
+ { id: 'section-2', title: '역할 분담', verified: true },
+ { id: 'section-3', title: '일정 계획', verified: true },
+ { id: 'section-4', title: '리스크 관리', verified: true }
+ ],
todos: 7
},
{
@@ -374,7 +425,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-13',
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '고객 피드백 분석', verified: true },
+ { id: 'section-2', title: '개선 우선순위', verified: true },
+ { id: 'section-3', title: '실행 계획', verified: true }
+ ],
todos: 4
},
{
@@ -392,8 +447,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 4,
lastUpdated: '2025-10-12',
- completionRate: 30,
- sections: 2,
+ sections: [
+ { id: 'section-1', title: '현재 기술 스택 검토', verified: true },
+ { id: 'section-2', title: '새로운 기술 도입 검토', verified: false }
+ ],
todos: 5
},
{
@@ -414,7 +471,13 @@ const SAMPLE_MINUTES = [
],
participantCount: 7,
lastUpdated: '2025-10-11',
- sections: 5,
+ sections: [
+ { id: 'section-1', title: '이번 달 실적 요약', verified: true },
+ { id: 'section-2', title: '주요 이슈 및 대응', verified: true },
+ { id: 'section-3', title: '개선 사항', verified: true },
+ { id: 'section-4', title: 'KPI 분석', verified: true },
+ { id: 'section-5', title: '다음 달 계획', verified: true }
+ ],
todos: 8
},
{
@@ -431,7 +494,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-10',
- sections: 2,
+ sections: [
+ { id: 'section-1', title: '후보자 평가', verified: true },
+ { id: 'section-2', title: '채용 결정', verified: true }
+ ],
todos: 3
},
{
@@ -450,8 +516,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 5,
lastUpdated: '2025-10-09',
- completionRate: 50,
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '협업 방안 논의', verified: true },
+ { id: 'section-2', title: '계약 조건 검토', verified: false },
+ { id: 'section-3', title: '일정 및 로드맵', verified: true }
+ ],
todos: 6
},
{
@@ -469,7 +538,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 4,
lastUpdated: '2025-10-08',
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '데이터 수집 현황', verified: true },
+ { id: 'section-2', title: '분석 결과', verified: true },
+ { id: 'section-3', title: '인사이트 도출', verified: true },
+ { id: 'section-4', title: '액션 플랜', verified: true }
+ ],
todos: 5
},
{
@@ -489,7 +563,12 @@ const SAMPLE_MINUTES = [
],
participantCount: 6,
lastUpdated: '2025-10-07',
- sections: 4,
+ sections: [
+ { id: 'section-1', title: '현재 서비스 분석', verified: true },
+ { id: 'section-2', title: '개선 아이디어 도출', verified: true },
+ { id: 'section-3', title: '우선순위 결정', verified: true },
+ { id: 'section-4', title: '실행 계획', verified: true }
+ ],
todos: 7
},
{
@@ -506,8 +585,10 @@ const SAMPLE_MINUTES = [
],
participantCount: 3,
lastUpdated: '2025-10-06',
- completionRate: 65,
- sections: 2,
+ sections: [
+ { id: 'section-1', title: 'VOC 데이터 분석', verified: true },
+ { id: 'section-2', title: '개선 방향', verified: false }
+ ],
todos: 4
},
{
@@ -529,7 +610,14 @@ const SAMPLE_MINUTES = [
],
participantCount: 8,
lastUpdated: '2025-10-05',
- sections: 6,
+ sections: [
+ { id: 'section-1', title: '연말 목표 설정', verified: true },
+ { id: 'section-2', title: '예산 계획', verified: true },
+ { id: 'section-3', title: '인력 계획', verified: true },
+ { id: 'section-4', title: '프로젝트 우선순위', verified: true },
+ { id: 'section-5', title: '리스크 관리', verified: true },
+ { id: 'section-6', title: '실행 로드맵', verified: true }
+ ],
todos: 10
},
{
@@ -549,8 +637,11 @@ const SAMPLE_MINUTES = [
],
participantCount: 6,
lastUpdated: '2025-10-04',
- completionRate: 45,
- sections: 3,
+ sections: [
+ { id: 'section-1', title: '현재 브랜드 분석', verified: true },
+ { id: 'section-2', title: '리뉴얼 방향 논의', verified: false },
+ { id: 'section-3', title: '타임라인 및 예산', verified: true }
+ ],
todos: 5
},
{
@@ -779,7 +870,40 @@ const SAMPLE_TODOS = [
];
// ========================================
-// 2. DOM Utilities
+// 2. Data Utilities
+// ========================================
+
+/**
+ * 회의록 검증완료율 계산
+ * @param {Object} minute - 회의록 객체 (sections 배열 포함)
+ * @returns {number} 검증완료율 (0-100)
+ *
+ * @example
+ * const minute = {
+ * sections: [
+ * { id: 'section-1', verified: true },
+ * { id: 'section-2', verified: false },
+ * { id: 'section-3', verified: true }
+ * ]
+ * };
+ * calculateCompletionRate(minute); // 67 (2/3 * 100)
+ */
+function calculateCompletionRate(minute) {
+ if (!minute || !minute.sections || !Array.isArray(minute.sections)) {
+ return 0;
+ }
+
+ const totalSections = minute.sections.length;
+ if (totalSections === 0) {
+ return 0;
+ }
+
+ const verifiedSections = minute.sections.filter(section => section.verified === true).length;
+ return Math.round((verifiedSections / totalSections) * 100);
+}
+
+// ========================================
+// 3. DOM Utilities
// ========================================
/**