SK Networks Family AI bootcamp 강의노트/단위프로젝트

첫 단위 프로젝트 [전국 자동차 등록 현황 및 기업 FAQ 조회 시스템]

HyunJung_Jo 2025. 1. 20. 17:56

개요

  • 1팀 팀원: 조현정,원유형(팀장),이서영,정소열,권석현,기한정
  • 기간: 25/1/20 월~25/1/24 금
  • 목적: 프로그래밍과 데이터 기초
  • 주제:전국 자동차 등록 현황 및 기업 FAQ 조회 시스템
  • 레퍼런스: 지표누리 자동차 등록현황, 기아 자동차 FAQ

프로젝트 시작순서

  1. 화면설계 (1/20~21 월) - figma (이서영)
    1. 각 화면별 기능
    2. 각 화면별 기능을 구현하기 위해서 필요한 기술 스텍 정의
  2. 디비 정의 (1/21 화) (권석현, 기한정)
    1. 화면에 뿌려질 데이터들을 ERD로 정의해서 테이블 설계
    2. 해당 테이블에 저장할 데이터를 수집
    3. 데이터 수집할 방법 (ex.공공 데이터)
  3. 화면 구현 (1/22~1/23 수,목 (오전)) - streamlit (조현정,정소열)
    1. 누가 어떤 화면을 할지
    2. 화면별 완성될 일정
  4. 통합 테스트 (1/23 목 (오후))
    1. 화면 설계서에 있는 내용으로 똑같이 모든 화면 테스트 진행.
    2. 테스트 시나리오를 작성해서 진행.
  5. 발표
    1. 화면 설계서, ERD 포함

화면설계, 디비정의, 화면구현 공부해두기 => 병렬로 월,화 진행

[GitHub - SKNETWORKS-FAMILY-AICAMP/SKN10-1st-1Team

Contribute to SKNETWORKS-FAMILY-AICAMP/SKN10-1st-1Team development by creating an account on GitHub.

github.com](https://github.com/SKNETWORKS-FAMILY-AICAMP/SKN10-1st-1Team/tree/develop?tab=readme-ov-file)

화면설계서

  • toy project 진행시 팀원이 화면별로 설계,개발을 맡는다.
  • figma 참고해서 만들어보기
  • 최대한 화면설계서를 자세하게 쓴다.

https://www.figma.com/files/team/1228489967768862218/recents-and-sharing?fuid=1228489959815751531

[Login | Figma

www.figma.com](https://www.figma.com/files/team/1228489967768862218/recents-and-sharing?fuid=1228489959815751531)

https://www.figma.com/community

streamlit으로 화면 구현하기

  • 나의 역할 : FAQ 화면 구현
  • 나에게 넘어온 화면 설계서

  • TODO
    • github에서 DB 가져오기
    • ② 검색어 입력 & FAQ DB 조회 로직 구현
    • ③ FAQ 카테고리 탭 전환 & 카테고리 별 FAQ 데이터 조회 로직 구현
    • ④ FAQ 출력 (질문 아래 누르기 버튼)
    • (마지막에) pages 폴더 생성후 FAQ & 자동차 등록 현황 보고 merge

스트림릿으로 구현하기

  1. 넘어온 ERD 및 DB를 SQL로 만들기
  2. DB를 파이썬과 연결하여 스트림릿에 뿌릴 데이터를 뽑는 SQL문 작성하기
  3. 스트림릿 구현 (데이터 삽입 위치도 고려)
  4. 뽑아낸 데이터를 스트림릿에 뿌리기

설계대로 코딩이 되어야 한다.
예상대로 안나오면 코드 완성도가 떨어지는 것이다.

- 날짜까지 정해야 함.
- 프로그램이 어떻게 흘러가는 지 기능을 다 정해야 함.

- 팀프로젝트에선 갈등이 있을 수 밖에 없다. 상대방이 멍청하다고 생각하지 말고 내가 설득을 못했다고 생각해라.
- 끊임없이 소통하면서 해야 결과물이 잘 나온다.
- 회사는 불공정하다. 내가 옳다고 생각하면 대안을 가져와야하고 그만큼의 실력을 갖추어야 한다.

Feedback (타팀 피드백 포함)

  • DB connection 정보는 민감한 정보이기에 .env 로 환경변수에다 저장해야 한다. git ignore로 git에 올려지지 않게 해야 함.
  • 파일 트리는 계정명이 아닌 기능명으로 정리하기. 제일 처음에 팀장이 전체적인 구조에 맞는 파일트리를 구성해서 그 안에 각자 팀원들이 기능을 완성시키는 것이 좋다.
  • 브랜치도 기능별로 이름을 지어서 하는 것이 맞다.
  • 디버깅 일지를 꼭 써서 나중에 참고해서 비슷한 실수를 줄일 수 있다.
  • 크롤링은 법적,윤리적,상업적,보안으로 문제가 생길 수 있어 요즘은 어렵게 크롤링하도록 셀레늄을 쓴다. 그러나 이마저도 셀레늄은 너무 느리고 오류도 많이 난다.
  • 문서를 잘 만들면 소통을 더 쉽게 할 수 있다.
  • 개발을 하더라도 기능 구현에만 그치지 않고 정의를 할 줄 알아야한다
  • https://docs.github.com/en/issues/planning-and-tracking-with-projects 깃헙 프로젝트 기능을 적극 이용해서 일정 관리를 해보자.
  • 팀프로젝트를 혼자서 처음부터 끝까지 구현해보는 작업을 해보자. 하나의 프로젝트를 여러번 해보면서 극한으로 품질을 올려본 사람이 실력이 더 뛰어나다. 책을 보더라도 5번은 보면서 공부해보자. 여러개를 해보는 것보다 진짜 잘하는 사람을 회사는 원한다. stop watch를 두고 얼마나 빨리하는 지 보고 / 같은 시간안에 정교하게 만들수 있는 지 보자.

프로젝트 재정리

설계

  • 일정 수립
  • 기능 정의
  • 화면 설계서
  • ERD

깃헙

branch

  • 기능별로 branch 생성
  • 기능별 branch에서 develop branch를 pull, push해서 conflict 방지
  • develop branch 에서 기능별 branch를 merge해서 완성
  • main branch 에서 최종 반영하기

file tree

  • 통일성 있게 만들기
  • 공통모듈, api key, db connection info같은 것은 따로 파일 생성
  • git ignore에 .pycache, .env, 등의 내용 등록

업무 프로세스

  1. data crawling
  2. DB 및 테이블 생성
  3. 파이썬에 디비 연결 및 select문으로 데이터 뽑기
  4. 화면 구현해서 데이터 뿌리기
  5. 실제 스트림릿 화면으로 테스트
  • 반드시 디버깅 노트를 쓰면서 완성할 것.