-
SKN Family AI 15기 6월 2주차 단위 프로젝트 회고기록../SKN Family AI 15기 2025. 6. 15. 10:17
솔직 회고
6/9 - 6/10 이틀간의 단위 프로젝트를 끝마쳤다!... 이 짧은 시간동안 내가 웹사이트를 다 만들다니... 감회가 너무 새롭다. 그리고 Streamlit에 이렇게 숨겨진 기능이 많았다니... 심지어 아직 덜 파헤친 것 같다. 새로운 것들을 너무너무 많이 얻어갈 수 있는, 좋은 경험을 했다.
우리 팀은 4팀으로, 중고차 시세 조회 및 FAQ 조회가 가능한 웹 사이트를 구현하였다.
링크 : https://github.com/SKNETWORKS-FAMILY-AICAMP/SKN15-1st-4TEAM/tree/main

나는 4팀에서 DB 연동, Streamlit 구현을 주로 담당했다. 사실, 고백하자면 나는 DB 관리를 이번에 처음해봤다. SQL문은 사용해본 적이 있지만... ERD를 그리는 법, 어떻게 구상해야 좋은 DB가 나오는지는... 정말 이번에 처음 겪어보았다! 막판에 DB가 먹통이 되어서 그야말로 멘탈 붕괴 상태였던 것도 빼놓을 수 없는 사건이다... 그래서 내가 구현한 DB에 너무 많은 아쉬움이 남았다. 다른 사람들의 ERD와 비교해보니 다소 초라한 느낌도 들었고, 내가 SQL을 쓸 줄만 알지 정말 DB에 대해서는 아는 게 없구나, 하는 생각도 들었다.

그래도 기죽지 말자... 넌 내가 만든 최고의 DB야... 대신 그만큼 공부도 되었다. 예를 들면, 모든 값에 중복 값이 있을 경우에 PK를 어떻게 설정하면 좋을지에 대한 테크닉 같은 것 말이다. 프로젝트가 끝나고 알아볼 기회가 있었는데, 이런 경우엔 자동으로 숫자를 갱신해주는 AUTO INCREMENT INTEGER 자료형을 사용하여 ID를 만들어주는 것이 좋다. PK의 경우 데이터를 중복 없이 식별하는데에 중요한 부분이기 때문에, 다음에 또 DB를 다룰 일이 있으면 그때는 반드시 사용해주겠다고 마음먹는 계기가 되었다.
그 외에는 Streamlit 의 구현이다. 일단, Streamlit을 구현하면서 가장 먼저 한 생각은... GPT에 의존해선 결코 안 된다는 것이다. GPT는 결국 "가장 그럴듯한 문장"을 만들어내는 챗봇이다. 그렇다보니 GPT의 코드를 그대로 활용하려고 하면, 계획서와 없는 중고차와 관련된 내용이 제멋대로 코드에 들어가는 경우도 있었다. Streamlit 최종적으로 완성하는 것이 나인 만큼, 의도와 무관한 코드를 쳐내고 의도에 맞는 코드가 들어갔는지 확인하는 것이 매우 중요했다.
이때 정말 팀 소통 방식에 대해서 많이 고민을 했던 것 같다. 다양한 코드가 서로 섞이는 과정에서 전달의 오류가 생기지는 않았는지, 상대방이 내 의도를 확실히 이해했는지 등을 재차 확인했다. 이 과정이 정말 쉽지 않더라. 프로젝트를 이끌어나가기 위해서는 개발하는 사람도, 기획하는 사람의 소통이 가장 중요한 일이다. 서로가 이해할 수 있는 언어로 전달할 줄 아는, 육각형의 팀원이 되고 싶다는 생각을 정말 많이 했다.
이 짧은 시간동안 아주 많은 소통을 해야했던 팀원들에게는 ... 감사한 마음 뿐이다! 많이 피곤했을텐데, 그래도 다 함께 노력한 덕분에 결과물을 완성할 수 있었다. 세상에서 제일 어려운 일이 계획을 실현하고 완성하는 일이라고 한다. 우리는 계획한 대로 전부 완성까지 했으니, 그 어려운 일을 다 해낸 것이라고 볼 수 있겠다. 완성도는 또 높여가면 되는 법이니, 기쁜 마음으로 완성한 팀 프로젝트를 소개하고 싶다.
팀 프로젝트 소개!
구현된 기능은 다음과 같다.
- 국내의 중고차 등록 데이터를 통해, 중고차를 구매하는 고객이 고려할 수 있는 사항을 한눈에 볼 수 있는 사이트를 제작했다.
- 첫 번째 페이지에서는 현재 등록된 차량의 브랜드를 종류별로 시각화하여, 중고차 시장 현황을 한눈에 볼 수 있도록 하였다.
- 주행 거리, 신차 가격과 등록된 가격 비교, 아이콘을 통한 차량 외관 확인으로 소비자가 원하는 차량을 선택할 수 있게 한다.
- 차량 검색 시스템을 이용하여 조건에 맞는 차량을 검색할 수 있다.
- FAQ 화면에서 중고차 구매시 유의 사항을 확인할 수 있다.



