Spaces:
Runtime error
Runtime error
Upload main_app.py
Browse files- main_app.py +41 -12
main_app.py
CHANGED
|
@@ -193,6 +193,11 @@ def initialize_cached_managers():
|
|
| 193 |
"""
|
| 194 |
キャッシュ可能な管理クラスのみを初期化する
|
| 195 |
Streamlitコンポーネントを使用しないクラスのみ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
"""
|
| 197 |
logger.info("Initializing cached managers...")
|
| 198 |
# --- 手紙機能の依存モジュール ---
|
|
@@ -577,19 +582,33 @@ def save_game_data_to_file(managers):
|
|
| 577 |
|
| 578 |
# --- ▼▼▼ 2. UIコンポーネントの関数化 ▼▼▼ ---
|
| 579 |
|
| 580 |
-
|
| 581 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 582 |
try:
|
| 583 |
with open(file_path, "r", encoding="utf-8") as f:
|
| 584 |
-
|
| 585 |
-
st.markdown(f"<style>{css_content}</style>", unsafe_allow_html=True)
|
| 586 |
-
logger.info(f"CSSファイルを読み込みました: {file_path}")
|
| 587 |
except FileNotFoundError:
|
| 588 |
logger.warning(f"CSSファイルが見つかりません: {file_path}")
|
| 589 |
-
|
| 590 |
-
apply_fallback_css()
|
| 591 |
except Exception as e:
|
| 592 |
logger.error(f"CSS読み込みエラー: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 593 |
apply_fallback_css()
|
| 594 |
|
| 595 |
|
|
@@ -2076,6 +2095,16 @@ Streamlit情報:
|
|
| 2076 |
st.session_state._background_needs_update = True
|
| 2077 |
logger.info("シーン変更により背景更新フラグを設定")
|
| 2078 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2079 |
# デバッグモード時にユーザーに通知
|
| 2080 |
if st.session_state.get("debug_mode", False):
|
| 2081 |
st.success(f"🎬 シーン変更: {current_theme} → {new_theme}")
|
|
@@ -2085,14 +2114,14 @@ Streamlit情報:
|
|
| 2085 |
if st.session_state.get("debug_mode", False):
|
| 2086 |
st.info(f"🎬 シーン変更なし: {current_theme} を維持")
|
| 2087 |
|
| 2088 |
-
#
|
| 2089 |
try:
|
| 2090 |
-
logger.info(f"
|
| 2091 |
-
update_background(managers['scene_manager'],
|
| 2092 |
except Exception as e:
|
| 2093 |
-
logger.error(f"
|
| 2094 |
import traceback
|
| 2095 |
-
logger.error(f"
|
| 2096 |
# エラーが発生してもアプリケーションは継続
|
| 2097 |
|
| 2098 |
# メモリ圧縮とサマリー取得(初期メッセージを除外)
|
|
|
|
| 193 |
"""
|
| 194 |
キャッシュ可能な管理クラスのみを初期化する
|
| 195 |
Streamlitコンポーネントを使用しないクラスのみ
|
| 196 |
+
|
| 197 |
+
Note: 新しいStreamlitキャッシュシステムを使用
|
| 198 |
+
- st.cache_resource: オブジェクト/リソース用(データベース接続、モデルなど)
|
| 199 |
+
- st.cache_data: データ用(DataFrame、辞書、リストなど)
|
| 200 |
+
- 旧st.cacheは非推奨
|
| 201 |
"""
|
| 202 |
logger.info("Initializing cached managers...")
|
| 203 |
# --- 手紙機能の依存モジュール ---
|
|
|
|
| 582 |
|
| 583 |
# --- ▼▼▼ 2. UIコンポーネントの関数化 ▼▼▼ ---
|
| 584 |
|
| 585 |
+
@st.cache_data
|
| 586 |
+
def load_css_content(file_path: str) -> str:
|
| 587 |
+
"""
|
| 588 |
+
CSSファイルの内容をキャッシュして読み込む
|
| 589 |
+
|
| 590 |
+
Note: Streamlit 4.44.1対応
|
| 591 |
+
- st.cache_data: データ(文字列、辞書など)のキャッシュに使用
|
| 592 |
+
- 旧st.cacheは非推奨のため新しいAPIを使用
|
| 593 |
+
"""
|
| 594 |
try:
|
| 595 |
with open(file_path, "r", encoding="utf-8") as f:
|
| 596 |
+
return f.read()
|
|
|
|
|
|
|
| 597 |
except FileNotFoundError:
|
| 598 |
logger.warning(f"CSSファイルが見つかりません: {file_path}")
|
| 599 |
+
return ""
|
|
|
|
| 600 |
except Exception as e:
|
| 601 |
logger.error(f"CSS読み込みエラー: {e}")
|
| 602 |
+
return ""
|
| 603 |
+
|
| 604 |
+
def inject_custom_css(file_path="streamlit_styles.css"):
|
| 605 |
+
# キャッシュされたCSS読み込み
|
| 606 |
+
css_content = load_css_content(file_path)
|
| 607 |
+
if css_content:
|
| 608 |
+
st.markdown(f"<style>{css_content}</style>", unsafe_allow_html=True)
|
| 609 |
+
logger.info(f"CSSファイルを読み込みました: {file_path}")
|
| 610 |
+
else:
|
| 611 |
+
# フォールバック用の基本スタイルを適用
|
| 612 |
apply_fallback_css()
|
| 613 |
|
| 614 |
|
|
|
|
| 2095 |
st.session_state._background_needs_update = True
|
| 2096 |
logger.info("シーン変更により背景更新フラグを設定")
|
| 2097 |
|
| 2098 |
+
# シーン変更時に即座に背景を更新
|
| 2099 |
+
try:
|
| 2100 |
+
logger.info(f"シーン変更時の背景更新: テーマ '{new_theme}' (即座に実行)")
|
| 2101 |
+
update_background(managers['scene_manager'], new_theme)
|
| 2102 |
+
except Exception as e:
|
| 2103 |
+
logger.error(f"シーン変更時の背景更新でエラーが発生: {e}")
|
| 2104 |
+
import traceback
|
| 2105 |
+
logger.error(f"シーン変更時の背景更新エラーの詳細: {traceback.format_exc()}")
|
| 2106 |
+
# エラーが発生してもアプリケーションは継続
|
| 2107 |
+
|
| 2108 |
# デバッグモード時にユーザーに通知
|
| 2109 |
if st.session_state.get("debug_mode", False):
|
| 2110 |
st.success(f"🎬 シーン変更: {current_theme} → {new_theme}")
|
|
|
|
| 2114 |
if st.session_state.get("debug_mode", False):
|
| 2115 |
st.info(f"🎬 シーン変更なし: {current_theme} を維持")
|
| 2116 |
|
| 2117 |
+
# シーン変更なしの場合も現在のテーマで背景を更新(初回表示など)
|
| 2118 |
try:
|
| 2119 |
+
logger.info(f"現在テーマでの背景更新: テーマ '{current_theme}' (維持)")
|
| 2120 |
+
update_background(managers['scene_manager'], current_theme)
|
| 2121 |
except Exception as e:
|
| 2122 |
+
logger.error(f"現在テーマでの背景更新でエラーが発生: {e}")
|
| 2123 |
import traceback
|
| 2124 |
+
logger.error(f"現在テーマでの背景更新エラーの詳細: {traceback.format_exc()}")
|
| 2125 |
# エラーが発生してもアプリケーションは継続
|
| 2126 |
|
| 2127 |
# メモリ圧縮とサマリー取得(初期メッセージを除外)
|