跳到主要内容

任务业务核心表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件聚焦于任务业务核心表结构,围绕任务与OTA模块的关键数据表进行系统化梳理,覆盖以下主题:

  • 任务与OTA模块的核心业务表:任务表、UOTA详情表、任务文件表、任务状态表、任务统计表等
  • 关键字段定义、数据类型、约束条件与业务含义
  • 设计理念、字段选择原则与业务逻辑支撑
  • 表结构图与字段说明(主键、外键、索引)
  • 表间关联关系与参照完整性约束
  • 典型数据示例与业务场景下的数据流向

项目结构

任务与OTA相关的核心表分布在MySQL与TDengine两类存储中:

  • MySQL(ik_yudao_task库):UOTA下载记录、UOTA渠道关联、UOTA MAC关联等
  • TDengine(launcher_task_result数据库):任务结果稳定表(STABLE)

Mermaid Diagram Code:

graph TB
subgraph "MySQLik_yudao_task"
UOTA_DL["flow_uota_download<br/>UOTA升级下载记录表"]
UOTA_CH["flow_uota_channel<br/>UOTA关联渠道表"]
UOTA_MAC["flow_uota_mac<br/>UOTA关联mac表"]
end
subgraph "TDenginelauncher_task_result"
LTR["launcher_task_result.stable<br/>任务结果稳定表"]
end
UOTA_DL --- UOTA_CH
UOTA_DL --- UOTA_MAC
LTR -. 业务结果写入 .- UOTA_DL

图表来源

章节来源

核心组件

本节从“表结构+字段+约束+业务含义”的角度,逐表解析任务与OTA模块的核心表。

  • 任务与型号关联表(flow_task_model)

    • 作用:将任务与设备型号建立关联,支持按型号下发任务
    • 关键字段
      • id:主键
      • taskId:任务主键
      • modelId:设备型号主键
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(taskId, modelId) 组合索引以提升查询效率
    • 业务含义
      • 有效标记用于区分草稿与已生效的规则
      • 草稿字段用于流程审批前的临时保存
  • 任务与渠道关联表(flow_task_channel_new)

    • 作用:将任务与渠道建立关联,支持按渠道下发任务
    • 关键字段
      • id:主键(新增)
      • channel_id:渠道主键
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(channel_id, valid) 组合索引
    • 业务含义
      • 与flow_task_model类似,支持草稿与生效状态分离
  • 任务与设备关联表(flow_task_device)

    • 作用:将任务与设备建立关联,支持按设备下发任务
    • 关键字段
      • id:主键(调整为自增)
      • is_black_list:黑名单标记
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(is_black_list, valid)
    • 业务含义
      • 黑名单过滤与生效状态控制
  • 任务与区域关联表(flow_task_region)

    • 作用:将任务与区域建立关联,支持按区域下发任务
    • 关键字段
      • id:主键(新增)
      • region_id:区域主键
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(region_id, valid)
    • 业务含义
      • 与上述表一致,支持草稿与生效状态分离
  • 任务规则表(base_task_rule)

    • 作用:任务规则定义与扩展
    • 关键字段
      • id:主键(调整为自增)
      • task_id:任务主键
      • exclusive:互斥标志
      • open_apptimes:开放应用次数
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(task_id, valid)
    • 业务含义
      • 规则生效与草稿隔离,便于流程审批
  • 任务与角色关联表(flow_task_role)

    • 作用:任务与角色(数据权限)关联
    • 关键字段
      • id:主键
      • task_id:任务主键
      • role_id:角色主键
    • 约束与索引
      • 主键:id
      • 建议索引:(task_id, role_id)
    • 业务含义
      • 控制任务可见性与操作权限
  • UOTA升级下载记录表(flow_uota_download)

    • 作用:记录设备端UOTA升级下载行为
    • 关键字段
      • id:主键
      • mac:设备MAC
      • cpu_id:CPU ID
      • package_name:包名
      • version_name:版本名称
      • vsersion_code:版本号
      • record_time:设备端记录时间
      • create_time/update_time:创建/更新时间
    • 约束与索引
      • 主键:id
      • 建议索引:(mac, package_name, version_name)
    • 业务含义
      • 用于审计与统计设备升级行为
  • UOTA关联渠道表(flow_uota_channel)

    • 作用:UOTA与渠道的关联
    • 关键字段
      • id:主键
      • uota_id:UOTA主键
      • channel_id:渠道主键
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(uota_id, channel_id)
    • 业务含义
      • 控制UOTA的下发渠道范围
  • UOTA关联mac表(flow_uota_mac)

    • 作用:UOTA与特定MAC的关联
    • 关键字段
      • id:主键
      • uota_id:UOTA主键
      • mac:设备MAC
      • valid:是否有效(0-是,1-否)
      • draft:未审批通过的草稿数据(JSON)
    • 约束与索引
      • 主键:id
      • 建议索引:(uota_id, mac)
    • 业务含义
      • 支持灰度发布与定向升级
  • 任务结果稳定表(launcher_task_result.stable)

    • 作用:以TDengine稳定表形式存储任务结果指标
    • 关键字段
      • ts:时间戳
      • data_key:数据键(主键)
      • mac/cpu:设备标识
      • play_count:播放次数
      • create_time:创建时间
      • advert_id/month:标签字段
    • 约束与索引
      • 主键:data_key
      • TAGS:advert_id, month
    • 业务含义
      • 高吞吐写入与高效聚合查询

