graph TD
subgraph "A. 消息生产与清洗并入库(独立运行,不拥堵)"
A1["读取config.py中的定时任务"]
A2["读取config.py中的直播监听类型"]
A3["读取config.py中的抖音DOUYIN_LIVE_URL"]
A15["读取config.py中的抖音TAOBAO_LIVE_URL"]
A4["读取config.py中的MESSAGE_FILTER_SETTINGS"]
A5["读取config.py中的INIT_MESSAGES"]
A6["直播间获取消息<br>(调用 \\utils\\DouyinLiveWebFetcher)"<br>预热模式:关闭]
A7["直播间获取消息<br>(调用 \\utils\\WeixinLiveWebFetcher)"<br>预热模式:关闭]
A16["直播间获取消息<br>(调用 \\utils\\TaobaoLiveWebFetcher)"<br>预热模式:关闭]
A8["手动发送自定义消息"]
A9["定时发送自定义消息"]
A10["构建初始化消息(一次性)"]
A11["构建消息<br>(携带类型: chat, like, follow等)"]
A12["构建消息<br>(携带类型: chat, like, follow, tts_direct,base_talk,welcome等)"]
A13["消息滤网[关键词|用户名|类型]类似黑名单"]
A14[(消息池 message pool<br>消息60秒过期机制<br>读取config.py中的# Message Pool Settings)]
A5 --> A10
A4 --> A13
A3 --> A6
A2 --"DOUYIN"--> A3
A2 --"WEIXIN"--> A7
A2 --"TAOBAO"--> A15
A1 --> A9
A8 --> A12
A9 --> A12
A10 --> A12
A7 --> A11
A6 --> A11
A15 --> A16
A16 --> A11
A11 --> A13
A12 --> A13
A13 --"消息过滤后进入"--> A14
end
subgraph "B. 消息处理与决策"
B1["拉取消息池发送至N8N_DECISION_WEBHOOK并返回消息 id"]
B2["根据消息 id 从消息池中取出<br>(在消息池中会相应删除)"]
B3{读取config.py中的Maps message types<br>并匹配优先级}
B4["消息优先级属于P0?"]
B5["将消息发送至N8N_LLM_WEBHOOK并返回响应"]
B6["消息优先级属于P1?"]
B7["将消息发送至N8N_LLM_WEBHOOK并返回响应"]
B8["消息优先级属于P2?"]
B9["将消息发送至N8N_LLM_WEBHOOK并返回响应"]
B10["消息优先级属于P99?"]
B11["将消息发送至N8N_LLM_WEBHOOK并返回响应"]
B12["TTS服务端socket_server.py"]
B13[(持久堆积P99音频块池)]
B14["音频块推送员<br>独立运行<br>当后续音频池为空时才会推送音频<br>每次完整推送所有音频块"]
B15["音频池管理器"]
A14 --> B1
B1 --> B2
B2 --> B3
B3 --> B4
B4 --"是"--> B5
B4 --"否"--> B6
B6 --"是"--> B7
B6 --"否"--> B8
B8 --"是"--> B9
B8 --"否"--> B10
B10 --"是"--> B11
B5 --"ws连接/control端口"--> B12
B7 --"ws连接/control端口"--> B12
B9 --"ws连接/control端口"--> B12
B11 --"ws连接/control端口"--> B12
B12 --"ws连接/listen端口"--> B15
B15 --> B13
B13 --> B14
B15 --"音频入音频池后返回拉取消息池并循环"--> B1
end
subgraph "C. 音频池"
C1["音频池P0"]
C2["音频池P1"]
C3["音频池P2"]
C4["音频池P99"]
B15 --> C1
B15 --> C2
B15 --> C3
B15 --> C4
B14 --> C4
end
subgraph "D. TTS播报层"
D1["播放器 (异步+优先级轮询音频流池: P0 > P1 > P2 > P99)<br>预热模式:关闭"]
B15 --> D1
end
testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
评论