本仓库包含生产级自动投放系统。凡是修改 examples/auto_put_ad_mini 下的代码,都要按生产自动化系统处理,不能当成一次性脚本。
06:00-20:00 的投放时段,由 ad_delivery_template.time_series_json 管理;修改全局时段时要同时保持代码默认值与数据库启用模板一致。日期 最新的一行作为当前配置,不要求日期等于当天;同账户同日期多行时以表格靠后的行为准。最新行关闭时只停止新建/补创意,不改动腾讯既有资产。显式 --config-date 仅用于历史复现。年龄 支持如 45+、30-66+; 地域 支持中文省市、不限 或表示沿用模板的 排地域。ad-put-agent 镜像启动两个容器:ad-control-service 和 ad-daily-service。ad-control-service 负责唯一飞书 WebSocket、运营暂停/停止/恢复、ROI 表格逐行审批执行和每 10 分钟实时 CPM 调控。ad_creation_account_config 与启用白名单的交集;飞书关闭创建配置只停止新建/补创意,不能让既有广告退出实时管理。PAUSE_ONLY 降级。realtime_control_account_scope 可独立纳管非自动创建账户;其中 PAUSE_ONLY 账户只执行 CPM 关停,不能执行 BOOST 或 RESTORE 调价。ad-daily-service 每天 10:30 调用现有广告/创意创建流程,每 2 小时扫描腾讯创意正式审核结果,并可在每天 11:00 计算和发布日级 ROI 批次。server.py、execute_once.py 和 run.py 的模型调控链路不再作为生产入口,但暂不删除历史代码。ad-control-service 的唯一 WebSocket,不能新增第二个监听服务。群聊消息只有来自配置群、发送人在允许列表且明确 @机器人时才进入解析;私聊和未 @ 消息必须在调用模型、数据库和腾讯接口前返回。realtime_control_account_scope 显式纳管账户的并集;选中账户后操作其符合状态条件的全部广告。模型输出的账户 ID 必须与原始文本一致并再次经过数据库范围校验。暂停 只把广告 begin_date 延后到下一投放日,保留正常状态和原 time_series,由腾讯在次日 06:00 自动投放,系统不能再调用主动开启接口;停止 表示持续停止;恢复 只解除运营暂停,不能解除仍生效的 CPM 暂停。bid_hold 时,实时 CPM 调控不得修改其出价;解除 bid_hold 只能恢复实时调价资格,不能自动恢复历史价格。RTC_APPLY_ENABLED、DAILY_ROI_ENABLED、ROI_APPLY_ENABLED 默认关闭;生产切换前必须先完成 dry-run 和只通知验证。metric_version。north_star_roi_t15_v8,策略版本为 roi_policy_v15,报表版本为 roi_report_v41,使用已发布参数 20260712_A0-A15_v2。T0 裂变人数取 SUM(t0_fission_uv_root),不得使用旧字段 t0裂变人数。首层效率收入取 SUM(效率收入),T0 实际裂变收入取当天的 SUM(裂变效率收入);只预测 T1-T15 增量:T0实际裂变收入 * (传播裂变系数 - 1),预测总收入为 首层效率收入 + T0实际裂变收入 + 预测T1-T15裂变收入,禁止继续读取已废弃的 多层t0裂变收入。人群包+转化目标精确 -> 人群包回退 -> 转化目标回退 -> 渠道回退 匹配;公众号按 合作方+公众号精确 -> 合作方回退 -> 渠道回退 匹配。样本不足的精确实体不能使用自身系数。广告优化目标;缺失目标只能进入人群包回退,不得默认成关键页面访问。企微 ROI 口径未复核,优先使用已发布的合作方 SQL 计算结果,合作方未匹配、样本不足或旧版本无企微参数时默认参考系数为 2.5 并明确标注;企微不进入阈值样本池且不得生成调控动作。dt 必须位于第一列并按日期倒序。主 Sheet 冻结首行和前 7 列。roi_fission_parameter_release 和 roi_fission_parameter_value;日级 ROI 只从数据库消费 ROI_FISSION_PARAMETER_VERSION 指定且通过内容哈希校验的版本,不能在日常任务中现场重算或静默回退到镜像文件。离线复算只能生成草稿,经恒等式、行数、匹配率和新旧结果对账后才能发布。FEISHU_OPERATOR_CHAT_ID 投放审批群;群 ID 相同时必须去重。policy_version;指标版本与策略版本必须同时写入每个运行批次。usersharedepth<=1。连续三天每天首层 UV>200、成本>0 且 ROI 有效的小程序创意级和公众号实体分别进入渠道独立样本池。公众号即转使用自身合格实体等权 P20;小程序按 T-1 创意级实际成本5%软预算动态反推关停线和实体分位点,广告级重复聚合成本不得进入分母。DAILY_ROI_ENABLED=1、ROI_APPLY_ENABLED=0 只允许计算、快照、报表和审批预览;只有 DAILY_ROI_ENABLED=1、ROI_APPLY_ENABLED=1、ROI_SHEET_APPROVAL_ENABLED=1 时,表格批准后才允许自动执行腾讯写操作。DAILY_ROI_ENABLED=0、ROI_APPLY_ENABLED=1;服务启动时必须拒绝这种不完整配置。loghubods.ads_ad_own_package_detail_15min 当天 package_cost_times_today;不依赖昨日曲线。日表只补充实时业务指标和次日最终对账。ads_ad_own_package_detail_15min.report_date 表示 15 分钟窗口的开始时间;预测时点和报表展示必须使用窗口结束时间,即 report_date + 15 分钟,不能提前使用尚未结束的窗口。report_date 快照及对应预测必须幂等写入 MySQL 用于审计;MySQL 不作为近期趋势信号来源。06:15 开始,按自然 15 分钟刻度预测一次。主模型使用当前时点最近两个连续15分钟窗口;窗口不足、不连续、数据过期或累计值异常时必须停止预测并记录原因,不能补造趋势数据。today 口径,日表不得混入预测公式。历史训练只接受96个连续窗口的完整日,异常日期不能进入参数发布或算法评价。REVENUE_FORECAST_ENABLED 默认关闭。算法、成本系数或窗口口径变化时必须升级 REVENUE_FORECAST_VERSION,保留历史预测结果。REVENUE_SPEED_PARAMETER_VERSION 指定版本,不能现场扫描历史或使用预测日及未来数据。DENIED 创意不计入有效创意。crowdPackage 尝试 source=hot。source=hot 只能改变内容服务的视频来源,不能改变账户配置的人群包。videoContentList.category 做内容品类过滤。早中晚好、祝福音乐、历史名人。xcx/save 之前。categoryName 当作内容品类使用;它是召回逻辑使用的语义/视觉特征字段。videoContentList 只负责选择承接视频,素材召回特征必须通过 video_id 查询 ODPS 表 loghubods.dwd_video_element_contribution_analysis。解构选题 列和 实质 维度;形式、意图 不参与素材召回。解构选题 -> VIDEO_TOPIC实质 + 灵感点 -> INSPIRATION_SUBSTANCE实质 + 关键点 -> KEYPOINT_SUBSTANCE实质 + 目的点 -> PURPOSE_SUBSTANCEbatchByText,再按 material_id 合并去重。score >= 0.8。cost 倒序选择。history、ai_generated、external_recall;外部素材链路必须独立执行,不能改变历史召回和原 AI 生成链路的行为。sourceLabels 召回,相似度准入后按 loghubods.cooperate_top_cards_daily_v1.card_cover_id 关联配置窗口内 访问uv 之和倒序,默认窗口为 90 天,同 UV 时按相似度倒序。crowd_package + landing_video_id 默认最多 1 次。crowd_package + landing_video_id 默认最多 1 次。crowd_package + landing_video_id 默认最多 1 次。prepared / pending 记录不能进入跨轮排重;它们只能用于当前运行内去重,或作为中断后可复用的恢复缓存。landing_video_id 仍保留限频保护,默认最多 1 次。material_id 排除。crowd_package + material_id 只进入本轮审批表一次;该去重只存在内存,不写入历史排重库。prepare_one_creative_for_ad 会真实上传图片并创建 xcx/save 落地计划,默认不能直接并行执行;如需并行,必须先拆分为纯候选选择和副作用串行确认两段。videoContentList 每个 source 默认最多读取 3 页,每页 100 条,按 video_id 去重合并。videoContentList 的 crowdPackage 可以有独立映射。cell*year*商业 获取视频时映射为 wx*商业回流330以上人群 获取视频时映射为 R_330+source=hot 只能改变内容服务的视频来源,不能改变映射后的召回人群包。source 也可以按人群包做独立映射。回流330以上人群 获取视频时使用 .env 中的 prior。brand_image_id。feedback_id 是账户级资产,应通过配置模板查找或创建。是否自动化执行 不等于 是 时,只关闭新建/补量,不删除 DB 配置,不修改腾讯既有资产。examples/auto_put_ad_mini 下的 Python 脚本时,默认使用仓库根目录 .venv/bin/python;不要直接使用系统 python3,避免缺少 FastAPI、PyODPS、OSS 等项目依赖导致误判。xcx/save 落地计划创建。