跳到主要内容

业务演进、结构差异与待确认事项

这些差异来自当前源码与 2026-09-18 测试环境元数据对照。它们不是自动迁移或清理清单:正常演进、历史兼容、框架参与、环境缺口和潜在映射问题必须分开理解。本次没有扫描业务数据,也没有验证生产环境。

首先保留的业务背景​

  • nebula_ids 是原单体 MySQL 库。device、task 已有独立库,仍存默认库依赖、跨库 SQL 和部分旧对象,不应写成“两个服务只有一个共享库”。
  • 规则投放与旧渠道/MAC/地区关系在若干服务中共存。是否走旧分支受配置影响,不能因为新逻辑存在就删去旧关系说明。
  • 审批有效态、素材类型、黑名单类型等注释滞后于枚举和调用逻辑。文档解释当前实现,并保留旧注释冲突,不据此认定数据库中的值已损坏。
  • 实库多出字段或表,可能来自租户框架、第三方依赖或旧版本。先核对读写者,再讨论维护;本轮不实施结构变更。

需要优先理解的映射与约束差异​

范围已确认现象业务影响与核验边界
task 应用活跃汇总AppActivityCountDO 声明 beginDate/endDate 且未排除持久化,实表没有 begin_date/end_date,另有 country自动生成 SQL 可能引用不存在的列;应在后续业务验证中检查实际调用路径,本轮未执行 CRUD
device MAC 类型DeviceMacTypeDO 的表注解指向 base_device,自定义 SQL 实际访问 device_mac_type;前者没有 type自定义查询和通用 Mapper 的对象解释不同,不能把两张表合为一个设计
device 应用安装app_install_package 系列表未在本次目标库中找到;实测有统计表与部分设备月表可能涉及动态创建时机、环境或遗留代码,不能仅据缺失认定业务失败
device ES 安装月索引较新月份部分时间、CPU 字段为 text,较早月份为 date/keyword;另有月份混合驼峰/下划线字段相同实体不保证所有历史索引结构一致,跨月过滤/排序要考虑索引差异;未运行业务查询
report APK 历史实表没有 PRIMARY;id 是 (id,mac,cpuid) 复合唯一键,两列虚拟生成值参与另一个幂等唯一键ORM 的 @TableId 不等于数据库单列主键;空值占位和 ES 文档 ID 应按当前实现说明
report 数据源编码uk_tenant_code(tenant_id,code) 不含 deleted逻辑删除仍可能占用租户内编码,不能把删除理解为物理释放
launcher 业务唯一性广告位组合唯一由服务查询校验,实库无对应唯一索引业务约定和数据库约束的保障程度不同,不能宣称数据库防止了所有重复
rule 业务唯一性规则链名称/编码由源码校验;business_limit 的组合索引为非唯一应区分匹配逻辑与唯一约束;本次不新增索引
rule 覆盖数量与限额rule_device_count 是部分条件初筛数量;当前业务类型的 hasCountLimit 均为 false数量不能写成全部 EL/地区条件执行后的最终命中数;存在限额代码也不代表当前已强制启用
task 与 rule 的 UOTA 域解绑查询采用 DOMAIN_DISPATCH_UOTA,DomainUotaAppServiceImpl 的解绑调用使用 DOMAIN_DISPATCH业务域上下文存在静态不一致,记录后续定向核验项,本轮不修改代码、不推定已经解绑失败
bpm 业务唯一性9 张业务表仅采集到主键,未有 message_key/process_definition_id 等业务唯一索引不能把业务幂等键描述为数据库强制唯一;框架表的外键另行记录
bpm 抄送字段单 taskId 重载传给下一重载的活动名称、任务 ID 参数位置存在静态不一致可能影响该路径写入的字段含义;已在 BPM 核验页给出行号,未读取历史内容判定实际影响

逐字段映射、具体索引、源码位置及更多差异以各服务业务页为准:device、task、report、launcher、rule、bpm。

注释与现行业务含义​

领域旧描述与现行逻辑的差别当前文档采用的解释
任务/桌面/黑名单 valid旧注释未完整反映当前共享枚举,部分修改/移除含义相反以 BpmBusinessValid 和业务调用表达未生效、生效、待修改/移除及启用/禁用标记
task V2 下发历史 taskType 类型说明不能代表 V2 所有能力当前 V2 响应外层固定 taskType=1,按具体接口解释
launcher 素材类型注释仍有“网页/其它”等旧定义当前 AdTypeEnum 为 video/image/fav/text,具体取值见服务页
blacklist typeDO/数据库注释与枚举的卸载/杀死取值相反以当前 BlacklistedTypeEnum 的 0=卸载、1=杀死解释代码
report 推送历史实体旧注释称“只保留最新版本”当前实现保留以版本与推送时间区分的多条历史,并有卸载先到的占位处理
launcher 动态表旧注释描述的分表维度不完整用 getter、Mapper 和统计作业解释广告资源、周期、分类及历史兼容命名

这里只纠正文档解读,不改实体注释或数据库 comment。实际存量值是否遵循哪一时期定义,需要另一项有业务数据授权的核验,本次未推断。

额外对象与框架列​

范围实库与源码对象覆盖处理方式
system32 实表全部有对应实体;另有 12 个 tenant_id 和 operate_log.success 未由对应 DO 声明租户字段结合插件说明;success 保留为未映射列
infra21 实表中 18 张对应当前实体;另有 infra_job、infra_job_log、infra_region额外 3 表归属未核验;10 表 tenant_id、file_config.cdn_config 另列,不自动删除
report46 实表中 3 张由当前模块显式 DO 映射其余 43 张按第三方报表、示例、测试命名及未确认对象分类;不把“没有本地 DO”当成完全无使用
launcher8 实表全部有对应实体,无缺失源码列index.draft、部分 tenant_id 和统计审计列额外存在;deleted 仍有 XML 使用,不能说完全无读写
task 独立库ik_yudao_task 8 实表,7 张有当前 DOtask_flow_uota_download 尚未确认当前映射;其他遗留与统计库详见 task 页
blacklistik_apk 7 实表,5 张有当前 DOapp_uninstall_detail、flow_blacklisted_flow 归属待确认;主表额外 release_info、flow_status、tenant_id
bpm56 实表,由 9 张业务表与 47 张引擎表构成46 条物理外键属于实际框架约束;业务表额外 tenant_id 及两个触发设置列另述
rule12 实表与 12 个实体对应,未发现映射列缺失5 表额外 tenant_id,MAC 资源关联表额外 create_time;不直接清理

device 涉及固定对象、地区 XML、动态安装月表与 ES,不能把实体数量直接当作物理表数量,其覆盖与额外对象在 device 总览及实测字典单列。

配置缺口与未在线核验的范围​

提供的配置未定义 td_api_visit、report_prod、td_report 三个引用。额外采集 monitor 成功,只证明指定测试实例中该结构存在,不证明 system 路由配置正确。report 的 jm_base 在本次开放索引及返回别名中未找到,不能扩大为所有环境、closed 索引都不存在。

BPM 回调消息的根记录状态由回执更新,不是所有消费者子记录的汇总成功标志。排查审批已通过但业务未生效时,需要分别看流程状态、业务有效态及各服务补偿记录,详见 BPM 回调流程。

Redis 实际键值与 TTL、SLS 云索引、运行时配置优先级、消息交付、审批补偿、ES 同步和定时统计未在线执行验证。各业务页的代码路径不等价于这些任务当前已启用。所有成功/失败与覆盖边界见采集说明。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答