- main.py: 4360 → 146 lines (96.6% reduction), entry layer only - services/: rate_limiter, autostart, persona, connection, profile, hotspot, content, engagement, scheduler, queue_ops (10 business modules) - ui/app.py: all Gradio UI code extracted into build_app(cfg, analytics) - Fix: with gr.Blocks() indented inside build_app function - Fix: cfg.all property (not get_all method) - Fix: STATUS_LABELS, get_persona_keywords, fetch_proactive_notes imports - Fix: queue_ops module-level set_publish_callback moved into configure() - Fix: pub_queue.format_*() wrapped as queue_format_table/calendar helpers - All 14 files syntax-verified, build_app() runtime-verified - 58/58 tasks complete"
1.2 KiB
1.2 KiB
ADDED Requirements
Requirement: 连接管理函数迁移至独立模块
系统 SHALL 将所有 LLM / SD / MCP 连接管理及认证相关函数从 main.py 提取至 services/connection.py,包括:_get_llm_config、connect_llm、add_llm_provider、remove_llm_provider、on_provider_selected、connect_sd、on_sd_model_change、check_mcp_status、get_login_qrcode、logout_xhs、_auto_fetch_xsec_token、check_login、save_my_user_id、upload_face_image、load_saved_face_image。
Scenario: 模块导入成功
- WHEN
main.py执行from services.connection import connect_llm, connect_sd等导入 - THEN 所有函数可正常调用,行为与迁移前完全一致
Scenario: 外部依赖通过参数传入
- WHEN
services/connection.py中的函数需要访问cfg、llm(LLMService)、sd(SDService)、mcp(MCPClient) - THEN 这些依赖 SHALL 通过函数参数接收,
services/connection.py模块顶层不创建单例实例
Scenario: 无循环导入
- WHEN Python 解释器加载
services/connection.py - THEN 不产生
ImportError或循环导入错误