schema.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. -- auto_put_ad_mini 数据库表结构
  2. -- 数据库类型:MySQL 5.7+
  3. -- 字符集:utf8mb4
  4. -- =====================================================
  5. -- 1. 账户白名单表
  6. -- =====================================================
  7. CREATE TABLE IF NOT EXISTS account_whitelist (
  8. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  9. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  10. account_name VARCHAR(200) DEFAULT NULL COMMENT '账户名称(备注用)',
  11. business_line VARCHAR(100) DEFAULT NULL COMMENT '业务线(用于分组管理)',
  12. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用(1=启用,0=禁用)',
  13. remark TEXT DEFAULT NULL COMMENT '备注说明',
  14. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  15. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  16. created_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
  17. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  18. UNIQUE KEY uk_account_id (account_id),
  19. KEY idx_enabled (enabled),
  20. KEY idx_business_line (business_line),
  21. KEY idx_updated_at (updated_at)
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='广告账户白名单';
  23. -- =====================================================
  24. -- 2. 广告创建投放版本模板
  25. -- =====================================================
  26. CREATE TABLE IF NOT EXISTS ad_delivery_template (
  27. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  28. delivery_version VARCHAR(100) NOT NULL COMMENT '投放版本',
  29. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
  30. description VARCHAR(500) DEFAULT NULL COMMENT '模板说明',
  31. site_set_json TEXT NOT NULL COMMENT '版位 JSON',
  32. location_types_json TEXT NOT NULL COMMENT '地域类型 JSON',
  33. region_ids_json MEDIUMTEXT NOT NULL COMMENT '地域 region_id JSON',
  34. daily_budget_fen INT NOT NULL COMMENT '单广告日预算(分)',
  35. time_series_json MEDIUMTEXT NOT NULL COMMENT '投放时段字符串 JSON',
  36. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  37. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  38. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  39. UNIQUE KEY uk_delivery_version (delivery_version),
  40. KEY idx_enabled (enabled)
  41. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='广告创建投放版本模板';
  42. -- =====================================================
  43. -- 3. 待投放账户广告创建配置
  44. -- =====================================================
  45. CREATE TABLE IF NOT EXISTS ad_creation_account_config (
  46. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  47. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  48. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用创建',
  49. delivery_version VARCHAR(100) NOT NULL COMMENT '投放版本',
  50. brand_key VARCHAR(100) DEFAULT NULL COMMENT '品牌资产模板key',
  51. feedback_key VARCHAR(100) DEFAULT NULL COMMENT '监测链接模板key',
  52. material_source VARCHAR(50) NOT NULL DEFAULT 'history' COMMENT '创意素材来源:history/ai_generated',
  53. ai_fallback_to_history BOOLEAN NOT NULL DEFAULT FALSE COMMENT 'AI生成失败时是否回退历史素材',
  54. audience_name VARCHAR(200) NOT NULL COMMENT '人工配置的人群包名称',
  55. audience_pack_id BIGINT DEFAULT NULL COMMENT '系统解析/验证后的人群包ID;NULL表示泛人群',
  56. audience_tier_label VARCHAR(100) DEFAULT NULL COMMENT '审批/命名展示用人群标签',
  57. bid_min_fen INT NOT NULL COMMENT '最低出价(分)',
  58. bid_max_fen INT NOT NULL COMMENT '最高出价(分)',
  59. bid_amount_fen INT DEFAULT NULL COMMENT '固定出价(分);NULL则按范围取值',
  60. daily_budget_fen INT DEFAULT NULL COMMENT '账户级单广告日预算(分);NULL则使用投放模板默认预算',
  61. age_min INT NOT NULL COMMENT '最小年龄',
  62. age_max INT NOT NULL COMMENT '最大年龄',
  63. audience_source_account_id BIGINT DEFAULT NULL COMMENT '人群包来源账户;默认可由 TENCENT_AUDIENCE_SOURCE_ACCOUNT_ID 提供',
  64. audience_grant_status VARCHAR(50) DEFAULT NULL COMMENT '授权/验证状态:not_required_no_audience_pack/resolved/grant_submitted/verified',
  65. audience_verified_at TIMESTAMP NULL DEFAULT NULL COMMENT '目标账户可见验证时间',
  66. remark TEXT DEFAULT NULL COMMENT '备注',
  67. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  68. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  69. created_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
  70. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  71. UNIQUE KEY uk_account_id (account_id),
  72. KEY idx_enabled (enabled),
  73. KEY idx_delivery_version (delivery_version),
  74. KEY idx_brand_key (brand_key),
  75. KEY idx_feedback_key (feedback_key),
  76. KEY idx_material_source (material_source),
  77. KEY idx_audience_name (audience_name)
  78. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='待投放账户广告创建配置';
  79. -- =====================================================
  80. -- 4. 统一品牌资产模板
  81. -- =====================================================
  82. CREATE TABLE IF NOT EXISTS brand_asset_template (
  83. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  84. brand_key VARCHAR(100) NOT NULL COMMENT '品牌模板key',
  85. brand_name VARCHAR(100) NOT NULL COMMENT '品牌名称',
  86. brand_image_url VARCHAR(1000) NOT NULL COMMENT '品牌图片公网URL',
  87. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
  88. remark TEXT DEFAULT NULL COMMENT '备注',
  89. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  90. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  91. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  92. UNIQUE KEY uk_brand_key (brand_key),
  93. KEY idx_enabled (enabled)
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一品牌资产模板';
  95. -- =====================================================
  96. -- 5. 统一监测链接模板
  97. -- =====================================================
  98. CREATE TABLE IF NOT EXISTS feedback_asset_template (
  99. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  100. feedback_key VARCHAR(100) NOT NULL COMMENT '监测模板key',
  101. feedback_name VARCHAR(200) NOT NULL COMMENT '监测链接组名称',
  102. second_category_type VARCHAR(100) NOT NULL COMMENT '二级类目类型,如 WECHAT_MINI_PROGRAM',
  103. feedback_type VARCHAR(50) NOT NULL COMMENT '监测类型,如 click',
  104. feedback_url TEXT NOT NULL COMMENT '回传链接模板',
  105. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
  106. remark TEXT DEFAULT NULL COMMENT '备注',
  107. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  108. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  109. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  110. UNIQUE KEY uk_feedback_key (feedback_key),
  111. KEY idx_enabled (enabled)
  112. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一监测链接模板';
  113. -- =====================================================
  114. -- 6. 系统配置表(Key-Value 存储)
  115. -- =====================================================
  116. CREATE TABLE IF NOT EXISTS system_config (
  117. id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  118. config_key VARCHAR(100) NOT NULL COMMENT '配置键(如 execution_enabled, cron_schedule)',
  119. config_value TEXT NOT NULL COMMENT '配置值(JSON 或字符串)',
  120. value_type ENUM('string', 'boolean', 'int', 'json') DEFAULT 'string' COMMENT '值类型',
  121. description VARCHAR(500) DEFAULT NULL COMMENT '配置说明',
  122. enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
  123. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  124. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  125. updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
  126. UNIQUE KEY uk_config_key (config_key),
  127. KEY idx_enabled (enabled)
  128. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
  129. -- =====================================================
  130. -- 7. 决策历史记录表(可选,用于审计和分析)
  131. -- =====================================================
  132. CREATE TABLE IF NOT EXISTS decision_history (
  133. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  134. decision_date DATE NOT NULL COMMENT '决策日期',
  135. account_id BIGINT NOT NULL COMMENT '账户ID',
  136. ad_id BIGINT NOT NULL COMMENT '广告ID',
  137. ad_name VARCHAR(500) DEFAULT NULL COMMENT '广告名称',
  138. action VARCHAR(50) NOT NULL COMMENT '决策动作(pause, bid_down, bid_up, scale_up, observe, hold)',
  139. dimension VARCHAR(100) DEFAULT NULL COMMENT '决策维度(roi, fission, decay等)',
  140. reason TEXT DEFAULT NULL COMMENT '决策理由',
  141. current_bid DECIMAL(10, 2) DEFAULT NULL COMMENT '当前出价(元)',
  142. recommended_bid DECIMAL(10, 2) DEFAULT NULL COMMENT '推荐出价(元)',
  143. recommended_change_pct DECIMAL(6, 2) DEFAULT NULL COMMENT '调整幅度(%)',
  144. roi_7d DECIMAL(10, 4) DEFAULT NULL COMMENT '7日ROI',
  145. dynamic_roi DECIMAL(10, 4) DEFAULT NULL COMMENT '动态ROI',
  146. cost_7d_avg DECIMAL(10, 2) DEFAULT NULL COMMENT '7日均消耗(元)',
  147. executed BOOLEAN DEFAULT FALSE COMMENT '是否已执行',
  148. execution_status VARCHAR(50) DEFAULT NULL COMMENT '执行状态(success, failed, pending, skipped)',
  149. execution_error TEXT DEFAULT NULL COMMENT '执行错误信息',
  150. executed_at TIMESTAMP NULL DEFAULT NULL COMMENT '执行时间',
  151. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  152. KEY idx_decision_date (decision_date),
  153. KEY idx_account_id (account_id),
  154. KEY idx_ad_id (ad_id),
  155. KEY idx_action (action),
  156. KEY idx_executed (executed),
  157. KEY idx_created_at (created_at)
  158. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='决策历史记录';
  159. -- =====================================================
  160. -- 8. 创意创建与审核扫描任务表
  161. -- =====================================================
  162. CREATE TABLE IF NOT EXISTS creative_creation_task (
  163. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  164. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  165. adgroup_id BIGINT DEFAULT NULL COMMENT '广告ID',
  166. dynamic_creative_id BIGINT NOT NULL COMMENT '动态创意ID',
  167. dynamic_creative_name VARCHAR(200) DEFAULT NULL COMMENT '动态创意名称',
  168. landing_video_id BIGINT DEFAULT NULL COMMENT '承接视频ID',
  169. material_id VARCHAR(100) DEFAULT NULL COMMENT '内部素材ID',
  170. material_image_id VARCHAR(100) DEFAULT NULL COMMENT '腾讯图片ID',
  171. review_status VARCHAR(50) NOT NULL DEFAULT 'submitted' COMMENT '审核状态',
  172. submit_status VARCHAR(50) NOT NULL DEFAULT 'submitted' COMMENT '提交状态',
  173. submitted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
  174. last_review_checked_at TIMESTAMP NULL DEFAULT NULL COMMENT '最近审核扫描时间',
  175. review_finished_at TIMESTAMP NULL DEFAULT NULL COMMENT '审核完成时间',
  176. error TEXT DEFAULT NULL COMMENT '提交或扫描错误',
  177. raw_record MEDIUMTEXT DEFAULT NULL COMMENT '创建记录JSON',
  178. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  179. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  180. UNIQUE KEY uk_account_creative (account_id, dynamic_creative_id),
  181. KEY idx_review_status (review_status),
  182. KEY idx_submitted_at (submitted_at),
  183. KEY idx_landing_submitted (landing_video_id, submitted_at),
  184. KEY idx_last_review_checked_at (last_review_checked_at),
  185. KEY idx_account_status (account_id, review_status)
  186. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='创意创建与审核扫描任务';
  187. -- =====================================================
  188. -- 9. 腾讯动态创意审核结果表
  189. -- =====================================================
  190. CREATE TABLE IF NOT EXISTS creative_review_result (
  191. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  192. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  193. dynamic_creative_id BIGINT NOT NULL COMMENT '动态创意ID',
  194. review_status VARCHAR(50) NOT NULL COMMENT '解析后的审核状态',
  195. reject_messages MEDIUMTEXT DEFAULT NULL COMMENT '拒绝原因JSON数组',
  196. delay_messages MEDIUMTEXT DEFAULT NULL COMMENT '延迟审核原因JSON数组',
  197. raw_result MEDIUMTEXT NOT NULL COMMENT '腾讯审核结果原文JSON',
  198. checked_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '扫描时间',
  199. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  200. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  201. UNIQUE KEY uk_account_creative (account_id, dynamic_creative_id),
  202. KEY idx_review_status (review_status),
  203. KEY idx_checked_at (checked_at)
  204. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='腾讯动态创意审核结果';
  205. -- =====================================================
  206. -- 10. 创意审核拒绝事实表
  207. -- =====================================================
  208. CREATE TABLE IF NOT EXISTS creative_rejection_fact (
  209. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  210. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  211. dynamic_creative_id BIGINT NOT NULL COMMENT '动态创意ID',
  212. fact_type VARCHAR(50) NOT NULL COMMENT '拒绝事实类型:site/element/compose',
  213. fact_key VARCHAR(255) DEFAULT NULL COMMENT '元素/版位/组件标识',
  214. reason TEXT NOT NULL COMMENT '拒绝原因',
  215. site_set VARCHAR(100) DEFAULT NULL COMMENT '影响版位',
  216. element_type VARCHAR(100) DEFAULT NULL COMMENT '元素类型',
  217. component_type VARCHAR(100) DEFAULT NULL COMMENT '组件类型',
  218. raw_detail MEDIUMTEXT DEFAULT NULL COMMENT '原始明细JSON',
  219. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  220. KEY idx_account_creative (account_id, dynamic_creative_id),
  221. KEY idx_fact_type (fact_type),
  222. KEY idx_fact_key (fact_key(100))
  223. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='创意审核拒绝事实';
  224. -- =====================================================
  225. -- 11. 视频元素特征缓存表(ODPS 最新分区缓存)
  226. -- =====================================================
  227. CREATE TABLE IF NOT EXISTS video_element_feature_cache (
  228. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  229. video_id BIGINT NOT NULL COMMENT '业务视频ID,对应 ODPS vid',
  230. dt VARCHAR(8) NOT NULL COMMENT 'ODPS 分区日期 YYYYMMDD',
  231. point_type VARCHAR(50) NOT NULL COMMENT '点类型',
  232. standard_element VARCHAR(255) NOT NULL COMMENT '标准化元素',
  233. element_dimension VARCHAR(50) NOT NULL DEFAULT '实质' COMMENT '元素维度',
  234. contribution_score DOUBLE NOT NULL DEFAULT 0 COMMENT '贡献分',
  235. is_miss BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否为无特征负缓存',
  236. raw_element VARCHAR(255) DEFAULT NULL COMMENT '原始元素名称',
  237. element_id VARCHAR(100) DEFAULT NULL COMMENT '标准化元素ID',
  238. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  239. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  240. UNIQUE KEY uk_dt_video_point_element (dt, video_id, point_type, standard_element),
  241. KEY idx_video_dt (video_id, dt),
  242. KEY idx_dt (dt),
  243. KEY idx_updated_at (updated_at)
  244. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频元素特征缓存';
  245. -- =====================================================
  246. -- 12. 创意素材使用历史/占位表
  247. -- =====================================================
  248. CREATE TABLE IF NOT EXISTS creative_material_usage (
  249. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  250. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  251. adgroup_id BIGINT DEFAULT NULL COMMENT '广告ID',
  252. crowd_package VARCHAR(200) NOT NULL COMMENT '投放人群包名称',
  253. landing_video_id BIGINT DEFAULT NULL COMMENT '承接视频ID,用于同人群包近期排重',
  254. material_id VARCHAR(100) NOT NULL COMMENT '内部素材ID',
  255. material_image_id VARCHAR(100) DEFAULT NULL COMMENT '腾讯图片ID',
  256. dynamic_creative_id BIGINT DEFAULT NULL COMMENT '腾讯动态创意ID',
  257. status VARCHAR(50) NOT NULL DEFAULT 'prepared' COMMENT 'prepared/submitted/failed',
  258. source VARCHAR(50) DEFAULT NULL COMMENT 'primary/hot',
  259. raw_record MEDIUMTEXT DEFAULT NULL COMMENT '准备记录JSON',
  260. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  261. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  262. KEY idx_crowd_material_created (crowd_package, material_id, created_at),
  263. KEY idx_crowd_landing_created (crowd_package, landing_video_id, created_at),
  264. KEY idx_crowd_account_ad_material (crowd_package, account_id, adgroup_id, material_id),
  265. KEY idx_account_created (account_id, created_at),
  266. KEY idx_status_created (status, created_at)
  267. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='创意素材使用历史/占位';
  268. -- =====================================================
  269. -- 13. AI生成创意图片素材
  270. -- =====================================================
  271. CREATE TABLE IF NOT EXISTS ai_generated_material (
  272. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
  273. account_id BIGINT NOT NULL COMMENT '腾讯广告账户ID',
  274. adgroup_id BIGINT DEFAULT NULL COMMENT '广告ID',
  275. crowd_package VARCHAR(200) NOT NULL COMMENT '投放人群包名称',
  276. landing_video_id BIGINT NOT NULL COMMENT '承接视频ID',
  277. landing_title VARCHAR(500) DEFAULT NULL COMMENT '承接视频标题',
  278. landing_category VARCHAR(200) DEFAULT NULL COMMENT '承接视频品类',
  279. prompt_type VARCHAR(50) NOT NULL COMMENT '生成角度:topic',
  280. prompt_text MEDIUMTEXT NOT NULL COMMENT '最终生成prompt',
  281. prompt_feature_json MEDIUMTEXT DEFAULT NULL COMMENT 'prompt使用的视频特征JSON',
  282. model VARCHAR(200) NOT NULL COMMENT 'OpenRouter模型',
  283. oss_object_key VARCHAR(500) DEFAULT NULL COMMENT 'OSS对象key',
  284. oss_url VARCHAR(1000) DEFAULT NULL COMMENT 'OSS公网URL',
  285. status VARCHAR(50) NOT NULL DEFAULT 'generated' COMMENT 'generated/prepared/approved/rejected/hold/skip/posted_ok/post_failed/error',
  286. approval_status VARCHAR(50) DEFAULT NULL COMMENT '人工审批状态',
  287. tencent_image_id VARCHAR(100) DEFAULT NULL COMMENT '腾讯图片ID',
  288. dynamic_creative_id BIGINT DEFAULT NULL COMMENT '腾讯动态创意ID',
  289. error TEXT DEFAULT NULL COMMENT '生成/上传/创建错误',
  290. raw_response MEDIUMTEXT DEFAULT NULL COMMENT '模型原始响应摘要',
  291. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  292. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  293. KEY idx_account_ad_landing_status (account_id, adgroup_id, landing_video_id, status),
  294. KEY idx_crowd_created (crowd_package, created_at),
  295. KEY idx_status_created (status, created_at)
  296. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI生成创意图片素材';
  297. -- =====================================================
  298. -- 初始化数据
  299. -- =====================================================
  300. -- 插入默认系统配置
  301. INSERT INTO system_config (config_key, config_value, value_type, description) VALUES
  302. ('execution_enabled', 'false', 'boolean', '是否启用实际执行(生产环境谨慎开启)'),
  303. ('whitelist_enabled', 'true', 'boolean', '是否启用白名单机制'),
  304. ('cron_schedule', '0 2 * * *', 'string', 'APScheduler定时调度表达式(每天凌晨2点UTC)'),
  305. ('run_on_startup', 'false', 'boolean', '服务启动时是否立即执行一次'),
  306. ('max_concurrent_tasks', '1', 'int', '最大并发任务数'),
  307. ('approval_timeout_minutes', '30', 'int', '飞书审批超时时间(分钟)'),
  308. ('creative_review_scan_interval_hours', '2', 'int', '创意正式审核结果扫描间隔(小时)'),
  309. ('roi_low_factor', '0.75', 'string', '关停线系数(ROI < 渠道P50 * 0.75 触发关停)'),
  310. ('bid_down_roi_factor', '0.90', 'string', '降价线系数(ROI < 渠道P50 * 0.90 触发降价)'),
  311. ('bid_up_roi_factor', '1.05', 'string', '提价线系数(ROI > 渠道P50 * 1.05 触发提价)')
  312. ON DUPLICATE KEY UPDATE updated_at = CURRENT_TIMESTAMP;
  313. -- 插入示例白名单账户(请根据实际情况修改)
  314. INSERT INTO account_whitelist (account_id, account_name, business_line, enabled, remark, created_by) VALUES
  315. (80769799, '测试账户1', '小程序投流', TRUE, '初始白名单账户', 'system'),
  316. (71305011, '测试账户2', '小程序投流', TRUE, '初始白名单账户', 'system')
  317. ON DUPLICATE KEY UPDATE updated_at = CURRENT_TIMESTAMP;
  318. -- =====================================================
  319. -- 索引优化说明
  320. -- =====================================================
  321. -- 1. account_whitelist.uk_account_id: 保证账户唯一性
  322. -- 2. system_config.uk_config_key: 保证配置键唯一性
  323. -- 3. decision_history.idx_decision_date: 按日期查询决策记录
  324. -- 4. decision_history.idx_ad_id: 查询某个广告的历史决策
  325. -- 5. decision_history.idx_action: 按决策类型统计分析
  326. -- =====================================================
  327. -- 表分区建议(如数据量大)
  328. -- =====================================================
  329. -- ALTER TABLE decision_history PARTITION BY RANGE (YEAR(decision_date) * 100 + MONTH(decision_date)) (
  330. -- PARTITION p202604 VALUES LESS THAN (202605),
  331. -- PARTITION p202605 VALUES LESS THAN (202606),
  332. -- PARTITION p202606 VALUES LESS THAN (202607),
  333. -- PARTITION pmax VALUES LESS THAN MAXVALUE
  334. -- );