Code Monkey home page Code Monkey logo

survey's Introduction

01. 팀원 소개 및 역할

박동규: 마이페이지 관리 기능

배서현: 로그인, 회원가입, 세션유지 기능

황지원: 설문조사 생성 기능

이수민: 배포 전 요구사항 설정 기능

원종혁: 결과 페이지 조회 기능

02. 프로젝트 소개

데이터 수집의 중요성이 커진 요즘 시대이니만큼 크고 작은 사업에 있어서 타겟이 되는 고객들이 원하는 요구를 파악하는 것이 중요해졌습니다.

이러한 정보들을 모으는 효과적인 방법중 하나가 설문조사를 통한 데이터 수집입니다. 하지만 대다수 사람은 설문조사에 잘 응해주지 않아 정보를 모으기 쉽지 않은 게 가장 큰 문제점입니다.

이러한 문제점을 해결하고자 저희는 설문조사 대행 서비스를 만들게 되었습니다. 의뢰인이 설문조사 지를 작성하고 저희 서비스에 요청하게 되면 요구되는 설문 인원수와 마감 날짜 등을 맞춰서 대리로 사람들에게 설문에 대한 응답을 받아줍니다.

이러한 서비스를 통해 의뢰인은 원하는 만큼의 설문 응답을 받을 때까지의 수고와 시간을 줄여서 효과적인 사업 계획을 기획하는 데 이바지할 수 있습니다.

03. 기술 스택

2.7.0

8.0.29

04. 스토리보드

MIRO Link

05. 요구사항

😀 USER

1. 회원가입

2. 로그인

3. 로그아웃

4. 회원정보 수정

5. 모든 회원정보 조회

📃 SURVEY

1. 모든 설문조사 조회

2. 설문조사 생성

3. 특정 사용자의 설문조사 조회

4. 설문조사 내용 수정

5. 설문조사 삭제

🧾 RESULT

1. 설문 결과 조회

06. 도메인 정보

  • 사용자
    • 설문조사를 만드는 주체
  • 설문조사
    • 통계 자료를 얻기 위하여 어떤 주제에 대해 문제를 내어 묻는 조사.
  • 질문
    • 설문조사에 포함된 각각의 문제
  • 대답
    • 문제에 대한 결과, 응답

07. ERD

image

  • USER
attribute type description
user_id (PK) int 사용자 PK
bank_accout varchar(255) 은행 계좌
birth DATE 생일
email varchar(255) 이메일 주소
password varchar(255) 비밀번호
phone_number varchar(255) 전화번호
user_name varchar(255) 사용자 이름
  • SURVEY
attribute type description
survey_id (PK) int 설문조사 PK
publish_start DATE 배포 시작일 (예정일)
publish_end DATE 배포 종료일 (마감일)
publish_state varchar(255) 배포 상태 (배포 전, 배포 중, 배포 끝)
required int 설문 요구 인원
survey_name varchar(255) 설문조사 이름
user_id (FK) int 설문조사 생성자
  • QUESTION
attribute type description
question_id (PK) int 설문의 질문 PK
question_content varchar(255) 질문 내용
survey_id (FK) int 설문조사 FK
  • QUESTION VALUE
attribute type description
qustion_value_id int 대답 PK
value int 질문에 대한 대답 내용
question_id (FK) int 질문 FK

08. API 명세서

OPEN API

09. 트러블 슈팅

image

-테이블을 여러 Entity를 만들고 양방향 맵핑을 하고 결과를 확인하는 과정에서 똑같은 데이터가 반복적으로 출력되어 서버가 죽는 현상이 발생했습니다. 이를 해결하기 위해서 부모 클래스에 @JsonManagedReference, 자식 클래스에는 @JsonBackReference를 코드를 작성해줌으로써 문제점을 해결할 수 있었습니다.

10. 느낀점

박동규: 되게 오랫동안 진행된 프로젝트라서 느슨하게 진행해도 될 것 같았다고 생각했지만, 실제 개발은 프로젝트 막바지에 거의 다 한 것 같습니다. 계획을 세우고 이에 따라 작은 미션을을 해결하는 방식으로 프로젝트가 진행되었다면 좋았을 것 같은 아쉬움이 있습니다. 다들 고생 많으셨습니다.

배서현: JAVA 수업 중 미니프로젝트를 하면서 테이블 관계에 대해 1:1로 매핑해서 join의 형태를 만들었던 적이 있는데 그 당시에 하나의 테이블끼리만 매핑하여도 제대로 동작하지 않고 겨우 매핑에 성공하여 데이터를 가져왔었는데 이번 프로젝트를 하면서 Entity끼리의 매핑 방법에 조금 더 깨우친 느낌이 들고 매핑하면서 느꼈던 순환참조의 문제도 어떻게 해결해야할지에 대해 조금씩 알게된 프로젝트였습니다. 그리고 처음 의지와는 다르게 프론트단을 빼게 됨으로써 웹페이지상태로 연결되지 않은 점과 게시판 형태로의 출력, 데이터 입출력에 대해 무결성을 처리하지 못한점이 아쉽게 느껴졌습니다.

황지원: 중간 프로젝트 기간이랑 겹쳐서 시간적으로나 체력적으로나 조금 한계를 느낀 프로젝트였지만, 좋은 팀원분들 덕분에 무사히 잘 마친 것 같습니다! 그리고 각자의 코드를 합치는 과정에 있어서 '협업'의 어려움을 제대로 실감했고, 어려웠던 것 만큼 배워가는 점도 많았습니다. 다들 고생 많으셨고 감사했습니다 !!

이수민: 혼자라면 못했을 프로젝트를 좋은 팀원들을 만나 할 수 있었던 것 같습니다. 이 프로젝트로 맵핑을 처음 해봤는데 맵핑이 꼬이면 실행되지 않고 맵핑 부분에서 많은 시간을 소비한 것 같습니다. 하지만 그 과정에서 팀원들끼리 다양한 방법으로 오류를 해결해 나가는 부분이 좋았습니다! 중간프로젝트로 인해 시간이 부족하여 원하는 결과를 도출하지 못한 것이 아쉬웠습니다. 프로젝트 진행하면서 많이 도와주고 서로서로 응원하는 모습 좋았습니다. 다들 감사했습니다!

원종혁: 이번 프로젝트를 통해 이전에 감이 잡히지 않았던 spring과 Annotation을 활용하는 방법들을 이해하고 활용하는 방법을 알게 되었습니다. 또한 팀원들이 각자 작성한 코드를 merge로 병합하는 과정을 통해 git으로 협업해보고 아이디어 구상부터 코드 병합까지 협업하는 전체적인 흐름을 알 수 있는 좋은 경험이었습니다.

survey's People

Contributors

vsuminv avatar uyggnodkrap avatar gaboza-jh avatar do-it-chu avatar hwangjiwon98 avatar

Watchers

 avatar

Forkers

do-it-chu

survey's Issues

Controller에서 Entity 반환

로그인이나 마이페이지 기능 같은 경우에는 보안이 정말 중요한데, 아무래도 Controller단에서 Entity를 냅다 반환하면 좀 위험 할 것 같습습니다.

그래서 기존의 무지성 방식인 Entity를 반환하는 것이 아닌 DTO를 반환하도록 하는 것이 좋을 것 같습니다!

않이 왜 DTO를 쓰나요

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.