diff --git a/design/uiux/prototype/10-회의록상세조회.html b/design/uiux/prototype/10-회의록상세조회.html index 5fd27da..5df7e27 100644 --- a/design/uiux/prototype/10-회의록상세조회.html +++ b/design/uiux/prototype/10-회의록상세조회.html @@ -948,7 +948,7 @@ - +
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 // ======================================== /**