mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 10:16:24 +00:00
Todo 수정 기능 개선 (UFR-TODO-040)
- 09-Todo관리 프로토타입: 권한별 담당자 필드 표시/숨김 기능 추가 - 일반 담당자: 담당자 필드 숨김 (본인 Todo만 수정) - 회의 생성자: 담당자 필드 표시 (모든 Todo 수정 가능) - 담당자 변경 시 알림 발송 로직 추가 - checkIfUserIsCreator() 함수 추가 (회의 생성자 권한 확인) - 권한별 동적 UI 메시지 표시 - 설계서 Option 1 준수: 09-Todo관리에서 일반 담당자는 담당자 변경 불가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
0e4c4a90da
commit
461dc4f524
@ -2,10 +2,8 @@
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit -m \"$(cat <<''EOF''\n유저스토리 및 프로토타입 업데이트 (v2.0.1)\n\n- 공유 기능 제거 반영\n - AFR-USER-020: 대시보드 \"공유받은 회의록\" 섹션 제거\n - UFR-MEET-046: 회의록 목록 카테고리 필터 \"공유받은 회의\" 제거\n \n- 모바일 헤더 프로필 아바타 통일\n - 데스크탑 사이드바와 동일한 아바타 스타일 적용\n - 프로토타입 3개 파일 업데이트 (02-대시보드, 09-Todo관리, 12-회의록목록조회)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
||||
"Bash(git push)",
|
||||
"Bash(git pull:*)",
|
||||
"Bash(git commit:*)"
|
||||
"Bash(git commit -m \"$(cat <<''EOF''\nTodo 수정 기능 개선 (UFR-TODO-040)\n\n- 09-Todo관리 프로토타입: 권한별 담당자 필드 표시/숨김 기능 추가\n - 일반 담당자: 담당자 필드 숨김 (본인 Todo만 수정)\n - 회의 생성자: 담당자 필드 표시 (모든 Todo 수정 가능)\n- 담당자 변경 시 알림 발송 로직 추가\n- checkIfUserIsCreator() 함수 추가 (회의 생성자 권한 확인)\n- 권한별 동적 UI 메시지 표시\n- 설계서 Option 1 준수: 09-Todo관리에서 일반 담당자는 담당자 변경 불가\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
||||
"Bash(git push)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
||||
@ -555,6 +555,60 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Todo 편집 모달 (UFR-TODO-040) -->
|
||||
<div class="modal-overlay" id="editTodoModal">
|
||||
<div class="modal">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">Todo 편집</h3>
|
||||
<button class="modal-close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Todo 제목 <span class="text-error">*</span></label>
|
||||
<input type="text" id="editTodoTitle" class="form-control" placeholder="할 일을 입력하세요">
|
||||
</div>
|
||||
<!-- 담당자 필드 (회의 생성자만 표시) -->
|
||||
<div class="form-group" id="editTodoAssigneeGroup" style="display: none;">
|
||||
<label class="form-label">담당자 <span class="text-error">*</span></label>
|
||||
<select id="editTodoAssignee" class="form-control">
|
||||
<option value="김민준">김민준</option>
|
||||
<option value="이서연">이서연</option>
|
||||
<option value="박준호">박준호</option>
|
||||
<option value="정수진">정수진</option>
|
||||
</select>
|
||||
<p class="form-hint">👤 담당자 변경 시 이전/새 담당자에게 알림이 전송됩니다</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">마감일 <span class="text-error">*</span></label>
|
||||
<div class="date-input-wrapper">
|
||||
<input type="date" id="editTodoDueDate" class="form-control">
|
||||
</div>
|
||||
<p class="form-hint">📅 마감일 변경 시 캘린더가 자동 업데이트됩니다</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">우선순위 <span class="text-error">*</span></label>
|
||||
<select id="editTodoPriority" class="form-control">
|
||||
<option value="high">높음</option>
|
||||
<option value="medium">보통</option>
|
||||
<option value="low">낮음</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- 권한 안내 (동적 메시지) -->
|
||||
<div class="alert alert-info" id="editTodoPermissionInfo">
|
||||
<span class="material-icons" style="font-size: 20px;">info</span>
|
||||
<div>
|
||||
<strong>권한 안내</strong>
|
||||
<p style="margin: 4px 0 0 0; font-size: 14px;" id="editTodoPermissionText">본인에게 할당된 Todo만 수정할 수 있습니다. 담당자는 변경할 수 없습니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-ghost" onclick="closeModal('editTodoModal')">취소</button>
|
||||
<button class="btn btn-primary" onclick="saveTodoEdit()">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="common.js"></script>
|
||||
<script>
|
||||
let currentFilter = 'all';
|
||||
@ -674,6 +728,14 @@
|
||||
${createProgressBar(todo.progress)}
|
||||
</div>
|
||||
` : ''}
|
||||
${!isCompleted ? `
|
||||
<div class="todo-actions">
|
||||
<button class="btn btn-ghost btn-sm" onclick="editTodo('${todo.id}')">
|
||||
<span class="material-icons" style="font-size: 16px;">edit</span>
|
||||
편집
|
||||
</button>
|
||||
</div>
|
||||
` : ''}
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
@ -735,6 +797,132 @@
|
||||
// 실제로는 폼 데이터를 수집하여 allTodos에 추가
|
||||
}
|
||||
|
||||
// Todo 편집 (UFR-TODO-040)
|
||||
let editingTodoId = null;
|
||||
|
||||
function editTodo(todoId) {
|
||||
const todo = allTodos.find(t => t.id === todoId);
|
||||
if (!todo) return;
|
||||
|
||||
editingTodoId = todoId;
|
||||
|
||||
// 편집 모달에 현재 값 채우기
|
||||
$('#editTodoTitle').value = todo.title;
|
||||
$('#editTodoDueDate').value = todo.dueDate;
|
||||
$('#editTodoPriority').value = todo.priority;
|
||||
|
||||
// 회의 생성자 여부 확인 (실제로는 서버에서 확인)
|
||||
const currentUser = '김민준'; // 현재 로그인 사용자
|
||||
const isCreator = checkIfUserIsCreator(todo.meetingId, currentUser);
|
||||
|
||||
// 담당자 필드 표시 여부 결정
|
||||
const assigneeGroup = $('#editTodoAssigneeGroup');
|
||||
const permissionText = $('#editTodoPermissionText');
|
||||
|
||||
if (isCreator) {
|
||||
// 회의 생성자: 담당자 변경 가능
|
||||
assigneeGroup.style.display = 'block';
|
||||
$('#editTodoAssignee').value = todo.assignee.name;
|
||||
permissionText.textContent = '회의 생성자로서 모든 항목을 수정할 수 있습니다. 담당자 변경 시 알림이 전송됩니다.';
|
||||
} else {
|
||||
// 일반 담당자: 담당자 변경 불가
|
||||
assigneeGroup.style.display = 'none';
|
||||
permissionText.textContent = '본인에게 할당된 Todo만 수정할 수 있습니다. 담당자는 변경할 수 없습니다.';
|
||||
}
|
||||
|
||||
openModal('editTodoModal');
|
||||
}
|
||||
|
||||
/**
|
||||
* 회의 생성자 여부 확인
|
||||
* @param {string} meetingId - 회의 ID
|
||||
* @param {string} userName - 사용자 이름
|
||||
* @returns {boolean} 회의 생성자 여부
|
||||
*/
|
||||
function checkIfUserIsCreator(meetingId, userName) {
|
||||
// 실제로는 서버 API를 호출하여 확인
|
||||
// 프로토타입에서는 샘플 데이터로 시뮬레이션
|
||||
const meetingCreators = {
|
||||
'meeting-001': '김민준',
|
||||
'meeting-002': '이서연',
|
||||
'meeting-003': '박준호'
|
||||
};
|
||||
|
||||
return meetingCreators[meetingId] === userName;
|
||||
}
|
||||
|
||||
function saveTodoEdit() {
|
||||
if (!editingTodoId) return;
|
||||
|
||||
const todo = allTodos.find(t => t.id === editingTodoId);
|
||||
if (!todo) return;
|
||||
|
||||
// 수정된 값 가져오기
|
||||
const newTitle = $('#editTodoTitle').value.trim();
|
||||
const newDueDate = $('#editTodoDueDate').value;
|
||||
const newPriority = $('#editTodoPriority').value;
|
||||
|
||||
// 유효성 검사
|
||||
if (!newTitle) {
|
||||
showToast('Todo 제목을 입력해주세요', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!newDueDate) {
|
||||
showToast('마감일을 선택해주세요', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
// 회의 생성자 여부 확인
|
||||
const currentUser = '김민준';
|
||||
const isCreator = checkIfUserIsCreator(todo.meetingId, currentUser);
|
||||
|
||||
// 담당자 변경 여부 확인 (회의 생성자만 가능)
|
||||
let assigneeChanged = false;
|
||||
let oldAssignee = '';
|
||||
let newAssignee = '';
|
||||
|
||||
if (isCreator) {
|
||||
const assigneeGroup = $('#editTodoAssigneeGroup');
|
||||
if (assigneeGroup.style.display !== 'none') {
|
||||
newAssignee = $('#editTodoAssignee').value;
|
||||
oldAssignee = todo.assignee.name;
|
||||
assigneeChanged = (oldAssignee !== newAssignee);
|
||||
}
|
||||
}
|
||||
|
||||
// Todo 업데이트
|
||||
const oldDueDate = todo.dueDate;
|
||||
todo.title = newTitle;
|
||||
todo.dueDate = newDueDate;
|
||||
todo.priority = newPriority;
|
||||
|
||||
if (assigneeChanged) {
|
||||
todo.assignee.name = newAssignee;
|
||||
}
|
||||
|
||||
showToast('Todo가 수정되었습니다', 'success');
|
||||
closeModal('editTodoModal');
|
||||
|
||||
// 담당자 변경 시 알림 발송
|
||||
if (assigneeChanged) {
|
||||
setTimeout(() => {
|
||||
showToast(`${oldAssignee}와 ${newAssignee}에게 알림이 전송되었습니다`, 'info');
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
// 마감일 변경 시 캘린더 업데이트 메시지
|
||||
if (oldDueDate !== newDueDate) {
|
||||
setTimeout(() => {
|
||||
showToast('캘린더가 업데이트되었습니다', 'info');
|
||||
}, assigneeChanged ? 2000 : 1000);
|
||||
}
|
||||
|
||||
updateStats();
|
||||
renderTodoList();
|
||||
editingTodoId = null;
|
||||
}
|
||||
|
||||
// 카운터 애니메이션
|
||||
function animateCounter(elementId, target) {
|
||||
const element = $(`#${elementId}`);
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
## 문서 정보
|
||||
- **작성일**: 2025-10-21
|
||||
- **최종 수정일**: 2025-10-22
|
||||
- **최종 수정일**: 2025-10-23
|
||||
- **작성자**: 이미준 (서비스 기획자)
|
||||
- **버전**: 1.4
|
||||
- **버전**: 1.4.4
|
||||
- **설계 철학**: Mobile First Design
|
||||
|
||||
---
|
||||
@ -1091,16 +1091,17 @@ graph TD
|
||||
|
||||
#### 개요
|
||||
- **목적**: 할당된 Todo 목록 조회 및 진행 상황 관리
|
||||
- **관련 유저스토리**: UFR-TODO-010, UFR-TODO-030
|
||||
- **관련 유저스토리**: UFR-TODO-010, UFR-TODO-030, **UFR-TODO-040 (Todo 수정)**
|
||||
- **비즈니스 중요도**: 높음
|
||||
- **접근 경로**: 대시보드 → 하단 네비게이션 "Todo" 또는 대시보드 "내 Todo" 카드 → "전체 보기"
|
||||
|
||||
#### 주요 기능
|
||||
1. Todo 목록 표시 (상태별 필터링)
|
||||
2. Todo 완료 처리
|
||||
3. 회의록 원문으로 이동 (양방향 연결)
|
||||
4. Todo 진행 상황 통계
|
||||
5. 마감 임박 Todo 알림
|
||||
2. **Todo 수정 (UFR-TODO-040)** - 신규 추가
|
||||
3. Todo 완료 처리
|
||||
4. 회의록 원문으로 이동 (양방향 연결)
|
||||
5. Todo 진행 상황 통계
|
||||
6. 마감 임박 Todo 알림
|
||||
|
||||
#### UI 구성요소
|
||||
|
||||
@ -1124,6 +1125,7 @@ graph TD
|
||||
- 마감일 (색상 코딩: 초록-여유, 노랑-임박, 빨강-지연)
|
||||
- 우선순위 배지 (높음/보통/낮음)
|
||||
- 관련 회의록 링크 아이콘
|
||||
- **"편집" 버튼** (본인 담당 Todo만 표시) - 신규
|
||||
- 스와이프 액션: 수정, 삭제
|
||||
|
||||
- **FAB** (Floating Action Button)
|
||||
@ -1140,23 +1142,41 @@ graph TD
|
||||
- 진행 메모 (추가 가능)
|
||||
|
||||
#### 인터랙션
|
||||
1. **Todo 완료 처리**
|
||||
1. **Todo 수정 (UFR-TODO-040)** - 신규 추가
|
||||
- **편집 버튼 클릭**:
|
||||
- 인라인 편집 모드로 전환 또는 수정 모달 표시
|
||||
- **수정 가능 항목** (담당자 권한):
|
||||
- ✏️ Todo 제목 (문구)
|
||||
- 📅 마감일 (날짜 선택기)
|
||||
- 🎯 우선순위 (high/medium/low 드롭다운)
|
||||
- ❌ 담당자 변경 불가 (본인 담당 Todo)
|
||||
- **저장 버튼**: 수정 완료
|
||||
- **취소 버튼**: 편집 모드 취소
|
||||
- **수정 완료 시**:
|
||||
- "Todo가 수정되었습니다" 토스트 메시지
|
||||
- 회의록에 수정 내용 실시간 반영
|
||||
- 마감일 변경 시 캘린더 자동 업데이트
|
||||
- **권한 제어**:
|
||||
- 본인에게 할당된 Todo만 편집 버튼 표시
|
||||
- 다른 사람의 Todo는 조회만 가능 (편집 버튼 숨김)
|
||||
|
||||
2. **Todo 완료 처리**
|
||||
- 체크박스 클릭:
|
||||
- 확인 다이얼로그 ("완료 처리하시겠습니까?")
|
||||
- 완료 시: 체크 애니메이션, 회의록에 실시간 반영
|
||||
- 완료 Todo는 리스트 하단으로 이동 (취소선)
|
||||
|
||||
2. **회의록 연결**
|
||||
3. **회의록 연결**
|
||||
- 회의록 링크 아이콘 클릭:
|
||||
- 회의록상세조회 화면으로 이동
|
||||
- 해당 Todo가 언급된 섹션으로 자동 스크롤
|
||||
- 하이라이트 효과
|
||||
|
||||
3. **필터링**
|
||||
4. **필터링**
|
||||
- 필터 탭 클릭: 해당 상태의 Todo만 표시
|
||||
- 마감 임박: 3일 이내 마감 Todo
|
||||
|
||||
4. **수동 추가**
|
||||
5. **수동 추가**
|
||||
- FAB 클릭: Todo 추가 모달
|
||||
- 내용, 마감일, 우선순위 입력
|
||||
|
||||
@ -1358,7 +1378,7 @@ graph TD
|
||||
|
||||
#### 개요
|
||||
- **목적**: 지난 회의록 조회 및 수정
|
||||
- **관련 유저스토리**: UFR-MEET-055, UFR-AI-040
|
||||
- **관련 유저스토리**: UFR-MEET-055, UFR-AI-040, **UFR-TODO-040 (Todo 수정)**
|
||||
- **비즈니스 중요도**: 중간
|
||||
- **접근 경로**: 대시보드 → "내 회의록" → 회의록상세조회 → "수정"
|
||||
|
||||
@ -1367,9 +1387,10 @@ graph TD
|
||||
2. 회의록 내용 수정 (섹션별)
|
||||
3. **AI 요약 수정** (섹션별)
|
||||
4. **참고자료 편집** (추가/제거)
|
||||
5. 자동 저장 (30초 간격)
|
||||
6. 수정 이력 관리
|
||||
7. 상태 변경 (확정완료 → 작성중)
|
||||
5. **Todo 수정 (UFR-TODO-040)** - 신규 추가 (회의 생성자만)
|
||||
6. 자동 저장 (30초 간격)
|
||||
7. 수정 이력 관리
|
||||
8. 상태 변경 (확정완료 → 작성중)
|
||||
|
||||
#### UI 구성요소
|
||||
|
||||
@ -1407,6 +1428,17 @@ graph TD
|
||||
- 기존 참고자료 목록 (제거 버튼 포함)
|
||||
- "참고자료 추가" 버튼
|
||||
- 회의록 검색 및 선택 UI
|
||||
- **Todo 섹션 편집 영역** (회의 생성자만) - 신규
|
||||
- Todo 목록 표시
|
||||
- 각 Todo 항목:
|
||||
- 체크박스 (완료 상태)
|
||||
- Todo 제목
|
||||
- 담당자 (변경 가능)
|
||||
- 마감일 (변경 가능)
|
||||
- 우선순위 (변경 가능)
|
||||
- "편집" 버튼 (인라인 편집 활성화)
|
||||
- "삭제" 버튼
|
||||
- "Todo 추가" 버튼
|
||||
- 검증 완료 체크박스 (잠금 해제 필요)
|
||||
- 자동 저장 상태 표시 ("저장됨", "저장 중...")
|
||||
|
||||
@ -1446,7 +1478,35 @@ graph TD
|
||||
- 제거 버튼 (X): 참고자료 목록에서 제거
|
||||
- 순서 변경: 드래그하여 순서 조정 (선택)
|
||||
|
||||
6. **상태 변경**
|
||||
6. **Todo 섹션 편집 (UFR-TODO-040)** - 신규 추가 (회의 생성자만)
|
||||
- **권한 제어**:
|
||||
- 회의 생성자만 Todo 섹션 편집 가능
|
||||
- 일반 참석자는 조회만 가능 (편집 버튼 숨김)
|
||||
- **편집 버튼 클릭**:
|
||||
- 인라인 편집 모드 활성화
|
||||
- **수정 가능 항목** (회의 생성자 권한):
|
||||
- ✏️ Todo 제목
|
||||
- 👤 담당자 (드롭다운 선택, 참석자 목록)
|
||||
- 📅 마감일 (날짜 선택기)
|
||||
- 🎯 우선순위 (high/medium/low)
|
||||
- "저장" 버튼: 수정 완료
|
||||
- "취소" 버튼: 편집 모드 취소
|
||||
- **수정 완료 시**:
|
||||
- "Todo가 수정되었습니다" 토스트 메시지
|
||||
- 회의록 자동 저장
|
||||
- 담당자 변경 시: 이전/새 담당자에게 알림 발송
|
||||
- 마감일 변경 시: 캘린더 자동 업데이트
|
||||
- **Todo 추가**:
|
||||
- "Todo 추가" 버튼 클릭
|
||||
- Todo 정보 입력 모달 (제목, 담당자, 마감일, 우선순위)
|
||||
- 저장 시 Todo 목록에 추가
|
||||
- **Todo 삭제**:
|
||||
- "삭제" 버튼 클릭
|
||||
- 확인 다이얼로그 ("삭제하시겠습니까?")
|
||||
- 삭제 시 Todo 목록에서 제거
|
||||
- 담당자에게 삭제 알림 발송
|
||||
|
||||
7. **상태 변경**
|
||||
- 확정완료 회의록 수정 시: 자동으로 "작성중" 상태로 변경
|
||||
- 모든 섹션 검증 완료 시: "확정완료"로 변경 제안
|
||||
|
||||
@ -1943,6 +2003,7 @@ graph TD
|
||||
| 1.4.1 | 2025-10-23 | 강지수 | 대시보드 모바일 UI/UX 개선 (360px 최적화)<br>- **헤더 개선안 A 적용**: 간결한 인사 + 실질적 정보<br> - "안녕하세요 👋" (H3, Bold)<br> - "오늘 {N}건의 회의가 예정되어 있어요" (동적 업데이트)<br> - 2줄 구조 제거로 세로 공간 절약<br>- **통계 카드 개선안 A 적용**: 컴팩트 수평 배치<br> - 단일 카드 "📊 오늘의 현황" (H5, Semibold)<br> - 수평 배치: "📅 예정 {N}", "✅ 진행 {N}", "📈 완료 {N}%"<br> - 높이 ~80px (기존 대비 70% 감소)<br> - 반응형: 태블릿 이상에서 justify-content: flex-start<br>- **프로토타입 파일**: design/uiux/prototype/02-대시보드-개선.html 신규 생성<br>- **모바일 우선 반응형 설계**: 웹/태블릿 화면에서도 자연스러운 레이아웃 유지<br>- **참조**: design/uiux/ref_img/레이아웃 이상.png (개선 요구사항 이미지) |
|
||||
| 1.4.2 | 2025-10-23 | 강지수 | 회의록 공유 기능 전면 제거<br>- **제거 배경**: 회의 참가자가 아니면 대상자 선정 불가능, 기능 중복 및 논리적 모순 해결<br>- **유저스토리**: UFR-MEET-060 (회의록공유) 제거<br>- **UI/UX 설계서**:<br> - 08-회의록공유 화면 전체 제거<br> - 02-대시보드: "공유받은 회의록" 섹션 제거<br> - 09-회의록상세조회: 공유 버튼 제거 (메뉴: 수정/삭제만 유지)<br> - 11-회의록목록조회: 카테고리 필터 수정 (전체/참석한 회의/생성한 회의)<br> - Desktop 사이드바: "공유받은 회의록" 메뉴 제거<br>- **화면 번호 재정렬**: 08-Todo관리, 09-회의록상세조회, 10-회의록수정, 11-회의록목록조회<br>- **프로토타입 파일**: 08-회의록공유.html 삭제 예정<br>- **검토 문서**: design/uiux/crosscheck-report.md (상세 검토 의견 및 수정 계획) |
|
||||
| 1.4.3 | 2025-10-23 | 강지수 | 유저스토리-설계서-프로토타입 일관성 개선 (요구사항설계검토-report.md 반영)<br>- **화면번호 프로토타입 파일명 기준 통일**:<br> - 프로토타입 화면 목록 테이블 화면번호 수정<br> - 09: Todo관리 (09-Todo관리.html) - 변경 없음<br> - 10: 회의록상세조회 (10-회의록상세조회.html) - 변경 없음<br> - 11: 회의록수정 (11-회의록수정.html) - 09→11 변경<br> - 12: 회의록목록조회 (12-회의록목록조회.html) - 11→12 변경<br> - 설계서 본문 섹션 제목 화면번호 수정<br> - ### 09-Todo관리 (08→09 변경)<br> - ### 10-회의록상세조회 (변경 없음)<br> - ### 11-회의록수정 (10→11 변경)<br> - ### 12-회의록목록조회 (11→12 변경)<br>- **유저스토리 화면정보 추가 및 수정**:<br> - UFR-MEET-046 (회의록목록조회): 화면번호 "12-회의록목록조회" 추가, 카테고리 필터에서 "공유받은 회의" 제거<br> - UFR-MEET-047 (회의록상세조회): 화면번호 "10-회의록상세조회" 추가, 관련 유저스토리 ID 수정 (UFR-MEET-045 → UFR-MEET-047)<br>- **설계서 유저스토리 매핑 정확성 개선**:<br> - 10-회의록상세조회: UFR-MEET-045 → UFR-MEET-047 수정<br> - 12-회의록목록조회: UFR-MEET-030, UFR-MEET-045 → UFR-MEET-046 수정<br>- **일관성 달성**: 유저스토리, UI/UX 설계서, 프로토타입 간 완전한 화면번호 및 파일명 일치<br>- **검토 문서**: design/uiux/요구사항설계검토-report.md (상세 검토 의견 및 개선 계획) |
|
||||
| 1.4.4 | 2025-10-23 | 강지수, 도그냥 | Todo 수정 기능 추가 (UFR-TODO-040)<br>- **유저스토리**: UFR-TODO-040 (Todo수정) 신규 추가<br> - 회의록 확정 전/후 Todo 수정 기능<br> - 권한별 수정 범위: 담당자(본인 Todo만), 회의 생성자(모든 Todo)<br> - 수정 항목: 제목, 담당자, 마감일, 우선순위<br>- **09-Todo관리**: Todo 수정 기능 추가<br> - "편집" 버튼 추가 (완료되지 않은 본인 Todo만 표시)<br> - Todo 편집 모달: 제목, 마감일, 우선순위 수정 (담당자 변경 불가)<br> - 수정 완료 시 회의록에 실시간 반영, 마감일 변경 시 캘린더 자동 업데이트<br> - 권한 제어: 본인에게 할당된 Todo만 편집 버튼 표시<br>- **11-회의록수정**: Todo 섹션 편집 기능 추가 (회의 생성자만)<br> - Todo 목록 표시 및 인라인 편집 (제목, 담당자, 마감일, 우선순위)<br> - Todo 추가/삭제 기능<br> - 담당자 변경 시 이전/새 담당자에게 알림 발송<br>- **프로토타입**: design/uiux/prototype/09-Todo관리.html 수정 (편집 모달 및 기능 구현) |
|
||||
| 1.4.4 | 2025-10-23 | 강지수 | Mobile 하단 네비게이션 프로토타입 구현 기준 반영<br>- **Mobile 하단 네비게이션**: 4개 메뉴 → 3개 메뉴로 수정 (홈/회의록/Todo)<br> - 프로필 메뉴 제거 (Desktop 사이드바의 사용자 정보 영역으로 통합)<br> - 프로토타입 실제 구현 상태 반영 (02-대시보드.html, 09-Todo관리.html, 12-회의록목록조회.html)<br> - 사용 화면 번호 업데이트: 08→09, 11→12<br>- **참고 사항**: 프로필 메뉴가 필요한 경우 프로토타입에 추가 구현 필요<br>- **설계서-프로토타입 일관성**: 네비게이션 구조 완전 통일 달성 |
|
||||
| 1.4.5 | 2025-10-23 | 강지수 | 로그아웃 기능 추가 (Desktop 사이드바 + Mobile 헤더)<br>- **Desktop 좌측 사이드바**: 하단에 사용자 정보 영역 추가<br> - 사용자 정보 (아바타 + 이름 + 이메일)<br> - 로그아웃 버튼 (btn-ghost btn-sm)<br>- **Mobile 상단 헤더**: 우측에 프로필 아이콘 버튼 추가 (👤)<br> - 클릭 시 드롭다운 메뉴 표시 (사용자 정보 + 로그아웃 버튼)<br> - 드롭다운 위치: 우측 상단 기준 아래로 펼침<br> - 오버레이 배경으로 UX 개선<br>- **프로토타입 파일**: 02-대시보드.html, 09-Todo관리.html, 12-회의록목록조회.html<br>- **JavaScript 함수**: toggleProfileMenu(), logout() 추가<br>- **반응형 처리**: Desktop에서는 드롭다운 숨김, Mobile에서는 사이드바 사용자 영역 숨김<br>- **설계서-프로토타입 일관성**: 로그아웃 기능 완전 통일 |
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.0.1)
|
||||
# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.0.2)
|
||||
|
||||
- [AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.0.1)](#ai기반-회의록-작성-및-이력-관리-개선-서비스---유저스토리-v201)
|
||||
- [AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.0.2)](#ai기반-회의록-작성-및-이력-관리-개선-서비스---유저스토리-v202)
|
||||
- [차별화 전략](#차별화-전략)
|
||||
- [1. 기본 기능 (Hygiene Factors)](#1-기본-기능-hygiene-factors)
|
||||
- [2. 핵심 차별화 포인트 (Differentiators)](#2-핵심-차별화-포인트-differentiators)
|
||||
@ -885,6 +885,67 @@ UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo
|
||||
|
||||
---
|
||||
|
||||
UFR-TODO-040: [Todo수정] Todo 담당자 또는 회의 생성자로서 | 나는, Todo 내용을 변경하기 위해 | 회의록 확정 전후에 Todo를 수정하고 싶다.
|
||||
- 시나리오: Todo 수정
|
||||
Todo 목록에서 수정이 필요한 상황에서 | 담당자 또는 회의 생성자가 Todo 수정 버튼을 클릭하면 | Todo 내용, 담당자, 마감일, 우선순위를 변경할 수 있다.
|
||||
|
||||
[화면 정보]
|
||||
- 화면번호: 09-Todo관리
|
||||
- 프로토타입: design/uiux/prototype/09-Todo관리.html
|
||||
|
||||
[수정 가능 항목]
|
||||
- Todo 제목 (문구)
|
||||
- 담당자 (드롭다운 선택)
|
||||
- 마감일 (날짜 선택기)
|
||||
- 우선순위 (high/medium/low)
|
||||
|
||||
[수정 시점]
|
||||
- **회의록 확정 전**: 회의 진행 중(05-회의진행) 또는 회의 종료 전(07-회의종료)에서 수정 가능
|
||||
- **회의록 확정 후**: Todo 관리 화면(09-Todo관리) 또는 회의록 수정 화면(11-회의록수정)에서 수정 가능
|
||||
|
||||
[권한 제어]
|
||||
- **Todo 담당자**: 본인에게 할당된 Todo만 수정 가능 (09-Todo관리)
|
||||
- 수정 가능 항목: 제목, 마감일, 우선순위
|
||||
- 담당자 변경 불가 (본인 담당 Todo)
|
||||
- **회의 생성자**: 해당 회의의 모든 Todo 수정 가능 (11-회의록수정)
|
||||
- 수정 가능 항목: 제목, 담당자, 마감일, 우선순위
|
||||
- 담당자 변경 가능
|
||||
|
||||
[수정 인터페이스]
|
||||
- 09-Todo관리: 각 Todo 항목에 "편집" 버튼 표시
|
||||
- 클릭 시 인라인 편집 모드 또는 수정 모달 표시
|
||||
- 수정 완료 후 "저장" 버튼 클릭
|
||||
- 11-회의록수정: "액션 아이템(Todo)" 섹션에서 수정
|
||||
- 회의록 수정 시 Todo 섹션도 편집 가능
|
||||
- Todo 추가/삭제/수정 모두 가능
|
||||
|
||||
[처리 결과]
|
||||
- Todo 정보 업데이트
|
||||
- 수정 시간 기록
|
||||
- 수정자 정보 저장
|
||||
- 회의록에 수정 내용 실시간 반영
|
||||
- 담당자 변경 시 이전 담당자와 새 담당자에게 알림 발송
|
||||
- 마감일 변경 시 캘린더 자동 업데이트
|
||||
|
||||
[알림 발송]
|
||||
- 담당자 변경 시: 이전 담당자 및 새 담당자에게 알림
|
||||
- 마감일 변경 시: 담당자에게 알림 (캘린더 업데이트)
|
||||
- 제목/우선순위 변경 시: 담당자에게 알림 (변경 사항 안내)
|
||||
|
||||
[Policy/Rule]
|
||||
- 담당자는 본인 Todo만 수정 가능 (담당자 변경 불가)
|
||||
- 회의 생성자는 모든 Todo 수정 가능 (담당자 변경 가능)
|
||||
- 확정 전/후 모두 수정 가능
|
||||
- 수정 시 회의록에 즉시 반영
|
||||
|
||||
[비고]
|
||||
- 회의록 확정 후에도 유연한 Todo 관리 가능
|
||||
- 인사 이동, 우선순위 변경, 일정 조정 등 실무 요구사항 반영
|
||||
|
||||
- M/13
|
||||
|
||||
---
|
||||
|
||||
## 논리 아키텍처 반영 사항 요약
|
||||
|
||||
### 1. 마이크로서비스 구성 변경 (v2.0)
|
||||
@ -976,5 +1037,6 @@ UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo
|
||||
| 1.0 | 2025-01-20 | 도그냥 (서비스 기획자) | 초안 작성 (8개 마이크로서비스) |
|
||||
| 2.0 | 2025-01-22 | 길동 (아키텍트) | 논리 아키텍처 반영 (5개 마이크로서비스로 단순화) |
|
||||
| 2.0.1 | 2025-10-23 | 강지수 (Product Designer) | 공유 기능 제거 반영 <br>- AFR-USER-020: 대시보드 "공유받은 회의록" 섹션 제거<br>- UFR-MEET-046: 회의록 목록 카테고리 필터 "공유받은 회의" 제거 |
|
||||
| 2.0.2 | 2025-10-23 | 강지수, 도그냥 | Todo 수정 기능 추가 (UFR-TODO-040)<br>- 회의록 확정 전/후 Todo 수정 기능 추가<br>- 권한별 수정 범위: 담당자(본인 Todo만), 회의 생성자(모든 Todo)<br>- 수정 항목: 제목, 담당자, 마감일, 우선순위<br>- 09-Todo관리, 11-회의록수정 화면에서 수정 가능 |
|
||||
|
||||
---
|
||||
Loading…
x
Reference in New Issue
Block a user