import streamlit as st def ss_init(key, default): """ 统一的 session_state 初始化函数。 - 仅当 key 不存在时才写入默认值 - 避免在多个模块中重复实现 """ if key not in st.session_state: st.session_state[key] = default def init_session_state(): """ 初始化 GEO 应用中跨 Tab 使用的核心 session_state 字段。 说明: - 这里只负责**跨 Tab 共享**或在多处使用的 key - 各 Tab 内部的临时/局部状态仍然由 Tab 自己按需调用 ss_init """ # 配置相关 # ss_init("cfg", {}) # 移除:由主程序 geo_tool.py 负责初始化,避免空字典覆盖默认配置 ss_init("cfg_applied", False) ss_init("cfg_valid", False) ss_init("cfg_errors", []) # 关键词模块 ss_init("keywords", []) ss_init("kw_last_num", 20) ss_init("kw_generation_mode", "AI生成") ss_init("wordbanks", None) # 内容创作模块 ss_init("generated_contents", []) ss_init("zip_bytes", None) ss_init("zip_filename", "") ss_init("content_scores", {}) ss_init("selected_content_idx", 0) # 文章优化模块 ss_init("optimized_article", "") ss_init("opt_changes", "") ss_init("opt_platform", "通用优化") # 多模型验证 ss_init("verify_combined", None) ss_init("verify_last_queries", "") # 其他跨模块使用的标志位 ss_init("cancel_generation", False)