# 화면별 API 매핑 분석 ## 분석 개요 - **분석일**: 2025-10-28 - **분석 범위**: 프로토타입 기반 9개 화면 기능 및 실제 구현된 Controller API - **분석 목적**: 화면별 필요 API와 구현 현황 파악, 누락 API 식별 --- ## 1. 로그인 화면 (01-로그인.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 사용자 로그인 | 로그인 API | `POST /api/auth/login` | LDAP 인증 수행 후 JWT Access Token과 Refresh Token 발급 | ✅ 구현됨 | LoginRequest(userId, password) → LoginResponse(accessToken, refreshToken, userInfo) | | 로그인 상태 유지 검증 | 토큰 검증 API | `GET /api/auth/validate` | Access Token의 유효성을 검증하고 사용자 정보를 반환 | ✅ 구현됨 | Authorization 헤더 필요, TokenValidateResponse 반환 | | 자동 로그인 (토큰 갱신) | 토큰 갱신 API | `POST /api/auth/refresh` | Refresh Token을 사용하여 새로운 Access Token을 발급 | ✅ 구현됨 | RefreshTokenRequest → RefreshTokenResponse | **누락 API**: 없음 --- ## 2. 대시보드 화면 (02-대시보드.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 예정된 회의 목록 조회 | 대시보드 조회 API | `GET /api/meetings/dashboard` | 예정된 회의 목록, 최근 회의록 목록, 통계 정보 조회 | ✅ 구현됨 | DashboardResponse(upcomingMeetings, recentMinutes, statistics) | | 최근 회의록 목록 조회 | 대시보드 조회 API | `GET /api/meetings/dashboard` | 최근 회의록 목록 포함 | ✅ 구현됨 | 위와 동일한 API에서 제공 | | 회의 통계 정보 표시 | 대시보드 조회 API | `GET /api/meetings/dashboard` | 통계 정보 (총 회의 수, 참석 회의 수 등) 포함 | ✅ 구현됨 | 위와 동일한 API에서 제공 | | 기간별 필터링 | 기간별 대시보드 조회 API | `GET /api/meetings/dashboard/period/{period}` | 기간별로 필터링된 대시보드 데이터 조회 (1day, 3days, 7days, 30days, 90days) | ✅ 구현됨 | period 파라미터로 기간 지정 | | 회의 예약 버튼 클릭 | 회의 예약 화면으로 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | | 회의록 상세 보기 | 회의록 상세 조회 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | **누락 API**: 없음 --- ## 3. 회의 예약 화면 (03-회의예약.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의 예약 생성 | 회의 예약 API | `POST /api/meetings` | 회의 정보 저장, 참석자 목록 관리, 초대 이메일 발송, 리마인더 스케줄링 | ✅ 구현됨 | CreateMeetingRequest → MeetingResponse | | 참석자 이메일 입력/추가 | 회의 예약 API | `POST /api/meetings` | 참석자 목록은 회의 생성 시 포함 | ✅ 구현됨 | participants 필드에 포함 | | 회의 시작/종료 시간 설정 | 회의 예약 API | `POST /api/meetings` | startTime, endTime 필드로 전달 | ✅ 구현됨 | CreateMeetingRequest에 포함 | | 회의 장소 설정 | 회의 예약 API | `POST /api/meetings` | location 필드로 전달 | ✅ 구현됨 | CreateMeetingRequest에 포함 | | 회의 안건 입력 | 회의 예약 API | `POST /api/meetings` | agenda 필드로 전달 | ✅ 구현됨 | CreateMeetingRequest에 포함 | | 참석자 자동완성 | 사용자 검색 API | - | ❌ 구현 안됨 | ❌ 누락 | 이메일 입력 시 자동완성을 위한 사용자 검색 API 필요 | **누락 API**: - `GET /api/users/search?query={email}` - 참석자 이메일 자동완성을 위한 사용자 검색 API --- ## 4. 템플릿 선택 화면 (04-템플릿선택.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 템플릿 목록 조회 | 템플릿 목록 조회 API | - | ❌ 구현 안됨 | ❌ 누락 | 사용 가능한 회의록 템플릿 목록 조회 API 필요 | | 템플릿 선택 및 적용 | 회의록 템플릿 선택 API | `PUT /api/meetings/{meetingId}/template` | 회의에 회의록 템플릿을 적용 (일반 회의, 스크럼, 프로젝트 킥오프, 주간 회의) | ✅ 구현됨 | SelectTemplateRequest(templateId) → MeetingResponse | | 템플릿 미리보기 | 템플릿 상세 조회 API | - | ❌ 구현 안됨 | ❌ 누락 | 선택한 템플릿의 상세 정보 및 미리보기를 위한 API 필요 | | 섹션 커스터마이징 | 회의록 템플릿 선택 API | `PUT /api/meetings/{meetingId}/template` | 섹션 커스터마이징 가능하다고 명시됨 | ✅ 구현됨 | 구현된 API가 커스터마이징을 지원하는지 확인 필요 | **누락 API**: - `GET /api/templates` - 사용 가능한 템플릿 목록 조회 API - `GET /api/templates/{templateId}` - 특정 템플릿의 상세 정보 조회 API --- ## 5. 회의 진행 화면 (05-회의진행.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의 시작 | 회의 시작 API | `POST /api/meetings/{meetingId}/start` | 예약된 회의를 시작하고 회의록 작성 세션을 생성, WebSocket 세션 활성화 | ✅ 구현됨 | SessionResponse(sessionId, websocketUrl) | | 실시간 회의록 작성 | WebSocket 실시간 협업 | `ws://localhost:8080/ws/collaboration` | 실시간 협업을 위한 WebSocket 세션 | ✅ 구현됨 | SessionResponse에 websocketUrl 포함 | | 회의 정보 표시 | 회의 정보 조회 API | `GET /api/meetings/{meetingId}` | 특정 회의의 상세 정보를 조회 | ✅ 구현됨 | MeetingResponse 반환 | | 참석자 추가 초대 | 회의 참석자 초대 API | `POST /api/meetings/{meetingId}/invite` | 진행 중이거나 예약된 회의에 새로운 참석자를 초대, 이메일 발송 | ✅ 구현됨 | InviteParticipantRequest(email) → InviteParticipantResponse | | 회의 종료 버튼 | 회의 종료 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | | 실시간 편집 동기화 | WebSocket 메시지 | - | ❌ 명확한 API 없음 | ⚠️ 불명확 | WebSocket 프로토콜 및 메시지 형식 정의 필요 | | 참석자 입장/퇴장 알림 | WebSocket 이벤트 | - | ❌ 명확한 API 없음 | ⚠️ 불명확 | WebSocket 이벤트 정의 필요 | **누락/불명확 API**: - WebSocket 실시간 협업 프로토콜 정의 (메시지 형식, 이벤트 타입 등) - `POST /ws/collaboration/connect` - WebSocket 연결 인증 및 세션 관리 - `POST /ws/collaboration/message` - 실시간 편집 메시지 전송 - `POST /ws/collaboration/cursor` - 커서 위치 동기화 --- ## 6. 회의 종료 화면 (07-회의종료.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의 종료 처리 | 회의 종료 API | `POST /api/meetings/{meetingId}/end` | 진행 중인 회의를 종료하고 AI 분석을 통해 회의록 생성, 주요 키워드 추출, 안건별 요약, Todo 자동 추출 | ✅ 구현됨 | MeetingEndResponse(keywords, summaries, todos, statistics) | | 회의 통계 표시 | 회의 종료 API | `POST /api/meetings/{meetingId}/end` | 참석자 수, 회의 시간, 안건 수, Todo 수 통계 | ✅ 구현됨 | MeetingEndResponse에 statistics 포함 | | AI 생성 키워드 표시 | 회의 종료 API | `POST /api/meetings/{meetingId}/end` | AI 기반 주요 키워드 추출 결과 | ✅ 구현됨 | MeetingEndResponse에 keywords 포함 | | AI 생성 안건 요약 표시 | 회의 종료 API | `POST /api/meetings/{meetingId}/end` | AI 기반 안건별 요약 결과 | ✅ 구현됨 | MeetingEndResponse에 summaries 포함 | | AI 추출 Todo 표시 | 회의 종료 API | `POST /api/meetings/{meetingId}/end` | AI 기반 Todo 자동 추출 결과 | ✅ 구현됨 | MeetingEndResponse에 todos 포함 | | 회의록 즉시 확정 | 회의록 확정 API | `POST /api/minutes/{minutesId}/finalize` | 회의록을 확정하여 더 이상 수정 불가 상태로 변경 | ✅ 구현됨 | MinutesController에 구현됨 | | 대시보드로 돌아가기 | 대시보드 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | | 회의록 수정하기 | 회의록 수정 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | **누락 API**: 없음 --- ## 7. 회의록 상세 조회 화면 (10-회의록상세조회.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의록 상세 정보 조회 (대시보드 탭) | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}?tab=dashboard` | 회의록 상세 정보 조회 (대시보드 탭: 요약, 키워드, 의사결정, Todo 진행률 등) | ✅ 구현됨 | tab 파라미터로 대시보드/안건 탭 구분 | | 회의록 상세 정보 조회 (안건 탭) | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}?tab=agendas` | 회의록 상세 정보 조회 (안건 탭: 안건별 상세 내용) | ✅ 구현됨 | tab 파라미터로 대시보드/안건 탭 구분 | | 관련 회의록 목록 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | 관련 회의록 목록과 연관도 점수 포함 | ✅ 구현됨 | MinutesDetailResponse에 relatedMinutes 포함 | | 회의 정보 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | 회의 제목, 날짜, 참석자, 장소 등 기본 정보 | ✅ 구현됨 | MinutesDetailResponse에 meeting 정보 포함 | | 통계 정보 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | 참석자 수, 회의 시간, 안건 수, Todo 진행률 | ✅ 구현됨 | MinutesDetailResponse에 statistics 포함 | | 주요 포인트 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | AI 생성 주요 포인트 목록 | ✅ 구현됨 | MinutesDetailResponse에 keyPoints 포함 | | 키워드 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | AI 추출 키워드 목록 | ✅ 구현됨 | MinutesDetailResponse에 keywords 포함 | | 의사결정 사항 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | 주요 의사결정 사항 목록 | ✅ 구현됨 | MinutesDetailResponse에 decisions 포함 | | Todo 진행률 표시 | 회의록 상세 조회 API | `GET /api/minutes/{minutesId}` | Todo 항목과 완료율 | ✅ 구현됨 | MinutesDetailResponse에 todos 포함 | | 회의록 수정 버튼 | 회의록 수정 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | | 회의록 확정 버튼 | 회의록 확정 API | `POST /api/minutes/{minutesId}/finalize` | 회의록을 확정하여 더 이상 수정 불가 상태로 변경 | ✅ 구현됨 | 확정 후 수정 불가 | **누락 API**: 없음 --- ## 8. 회의록 수정 화면 (11-회의록수정.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의록 제목 수정 | 회의록 부분 수정 API | `PATCH /api/minutes/{minutesId}` | 회의록 제목 또는 메모 수정 (부분 업데이트) | ✅ 구현됨 | UpdateMinutesRequest(title, memo) | | AI 요약 재생성 | AI 요약 재생성 API | - | ❌ 구현 안됨 | ❌ 누락 | 수정된 내용 기반으로 AI 요약을 재생성하는 API 필요 | | 섹션별 검증 체크 | 섹션 검증 API | `POST /api/minutes/{minutesId}/sections/{sectionId}/verify` | 특정 섹션을 검증 완료로 표시 | ✅ 구현됨 | VerifySectionRequest → VerifySectionResponse | | 섹션 잠금/해제 | 섹션 잠금 API | `POST /api/minutes/{minutesId}/sections/{sectionId}/lock` | 검증된 섹션을 잠금 처리하여 수정 방지 | ✅ 구현됨 | LockSectionResponse | | 섹션 잠금 해제 | 섹션 잠금 해제 API | `DELETE /api/minutes/{minutesId}/sections/{sectionId}/lock` | 잠금된 섹션을 해제하여 수정 가능 상태로 변경 | ✅ 구현됨 | UnlockSectionResponse | | 관련 회의록 추가 | 관련 회의록 추가 API | - | ❌ 구현 안됨 | ❌ 누락 | 관련 회의록을 추가하는 API 필요 | | 관련 회의록 제거 | 관련 회의록 제거 API | - | ❌ 구현 안됨 | ❌ 누락 | 관련 회의록을 제거하는 API 필요 | | 회의록 내용 실시간 저장 | 회의록 부분 수정 API | `PATCH /api/minutes/{minutesId}` | LWW(Last Write Wins) 정책으로 자동 저장 | ✅ 구현됨 | 자동 저장 주기는 프론트엔드에서 관리 | | 변경 이력 조회 | 변경 이력 조회 API | - | ❌ 구현 안됨 | ❌ 누락 | 회의록 변경 이력을 조회하는 API 필요 (버전 관리) | **누락 API**: - `POST /api/minutes/{minutesId}/regenerate-summary` - AI 요약 재생성 API - `POST /api/minutes/{minutesId}/related` - 관련 회의록 추가 API - `DELETE /api/minutes/{minutesId}/related/{relatedMinutesId}` - 관련 회의록 제거 API - `GET /api/minutes/{minutesId}/history` - 회의록 변경 이력 조회 API --- ## 9. 회의록 목록 조회 화면 (12-회의록목록조회.html) | 화면 기능 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |---------|---------|--------------|-------------|---------|-----| | 회의록 목록 조회 | 회의록 목록 조회 API | `GET /api/minutes` | 필터링, 정렬, 페이지네이션을 지원하는 회의록 목록 조회 | ✅ 구현됨 | MinutesListResponse(items, pagination, filterOptions) | | 정렬 기능 (최신순/오래된순) | 회의록 목록 조회 API | `GET /api/minutes?sort={sort}` | sort 파라미터로 정렬 (latest, oldest) | ✅ 구현됨 | sort 파라미터 지원 | | 상태 필터링 | 회의록 목록 조회 API | `GET /api/minutes?status={status}` | status 파라미터로 필터링 (draft, finalized, all) | ✅ 구현됨 | status 파라미터 지원 | | 참석 유형 필터링 | 회의록 목록 조회 API | `GET /api/minutes?participationType={type}` | participationType 파라미터로 필터링 (host, participant, all) | ✅ 구현됨 | participationType 파라미터 지원 | | 검색 기능 | 회의록 목록 조회 API | `GET /api/minutes?search={keyword}` | search 파라미터로 제목/내용 검색 | ✅ 구현됨 | search 파라미터 지원 | | 페이지네이션 | 회의록 목록 조회 API | `GET /api/minutes?page={page}&size={size}` | page, size 파라미터로 페이지네이션 | ✅ 구현됨 | page, size 파라미터 지원 | | 그리드 레이아웃 표시 | - | - | 프론트엔드 레이아웃 처리 | - | API 불필요 | | 회의록 상세 보기 | 회의록 상세 조회 화면 이동 | - | 화면 전환만 필요, API 불필요 | - | 프론트엔드 라우팅 | **누락 API**: 없음 --- ## 10. 추가로 필요하지만 누락된 공통 API | 기능 카테고리 | 필요 API | API 엔드포인트 | API 기능 설명 | 구현 상태 | 비고 | |-----------|---------|--------------|-------------|---------|-----| | 사용자 관리 | 사용자 프로필 조회 | `GET /api/users/{userId}` | 사용자 프로필 정보 조회 | ❌ 누락 | 참석자 정보 표시에 필요 | | 사용자 관리 | 사용자 목록 조회 | `GET /api/users` | 조직 내 사용자 목록 조회 | ❌ 누락 | 참석자 선택 시 필요 | | 사용자 관리 | 사용자 검색 | `GET /api/users/search?query={query}` | 이메일/이름으로 사용자 검색 | ❌ 누락 | 참석자 자동완성에 필요 | | 알림 관리 | 알림 목록 조회 | `GET /api/notifications` | 사용자의 알림 목록 조회 | ❌ 누락 | 회의 초대, 리마인더 알림 표시 | | 알림 관리 | 알림 읽음 처리 | `PUT /api/notifications/{notificationId}/read` | 특정 알림을 읽음으로 표시 | ❌ 누락 | 알림 관리 기능 | | 알림 관리 | 알림 설정 조회/변경 | `GET/PUT /api/users/{userId}/notification-settings` | 사용자의 알림 수신 설정 관리 | ❌ 누락 | 알림 설정 기능 | | 파일 관리 | 파일 업로드 | `POST /api/files/upload` | 회의록 첨부파일 업로드 | ❌ 누락 | 회의록에 파일 첨부 기능 | | 파일 관리 | 파일 다운로드 | `GET /api/files/{fileId}/download` | 첨부파일 다운로드 | ❌ 누락 | 첨부파일 다운로드 기능 | | 파일 관리 | 파일 삭제 | `DELETE /api/files/{fileId}` | 첨부파일 삭제 | ❌ 누락 | 첨부파일 관리 기능 | | 템플릿 관리 | 템플릿 목록 조회 | `GET /api/templates` | 사용 가능한 회의록 템플릿 목록 조회 | ❌ 누락 | 템플릿 선택 화면에서 필요 | | 템플릿 관리 | 템플릿 상세 조회 | `GET /api/templates/{templateId}` | 특정 템플릿의 상세 정보 및 미리보기 | ❌ 누락 | 템플릿 선택 화면에서 필요 | | 템플릿 관리 | 사용자 정의 템플릿 생성 | `POST /api/templates` | 사용자가 커스텀 템플릿 생성 | ❌ 누락 | 고급 기능 | | 회의 관리 | 회의 수정 | `PUT /api/meetings/{meetingId}` | 예약된 회의 정보 수정 | ❌ 누락 | 회의 정보 변경 기능 | | 회의 관리 | 참석자 목록 조회 | `GET /api/meetings/{meetingId}/participants` | 회의 참석자 목록 상세 조회 | ❌ 누락 | 참석자 관리 기능 | | 회의 관리 | 참석자 제거 | `DELETE /api/meetings/{meetingId}/participants/{userId}` | 회의에서 특정 참석자 제거 | ❌ 누락 | 참석자 관리 기능 | | 회의록 관리 | Todo 상태 변경 | `PATCH /api/minutes/{minutesId}/todos/{todoId}` | Todo 완료/미완료 상태 변경 | ❌ 누락 | Todo 관리 기능 | | 회의록 관리 | 회의록 내보내기 | `GET /api/minutes/{minutesId}/export?format={format}` | 회의록을 PDF, Word, Markdown 등으로 내보내기 | ❌ 누락 | 회의록 공유 기능 | | 회의록 관리 | 회의록 공유 링크 생성 | `POST /api/minutes/{minutesId}/share` | 외부 공유를 위한 링크 생성 | ❌ 누락 | 회의록 공유 기능 | | 통계 | 개인 통계 조회 | `GET /api/statistics/personal` | 개인별 회의 참석 통계 조회 | ❌ 누락 | 대시보드 통계 기능 | | 통계 | 팀 통계 조회 | `GET /api/statistics/team` | 팀별 회의 통계 조회 | ❌ 누락 | 대시보드 통계 기능 | --- ## 요약 및 분석 결과 ### ✅ 잘 구현된 기능 1. **인증 및 보안**: 로그인, 토큰 관리, 로그아웃 완벽 구현 2. **회의 생명주기 관리**: 회의 예약 → 시작 → 종료 → 회의록 생성 전 과정 구현 3. **회의록 핵심 기능**: 조회, 수정, 확정, 섹션 검증/잠금 구현 4. **대시보드 기능**: 예정 회의, 최근 회의록, 통계, 기간별 필터링 구현 5. **AI 기능**: 회의 종료 시 키워드 추출, 안건 요약, Todo 추출 구현 ### ❌ 누락된 핵심 API (총 26개) #### 1. 사용자 관리 (3개) - 사용자 프로필 조회 - 사용자 목록 조회 - 사용자 검색 (자동완성용) #### 2. 템플릿 관리 (3개) - 템플릿 목록 조회 - 템플릿 상세 조회 - 사용자 정의 템플릿 생성 #### 3. 회의 관리 (3개) - 회의 정보 수정 - 참석자 목록 상세 조회 - 참석자 제거 #### 4. 회의록 관리 (6개) - AI 요약 재생성 - 관련 회의록 추가 - 관련 회의록 제거 - 변경 이력 조회 - Todo 상태 변경 - 회의록 내보내기 (PDF, Word, Markdown) - 회의록 공유 링크 생성 #### 5. 파일 관리 (3개) - 파일 업로드 - 파일 다운로드 - 파일 삭제 #### 6. 알림 관리 (3개) - 알림 목록 조회 - 알림 읽음 처리 - 알림 설정 관리 #### 7. 통계 (2개) - 개인 통계 조회 - 팀 통계 조회 #### 8. 실시간 협업 (3개) - WebSocket 연결 인증 및 세션 관리 - 실시간 편집 메시지 전송 - 커서 위치 동기화 ### ⚠️ 불명확하거나 추가 확인 필요한 부분 1. **WebSocket 프로토콜**: 실시간 협업을 위한 메시지 형식 및 이벤트 정의 필요 2. **템플릿 커스터마이징**: `PUT /api/meetings/{meetingId}/template` API가 섹션 커스터마이징을 어떻게 지원하는지 확인 필요 3. **자동 저장 메커니즘**: LWW(Last Write Wins) 정책의 구현 방식 및 충돌 해결 전략 확인 필요 ### 🎯 우선순위 높은 누락 API (즉시 구현 권장) 1. **템플릿 목록/상세 조회** - 템플릿 선택 화면이 동작하지 않음 2. **사용자 검색** - 참석자 자동완성 기능이 없음 3. **AI 요약 재생성** - 회의록 수정 화면의 핵심 기능 4. **Todo 상태 변경** - Todo 관리 기능이 없음 5. **회의록 내보내기** - 회의록 공유 및 배포에 필수 6. **WebSocket 실시간 협업 프로토콜** - 회의 진행 화면의 핵심 기능 --- **작성일**: 2025-10-28 **분석자**: Claude Code (SuperClaude Framework) **참조**: 프로토타입 9개 화면, Controller 4개 파일 (UserController, MeetingController, MinutesController, DashboardController)