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:
yabo0812 2025-10-23 15:25:28 +09:00
parent 0e4c4a90da
commit 461dc4f524
4 changed files with 331 additions and 22 deletions

View File

@ -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": []

View File

@ -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}`);

View File

@ -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>- **설계서-프로토타입 일관성**: 로그아웃 기능 완전 통일 |

View File

@ -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-회의록수정 화면에서 수정 가능 |
---