mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 12:36:23 +00:00
회의록 목록 조회 화면 개선 및 불필요한 파일 삭제
- 회의록 목록 조회 화면 UI 개선 - 중복 회의 진행 화면 파일 삭제 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
3419194f24
commit
bc512eb5fc
@ -1,555 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ko">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>회의 진행 중 - 회의록 서비스</title>
|
|
||||||
<link rel="stylesheet" href="common.css">
|
|
||||||
<style>
|
|
||||||
.recording-indicator {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
|
||||||
color: var(--error);
|
|
||||||
}
|
|
||||||
|
|
||||||
.recording-dot {
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
background: var(--error);
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: pulse 1.5s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.waveform {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 2px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.waveform-bar {
|
|
||||||
width: 3px;
|
|
||||||
background: var(--error);
|
|
||||||
border-radius: 2px;
|
|
||||||
animation: wave 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.waveform-bar:nth-child(1) { height: 40%; animation-delay: 0s; }
|
|
||||||
.waveform-bar:nth-child(2) { height: 70%; animation-delay: 0.1s; }
|
|
||||||
.waveform-bar:nth-child(3) { height: 90%; animation-delay: 0.2s; }
|
|
||||||
.waveform-bar:nth-child(4) { height: 60%; animation-delay: 0.3s; }
|
|
||||||
.waveform-bar:nth-child(5) { height: 50%; animation-delay: 0.4s; }
|
|
||||||
|
|
||||||
@keyframes wave {
|
|
||||||
0%, 100% { transform: scaleY(1); }
|
|
||||||
50% { transform: scaleY(0.5); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.live-speech {
|
|
||||||
background: var(--primary-light);
|
|
||||||
border-left: 4px solid var(--primary);
|
|
||||||
padding: var(--space-md);
|
|
||||||
border-radius: var(--radius-md);
|
|
||||||
margin-bottom: var(--space-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.term-highlight {
|
|
||||||
background: #FFF3CD;
|
|
||||||
padding: 2px 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
text-decoration: underline;
|
|
||||||
text-decoration-style: dotted;
|
|
||||||
}
|
|
||||||
|
|
||||||
.reference-link {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: var(--space-sm);
|
|
||||||
padding: var(--space-sm);
|
|
||||||
background: var(--gray-100);
|
|
||||||
border-radius: var(--radius-md);
|
|
||||||
margin-bottom: var(--space-sm);
|
|
||||||
text-decoration: none;
|
|
||||||
color: var(--gray-700);
|
|
||||||
transition: background var(--transition-fast);
|
|
||||||
}
|
|
||||||
|
|
||||||
.reference-link:hover {
|
|
||||||
background: var(--gray-300);
|
|
||||||
}
|
|
||||||
|
|
||||||
.relevance-score {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 2px;
|
|
||||||
font-size: var(--font-caption);
|
|
||||||
color: var(--warning);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="page">
|
|
||||||
<!-- Header (Fixed, Collapsible) -->
|
|
||||||
<header style="position: sticky; top: 0; background: var(--white); border-bottom: 1px solid var(--gray-300); z-index: 100;">
|
|
||||||
<div style="padding: var(--space-md);">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm);">
|
|
||||||
<h1 style="font-size: var(--font-h3); margin: 0;">2025년 1분기 제품 기획 회의</h1>
|
|
||||||
<button class="btn-ghost" onclick="toggleMenu()">⋮</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between;">
|
|
||||||
<div class="recording-indicator">
|
|
||||||
<div class="recording-dot"></div>
|
|
||||||
<span class="text-small font-medium" id="elapsedTime">00:15:32</span>
|
|
||||||
<div class="waveform">
|
|
||||||
<div class="waveform-bar"></div>
|
|
||||||
<div class="waveform-bar"></div>
|
|
||||||
<div class="waveform-bar"></div>
|
|
||||||
<div class="waveform-bar"></div>
|
|
||||||
<div class="waveform-bar"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="avatar-group">
|
|
||||||
<div class="avatar avatar-green avatar-sm">김</div>
|
|
||||||
<div class="avatar avatar-blue avatar-sm">박</div>
|
|
||||||
<div class="avatar avatar-yellow avatar-sm">이</div>
|
|
||||||
<div class="avatar avatar-pink avatar-sm">최</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<!-- Main Content -->
|
|
||||||
<div class="container">
|
|
||||||
<!-- Live Speech Area -->
|
|
||||||
<div class="live-speech">
|
|
||||||
<div style="display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-sm);">
|
|
||||||
<div class="avatar avatar-blue avatar-sm">박</div>
|
|
||||||
<span class="text-small font-medium">박서연</span>
|
|
||||||
<span class="badge badge-ongoing">발언 중</span>
|
|
||||||
</div>
|
|
||||||
<p id="liveText" style="font-size: var(--font-body); line-height: 1.6; margin: 0;">
|
|
||||||
AI 기반 회의록 자동 생성 기능에 대해 <span class="term-highlight" onclick="showTermExplanation('NLP')">NLP</span> 모델을 적용하면 정확도를 95% 이상으로 높일 수 있습니다...
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Meeting Sections (Tabs) -->
|
|
||||||
<div class="tabs" id="sectionTabs">
|
|
||||||
<div class="tab active" data-section="0" onclick="switchSection(0)">회의 개요</div>
|
|
||||||
<div class="tab" data-section="1" onclick="switchSection(1)">논의 사항</div>
|
|
||||||
<div class="tab" data-section="2" onclick="switchSection(2)">결정 사항</div>
|
|
||||||
<div class="tab" data-section="3" onclick="switchSection(3)">액션 아이템</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Section Content -->
|
|
||||||
<div id="sectionContent">
|
|
||||||
<!-- 회의 개요 섹션 (기본 활성) -->
|
|
||||||
<div class="section-panel active" id="section-0">
|
|
||||||
<!-- AI 요약 영역 -->
|
|
||||||
<div class="card card-highlight mb-md">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm);">
|
|
||||||
<h3 class="text-small font-bold" style="margin: 0;">🤖 AI 요약</h3>
|
|
||||||
<div style="display: flex; gap: var(--space-sm);">
|
|
||||||
<span class="text-caption text-muted">2분 전 생성</span>
|
|
||||||
<button class="btn-ghost btn-sm" onclick="editSummary(0)">편집</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-small" id="summary-0">
|
|
||||||
2025년 1분기 신제품 개발을 위한 기획 회의입니다. AI 기반 회의록 자동화 서비스의 핵심 기능과 차별화 전략에 대해 논의하였으며, 예상 개발 일정은 3개월입니다.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- AI 자동 작성 내용 -->
|
|
||||||
<div class="card mb-md">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-md);">
|
|
||||||
<h3 class="text-small font-bold" style="margin: 0;">내용</h3>
|
|
||||||
<button class="btn-ghost btn-sm" onclick="editContent(0)">✏️ 편집</button>
|
|
||||||
</div>
|
|
||||||
<div id="content-0" style="line-height: 1.8;">
|
|
||||||
<p><strong>회의 목적:</strong> 2025년 1분기 신제품 개발 방향 수립</p>
|
|
||||||
<p><strong>참석자:</strong> 김민준(PM), 박서연(AI), 이준호(Backend), 최유진(Frontend)</p>
|
|
||||||
<p><strong>일시:</strong> 2025년 10월 25일 14:00 - 15:30</p>
|
|
||||||
<p><strong>장소:</strong> 본사 2층 대회의실</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 참고자료 영역 -->
|
|
||||||
<div class="mb-md">
|
|
||||||
<h3 class="text-small font-bold mb-sm">📎 참고자료</h3>
|
|
||||||
<div>
|
|
||||||
<a href="#" target="_blank" class="reference-link" onclick="openReference(event, 'meeting-002')">
|
|
||||||
<span style="font-size: 20px;">📄</span>
|
|
||||||
<div style="flex: 1;">
|
|
||||||
<div class="text-small font-medium">주간 스크럼 회의</div>
|
|
||||||
<div class="text-caption text-muted">2025-10-21</div>
|
|
||||||
</div>
|
|
||||||
<div class="relevance-score">
|
|
||||||
<span>⭐⭐⭐</span>
|
|
||||||
<span>85%</span>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="#" target="_blank" class="reference-link" onclick="openReference(event, 'meeting-003')">
|
|
||||||
<span style="font-size: 20px;">📄</span>
|
|
||||||
<div style="flex: 1;">
|
|
||||||
<div class="text-small font-medium">AI 기능 개선 회의</div>
|
|
||||||
<div class="text-caption text-muted">2025-10-23</div>
|
|
||||||
</div>
|
|
||||||
<div class="relevance-score">
|
|
||||||
<span>⭐⭐</span>
|
|
||||||
<span>72%</span>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 검증 완료 체크 -->
|
|
||||||
<div class="checkbox-wrapper">
|
|
||||||
<input type="checkbox" class="checkbox" id="verify-0" onchange="toggleVerify(0)">
|
|
||||||
<label for="verify-0" class="text-small">이 섹션의 내용을 검증했습니다</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 다른 섹션들은 숨김 처리 -->
|
|
||||||
<div class="section-panel" id="section-1" style="display: none;">
|
|
||||||
<div class="card card-highlight mb-md">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm);">
|
|
||||||
<h3 class="text-small font-bold" style="margin: 0;">🤖 AI 요약</h3>
|
|
||||||
<div style="display: flex; gap: var(--space-sm);">
|
|
||||||
<span class="text-caption text-muted">5분 전 생성</span>
|
|
||||||
<button class="btn-ghost btn-sm" onclick="editSummary(1)">편집</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-small" id="summary-1">
|
|
||||||
사용자 경험 개선과 AI 정확도 향상을 중심으로 논의했습니다. 실시간 STT 기능과 자동 요약 기능의 품질이 핵심 경쟁력으로 확인되었습니다.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-md">
|
|
||||||
<div id="content-1" style="line-height: 1.8;">
|
|
||||||
<p><strong>1. AI 모델 정확도</strong></p>
|
|
||||||
<p>- 현재 STT 정확도: 92%</p>
|
|
||||||
<p>- 목표 정확도: 95% 이상</p>
|
|
||||||
<p>- 개선 방안: 도메인 특화 학습 데이터 확보</p>
|
|
||||||
<br>
|
|
||||||
<p><strong>2. 사용자 인터페이스</strong></p>
|
|
||||||
<p>- Mobile First 디자인 채택</p>
|
|
||||||
<p>- 실시간 협업 기능 필수</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox-wrapper">
|
|
||||||
<input type="checkbox" class="checkbox" id="verify-1" onchange="toggleVerify(1)">
|
|
||||||
<label for="verify-1" class="text-small">이 섹션의 내용을 검증했습니다</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section-panel" id="section-2" style="display: none;">
|
|
||||||
<div class="card card-highlight mb-md">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm);">
|
|
||||||
<h3 class="text-small font-bold" style="margin: 0;">🤖 AI 요약</h3>
|
|
||||||
<div style="display: flex; gap: var(--space-sm);">
|
|
||||||
<span class="text-caption text-muted">3분 전 생성</span>
|
|
||||||
<button class="btn-ghost btn-sm" onclick="editSummary(2)">편집</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-small" id="summary-2">
|
|
||||||
MVP 개발 범위와 출시 일정이 확정되었습니다. 핵심 기능 위주로 3개월 내 출시를 목표로 합니다.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-md">
|
|
||||||
<div id="content-2" style="line-height: 1.8;">
|
|
||||||
<p><strong>✓ MVP 범위 확정</strong></p>
|
|
||||||
<p>- 실시간 STT 및 회의록 자동 생성</p>
|
|
||||||
<p>- 템플릿 기반 회의록 작성</p>
|
|
||||||
<p>- 기본 협업 기능</p>
|
|
||||||
<br>
|
|
||||||
<p><strong>✓ 개발 일정</strong></p>
|
|
||||||
<p>- 설계: 2주</p>
|
|
||||||
<p>- 개발: 10주</p>
|
|
||||||
<p>- 테스트 및 배포: 2주</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox-wrapper">
|
|
||||||
<input type="checkbox" class="checkbox" id="verify-2" onchange="toggleVerify(2)">
|
|
||||||
<label for="verify-2" class="text-small">이 섹션의 내용을 검증했습니다</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section-panel" id="section-3" style="display: none;">
|
|
||||||
<div class="card card-highlight mb-md">
|
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm);">
|
|
||||||
<h3 class="text-small font-bold" style="margin: 0;">🤖 AI 요약</h3>
|
|
||||||
<div style="display: flex; gap: var(--space-sm);">
|
|
||||||
<span class="text-caption text-muted">1분 전 생성</span>
|
|
||||||
<button class="btn-ghost btn-sm" onclick="editSummary(3)">편집</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-small" id="summary-3">
|
|
||||||
총 5개의 액션 아이템이 도출되었으며, 각 담당자와 마감일이 지정되었습니다.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-md">
|
|
||||||
<div id="content-3" style="line-height: 1.8;">
|
|
||||||
<div class="list-item mb-sm">
|
|
||||||
<input type="checkbox" class="checkbox">
|
|
||||||
<div style="flex: 1; margin-left: var(--space-sm);">
|
|
||||||
<div class="text-small font-medium">API 명세서 작성</div>
|
|
||||||
<div class="text-caption text-muted">담당: 이준호 | 마감: 10/23</div>
|
|
||||||
</div>
|
|
||||||
<span class="badge badge-high">높음</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="list-item mb-sm">
|
|
||||||
<input type="checkbox" class="checkbox">
|
|
||||||
<div style="flex: 1; margin-left: var(--space-sm);">
|
|
||||||
<div class="text-small font-medium">UI 프로토타입 디자인</div>
|
|
||||||
<div class="text-caption text-muted">담당: 최유진 | 마감: 10/28</div>
|
|
||||||
</div>
|
|
||||||
<span class="badge badge-medium">보통</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="list-item mb-sm">
|
|
||||||
<input type="checkbox" class="checkbox">
|
|
||||||
<div style="flex: 1; margin-left: var(--space-sm);">
|
|
||||||
<div class="text-small font-medium">AI 모델 성능 테스트</div>
|
|
||||||
<div class="text-caption text-muted">담당: 박서연 | 마감: 10/25</div>
|
|
||||||
</div>
|
|
||||||
<span class="badge badge-high">높음</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox-wrapper">
|
|
||||||
<input type="checkbox" class="checkbox" id="verify-3" onchange="toggleVerify(3)">
|
|
||||||
<label for="verify-3" class="text-small">이 섹션의 내용을 검증했습니다</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Bottom Action Bar (Fixed) -->
|
|
||||||
<div style="position: fixed; bottom: 0; left: 0; right: 0; background: var(--white); border-top: 1px solid var(--gray-300); padding: var(--space-md); display: flex; gap: var(--space-sm); z-index: 100;">
|
|
||||||
<button class="btn-ghost" onclick="pauseRecording()" id="pauseBtn">
|
|
||||||
<span>⏸️</span>
|
|
||||||
<span>일시정지</span>
|
|
||||||
</button>
|
|
||||||
<button class="btn-ghost" onclick="addManualNote()">
|
|
||||||
<span>📝</span>
|
|
||||||
<span>메모</span>
|
|
||||||
</button>
|
|
||||||
<button class="btn-error" onclick="endMeeting()" style="flex: 1;">
|
|
||||||
회의 종료
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Menu Modal -->
|
|
||||||
<div id="menuModal" class="modal-overlay">
|
|
||||||
<div class="modal">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h2 class="modal-title">회의 설정</h2>
|
|
||||||
<button class="modal-close" onclick="closeModal('menuModal')">✕</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="list">
|
|
||||||
<div class="list-item" onclick="showParticipants()">
|
|
||||||
<span>👥</span>
|
|
||||||
<span>참석자 목록</span>
|
|
||||||
</div>
|
|
||||||
<div class="list-item" onclick="inviteParticipant()">
|
|
||||||
<span>➕</span>
|
|
||||||
<span>참석자 추가 초대</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Term Explanation Modal -->
|
|
||||||
<div id="termModal" class="modal-overlay">
|
|
||||||
<div class="modal">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h2 class="modal-title" id="termTitle">NLP</h2>
|
|
||||||
<button class="modal-close" onclick="closeModal('termModal')">✕</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<h3 class="text-small font-bold mb-sm">정의</h3>
|
|
||||||
<p class="text-small mb-md">Natural Language Processing의 약자로, 자연어 처리를 의미합니다. 컴퓨터가 인간의 언어를 이해하고 처리할 수 있도록 하는 인공지능 기술입니다.</p>
|
|
||||||
|
|
||||||
<h3 class="text-small font-bold mb-sm">이 회의에서의 의미</h3>
|
|
||||||
<p class="text-small mb-md">회의 음성을 텍스트로 변환하고, 핵심 내용을 자동으로 추출하는 데 사용되는 기술입니다.</p>
|
|
||||||
|
|
||||||
<h3 class="text-small font-bold mb-sm">관련 회의록</h3>
|
|
||||||
<a href="#" class="reference-link">
|
|
||||||
<span>📄</span>
|
|
||||||
<span class="text-small">AI 기능 개선 회의 (2025-10-23)</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="common.js"></script>
|
|
||||||
<script>
|
|
||||||
let currentSection = 0;
|
|
||||||
let isRecording = true;
|
|
||||||
let elapsedSeconds = 932; // 15분 32초
|
|
||||||
let verifiedSections = [false, false, false, false];
|
|
||||||
|
|
||||||
// 경과 시간 업데이트
|
|
||||||
setInterval(() => {
|
|
||||||
if (isRecording) {
|
|
||||||
elapsedSeconds++;
|
|
||||||
const hours = Math.floor(elapsedSeconds / 3600);
|
|
||||||
const minutes = Math.floor((elapsedSeconds % 3600) / 60);
|
|
||||||
const seconds = elapsedSeconds % 60;
|
|
||||||
|
|
||||||
$('#elapsedTime').textContent =
|
|
||||||
`${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
|
|
||||||
}
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
// 섹션 전환
|
|
||||||
function switchSection(sectionIndex) {
|
|
||||||
// 탭 활성화 상태 변경
|
|
||||||
$$('.tab').forEach(tab => tab.classList.remove('active'));
|
|
||||||
$(`.tab[data-section="${sectionIndex}"]`).classList.add('active');
|
|
||||||
|
|
||||||
// 섹션 패널 표시
|
|
||||||
$$('.section-panel').forEach(panel => panel.style.display = 'none');
|
|
||||||
$(`#section-${sectionIndex}`).style.display = 'block';
|
|
||||||
|
|
||||||
currentSection = sectionIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 메뉴 토글
|
|
||||||
function toggleMenu() {
|
|
||||||
openModal('menuModal');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 녹음 일시정지/재개
|
|
||||||
function pauseRecording() {
|
|
||||||
isRecording = !isRecording;
|
|
||||||
const btn = $('#pauseBtn');
|
|
||||||
|
|
||||||
if (isRecording) {
|
|
||||||
btn.innerHTML = '<span>⏸️</span><span>일시정지</span>';
|
|
||||||
showToast('녹음이 재개되었습니다', 'info');
|
|
||||||
} else {
|
|
||||||
btn.innerHTML = '<span>▶️</span><span>재개</span>';
|
|
||||||
showToast('녹음이 일시정지되었습니다', 'info');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 수동 메모 추가
|
|
||||||
function addManualNote() {
|
|
||||||
const note = prompt('메모 내용을 입력하세요:');
|
|
||||||
if (note) {
|
|
||||||
showToast('메모가 추가되었습니다', 'success');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 회의 종료
|
|
||||||
function endMeeting() {
|
|
||||||
const allVerified = verifiedSections.every(v => v);
|
|
||||||
|
|
||||||
if (!allVerified) {
|
|
||||||
if (confirm('아직 검증하지 않은 섹션이 있습니다. 회의를 종료하시겠습니까?')) {
|
|
||||||
navigateTo('06-검증완료.html');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
navigateTo('06-검증완료.html');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 요약 편집
|
|
||||||
function editSummary(sectionIndex) {
|
|
||||||
const currentSummary = $(`#summary-${sectionIndex}`).textContent;
|
|
||||||
const newSummary = prompt('요약 내용을 수정하세요:', currentSummary);
|
|
||||||
|
|
||||||
if (newSummary !== null && newSummary.trim() !== '') {
|
|
||||||
$(`#summary-${sectionIndex}`).textContent = newSummary;
|
|
||||||
showToast('요약이 수정되었습니다', 'success');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 내용 편집
|
|
||||||
function editContent(sectionIndex) {
|
|
||||||
showToast('편집 모드로 전환되었습니다', 'info');
|
|
||||||
const content = $(`#content-${sectionIndex}`);
|
|
||||||
content.contentEditable = true;
|
|
||||||
content.focus();
|
|
||||||
content.style.border = '2px solid var(--primary)';
|
|
||||||
content.style.padding = 'var(--space-sm)';
|
|
||||||
content.style.borderRadius = 'var(--radius-md)';
|
|
||||||
|
|
||||||
// 3초 후 자동 저장 안내
|
|
||||||
setTimeout(() => {
|
|
||||||
content.contentEditable = false;
|
|
||||||
content.style.border = 'none';
|
|
||||||
content.style.padding = '0';
|
|
||||||
showToast('내용이 저장되었습니다', 'success');
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 검증 토글
|
|
||||||
function toggleVerify(sectionIndex) {
|
|
||||||
const checked = $(`#verify-${sectionIndex}`).checked;
|
|
||||||
verifiedSections[sectionIndex] = checked;
|
|
||||||
|
|
||||||
if (checked) {
|
|
||||||
showToast(`${sectionIndex + 1}번 섹션이 검증되었습니다`, 'success');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 전문용어 설명
|
|
||||||
function showTermExplanation(term) {
|
|
||||||
$('#termTitle').textContent = term;
|
|
||||||
openModal('termModal');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 참고자료 열기 (새 탭에서 열기)
|
|
||||||
function openReference(event, meetingId) {
|
|
||||||
event.preventDefault();
|
|
||||||
showToast('참고 회의록을 새 탭에서 엽니다', 'info');
|
|
||||||
// 실제로는 window.open()으로 새 탭 열기
|
|
||||||
window.open('#', '_blank');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 참석자 목록 표시
|
|
||||||
function showParticipants() {
|
|
||||||
closeModal('menuModal');
|
|
||||||
showToast('참석자: 김민준, 박서연, 이준호, 최유진', 'info');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 참석자 초대
|
|
||||||
function inviteParticipant() {
|
|
||||||
closeModal('menuModal');
|
|
||||||
const email = prompt('초대할 참석자의 이메일을 입력하세요:');
|
|
||||||
if (email) {
|
|
||||||
showToast(`${email}에게 초대 링크가 전송되었습니다`, 'success');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 설정
|
|
||||||
function showSettings() {
|
|
||||||
closeModal('menuModal');
|
|
||||||
showToast('설정 화면 (개발 예정)', 'info');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 페이지 이탈 경고
|
|
||||||
window.addEventListener('beforeunload', function(e) {
|
|
||||||
if (isRecording) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.returnValue = '회의가 진행 중입니다. 페이지를 나가시겠습니까?';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -617,10 +617,6 @@
|
|||||||
<span class="nav-icon">✅</span>
|
<span class="nav-icon">✅</span>
|
||||||
<span>Todo</span>
|
<span>Todo</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="nav-item">
|
|
||||||
<span class="nav-icon">👤</span>
|
|
||||||
<span>프로필</span>
|
|
||||||
</a>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<script src="common.js"></script>
|
<script src="common.js"></script>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user