38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
sequenceDiagram
|
|
participant OP as 运营
|
|
participant S as 服务器
|
|
participant A as Agent
|
|
participant PL as 平台
|
|
participant IT as 账号负责人
|
|
Note over A,S: 单条WSS长连接复用(实测RTT 0.07ms)
|
|
OP->>S: 提交任务(素材/平台/排期)
|
|
S->>S: 校验→审核→入队→排期触发
|
|
S->>A: task.push(taskId,加密载荷)
|
|
A-->>S: ack(taskId) 幂等确认
|
|
A->>A: 选账号→注入代理→协议级登录态校验(不启浏览器)
|
|
alt 登录态正常
|
|
A->>PL: 冷启动浏览器→上传素材→提交发布
|
|
PL-->>A: 发布回执+截图
|
|
A->>S: task.result(success)
|
|
S-->>OP: 实时状态+链接
|
|
else 平台触发二次验证
|
|
PL-->>A: 挑战(扫码/短信/APP确认/滑块)
|
|
A->>S: challenge.push(类型,凭证)
|
|
S-->>IT: 控制台+企微提醒
|
|
IT->>S: 扫码或输入验证码
|
|
S->>A: challenge.resolve(结果)
|
|
A->>PL: 继续发布流程
|
|
else 网络类失败
|
|
A->>A: 指数退避 1m/5m/15m/1h
|
|
A->>PL: 自动重试上传
|
|
else 登录态失效
|
|
A->>S: challenge.push(qr)
|
|
S-->>IT: 推送扫码提醒
|
|
IT->>S: 扫码成功
|
|
S->>A: challenge.resolve
|
|
A->>PL: 恢复执行
|
|
else 风控拦截
|
|
A->>S: task.result(fail,原因)
|
|
S->>S: 账号冷却+人工队列
|
|
S-->>OP: 告警通知
|
|
end |