章节来源

架构总览

任务与OTA模块的数据流由“规则配置—下发—执行—结果采集—统计分析”构成,核心表承担不同阶段的数据承载职责。

Mermaid Diagram Code:

sequenceDiagram
participant Dev as "设备端"
participant Biz as "UOTA模块"
participant Rule as "规则引擎"
participant DB as "MySQLik_yudao_task"
participant TD as "TDenginelauncher_task_result"
Dev->>Biz : "请求升级检查版本号/平台/MAC"
Biz->>DB : "查询UOTA详情与关联渠道/mac/规则"
DB-->>Biz : "返回匹配的UOTA与下发范围"
Biz->>Rule : "规则匹配灰度/地区/强制"
Rule-->>Biz : "命中结果"
Biz-->>Dev : "返回升级包信息"
Dev->>TD : "上报播放/执行结果"
TD-->>Biz : "提供聚合查询能力"

图表来源

详细组件分析

任务与型号关联表(flow_task_model)

  • 设计理念
    • 将任务与设备型号解耦,支持多型号批量下发
    • 通过valid/draft字段实现“草稿—生效”的双态管理
  • 字段选择原则
    • taskId/modelId作为关联键,避免冗余
    • valid/draft用于流程化治理
  • 业务逻辑支撑
    • 查询时按taskId过滤,结合modelId精确匹配
    • 生效后通过索引加速查询

Mermaid Diagram Code:

erDiagram
FLOW_TASK_MODEL {
int id PK
int task_id
int model_id
tinyint valid
json draft
}

图表来源

章节来源

UOTA详情与关联表族

  • 设计理念
    • UOTA详情表承载升级包元信息;渠道/设备关联表承载下发范围
    • 通过valid/draft实现审批前置的草稿隔离
  • 字段选择原则
    • UOTA下载记录表保留设备侧关键标识(mac/cpu_id/package_name/version)
    • 关联表以主键+有效标记为主,减少跨表JOIN
  • 业务逻辑支撑
    • 下发前先做规则匹配与渠道/设备白名单校验
    • 结果上报至TDengine,支撑高并发写入与聚合分析

Mermaid Diagram Code:

erDiagram
FLOW_UOTA_DOWNLOAD {
bigint id PK
varchar mac
varchar cpu_id
varchar package_name
varchar version_name
int vsersion_code
datetime record_time
datetime create_time
datetime update_time
}
FLOW_UOTA_CHANNEL {
bigint id PK
bigint uota_id FK
bigint channel_id
tinyint valid
json draft
}
FLOW_UOTA_MAC {
bigint id PK
bigint uota_id FK
varchar mac
tinyint valid
json draft
}
FLOW_UOTA_CHANNEL }o--|| FLOW_UOTA_DOWNLOAD : "记录下载行为"
FLOW_UOTA_MAC }o--|| FLOW_UOTA_DOWNLOAD : "记录下载行为"

图表来源

章节来源

