mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 11:26:25 +00:00
UFR-MEET-030 회의 진행 화면 개선 - AI 제안 탭 내 개인 메모 작성 기능 명확화 (수동 저장만 지원) - 하단 고정 버튼 역할별 차별화 - 회의 생성자: 일시정지/녹음재개 + 회의 종료 - 회의 참석자: 회의 나가기 - 예외처리 추가: 회의 종료/나가기 확인 모달 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
38 KiB
38 KiB
회의록 서비스 스타일 가이드
문서 정보
- 작성일: 2025-10-21
- 최종 수정일: 2025-10-27
- 작성자: 강지수 (Product Designer), 이미준 (서비스 기획자), 도그냥 (서비스 기획자)
- 버전: 1.3.1
- 설계 철학: Mobile First Design
1. 디자인 철학
핵심 원칙
- Mobile First: 모바일 환경 우선 설계
- 깔끔한 미니멀리즘: 정보의 명확한 계층 구조와 여백 활용
- 직관적 UX: 사용자가 생각 없이 사용 가능한 인터페이스
- 일관성: 모든 화면에서 동일한 디자인 패턴 적용
2. 컬러 시스템
Primary Colors (주요 색상)
--primary: #4DD5A7; /* 민트 그린 - 메인 액션, CTA */
--primary-dark: #3DBD95; /* 민트 그린 (진하게) - 호버, 액티브 */
--primary-light: #E8F9F3; /* 민트 그린 (연하게) - 배경, 하이라이트 */
Semantic Colors (의미 색상)
--success: #4DD5A7; /* 성공, 완료 */
--warning: #FFB74D; /* 경고, 임박 */
--error: #FF6B6B; /* 에러, 긴급 */
--info: #64B5F6; /* 정보, 알림 */
--ongoing: #FF9800; /* 진행 중 (주황) */
Neutral Colors (중립 색상)
--gray-900: #212121; /* 제목, 강조 텍스트 */
--gray-700: #616161; /* 본문 텍스트 */
--gray-500: #9E9E9E; /* 보조 텍스트 */
--gray-300: #E0E0E0; /* 구분선, 테두리 */
--gray-100: #F5F5F5; /* 배경 (연한 회색) */
--white: #FFFFFF; /* 카드, 모달 배경 */
색상 사용 가이드
- Primary: 주요 액션 버튼, 활성 탭, FAB
- Success: 완료 상태, 체크박스 체크됨
- Warning: 마감 임박 Todo, 경고 배지
- Error: 에러 메시지, 마감 지연 Todo
- Gray: 텍스트, 구분선, 비활성 요소
3. 타이포그래피
폰트 패밀리
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
"Noto Sans KR", "Roboto", sans-serif;
폰트 크기 (Mobile First)
/* Mobile (320px~768px) */
--font-h1: 24px; /* 페이지 제목 */
--font-h2: 20px; /* 섹션 제목 */
--font-h3: 18px; /* 서브 타이틀 */
--font-body: 16px; /* 본문 */
--font-small: 14px; /* 보조 정보 */
--font-caption: 12px; /* 캡션, 메타 정보 */
/* Tablet/Desktop (768px+) */
--font-h1-desktop: 32px;
--font-h2-desktop: 24px;
--font-h3-desktop: 20px;
--font-body-desktop: 16px;
폰트 굵기
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-bold: 700;
사용 예시
- 제목 (H1): font-size: 24px, font-weight: 700, color: --gray-900
- 본문 (Body): font-size: 16px, font-weight: 400, color: --gray-700, line-height: 1.6
- 보조 정보 (Small): font-size: 14px, font-weight: 400, color: --gray-500
4. 간격 시스템 (Spacing)
기본 단위 (8px 그리드 시스템)
--space-xs: 4px;
--space-sm: 8px;
--space-md: 16px;
--space-lg: 24px;
--space-xl: 32px;
--space-xxl: 48px;
사용 가이드
- 컴포넌트 내부 패딩: 16px (--space-md)
- 카드 간격: 16px (--space-md)
- 섹션 간격: 24px (--space-lg)
- 페이지 여백: 16px (Mobile), 24px (Tablet/Desktop)
5. 레이아웃 & 그리드
브레이크포인트
--breakpoint-mobile: 320px;
--breakpoint-tablet: 768px;
--breakpoint-desktop: 1024px;
컨테이너 Max-Width
--container-mobile: 100%;
--container-tablet: 768px;
--container-desktop: 1200px;
그리드 시스템
- Mobile: 4 columns (16px gutter)
- Tablet: 8 columns (16px gutter)
- Desktop: 12 columns (24px gutter)
2열 레이아웃 (회의 진행 화면)
/* Mobile: 단일 열 (스크롤 가능) */
.two-column-layout {
display: flex;
flex-direction: column;
height: 100vh;
}
.editor-panel {
flex: 1;
padding: 16px;
overflow-y: auto;
}
.info-panel {
height: 50vh;
border-top: 1px solid var(--gray-300);
}
/* Desktop: 2열 구조 (왼쪽 60-70%, 오른쪽 30-40%) */
@media (min-width: 768px) {
.two-column-layout {
flex-direction: row;
}
.editor-panel {
flex: 0 0 65%;
border-right: 1px solid var(--gray-300);
}
.info-panel {
flex: 0 0 35%;
height: 100vh;
border-top: none;
}
}
사용 시나리오:
- 회의 진행 화면 (05-회의진행.html)
- 왼쪽: 텍스트 에디터 (툴바 + contentEditable 영역)
- 오른쪽: 탭 패널 (참석자/AI 제안/용어 사전/관련 자료)
6. 카드 디자인
카드 스타일
.card {
background: var(--white);
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
padding: 16px;
transition: box-shadow 0.2s ease;
}
.card:hover {
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
카드 변형
- 기본 카드: 배경 흰색, 그림자 있음
- 강조 카드: 배경 primary-light, 좌측 4px primary 보더
- 진행 중 카드: 배경 흰색, 좌측 4px ongoing 보더
7. 버튼 디자인
Primary Button (주요 액션)
.btn-primary {
background: var(--primary);
color: var(--white);
padding: 12px 24px;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
border: none;
transition: background 0.2s ease;
}
.btn-primary:hover {
background: var(--primary-dark);
}
Secondary Button (보조 액션)
.btn-secondary {
background: transparent;
color: var(--primary);
padding: 12px 24px;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
border: 1px solid var(--primary);
}
.btn-secondary:hover {
background: var(--primary-light);
}
Ghost Button (최소 강조)
.btn-ghost {
background: transparent;
color: var(--gray-700);
padding: 8px 16px;
border-radius: 8px;
font-size: 14px;
border: none;
}
.btn-ghost:hover {
background: var(--gray-100);
}
FAB (Floating Action Button)
.fab {
width: 56px;
height: 56px;
background: var(--primary);
color: var(--white);
border-radius: 50%;
box-shadow: 0 4px 12px rgba(77, 213, 167, 0.4);
position: fixed;
bottom: 24px;
right: 24px;
}
8. 배지 (Badges)
상태 배지
/* 완료 */
.badge-complete {
background: var(--success);
color: var(--white);
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
/* 진행중 */
.badge-ongoing {
background: var(--ongoing);
color: var(--white);
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
animation: pulse 1.5s ease-in-out infinite;
}
/* 예정 */
.badge-scheduled {
background: var(--info);
color: var(--white);
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
/* 지연 */
.badge-overdue {
background: var(--error);
color: var(--white);
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
우선순위 배지
/* 높음 */
.badge-high {
background: #FFEBEE;
color: #D32F2F;
border: 1px solid #EF9A9A;
}
/* 보통 */
.badge-medium {
background: #FFF3E0;
color: #F57C00;
border: 1px solid #FFCC80;
}
/* 낮음 */
.badge-low {
background: #E8F5E9;
color: #388E3C;
border: 1px solid #A5D6A7;
}
생성자 배지
회의 생성자를 나타내는 크라운 아이콘 배지입니다.
/* 생성자 배지 (👑 아이콘) */
.creator-badge {
font-size: 16px;
flex-shrink: 0;
margin-left: 4px;
cursor: default;
display: inline-flex;
align-items: center;
vertical-align: middle;
}
/* 툴팁 제공 시 */
.creator-badge[title] {
cursor: help;
}
사용 예시:
<div class="meeting-header">
<span class="badge badge-complete">확정완료</span>
<span class="creator-badge" title="생성자">👑</span>
<h3 class="meeting-title">2024년 4분기 제품 기획 회의</h3>
</div>
사용 위치:
- 12-회의록목록조회: 회의록 카드 헤더
- 02-대시보드: 최근 회의 카드, 내 회의록 카드
- 10-회의록상세조회: 회의록 정보 섹션
D-day 배지 (참고용)
⚠️ MVP 스코프 축소 (v1.3.1): D-day 배지는 09-Todo관리 화면에서만 사용됩니다. 10-회의록상세조회 및 11-회의록수정 화면에서는 Todo 단순 조회만 제공하므로 D-day 배지가 표시되지 않습니다.
Todo 마감일 표시를 위한 D-day 배지 스타일입니다 (09-Todo관리 화면 전용).
/* D-Day (오늘 마감) */
.badge-dday {
background: #E8F5E9;
color: #2E7D32;
border: 1px solid #81C784;
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
/* D-1 ~ D-3 (임박) */
.badge-warning {
background: #FFF3E0;
color: #F57C00;
border: 1px solid #FFCC80;
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
/* D-4 ~ D-7 (여유) */
.badge-primary {
background: #E3F2FD;
color: #1976D2;
border: 1px solid #90CAF9;
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
/* D-8+ (충분) */
.badge-secondary {
background: #F5F5F5;
color: #616161;
border: 1px solid #E0E0E0;
padding: 4px 8px;
border-radius: 12px;
font-size: 12px;
}
D-day 배지 색상 체계
- 지연 (D+N):
.badge-overdue- 빨간색 배경, 흰색 글씨 - 오늘 (D-Day):
.badge-dday- 연한 녹색 배경, 진한 녹색 글씨, 테두리 - 임박 (D-1~3):
.badge-warning- 연한 주황 배경, 진한 주황 글씨, 테두리 - 여유 (D-4~7):
.badge-primary- 연한 파랑 배경, 진한 파랑 글씨, 테두리 - 충분 (D-8+):
.badge-secondary- 연한 회색 배경, 진한 회색 글씨, 테두리
9. 아이콘
아이콘 라이브러리
- Material Icons 또는 Feather Icons 권장
- 일관된 스타일 유지 (Outlined 또는 Rounded)
아이콘 크기
--icon-sm: 16px; /* 인라인 아이콘 */
--icon-md: 24px; /* 기본 아이콘 */
--icon-lg: 32px; /* 강조 아이콘 */
주요 아이콘 매핑
- 회의: 📅 calendar
- Todo: ✅ check-circle
- 녹음: 🎙️ mic
- 참석자: 👤 user
- 설정: ⚙️ settings
- 검색: 🔍 search
- 알림: 🔔 bell
- 링크: 🔗 link
10. 네비게이션
반응형 네비게이션 전략
- Mobile (< 768px): 하단 네비게이션 바 (3개 메뉴)
- Desktop (≥ 768px): 왼쪽 사이드바 (240px 고정폭)
하단 네비게이션 (Mobile)
.bottom-nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 64px;
background: var(--white);
border-top: 1px solid var(--gray-300);
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
display: flex;
justify-content: space-around;
z-index: 100;
}
.nav-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
color: var(--gray-500);
font-size: 12px;
cursor: pointer;
transition: color 0.2s ease;
}
.nav-item.active {
color: var(--primary);
}
.nav-item-icon {
font-size: 24px;
}
/* Desktop에서 하단 네비게이션 숨김 */
@media (min-width: 768px) {
.bottom-nav {
display: none;
}
}
메뉴 항목:
- 홈 (🏠) → 대시보드
- 회의록 (📋) → 회의록목록조회
- Todo (✅) → Todo관리
- 프로필 (👤) → 사용자 프로필 및 설정
사이드바 네비게이션 (Desktop)
.sidebar {
position: fixed;
left: 0;
top: 0;
bottom: 0;
width: 240px;
background: var(--white);
border-right: 1px solid var(--gray-300);
display: none;
flex-direction: column;
z-index: 100;
}
@media (min-width: 768px) {
.sidebar {
display: flex;
}
.main-content {
margin-left: 240px;
}
}
/* 사이드바 로고 영역 */
.sidebar-logo {
padding: 24px 16px;
display: flex;
align-items: center;
gap: 12px;
border-bottom: 1px solid var(--gray-300);
}
.sidebar-logo-icon {
width: 40px;
height: 40px;
background: var(--primary);
color: var(--white);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
font-weight: 700;
}
.sidebar-logo-text {
font-size: 18px;
font-weight: 700;
color: var(--gray-900);
}
/* 사이드바 메뉴 */
.sidebar-nav {
flex: 1;
padding: 16px 8px;
overflow-y: auto;
}
.sidebar-nav-item {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
margin-bottom: 4px;
border-radius: 8px;
color: var(--gray-700);
font-size: 16px;
text-decoration: none;
transition: all 0.2s ease;
cursor: pointer;
}
.sidebar-nav-item:hover {
background: var(--gray-100);
}
.sidebar-nav-item.active {
background: var(--primary-light);
color: var(--primary);
font-weight: 500;
}
.sidebar-nav-icon {
font-size: 20px;
width: 24px;
text-align: center;
}
/* 사이드바 사용자 정보 영역 */
.sidebar-user {
padding: 16px;
border-top: 1px solid var(--gray-300);
display: flex;
align-items: center;
gap: 12px;
}
.sidebar-user-info {
flex: 1;
}
.sidebar-user-name {
font-size: 14px;
font-weight: 500;
color: var(--gray-900);
}
.sidebar-user-email {
font-size: 12px;
color: var(--gray-500);
margin-top: 2px;
}
메뉴 항목:
- 📊 대시보드 (active)
- 📋 회의 목록 → 회의록목록조회
- ✅ Todo 관리 → Todo관리
탭 네비게이션
.tab-nav {
display: flex;
border-bottom: 1px solid var(--gray-300);
background: var(--white);
}
.tab {
padding: 12px 16px;
color: var(--gray-500);
border-bottom: 2px solid transparent;
background: transparent;
font-size: 16px;
font-weight: 400;
cursor: pointer;
transition: all 0.2s ease;
}
.tab:hover {
color: var(--gray-700);
}
.tab.active {
color: var(--primary);
border-bottom: 2px solid var(--primary);
font-weight: 500;
}
사용 예시:
- 회의록 상세 화면: 회의록 / 대시보드 (2개 탭)
- 회의 진행 화면 (오른쪽 패널): 참석자 / AI 제안 / 용어 사전 / 관련 자료 (4개 탭)
우측 사이드바 탭 (회의 진행 화면)
레이아웃
/* 메인 레이아웃 */
.main-layout {
display: flex;
gap: 16px;
}
.main-content {
flex: 1;
min-width: 0;
}
.right-sidebar {
display: none; /* 모바일에서는 숨김 */
}
@media (min-width: 768px) {
.right-sidebar {
display: block;
width: 320px;
flex-shrink: 0;
border-left: 1px solid var(--gray-300);
padding-left: 16px;
}
}
사이드바 탭 스타일
.sidebar-tabs {
display: flex;
border-bottom: 2px solid var(--gray-300);
margin-bottom: 16px;
overflow-x: auto;
gap: 4px;
}
.sidebar-tab {
flex: 1;
padding: 8px 4px;
background: transparent;
border: none;
cursor: pointer;
font-size: 12px;
font-weight: 500;
color: var(--gray-500);
transition: all 0.2s ease;
border-bottom: 2px solid transparent;
white-space: nowrap;
text-align: center;
}
.sidebar-tab.active {
color: var(--primary);
border-bottom-color: var(--primary);
}
.sidebar-panel {
display: none;
}
.sidebar-panel.active {
display: block;
animation: fadeIn 0.2s ease;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
참석자 리스트
.participant-item {
display: flex;
align-items: center;
gap: 8px;
padding: 8px;
border-bottom: 1px solid var(--gray-100);
}
.participant-item:last-child {
border-bottom: none;
}
.participant-status {
font-size: 10px;
color: var(--gray-500);
}
AI 제안 카드
.ai-suggestion-card {
background: var(--primary-light);
border: 1px dashed var(--primary);
border-radius: 8px;
padding: 8px;
margin-bottom: 8px;
}
.ai-suggestion-title {
display: flex;
align-items: center;
gap: 4px;
font-size: 14px;
font-weight: 700;
margin-bottom: 4px;
}
.ai-suggestion-content {
font-size: 12px;
color: var(--gray-700);
line-height: 1.4;
margin-bottom: 8px;
}
.ai-suggestion-actions {
display: flex;
gap: 4px;
}
용어 사전 리스트
.term-item {
padding: 8px;
border-radius: 4px;
background: var(--white);
border: 1px solid var(--gray-200);
margin-bottom: 8px;
cursor: pointer;
transition: background 0.2s ease;
}
.term-item:hover {
background: var(--gray-100);
}
.term-name {
font-size: 14px;
font-weight: 700;
color: var(--gray-900);
margin-bottom: 2px;
}
.term-definition {
font-size: 12px;
color: var(--gray-600);
line-height: 1.3;
}
.term-badge {
display: inline-block;
font-size: 10px;
padding: 2px 6px;
background: var(--warning);
color: var(--white);
border-radius: 8px;
margin-left: 4px;
}
관련 자료 리스트
.related-doc-item {
display: flex;
align-items: flex-start;
gap: 8px;
padding: 8px;
border-radius: 4px;
background: var(--white);
border: 1px solid var(--gray-200);
margin-bottom: 8px;
cursor: pointer;
transition: background 0.2s ease;
}
.related-doc-item:hover {
background: var(--gray-100);
}
.related-doc-icon {
font-size: 24px;
flex-shrink: 0;
}
.related-doc-info {
flex: 1;
min-width: 0;
}
.related-doc-title {
font-size: 14px;
font-weight: 500;
color: var(--gray-900);
margin-bottom: 2px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.related-doc-meta {
font-size: 12px;
color: var(--gray-500);
}
.related-doc-relevance {
display: flex;
align-items: center;
gap: 2px;
font-size: 12px;
color: var(--warning);
flex-shrink: 0;
}
사용 위치:
- 회의 진행 화면 (05-회의진행.html)
- 데스크톱/태블릿 (768px+)에서만 표시
- 모바일에서는 하단 시트로 변환 (향후 구현)
구성 요소:
- 참석자 탭: 현재 회의 참석자 목록 및 상태
- AI 제안 탭: 회의록 요약 및 Todo 자동 추출 제안
- 용어 사전 탭: 회의에서 언급된 전문용어 설명
- 관련 자료 탭: AI가 찾은 관련 회의록 목록
11. 폼 요소
Input Field
.input {
width: 100%;
padding: 12px 16px;
border: 1px solid var(--gray-300);
border-radius: 8px;
font-size: 16px;
background: var(--white);
transition: border-color 0.2s ease;
}
.input:focus {
border-color: var(--primary);
outline: none;
box-shadow: 0 0 0 3px rgba(77, 213, 167, 0.1);
}
.input::placeholder {
color: var(--gray-500);
}
Checkbox
.checkbox {
width: 20px;
height: 20px;
border: 2px solid var(--gray-300);
border-radius: 4px;
transition: all 0.2s ease;
}
.checkbox:checked {
background: var(--primary);
border-color: var(--primary);
}
12. 모달 & 다이얼로그
모달 오버레이
.modal-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(4px);
z-index: 1000;
}
모달 콘텐츠
.modal {
background: var(--white);
border-radius: 16px 16px 0 0; /* Mobile: Bottom Sheet */
max-width: 480px;
padding: 24px;
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.16);
}
/* Desktop: Centered Modal */
@media (min-width: 768px) {
.modal {
border-radius: 16px;
margin: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
13. 애니메이션
트랜지션
--transition-fast: 0.15s ease;
--transition-normal: 0.2s ease;
--transition-slow: 0.3s ease;
주요 애니메이션
Fade In
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
Slide Up (Bottom Sheet)
@keyframes slideUp {
from { transform: translateY(100%); }
to { transform: translateY(0); }
}
Pulse (진행 중 배지)
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
14. 접근성 (Accessibility)
색상 대비
- WCAG 2.1 Level AA 준수
- 텍스트와 배경 대비율: 최소 4.5:1
- 큰 텍스트(18px+) 대비율: 최소 3:1
포커스 스타일
:focus-visible {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
터치 타겟
- 최소 크기: 44x44px (iOS), 48x48px (Android)
- 터치 타겟 간 최소 간격: 8px
15. 반응형 디자인
Mobile First 접근
/* Mobile (기본) */
.container {
padding: 16px;
}
/* Tablet (768px+) */
@media (min-width: 768px) {
.container {
padding: 24px;
}
}
/* Desktop (1024px+) */
@media (min-width: 1024px) {
.container {
padding: 32px;
}
}
참조 이미지 분석 결과
확인된 디자인 특징 (reference/sampleimg 기반)
- Primary Color: #4DD5A7 (민트 그린) - 모든 액션 버튼과 강조 요소에 사용
- 카드 디자인: 흰색 배경, 12px 둥근 모서리, 미세한 그림자
- 타이포그래피: 명확한 계층 구조, 충분한 여백
- 아바타: 원형, 다양한 색상 배경 (팀원 구분)
- 배지: 둥근 모서리, 명확한 색상 코딩 (진행 중=주황, 완료=민트)
- 간격: 16px 기본 간격 일관 적용
- 섹션 구분: 미세한 구분선 또는 배경색 차이로 구분
16. 회의 진행 화면 우측 사이드바 카드 디자인
공통 디자인 원칙 (통일성)
모든 우측 사이드바 카드는 일관된 디자인 시스템을 따릅니다:
/* 공통 카드 베이스 스타일 */
.sidebar-card {
background: #FAFAFA; /* 연한 회색 배경 */
border: 1px dashed #D0D0D0; /* 회색 점선 테두리 */
border-radius: var(--radius-md);
padding: var(--space-md);
margin-bottom: var(--space-md);
}
/* 공통 카드 타이틀 */
.sidebar-card-title {
font-size: var(--font-body); /* 16px */
font-weight: var(--font-weight-bold);
color: var(--primary); /* 민트 그린 */
margin-bottom: var(--space-xs);
}
/* 공통 카드 본문 */
.sidebar-card-text {
font-size: var(--font-small); /* 14px */
color: var(--gray-700);
line-height: 1.6;
}
/* 공통 호버 */
.sidebar-card:hover {
background: #F0F0F0; /* 조금 더 진한 회색 */
border-color: var(--primary); /* 민트 그린 테두리 */
}
AI 제안 카드
.ai-suggestion-card {
background: #FAFAFA;
border: 1px dashed #D0D0D0;
border-radius: var(--radius-md);
padding: var(--space-md);
margin-bottom: var(--space-md);
}
.ai-suggestion-header {
display: flex;
align-items: center;
gap: var(--space-xs);
font-size: var(--font-body); /* 16px */
font-weight: var(--font-weight-bold);
color: var(--primary);
margin-bottom: var(--space-sm);
}
.ai-suggestion-text {
font-size: var(--font-small); /* 14px */
color: var(--gray-700);
line-height: 1.6;
}
구성 요소:
- 헤더: ✨ (아이콘) + 제목 (16px Bold, 민트 그린)
- 본문: 제안 내용 (14px, gray-700)
- 액션 버튼: Primary 버튼 + Ghost 버튼
용어 사전 카드
.term-item {
background: #FAFAFA; /* 기본: 연한 회색 배경 */
border: 1px dashed #D0D0D0;
border-radius: var(--radius-md);
padding: var(--space-md);
margin-bottom: var(--space-md);
}
.term-item.highlight {
background: var(--primary-light); /* 하이라이트: 민트 연한 배경 */
border: 1px dashed var(--primary); /* 민트 그린 점선 테두리 */
}
.term-item:hover {
background: #F0F0F0;
border-color: var(--primary);
}
.term-name {
font-size: var(--font-body); /* 16px */
font-weight: var(--font-weight-bold);
color: var(--primary); /* 민트 그린 */
margin-bottom: var(--space-xs);
}
.term-definition {
font-size: var(--font-small); /* 14px */
color: var(--gray-700);
line-height: 1.6;
}
.term-context {
font-size: 11px;
color: var(--gray-500);
padding-top: var(--space-xs);
border-top: 1px dashed #D0D0D0; /* 점선 구분선 */
margin-top: var(--space-xs);
}
구성 요소:
- 용어명: Bold (16px, 민트 그린) + 카테고리 배지 + 언급 아이콘 (💬, 14px)
- 정의: 일반 텍스트 (14px, gray-700)
- 컨텍스트: 작은 텍스트 (11px, gray-500, 상단 점선 구분선)
- "회의에서 N회 언급됨"
- "관련 회의록에서 언급됨"
- "회의에서 언급됨 (HH:MM)"
- "{관련 회의록명} (날짜)에서 {컨텍스트 정보}"
하이라이트 조건:
- 현재 진행 중인 회의에서 언급된 용어
- 민트 그린 연한 배경 (#E8F9F3)
- 민트 그린 점선 테두리
인터랙션:
- 호버 시: 조금 더 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리
관련 회의록 카드
.related-doc-item {
background: #FAFAFA; /* 연한 회색 배경 */
border: 1px dashed #D0D0D0; /* 회색 점선 테두리 */
border-radius: var(--radius-md);
padding: var(--space-md);
margin-bottom: var(--space-md);
}
.related-doc-item:hover {
background: #F0F0F0; /* 조금 더 진한 회색 */
border-color: var(--primary); /* 민트 그린 테두리 */
}
.related-doc-header {
font-size: var(--font-body); /* 16px */
font-weight: var(--font-weight-bold);
color: var(--primary); /* 민트 그린 */
margin-bottom: var(--space-xs);
}
.related-doc-text {
font-size: var(--font-small); /* 14px */
color: var(--gray-700);
line-height: 1.6;
}
.related-doc-meta {
font-size: var(--font-caption); /* 12px */
color: var(--gray-600);
}
.related-doc-relevance {
color: var(--success); /* 관련도는 초록색 */
font-weight: var(--font-weight-medium);
}
구성 요소:
- 제목: Bold (16px, 민트 그린)
- 메타정보: 날짜 | 관련도 (12px, gray-600)
- 관련도는 초록색 (success, font-weight-medium)
- 본문: 요약 텍스트 (14px, gray-700, line-height 1.6)
인터랙션:
- 호버 시: 조금 더 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리
통일성 체크리스트
모든 사이드바 카드는 다음을 준수합니다:
- ✅ 배경:
#FAFAFA(연한 회색) - ✅ 테두리:
1px dashed #D0D0D0(회색 점선) - ✅ 타이틀 색상:
var(--primary)(민트 그린) - ✅ 타이틀 크기:
16px(var(--font-body)) - ✅ 타이틀 굵기:
Bold(var(--font-weight-bold)) - ✅ 본문 색상:
var(--gray-700) - ✅ 본문 크기:
14px(var(--font-small)) - ✅ 호버 배경:
#F0F0F0(더 진한 회색) - ✅ 호버 테두리:
var(--primary)(민트 그린)
15. 용어 정의
사용자 역할 용어
프로젝트 전체에서 다음 용어를 일관되게 사용합니다:
회의 생성자 (Meeting Creator)
- 정의: 회의 예약을 생성한 사용자
- 권한:
- 회의 시작/종료
- 템플릿 선택
- 참석자 관리 (추가/삭제)
- 회의록 최종 확정
- 검증 완료된 안건 잠금 해제
모든 Todo 수정 (담당자 변경 포함)MVP 스코프 축소 (v1.3.1): Todo 편집 기능 제거
- 사용 예시:
- "회의 생성자 전용 기능"
- "회의 생성자만 회의를 종료할 수 있습니다"
회의 참석자 (Meeting Participant)
- 정의: 회의에 참석하는 모든 사용자 (회의 생성자 포함)
- 권한:
- 회의록 조회
- 안건 편집 (검증 완료 전)
- 안건 검증
본인의 Todo 수정 (담당자 변경 불가)MVP 스코프 축소 (v1.3.1): Todo 편집 기능 제거, 단순 조회만 가능- 회의록 목록 조회 (본인이 참석한 회의만)
- 사용 예시:
- "모든 참석자가 편집할 수 있습니다"
"참석자는 본인의 Todo만 수정 가능합니다"변경 (v1.3.1): "Todo는 조회만 가능합니다"
사용하지 않는 용어
- ❌ "회의록 작성자" - 명확하지 않으므로 사용 금지
- ❌ "작성자" - "회의 생성자" 또는 "참석자"로 명확히 표현
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 1.3.1 | 2025-10-27 | 강지수 | MVP 스코프 축소 v2.4.0 반영 (Todo 관련 섹션 수정) - D-day 배지 섹션: 참고용으로 변경, 09-Todo관리 화면에서만 사용됨을 명시 - 10-회의록상세조회 및 11-회의록수정 화면에서는 Todo 단순 조회만 제공 - 사용자 역할 용어: 권한 설명 업데이트 - 회의 생성자: "모든 Todo 수정" 권한 제거됨 (취소선 표시) - 회의 참석자: "본인의 Todo 수정" 권한 제거됨 (취소선 표시) - Todo는 조회만 가능하도록 변경 - 일관성 유지: UI/UX 설계서 v1.5.1과 동기화 |
| 1.3.0 | 2025-10-24 | 이미준 | 사용자 역할 용어 통일 (유저스토리 v2.1.2 반영) - 용어 정의 섹션 추가: "회의 생성자"와 "회의 참석자" 용어 명확히 정의 - 회의 생성자: 회의 예약을 생성한 사용자, 회의 시작/종료/최종 확정 권한 - 회의 참석자: 회의에 참석하는 모든 사용자 (생성자 포함), 회의록 편집/조회 권한 - 사용하지 않는 용어 명시: "회의록 작성자", "작성자" 용어 사용 금지 - 권한 상세 설명: 생성자 전용 기능, 참석자 공통 기능 구체화 - 일관성 달성: 유저스토리, 화면설계서, 스타일 가이드 간 용어 완전 통일 |
| 1.0 | 2025-10-21 | 최유진 | 최초 작성 - reference/sampleimg 샘플 이미지 기반 스타일 가이드 작성 |
| 1.0.1 | 2025-10-21 | 이미준 | 네비게이션 간소화 및 인터랙션 개선 - 설정 메뉴를 프로필 메뉴로 통합 (사이드바, 하단 네비게이션) - 로그아웃 및 개인 설정 기능은 프로필 영역에서 접근 - Todo 항목 클릭 시 회의록 상세 화면으로 이동하는 인터랙션 추가 - 네비게이션 메뉴 항목: 대시보드, 회의 목록, Todo 관리, 프로필 (4개 항목) |
| 1.1 | 2025-10-21 | 이미준 | 반응형 네비게이션 및 2열 레이아웃 패턴 추가 - 반응형 네비게이션 전략: Mobile (하단 네비게이션), Desktop (왼쪽 사이드바 240px) - 사이드바 네비게이션 (Desktop): 로고 영역, 메뉴 항목 (대시보드/회의 목록/Todo 관리), 사용자 정보 영역 - 하단 네비게이션 (Mobile): 홈/회의록/Todo/프로필 (4개 메뉴) - 2열 레이아웃 패턴: 회의 진행 화면용 (왼쪽 65% 에디터, 오른쪽 35% 탭 패널) - 탭 네비게이션 사용 예시: 회의록 상세 (2개 탭), 회의 진행 (4개 탭) |
| 1.1.1 | 2025-10-21 | 도그냥 | 회의 진행 화면 개선 - 메모 기능 제거: 하단 액션바에서 메모 버튼 제거 (일시정지, 회의종료만 유지) - AI 제안 적용 기능 개선: - 논의사항 제안: "논의사항에 적용" 버튼으로 논의사항 섹션에 직접 추가 - 결정사항 제안: "결정사항에 적용" 버튼으로 결정사항 섹션에 직접 추가 - 액션아이템 제안: "액션아이템에 적용" 버튼으로 중복 제거 후 액션아이템 섹션에 추가 - 적용 시 해당 섹션 탭으로 자동 이동 및 성공 토스트 표시 |
| 1.1.2 | 2025-10-21 | 도그냥 | 우측 사이드바 탭 디자인 개선 (gappa 프로토타입 기반) - AI 제안 카드: 회색 배경(#F5F5F5), 민트 그린 점선 테두리, 헤더 (✨/📋 아이콘 + 제목), 본문, 액션 버튼 - 용어 사전 카드: - 흰색 배경, 회색 실선 테두리 - 하이라이트 카드: 민트 그린 연한 배경(#E8F9F3), 민트 그린 테두리 (현재 회의에서 언급된 용어) - 용어명 + 카테고리 배지 + 언급 아이콘 (💬) - 하단 컨텍스트: "회의에서 N회 언급됨" 또는 "관련 회의록에서 언급됨" - 호버 시: 민트 그린 테두리 + 그림자 - 관련 회의록 카드: 회색 배경(#F5F5F5), 회색 점선 테두리, 제목 + 메타정보 (날짜, 관련도) + 요약 텍스트 |
| 1.1.3 | 2025-10-21 | 도그냥 | 용어 사전 및 관련 회의록 탭 디자인 통일성 개선 - 용어 사전 카드 디자인 개선: - 기본 상태: 민트 배경에서 화이트 배경 + 회색 테두리로 변경 - 하이라이트 상태: 민트 연한 배경 + 민트 테두리 (현재 회의 언급 용어만) - 용어명: 16px Semibold - 배지: 민트 연한 배경, 테두리 제거 - 언급 아이콘: 14px - 컨텍스트: 상단 회색 구분선, 11px - 호버: 민트 테두리 + 그림자 - 관련 회의록 카드 타이틀 강조: - 제목 폰트: Semibold → Bold (16px) - 호버 시: 더 진한 회색 배경 - 사이드바 패널 타이틀 통일: - h3: 14px Bold (섹션 타이틀) - h4: 14px Semibold (서브 타이틀) |
| 1.1.4 | 2025-10-21 | 도그냥 | 우측 사이드바 3개 탭 (AI제안, 용어사전, 관련회의록) 디자인 통일성 개선 - 공통 디자인 원칙 수립: 모든 카드가 일관된 디자인 시스템을 따르도록 개선 - 배경: #FAFAFA (연한 회색)- 테두리: 1px dashed #D0D0D0 (회색 점선)- 타이틀: 16px Bold, 민트 그린 ( var(--primary))- 본문: 14px, gray-700 - 호버 상태: 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리 - AI 제안 카드: 헤더 폰트 Bold (16px) - 용어 사전 카드: 배경 회색(#FAFAFA), 점선 테두리, 타이틀 민트 그린, 컨텍스트 구분선 점선으로 변경 - 관련 회의록 카드: 타이틀 민트 그린으로 변경, 호버 시 민트 테두리 추가 - 통일성 체크리스트 추가: 9가지 디자인 규칙 명시 |
| 1.1.5 | 2025-10-22 | 이미준 | 프로토타입 기반 스타일 가이드 업데이트 - 하단 네비게이션 복원: 4개 메뉴 (홈/회의록/Todo/프로필) - 프로토타입 구현 기준 반영 - 프로필 메뉴 기능: 사용자 정보, 개인 설정, 로그아웃 접근 - 일관성 개선: 프로토타입과 스타일 가이드 통일 |
| 1.2.0 | 2025-10-23 | 강지수 | Todo 카드 디자인 통일 및 D-day 배지 스타일 정의 - D-day 배지 스타일 추가: 5가지 마감일 상태별 배지 정의 - .badge-dday: D-Day (오늘 마감) - 연한 녹색 배경, 진한 녹색 글씨, 테두리- .badge-warning: D-1- .badge-primary: D-4- .badge-secondary: D-8+ (충분) - 연한 회색 배경, 진한 회색 글씨, 테두리- .badge-overdue: D+N (지연) - 빨간색 배경, 흰색 글씨 (기존 스타일 재사용)- 디자인 일관성 개선: 대시보드, Todo관리, 회의록상세조회 화면의 Todo 카드 스타일 통일 - 모바일 최적화: 대시보드 통계 카드에서 모바일 화면 시 이모지 숨김 처리 |
| 1.2.1 | 2025-10-23 | 강지수 | 회의 진행 화면 액션아이템 탭 UI/UX 개선 (v1.2.1) - 기능 개선: 전체 영역 "편집" 버튼 제거, "추가" 버튼 추가 - Todo 카드별 편집 버튼: 10-회의록상세조회 화면과 동일하게 각 Todo 카드에 ✏️ 편집 버튼 추가 - Todo 편집 모달: 추가/편집 공통 모달 구현 - 모달 제목: "Todo 추가" 또는 "Todo 편집" - 입력 필드: Todo 제목, 담당자 (선택), 마감일 (날짜 선택), 우선순위 (높음/보통/낮음) - 유효성 검사: 필수 필드 검증 - 모바일: 전체화면 모달, 데스크톱: 중앙 모달 (600px) - UI 일관성: common.css의 .todo-card 스타일 재사용- 인터랙션: "추가" 버튼 클릭 → 빈 모달, "편집" 버튼 클릭 → 기존 데이터 로드 |
| 1.2.2 | 2025-10-23 | 강지수 | 05-회의진행 화면 Todo 카드 스타일 통일 (v1.2.2) - Todo 카드 구조 통일: 10-회의록상세조회 화면과 동일한 HTML 구조 적용 - .todo-card > .todo-top > (.todo-checkbox-wrapper + .todo-content-wrapper + .todo-actions)- 체크박스: .todo-checkbox (24px, border-radius 6px)- 배지: .todo-badges 컨테이너에 D-day 배지 + 우선순위 배지- 제목: .todo-title (font-body, regular, gray-900)- 메타 정보: .todo-meta-row (담당자, 마감일)- 편집 버튼: 절대 위치 (top-right) - CSS 스타일 추가: 10-회의록상세조회와 동일한 스타일 적용 - 호버 효과: shadow + primary 테두리 - 완료 상태: opacity 0.5 + gray 배경 + 취소선 - 아이콘 버튼: 32px, 호버 시 scale(1.1) - JavaScript 함수 추가: toggleTodoComplete() 함수 구현- 완료/미완료 토글 기능 - 확인 다이얼로그 표시 - 토스트 메시지 표시 |
| 1.2.3 | 2025-10-23 | 강지수 | 05-회의진행 화면 D-day 배지 제거 (v1.2.3) - 정책 변경: 회의 진행 중에는 Todo의 마감일이 확정되지 않았으므로 D-day 배지 숨김 - Todo 카드 배지 수정: 우선순위 배지만 표시 (D-day 배지 제거) - Todo 1: 높음 - Todo 2: 보통 - Todo 3: 높음 - 마감일 표시 간소화: "2025-10-23 마감" → "마감: 10/23" - 이유: 회의 중 작성되는 Todo는 마감일이 임시로 입력된 것이며, 회의 종료 후 확정됨 - 다른 화면: 09-Todo관리, 10-회의록상세조회는 D-day 배지 유지 (확정된 회의록) |
| 1.2.4 | 2025-10-24 | 이미준 | 12-회의록목록조회 화면 데이터 아키텍처 반영 (v1.2.4) - 프로토타입 동기화: UI/UX 설계서 v1.4.14 변경사항 반영 - 데이터 아키텍처 명시: common.js → SAMPLE_MINUTES 배열 기반 동적 렌더링 - 정렬 옵션 레이블 변경: "최신순" → "최근수정순", "회의일시순" → "최근회의순" - 페이지네이션: 초기 10개 표시, "10개 더보기" 버튼으로 추가 로딩 - 샘플 데이터: 총 30개 (작성중 13개, 확정완료 17개) |
| 1.2.5 | 2025-10-24 | 이미준 | 사용자 역할 용어 통일 (유저스토리 v2.1.2 반영) - 용어 정의 섹션 신규 추가: 프로젝트 전체 용어 사용 가이드 - 회의 생성자 (Meeting Creator): 회의 예약을 생성한 사용자, 회의 시작/종료 및 최종 확정 권한 - 회의 참석자 (Meeting Participant): 회의에 참석하는 모든 사용자 (생성자 포함), 회의록 편집 및 조회 권한 - 사용 금지 용어: "회의록 작성자", "작성자" → "회의 생성자" 또는 "참석자"로 명확히 표현 - 권한 정의 명시: 생성자/참석자별 권한 상세 설명 - 통일성 달성: 유저스토리, 화면설계서, 스타일 가이드 간 용어 완전 통일 |