포트폴리오
프로젝트 목록으로 돌아가기

프로젝트 상세

팀 프로젝트

SpecMate

컴퓨터 하드웨어 지식이 부족한 사용자를 위한 AI 견적 에이전트

프로젝트 자료

프로젝트 화면

SpecMate의 실제 화면과 프로젝트 시각 자료입니다.

SpecMate AI PC 견적 추천 서비스 메인 화면
SpecMate AI PC 견적 추천 서비스 메인 화면
PC 내부 부품을 표현한 SpecMate 프로젝트 시각 자료
PC 내부 부품을 표현한 SpecMate 프로젝트 시각 자료

개요

프로젝트 개요

예산, 용도, 선호 브랜드 등 사용자의 요구를 분석해 PC 부품 조합을 제안하는 RAG 기반 웹 애플리케이션입니다.

프로젝트 형태
팀 프로젝트
담당 영역
백엔드 · 데이터 크롤링
서비스 유형
AI 기반 PC 견적 추천
데이터 영역
PC 부품 상품 데이터
진행 기간
2025.09.02 — 2025.11

개인 기여

담당 기능

백엔드 개발과 PC 부품 데이터 크롤링을 담당했습니다.

  1. 백엔드

    Spring Boot 기반 API와 인증, 상품, 채팅, 견적 도메인 및 AI 연동 구조를 담당했습니다.

  2. 데이터 크롤링

    다나와 PC 부품 데이터 수집, 중복 제거, JSON 구조화와 임포트 흐름을 담당했습니다.

사용 기술

기술 스택

SpecMate의 백엔드와 데이터 수집 흐름을 구성하는 기술입니다.

백엔드

  • Java 17
  • Spring Boot 3.4.6
  • Spring Security
  • Spring Data JPA
  • JWT
  • SpringDoc OpenAPI

데이터 및 AI

  • Python
  • Selenium
  • BeautifulSoup
  • Spring AI
  • OpenAI Assistant
  • Qdrant
  • RAG

프런트엔드 및 인프라

  • React
  • JavaScript
  • PostgreSQL
  • Redis
  • Docker
  • Nginx
  • AWS

구성

시스템 아키텍처

백엔드가 PostgreSQL의 상품·채팅·견적 데이터와 Qdrant의 벡터 검색 결과를 연결하고, OpenAI Assistant와 Thread를 통해 사용자별 대화 맥락을 관리합니다.

SpecMate의 React 프런트엔드, Spring Boot 백엔드, PostgreSQL과 Redis 데이터 계층, Qdrant 벡터 데이터베이스, OpenAI API 및 Docker Compose와 AWS EC2 배포 구성을 나타낸 시스템 아키텍처

핵심 흐름사용자 → React/Vite → Nginx → Spring Boot API → PostgreSQL·Redis·Qdrant → OpenAI API → 응답 반환

원본 크기로 보기 (새 창에서 열림)

핵심 기능

주요 기능

백엔드 API와 데이터 저장소에서 확인되는 핵심 기능을 정리했습니다.

AI 견적 생성

예산, 용도, 선호 브랜드를 바탕으로 PC 부품 조합을 제안

유사 부품 추천

Qdrant 벡터 검색을 이용한 유사 부품 추천과 성능 비교

대화형 상담

AI 챗봇에서 견적을 요청하고 추천 결과와 설명을 확인

관리자 기능

부품 데이터, 사용자 견적 이력과 FAQ를 통합 관리

부품 데이터 구조화

다나와 크롤링 데이터를 정제해 JSON과 PostgreSQL로 관리

트러블슈팅

문제 해결

데이터 수집과 AI 연동 과정에서 발생한 문제를 원인과 해결 결과 중심으로 정리했습니다.

크롤링 데이터 누락 및 IP 차단

문제
JavaScript 렌더링으로 실제 판매처 URL이 누락되고, 요청 과다로 특정 시간대에 IP가 차단되었습니다.
해결
Selenium과 WebDriverWait으로 렌더링 완료 시점을 감지하고 요청 간격 조절, 예외 처리와 재시도 로직을 적용했습니다.

결과

  • 프로젝트 내부 테스트에서 요청 실패율 약 10% → 2% 이하
  • 전체 수집 시간 약 2시간 → 1시간 30분
  • 실제 판매처 링크까지 수집

중복 데이터 및 품질 문제

문제
옵션별 동일 제품이 중복 수집되어 JSON 크기가 증가하고 제품을 구분할 기준이 부족했습니다.
해결
제품명과 제조사를 조합한 중복 검사 알고리즘을 추가하고 중복 데이터 필터링과 JSON 정제를 자동화했습니다.

결과

  • 제품명과 제조사 기준으로 확인된 중복 데이터 제거
  • AI 입력 데이터 품질 개선

RAG 구조와 대화 맥락 개선

문제
기존 GPT 직접 호출 구조에서는 PostgreSQL에 저장된 제품 데이터를 활용하기 어렵고 사용자별 대화 맥락을 유지할 수 없었으며, 프롬프트의 역할과 출력 형식도 혼재했습니다.
해결
Spring AI와 Qdrant를 연동해 벡터 검색 구조를 구성하고 OpenAI Assistant와 Thread를 연결했습니다. 프롬프트는 시스템 역할·행동 규칙·출력 스키마로 분리했습니다.

결과

  • 실제 PC 부품 데이터를 참조하는 견적 추천
  • 사용자별 대화 맥락을 유지하는 RAG 구조
  • 프로젝트 내부 테스트에서 프롬프트 오류율 약 15% → 2% 이하

성과와 학습

결과 및 배운 점

프로젝트를 통해 구현한 결과와 새롭게 학습한 내용을 정리했습니다.

  • JSON 임포트와 중복 제거를 포함한 부품 데이터 자동화 및 ERD 정립

  • Spring Boot·Spring AI·Qdrant 기반 AI 견적 생성과 유사도 검색 구현

  • LangChain과 LangGraph의 역할 차이 학습

  • OpenAI Assistant를 활용한 프롬프트와 Thread 구성

  • 운영자의 데이터·상담·사용자 통합 관리 흐름 설계