任务结果稳定表(TDengine)

  • 设计理念
    • 使用稳定表(STABLE)与TAGS实现高吞吐写入与高效聚合
    • data_key作为主键,advert_id/month作为TAGS,便于分区与查询
  • 字段选择原则
    • ts作为时间序列主键,play_count为高频聚合指标
    • TAGS承载维度信息,降低存储与查询成本
  • 业务逻辑支撑
    • 任务执行结果以时间序列形式写入,支持按月/广告维度聚合

Mermaid Diagram Code:

flowchart TD
Start(["写入入口"]) --> BuildKey["构造data_key<br/>含设备/维度信息"]
BuildKey --> WriteStable["写入launcher_task_result.stable"]
WriteStable --> Tags["按TAGSadvert_id, month分区"]
Tags --> Query["按维度聚合查询"]
Query --> End(["输出统计结果"])

图表来源

章节来源

任务状态与流程集成

  • 设计理念
    • 任务状态与流程审批状态解耦,支持草稿、审批中、通过、不通过、取消等状态
    • 通过process_instance_id与流程引擎打通
  • 字段选择原则
    • bpm_status与process_instance_id用于流程集成
    • tenant_id支持多租户隔离
  • 业务逻辑支撑
    • 审批通过后,任务规则进入生效态(valid=0),否则保持草稿态(valid=1)

章节来源

依赖分析

  • 数据源依赖
    • UOTA相关表位于ik_yudao_task库,通过数据源常量统一管理
  • 表间依赖
    • flow_uota_channel/flow_uota_mac均依赖flow_uota_download中的uota_id
    • flow_task_*系列表均依赖任务主表(任务主表定义见SQL脚本注释)
  • 查询依赖
    • flow_task_model/flow_task_channel_new/flow_task_device/flow_task_region通过valid/draft实现草稿与生效态分离,查询时优先使用有效数据

Mermaid Diagram Code:

graph LR
UOTA_DL["flow_uota_download"] --> UOTA_CH["flow_uota_channel"]
UOTA_DL --> UOTA_MAC["flow_uota_mac"]
MODEL["flow_task_model"] --> TASK["任务主表注释说明"]
CH["flow_task_channel_new"] --> TASK
DEV["flow_task_device"] --> TASK
REG["flow_task_region"] --> TASK

图表来源

章节来源

性能考量

  • 索引设计
    • 建议在flow_task_model(modelId, valid)、flow_task_channel_new(channel_id, valid)、flow_task_device(is_black_list, valid)、flow_task_region(region_id, valid)等组合上建立索引,以提升查询效率
  • 写入优化
    • UOTA下载记录与任务结果稳定表采用JSON与时间序列结构,适合高并发写入
  • 草稿隔离
    • 通过valid/draft字段将审批前后的数据隔离,避免查询时的脏数据干扰

故障排查指南

  • 常见问题定位
    • UOTA下发失败:检查flow_uota_channel/flow_uota_mac中是否存在有效记录且与设备匹配
    • 任务未生效:确认flow_task_*系列表的valid字段是否为0(生效)
    • 结果缺失:核对TDengine稳定表写入与TAGS分区是否正确
  • 接口与服务
    • UotaDetailService提供UOTA详情与子表(渠道/mac)的CRUD接口,可通过服务层方法定位异常
    • FlowUotaMacMapper提供按UOTA与MAC的分页查询,便于问题定位

章节来源

结论

本文系统梳理了任务与OTA模块的核心表结构,明确了各表的字段定义、约束条件与业务含义,并给出了索引与性能优化建议。通过valid/draft的草稿—生效双态设计、TDengine稳定表的高吞吐写入能力,以及清晰的表间依赖关系,整体方案既满足业务灵活性,又兼顾高性能与可维护性。

附录

  • 典型数据示例(示意)
    • UOTA下载记录:包含mac、cpu_id、package_name、version_name、vsersion_code、record_time等字段
    • 任务规则:包含task_id、exclusive、open_apptimes、valid、draft等字段
    • 任务结果稳定表:包含ts、data_key、mac、cpu、play_count、create_time及TAGS(advert_id、month)
  • 业务场景
    • UOTA升级:设备端发起升级检查,服务端匹配规则与白名单,返回升级包信息
    • 任务下发:按型号/渠道/设备/区域下发任务,生效后执行并上报结果
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答