jehyn923's picture
Upload 15 files
86ce685 verified
from datetime import datetime
import streamlit as st
from function import generate_plans, make_report, create_word_file
def main():
st.title("🦜🔗 윤리 보고서 생성")
# 세션 상태에서 topics와 word_file 초기화
if 'topics' not in st.session_state:
st.session_state.topics = {}
if 'word_file' not in st.session_state:
st.session_state.word_file = None
with st.form("my_form_1"):
text = st.text_area(
"윤리 소재 입력:",
"무엇과 관련된 주제를 생성할까요?",
)
submitted = st.form_submit_button("주제 생성")
if submitted:
# 로딩 애니메이션과 메시지 표시
with st.spinner('약 30초 정도 소요됩니다...'):
response = generate_plans(text) # 실제로는 이 함수를 호출하여 response 생성
# 기존 topics를 초기화하고 새로운 주제와 설명을 세션 상태에 저장
st.session_state.topics = {}
for i in range(1, 9):
topic, description = response[str(i)].split(": ", 1)
st.session_state.topics[topic] = description
# 각 주제를 출력
for key, value in response.items():
topic, description = value.split(": ", 1)
st.markdown(f"#### 주제 {key}: {topic}")
st.write(f"**상세 설명**: {description}")
st.markdown("---") # 주제 간 구분선 추가
# 두 번째 폼 (주제 선택)
if st.session_state.topics: # topics가 세션에 저장된 경우만 실행
with st.form("my_form_2"):
주제 = st.radio(
'어떤 주제로 개요를 생성할까요?',
list(st.session_state.topics.keys()),
index=0
)
submitted = st.form_submit_button("보고서 생성")
if submitted:
# 로딩 애니메이션과 메시지 표시
with st.spinner('약 2분 정도 소요됩니다...'):
text = f"{주제} : {st.session_state.topics[주제]}"
response2 = make_report(text)
st.code(response2, language='markdown')
st.markdown("---")
st.info(f"보고서 생성 시각 : {datetime.now().strftime('%Y-%m-%d %H:%M')}")
# 워드 파일 생성
st.session_state.word_file = create_word_file(response2)
# 폼 외부에서 다운로드 버튼 표시
if st.session_state.word_file:
st.download_button(
label="워드 파일 다운로드",
data=st.session_state.word_file,
file_name="report.docx",
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
else:
st.write("보고서를 생성한 후에 다운로드할 수 있습니다.")
if __name__ == "__main__":
main()