# UI状态强制设置功能 ## 概述 在 `browser_utils/model_management.py` 中实现了强制设置UI状态的功能,确保 `isAdvancedOpen` 始终为 `true`,`areToolsOpen` 始终为 `false`。 ## 实现的功能 ### 1. 状态验证函数 #### `_verify_ui_state_settings(page, req_id)` - **功能**: 验证当前localStorage中的UI状态设置 - **返回**: 包含验证结果的字典 - `exists`: localStorage是否存在 - `isAdvancedOpen`: 当前isAdvancedOpen的值 - `areToolsOpen`: 当前areToolsOpen的值 - `needsUpdate`: 是否需要更新 - `prefs`: 当前的preferences对象(如果存在) - `error`: 错误信息(如果有) ### 2. 强制设置函数 #### `_force_ui_state_settings(page, req_id)` - **功能**: 强制设置UI状态为正确值 - **设置**: `isAdvancedOpen = true`, `areToolsOpen = false` - **返回**: 设置是否成功的布尔值 - **特点**: 会自动验证设置是否生效 #### `_force_ui_state_with_retry(page, req_id, max_retries=3, retry_delay=1.0)` - **功能**: 带重试机制的UI状态强制设置 - **参数**: - `max_retries`: 最大重试次数(默认3次) - `retry_delay`: 重试延迟秒数(默认1秒) - **返回**: 最终是否设置成功 ### 3. 完整流程函数 #### `_verify_and_apply_ui_state(page, req_id)` - **功能**: 验证并应用UI状态设置的完整流程 - **流程**: 1. 首先验证当前状态 2. 如果需要更新,则调用强制设置功能 3. 返回操作是否成功 - **特点**: 这是推荐使用的主要接口 ## 集成点 ### 1. 模型切换流程 在 `switch_ai_studio_model()` 函数中的关键节点: - 设置localStorage后 - 页面导航完成后 - 恢复流程中 ### 2. 页面初始化流程 在 `_handle_initial_model_state_and_storage()` 函数中: - 检查localStorage状态时 - 页面重新加载后 ### 3. 模型显示设置流程 在 `_set_model_from_page_display()` 函数中: - 更新localStorage时 ## 验证和重试机制 ### 验证机制 - 每次设置后都会验证是否生效 - 支持检测JSON解析错误 - 提供详细的状态信息 ### 重试机制 - 默认最多重试3次 - 每次重试间隔1秒 - 记录详细的重试日志 - 失败后会记录错误信息 ### 关键操作后的验证 系统会在以下操作后自动验证UI状态: 1. **网页切换模型后** 2. **页面初始化完成后** 3. **页面重新加载后** 4. **任何需要重载页面的操作后** 如果验证发现设置不正确,系统会: 1. 继续执行刷新操作 2. 重新应用设置 3. 直到验证成功为止 ## 日志记录 所有操作都有详细的日志记录: - `[req_id] 开始验证UI状态设置...` - `[req_id] UI状态验证结果: isAdvancedOpen=true, areToolsOpen=false, needsUpdate=false` - `[req_id] ✅ UI状态设置在第 1 次尝试中成功` - `[req_id] ⚠️ UI状态设置验证失败,可能需要重试` ## 错误处理 - 捕获并处理JSON解析错误 - 捕获并处理页面操作异常 - 提供详细的错误信息 - 在失败时不会中断主要流程 ## 使用示例 ```python # 基本验证 result = await _verify_ui_state_settings(page, req_id) if result['needsUpdate']: print("需要更新UI状态") # 强制设置 success = await _force_ui_state_settings(page, req_id) if success: print("UI状态设置成功") # 完整流程(推荐) success = await _verify_and_apply_ui_state(page, req_id) if success: print("UI状态验证和应用成功") ``` ## 配置要求 确保以下设置始终生效: - `isAdvancedOpen: true` - 高级选项面板始终打开 - `areToolsOpen: false` - 工具面板始终关闭 这些设置对于系统的正常运行至关重要,特别是 `areToolsOpen` 必须为 `false`。