Update app.py
Browse files
app.py
CHANGED
@@ -952,7 +952,15 @@ def generate_dynamic_story_starter(theme_id: str, level: str) -> Dict[str, str]:
|
|
952 |
'th': starter_th
|
953 |
}
|
954 |
|
955 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
956 |
|
957 |
def get_theme_story_starter(theme_id: str, level: str) -> Dict[str, str]:
|
958 |
"""Get a dynamically generated story starter for the selected theme and level."""
|
@@ -1702,8 +1710,12 @@ def load_progress(uploaded_file):
|
|
1702 |
st.session_state.story = data['story']
|
1703 |
st.session_state.achievements = data['achievements']
|
1704 |
st.session_state.points = data['points']
|
1705 |
-
st.session_state.stats =
|
1706 |
-
|
|
|
|
|
|
|
|
|
1707 |
st.success("โหลดความก้าวหน้าเรียบร้อย!")
|
1708 |
st.rerun()
|
1709 |
except Exception as e:
|
@@ -1952,22 +1964,32 @@ with col2:
|
|
1952 |
)
|
1953 |
|
1954 |
with col2:
|
1955 |
-
# บันทึกความก้าวหน้า
|
1956 |
story_data = {
|
1957 |
'level': st.session_state.level,
|
1958 |
'date': datetime.now().isoformat(),
|
1959 |
'story': st.session_state.story,
|
1960 |
'achievements': st.session_state.achievements,
|
1961 |
'points': st.session_state.points,
|
1962 |
-
'stats':
|
|
|
|
|
|
|
|
|
|
|
1963 |
}
|
|
|
|
|
|
|
|
|
1964 |
st.download_button(
|
1965 |
label="💾 Save",
|
1966 |
-
data=json.dumps(
|
1967 |
file_name=f"story_progress_{datetime.now().strftime('%Y%m%d')}.json",
|
1968 |
mime="application/json"
|
1969 |
)
|
1970 |
|
|
|
1971 |
# Add new CSS for improved layout
|
1972 |
st.markdown("""
|
1973 |
<style>
|
|
|
952 |
'th': starter_th
|
953 |
}
|
954 |
|
955 |
+
def convert_sets_to_lists(obj):
|
956 |
+
"""แปลง set เป็น list สำหรับการ serialize เป็น JSON"""
|
957 |
+
if isinstance(obj, set):
|
958 |
+
return list(obj)
|
959 |
+
elif isinstance(obj, dict):
|
960 |
+
return {key: convert_sets_to_lists(value) for key, value in obj.items()}
|
961 |
+
elif isinstance(obj, list):
|
962 |
+
return [convert_sets_to_lists(item) for item in obj]
|
963 |
+
return obj
|
964 |
|
965 |
def get_theme_story_starter(theme_id: str, level: str) -> Dict[str, str]:
|
966 |
"""Get a dynamically generated story starter for the selected theme and level."""
|
|
|
1710 |
st.session_state.story = data['story']
|
1711 |
st.session_state.achievements = data['achievements']
|
1712 |
st.session_state.points = data['points']
|
1713 |
+
st.session_state.stats = {
|
1714 |
+
'total_sentences': data['stats']['total_sentences'],
|
1715 |
+
'correct_first_try': data['stats']['correct_first_try'],
|
1716 |
+
'accuracy_rate': data['stats']['accuracy_rate'],
|
1717 |
+
'vocabulary_used': set(data['stats']['vocabulary_used']) # แปลง list กลับเป็น set
|
1718 |
+
}
|
1719 |
st.success("โหลดความก้าวหน้าเรียบร้อย!")
|
1720 |
st.rerun()
|
1721 |
except Exception as e:
|
|
|
1964 |
)
|
1965 |
|
1966 |
with col2:
|
1967 |
+
# บันทึกความก้าวหน้า (แก้ไขส่วนนี้)
|
1968 |
story_data = {
|
1969 |
'level': st.session_state.level,
|
1970 |
'date': datetime.now().isoformat(),
|
1971 |
'story': st.session_state.story,
|
1972 |
'achievements': st.session_state.achievements,
|
1973 |
'points': st.session_state.points,
|
1974 |
+
'stats': {
|
1975 |
+
'total_sentences': st.session_state.stats['total_sentences'],
|
1976 |
+
'correct_first_try': st.session_state.stats['correct_first_try'],
|
1977 |
+
'accuracy_rate': st.session_state.stats['accuracy_rate'],
|
1978 |
+
'vocabulary_used': list(st.session_state.stats['vocabulary_used']) # แปลง set เป็น list
|
1979 |
+
}
|
1980 |
}
|
1981 |
+
|
1982 |
+
# แปลงข้อมูลทั้งหมดที่อาจมี set
|
1983 |
+
serializable_data = convert_sets_to_lists(story_data)
|
1984 |
+
|
1985 |
st.download_button(
|
1986 |
label="💾 Save",
|
1987 |
+
data=json.dumps(serializable_data, indent=2),
|
1988 |
file_name=f"story_progress_{datetime.now().strftime('%Y%m%d')}.json",
|
1989 |
mime="application/json"
|
1990 |
)
|
1991 |
|
1992 |
+
|
1993 |
# Add new CSS for improved layout
|
1994 |
st.markdown("""
|
1995 |
<style>
|