Skip to content

100-9wang/WantToDo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

원두(WantToDo) 프로젝트


프로젝트 개요

프로젝트명: 원두(WantToDo)
프로젝트 기간: 2024.12.27 ~ 2025.03.05
프로젝트 유형: 4인 팀 프로젝트

한 줄 소개:

Spring Framework와 Oracle DB 기반 웹 애플리케이션으로,
사용자의 MBTI 성향에 따라 맞춤형 상품 추천과
날씨 기반 어울리는 상품 추천으로
사용자의 구매 편의성을 제공하는 플랫폼입니다.


역할

역할 상세
환경 및 기획 설계 프로젝트 초기 환경 구성 및 기획 의도 설계
프로젝트 병합 전체 프로젝트 병합 및 오류 분석/해결
SQL 최적화 Oracle SQL 인덱싱, 프로시저 최적화
UI/UX 공통 UI/UX 제작
권한 관리 사용자 권한 분리 및 기능 제어
예외 처리 에러 발생 시 예외 처리 페이지 제작
콘텐츠 제작 MBTI 검사 결과 별 상품 추천
성능 테스트 JMeter 성능 테스트 진행

기술 스택

구분 기술
Backend Java 1.6 (Spring Framework, Spring MVC)
WAS Apache Tomcat v9.0
Frontend JSP, HTML/CSS, JavaScript, Bootstrap, Figma
Database Oracle SQL
Tools Git, Eclipse, SQL Developer
Collaboration Discord, GitHub, Notion

주요 기능 목표

  • 🌟 MBTI 기반 맞춤형 상품 추천
  • 🔒 사용자 권한 분리 및 기능 제어 (관리자 / 사용자)
  • 🎨 공통 UI/UX 제작 및 예외 처리 페이지 구현
  • 📊 Oracle SQL 최적화 (인덱싱, 프로시저, 뷰 활용)
  • ⚡ 성능 개선 및 테스트 (JMeter, JUnit)

산출물 구성

(1) 설계 & 구조

📊 MVC 구조 동작 순서 다이어그램 MVC 구조 다이어그램
🗂 정보 구조도 정보 구조도1 정보 구조도2 정보 구조도3
📝 스토리보드 스토리보드1 스토리보드2 스토리보드3 스토리보드4 스토리보드5 스토리보드6 스토리보드7 스토리보드8 스토리보드9
📚 ERD 및 테이블 명세서 ERD1 ERD2 ERD3 ERD4 ERD5 ERD6 ERD7 ERD8 ERD9

(2) 구현 & 개발

JMeter 성능 테스트 결과 Image Image Image Image
JUnit 테스트 결과 Image Image Image
XSS 공격 방지 필터 구현 Image

적용 후 Image Image

배치 프로그램 구조 및 실행 결과 Image Image

배치 프로그램 로그 Image

배치 프로그램 실행 전 Image

배치 프로그램 실행 후 Image


(3) 성능 & 최적화

  • SQL 최적화
  • 인덱스 추가, 뷰(View) 활용
CREATE INDEX idx_goods_category ON goods(category);
CREATE INDEX idx_recommend_mbti ON recommend(mbti_type);

CREATE OR REPLACE VIEW v_recommend_goods AS
SELECT g.goods_id, g.goods_name, g.category, r.mbti_type
FROM goods g
JOIN recommend r ON g.category = r.category;

트러블슈팅

문제:
MyBatis Mapper SQL 바인딩 문제

원인 분석:
parameterType 불명확 및 JDBC 타입 미지정으로 인해 일부 파라미터가 바인딩되지 않음.

해결 방법:
MyBatis Mapper XML에 jdbcType 명시.

<select id="selectSellerGoodsList2" parameterType="String" resultMap="goodsResult">
    <![CDATA[
    SELECT g.*, d.fileName, ROW_NUMBER() OVER (ORDER BY g.goods_create_date DESC) AS rn
    FROM c_goods g
    JOIN c_image_goods d ON g.goods_id = d.goods_id
    WHERE d.filetype = 'main_image'
      AND g.goods_status = #{goods_status, jdbcType=VARCHAR}
      AND g.goods_category IN ('원두')
      AND g.mem_id = #{mem_id, jdbcType=VARCHAR}
    ]]>
</select>

성과:

SQL 파라미터 정상 바인딩 DB 쿼리 실행 성공률 100% 향상 유지보수 과정에서 유사 문제 재발 방지


결과물 & 시연

📺 결과물 & 시연

프로젝트 시연 영상1
프로젝트 시연 영상2
프로젝트 시연 영상3
프로젝트 시연 쇼츠

[Notion 정리 링크] https://www.notion.so/WantToDo-2796a2e81c4e8198bcf2ec43bf962d4a?source=copy_link


향후 개선 계획

  • 추천 알고리즘 고도화 (단순 MBTI 질문 → 질문지 및 유형 도출 알고리즘 추가 작성)
  • React 기반 프론트엔드 리팩토링 및 반응형 UI 적용