- 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"
783 B
783 B
ADDED Requirements
Requirement: 热点探测函数迁移至独立模块
系统 SHALL 将热点搜索与分析相关函数从 main.py 提取至 services/hotspot.py,包括:search_hotspots、analyze_and_suggest、generate_from_hotspot、_set_cache、_get_cache、_fetch_and_cache、_pick_from_cache、fetch_proactive_notes、on_proactive_note_selected。
Scenario: 模块导入成功
- WHEN
main.py执行from services.hotspot import search_hotspots, analyze_and_suggest等导入 - THEN 所有函数可正常调用
Scenario: 线程安全缓存随模块迁移
- WHEN
_cache_lock(threading.RLock)随函数一起迁移至services/hotspot.py - THEN
_set_cache/_get_cache的线程安全行为保持不变