• chatGPT로 면담 예약 시스템 만들기
    DEV 2023. 12. 14. 22:41

    meet

    평가 면담

    연말이 되니 평가의 시즌이 왔고, 평가가 끝나자, 파트원과의 평가 면담의 시간이 되었습니다.

    그런데 얼마 전 파트장이 된 저에게는 파트원들과의 면담 시간을 잡는 것도 일이더군요.

    우선 저의 이미 예약된 회의시간을 면담 가능시간에서 제거해야 하고, 

    파트원들이 각자 가능한 시간 안에서,

    다른 파트원들의 면담 시간이 겹치지 않도록 예약이 가능해야 했습니다.

     

    저희 회사는 google workspace를 사용하기 때문에, 대부분의 이미 예약된 회의 시간은 google calendar에 등록되어 있습니다.

    그렇기에 파트원들이 면담 일정을 추가할 때 google calendar에서 '시간 찾기' 기능을 사용하면 회의 가능한 시간을 찾아 주기도 하지만, 뭔가 좀 더 편한 방법이 없을까 고민했습니다. (생각해 보니 이 방식으로 가이드하는 게 제일 편할 것 같기도 하군요.)

    구글 캘린더 '시간찾기'

     

    '아니면 구글 시트로 간단히 만들어 공유할까?' 생각도 했지만, 저의 미천한 엑셀 실력에 좌절하다가..

    chatGPT로 면담 예약 웹 페이지를  만들어 보기로 했습니다.

    (처음엔 처음부터 제가 개발할까 했지만)

    우선 파트원들이 예약가능한 시간을 볼 수 있고,

    면담을 신청할 수 있는 웹페이지가 필요했기 때문에

    Streamlit으로 회의 예약 시스템을 만들어 달라고 요청했습니다.

    chatGPT는 3.5 무료 버전입니다.

    chatGPT

    Meeting scheduling system with streamlit
    실행 방법

    물어보지 않았지만 친절하게 Streamlit에 대한 간단한 설명과 설치방법, 코드, 실행방법까지 알려주었습니다.

    코드를 실행해 보니 그럴듯한 페이지를 만들어 주었습니다. 🤨

    위 코드 그림에도 나왔지만 sqlite3으로 예약 정보도 저장할 수 있도록 만들어 주었습니다.

    회의 예약 시스템 v0.0.1

    Error

    그런데 이름, 시간을 입력하고 '예약 추가' 버튼을 누르니 아래와 같은 에러가 발생하였습니다.

    sqlite3.ProgrammingError: Error binding parameter 3: type 'datetime.time' is not supported

    아마도 sqlite에서는 datetime.time type을 지원하지 않는 것 같습니다.

    자연스럽게 '문자열로 변경해서 저장하도록 수정해야지' 생각하며 코드에 손이 갔다가...

    생각을 바꾸어 에러로그를 chatGPT에게 알려주고 고쳐달라고 해보기로 하였습니다.

    그랬더니 예약 추가 함수에 date, time을 combine 하여 datetime 객체로 만들고, strftime으로 문자열로 변경해 주는 코드를 추가해 주었습니다. 🥳

    # 예약 추가 함수
    def add_reservation(name, date, time):
        # datetime 객체로 변환 후 문자열로 저장
        datetime_obj = datetime.combine(date, time)
        formatted_datetime = datetime_obj.strftime('%Y-%m-%d %H:%M:%S')
    
        c.execute('INSERT INTO reservations (name, date, time) VALUES (?, ?, ?)', (name, formatted_datetime, formatted_datetime))
        conn.commit()

     

    그 이후로 중복 예약을 방지하는 기능을 추가하고,

    시작시간, 종료시간을 설정 가능하도록 수정하고,

    예약한 일정을 삭제하는 기능을 추가하는 등 몇 번의 명령과 답변이 오간 끝에..

    결국 제가 원했던 '면담 예약' 페이지가 완성되었습니다. 😎

     

    완성회의 예약 시스템 v1.0.0

    728x90
go.