文章

MiguDelay 架构 22:机审会话

MiguDelay(DDLive)项目架构系列文档:机审会话。内容基于 2026-08-04 对指定重构分支的源码扫描结果整理。

MiguDelay 架构 22:机审会话

系列导航系列总览 · 上一篇:MiguDelay 架构 21:主备绑定、心跳与业务复制 · 下一篇:MiguDelay 架构 23:屏蔽截图报告

扫描基线

  • 项目:MiguDelay(DDLive)
  • 分支:refactor/video-frame-provider
  • HEAD:d28ec061406e4e3df93e3d1a92478d71a9ad4908
  • 工作树:clean
  • 扫描日期:2026-08-04
  • 说明:内容以当前 HEAD 源码为准;仓库旧架构文档仅作为线索,不作为最终事实来源。

1. 边界

机审在主输入真正 ready 后启动,任务停止时 best-effort 结束。机审失败产生 typed Audit error,但不进入 TaskSession 的 recv/record/push stop barrier。

2. 核心类

职责
MachineAuditService phase、task/audit generation、dataId/bizId
LegacyMachineAuditGateway HTTP start/stop、MQTT report、callback gate
LegacyMachineAuditBinding task event、配置快照、日志/warning
ClientOperateHandle machine result JSON
ApplicationIngress typed result 到控制线程

3. 启动条件

TaskOrchestrator 必须完成:

  1. StartReceive success。
  2. ReceiveReadySnapshot 存在。
  3. prepareRecording success。
  4. emit mainInputReady(identity,generation,liveUrl)

之后 Binding 才构造 immutable audit start event。

4. 调用链

sequenceDiagram
    participant O as TaskOrchestrator
    participant B as MachineAuditBinding
    participant S as MachineAuditService
    participant G as MachineAuditGateway
    participant API as AuditAPI

    O-->>B: mainInputReady
    B->>B: capture config client and start time
    B->>S: handleTaskStarted
    S->>S: increment audit generation
    S->>G: start request
    G->>API: HTTP start
    API-->>G: dataId and bizId
    G-->>S: completion
    S->>S: verify task and audit generation
    S->>G: reportStarted when active

5. immutable request

  • TaskIdentity
  • TaskGeneration
  • live URL
  • live start time
  • complete MachineAuditConfig
  • client/role/reply topic

enabled 时要求 baseUrl、appId、platformCode、callbackUrl、coverUrl 和正 sceneId。

6. compensation stop

若任务在 audit Starting 期间停止:

  • Service 记录 stop intent。
  • start 失败则直接清理。
  • start 最终成功则立即对新 dataId 提交 stop。
  • 旧会话不会重新暴露为 Active。

7. 结果消息

1
2
3
4
5
6
ClientOperateHandle.handleMachineAuditResult
  -> parser
  -> MachineAuditResultEvent
  -> ApplicationIngress
  -> MachineAuditService.handleResult
  -> LegacyMachineAuditBinding warning and logs

只有 Active 且 dataId/bizId 匹配当前会话的结果才接受。

8. 停止与 shutdown

taskStopping 转为 Service stop request。重复、stale、post-stop 不重复提交。shutdown 时:

  1. Binding disconnect。
  2. cancel pending report。
  3. Active 会话最多 best-effort stop 一次。
  4. audit generation 递增。
  5. Gateway callback gate 关闭。

9. 源码证据

  • src/code/module/playback/machineaudit/*
  • src/code/module/netmessagehandle/clientoperate/*
  • tests/machine_audit_service/*

系列导航系列总览 · 上一篇:MiguDelay 架构 21:主备绑定、心跳与业务复制 · 下一篇:MiguDelay 架构 23:屏蔽截图报告

本文由作者按照 CC BY 4.0 进行授权