전승민(팀장), 박대호, 김민성, 심규혁
개인이 사용할 수 있는 To-Do List 및 구성원과 팀원이 서로 공유하고 볼 수 있는 To-Do list를 만들어보자.
사용 기술 스택: spring boot, rest api, maven, mariadb
전승민
1. 프로젝트 설계
2. 개인/ 팀간 데이터 연결
3. 발표 자료 작성 및 발표
4. 세션 로그인
심규혁
1. 개인 ToDo List (rest/ html)
2. DB 설계
3. 다이어 그램 작성
박대호
1. 팀별 할일 작성/ 삭제/ 수정/ 완료 기능 구현(Rest / html)
2. Spring Session - 메인 클래스 간 관계 기술
김민성
1. 세션 로그아웃
2. 마이페이지
3. html, css 디자인
# 요구 사항 및 기능
1. 회원가입 ( + 로그인 기능) (세션 사용)
2. 개인 To-Do List
3. 날짜, 내용 입력하여 할 일 추가
4. 날짜, 할 일, 수행 여부 확인 가능
5. 날짜, 할 일, 수행 여부 변경 가능 + 삭제 기능
7. 팀 To-Do List
8. 팀별 To-Do만 따로 확인 및 기능 구현 + 전체 팀(default)
9. 팀별 날짜, 내용 입력하여 할 일 추가 + 팀 id 기입
10. 팀원 날짜, 할 일, 수행 여부 확인 가능
11. 팀원 날짜, 할 일, 수행 여부 변경 가능 + 삭제 기능
12. 팀 To-Do <-> 개인 To-Do 버튼을 이용한 자유로운 이동
13. 팀 및 개인 To-Do에서 로그아웃 기능 및 개인 마이 페이지(계정 정보)
# 초기 구성
- 기본적인 데이터 입력 및 수정, 제거 기능 구현. todo의 기능 구현
초기 구성 flow
- todo 사용자 -> 회원가입 유무를 본인이 확인 -> 아이디가 있다면 로그인 -> 개인 Todo List 사용 -> 팀 Todo List 사용 -> 개인 Todo List 사용(자유롭게 이동 가능)
아이디가 없다면 회원가입
팀용 todolist에서의 팀원들 마다 구별법 추후 구상.
- 사용하게 될 기본적인 table 구상.
# 구현완료된 동작에 대한 캡쳐 및 설명
개인 할일 페이지지 Rest로 구현
// 개인 페이지에서의 todo 작성 결과
// 개인 페이지에서의 todo 수정 
// 팀 할일 페이지에서 수정 버튼을 눌러서 완수 날짜 및 할일을 수정하는 캡쳐

// maria db 데이터 베이스에 쌓이는 todoentity 정보 (팀)
// maria db 데이터 베이스에 쌓이는 todoentity 정보 (개인)
// maria db 데이터베이스에 쌓이는 회원가입한 계정 정보
# 개선 및 추가 예정 사항
- jwt 토큰 방식으로의 로그인
- 관리자 권한 기능 추가
- 팀원 구별 추가(닉네임/id)
# 문제점 및 힘들었던 부분
로그인 시 세션과 ToDo List 연결 과정
원인 -> 서로다른 테이블을 join하는 방법으로 원하는 데이터를 가져오려고 함.
-> join 과정에서 데이터 타입이 달라서 타입 변환하는데 어려움 발생.
해결
-> joincolumn을 사용하지 않고, 로그인을 하자마자, 로그인하는 파트에서 바로 데이터를 넘겨주는 방식으로 해결.
[해결 캡처]
session login + TodoList + team_todolist 연동과정
원인 -> team_todolist 수정 과정에서 코드에서 문제는 없었지만, html 에서 JSON 방식으로 넘겨 받는 과정에서 JSON 형식에 맞지 않아 에러 발생
해결 -> html 에서 입력받는 데이터를 JSON 형식에 맞게 전달하여 해결.
리다이렉션 문제
원인 -> 데이터를 update, insert, delete, complete 과정 후 나서 원하는 페이지로 redirection이 되지 않고, 메인 페이지로 이동.
해결 -> resource / template/ teamtodo.html 파일을 수정하여 update, delete, complete 과정에서 데이터 이동 동작 후 page를 reload하게 만듬.
-> 데이터를 입력 후 입력한 데이터가 현재 html 페이지에 정상 반영됨.
개인 To-Do List에서의 다른 사용자의 개인 할 일이 보이는 문제
원인 -> 로그인 시 로그인 정보를 get, set 하는 방식 사용.
-> 여러 사람이 로그인 시 가장 최근에 로그인한 사용자의 정보를 set함.
-> 다른 사람들도 가장 최근에 로그인한 사용자의 정보를 set하는 문제 발생.
해결 -> 로그인 시 사용자의 세션 정보를 가져오는 방식 사용.
-> 여러명이 로그인 해도 각 사용자들의 세션 정보에서 id를 가져올 수 있게 됨.































