import streamlit as st import pandas as pd import gspread from oauth2client.service_account import ServiceAccountCredentials from datetime import datetime # Set page title and favicon st.set_page_config(page_title="고민 해결사", page_icon=":sunglasses:") # Google Sheets 인증 설정 scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"] creds = ServiceAccountCredentials.from_json_keyfile_name("analog-marking-416002-e369840763fa.json", scope) client = gspread.authorize(creds) # Google Sheets 문서 열기 sheet = client.open("generation_streamlit_0302").sheet1 # 사용자 조언 데이터를 Google Sheets 문서에 추가하는 함수 def record_advice(experience, concern, advice): timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") sheet.append_row([timestamp, experience, concern, advice]) # 스타일링을 위한 CSS st.markdown(""" """, unsafe_allow_html=True) # 헤더 표시 st.markdown('
팀장들 고민에 조언 한마디 ☝🏻
', unsafe_allow_html=True) # 사용자 안내 문구 표시 st.markdown("""

How to use
1. 조언을 해주고 싶은 팀장 연차를 골라주세요.
2. 버튼을 클릭하면 선택된 연차의 고민 중 하나가 랜덤으로 표시됩니다.
3. 고민 아래에 위치한 입력 창에 조언을 작성한 후, '조언 제출하기' 버튼을 눌러주세요.
4. 아래에 성공적으로 제출되었다는 초록색 메시지가 뜨는 것을 확인해주세요.

""", unsafe_allow_html=True) # Load Excel file into DataFrame df = pd.read_excel("painpoint21.xlsx") # 버튼 컨테이너 생성 buttons = st.columns(3) experience_levels = ['저연차 팀장', '중간연차 팀장', '고연차 팀장'] selected_concern = None # 버튼 생성 및 이벤트 처리 for i, experience_level in enumerate(experience_levels): with buttons[i]: if st.session_state.get(experience_level): st.button(experience_level, disabled=True) # 활성화된 버튼 비활성화 표시 elif st.button(experience_level): # 선택된 experience_level을 저장 st.session_state['experience'] = experience_level # 이 부분이 추가됨 st.session_state[experience_level] = True with st.spinner("고민을 랜덤으로 뽑는 중입니다. 잠시 기다려주세요..."): concerns = df[experience_level].dropna() if not concerns.empty: selected_concern = concerns.sample(n=1).iloc[0] st.session_state['selected_concern'] = selected_concern else: st.error(f"{experience_level}에 해당하는 고민이 없습니다.") # 선택된 고민 내용을 전체 화면에 표시 if 'selected_concern' in st.session_state: st.markdown(f"

선택된 고민:

", unsafe_allow_html=True) st.markdown(f"
{st.session_state['selected_concern']}
", unsafe_allow_html=True) # 고민과 조언 요청 사이에 공간 추가 st.write("") if 'selected_concern' in st.session_state: advice = st.text_area(f"### 고민에 대한 조언을 입력해주세요:", key="advice_input", value="", height=200) # text_area의 높이를 조정합니다. st.write("", unsafe_allow_html=True) # 버튼의 글자 크기를 조정합니다. submit_advice_button = st.button("조언 제출하기") if submit_advice_button and advice.strip(): record_advice(st.session_state['experience'], st.session_state['selected_concern'], advice) st.success("조언이 성공적으로 제출되었습니다!") # 사용자가 조언을 제출한 후 입력 필드를 비우는 대신, 사용자에게 페이지 새로고침을 유도 st.markdown("새로운 고민을 살펴보려면, 페이지를 새로고침해주세요.")