중간에 개발하며 찍은 페이지들. - Streamlit과 DB를 연동하여 Streamlit 내에서 DB 내용을 확인하고 검색할 수 있도록 하였다. 특히 중고차 정보를 불러올 때에는 조건 검색을 이용하여, 모든 검색창을 채우지 않아도 해당하는 차량을 찾을 수 있도록 하였다.
- 여러 페이지를 사이드 바에서 확인하며 이동할 수 있는 기능은 Streamlit의 페이징 기법을 사용했다.
import pymysql import pandas as pd import streamlit as st # DB 연결 conn = pymysql.connect( host="192.168.0.22", user='team_4', passwd='123', database='sk15_4team', port=3306, charset='utf8mb4' # 한글 깨짐 방지 ) cur = conn.cursor() # Streamlit UI st.title('🚗나만의 중고차 찾기') st.subheader("💡검색어를 입력하면 해당하는 중고차 정보를 불러와요!") col1, col2, col3, col4 = st.columns(4) with col1: input_brand = st.text_input(label='브랜드명', placeholder="예) 현대") with col2: input_model_name = st.text_input(label="모델명", placeholder="예) 아이오닉 5") with col3: input_year = st.text_input(label="연식", placeholder="예) 2022") with col4: input_mile = st.text_input(label="주행거리", placeholder="예) 58817") # 조회 버튼 if st.button("조회하기"): # 기본 쿼리 query = "SELECT * FROM car_info" # 조건 리스트 및 값 리스트 conditions = [] values = [] # LIKE 조건 (브랜드, 모델) if input_brand: conditions.append("brandName LIKE %s") values.append(f"%{input_brand}%") if input_model_name: conditions.append("modelName LIKE %s") values.append(f"%{input_model_name}%") # 일치 조건 (연식, 주행거리) if input_year: conditions.append("regYear >= %s") values.append(input_year) if input_mile: conditions.append("mileage >= %s") values.append(input_mile) # 조건이 있으면 WHERE 절 추가 if conditions: query += " WHERE " + " AND ".join(conditions) try: cur.execute(query, tuple(values)) rows = cur.fetchall() columns = [desc[0] for desc in cur.description] df = pd.DataFrame(rows, columns=columns) if df.empty: st.warning("일치하는 차량이 없습니다.") else: st.success(f"총 {len(df)}건의 차량이 검색되었습니다.") st.dataframe(df) except Exception as e: st.error(f"오류 발생: {e}")Streamlit 멀티페이지 앱 개발 가이드: 단계별 튜토리얼 | 코딩추월차선
Streamlit으로 멀티페이지 앱을 만드는 방법을 단계별로 배워봅니다. 기존 싱글페이지 앱을 멀티페이지로 변환하고, 페이지 추가 및 네비게이션을 구현하는 방법을 알아봅니다.
www.developerfastlane.com
- DB는 MySQL을 사용하였으며, 도구로 HediSQL을 사용하였다.
- 데이터를 가져오기 위해 참고한 사이트는 롯데 렌터카, 그리고 엔카 사이트이다.
'기록.. > SKN Family AI 15기' 카테고리의 다른 글
SKN Family AI 15기 6월 4주차 회고 (3) 2025.06.30 SKN Family AI 15기 6월 3주차 회고 (0) 2025.06.24 SKN Family AI 15기 6월 1주차 회고 (1) 2025.06.08 SKN Family AI 15기 5월 5주차 회고 (0) 2025.05.27 SKN Family AI 15기 5월 4주차 회고(2) (0) 2025.05.23