本仓库包含生产级自动投放系统。凡是修改 examples/auto_put_ad_mini 下的代码,都要按生产自动化系统处理,不能当成一次性脚本。
06:00-20:00 的投放时段,由 ad_delivery_template.time_series_json 管理;修改全局时段时要同时保持代码默认值与数据库启用模板一致。日期 作为配置生效批次;主流程只处理当天日期的行,其他日期不覆盖或禁用已有账户配置。年龄 支持如 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_v5,报表版本为 roi_report_v9,使用已发布参数 20260712_A0-A15_v2。首层效率收入取 SUM(效率收入),T0 实际裂变收入取当天的 SUM(裂变效率收入);只预测 T1-T15 增量:T0实际裂变收入 * (传播裂变系数 - 1),预测总收入为 首层效率收入 + T0实际裂变收入 + 预测T1-T15裂变收入,禁止继续读取已废弃的 多层t0裂变收入。人群包+转化目标精确 -> 人群包回退 -> 转化目标回退 -> 渠道回退 匹配;公众号按 合作方+公众号精确 -> 合作方回退 -> 渠道回退 匹配。样本不足的精确实体不能使用自身系数。广告优化目标;缺失目标只能进入人群包回退,不得默认成关键页面访问。企微 ROI 口径未复核,优先使用已发布的合作方 SQL 计算结果,合作方未匹配、样本不足或旧版本无企微参数时默认参考系数为 2.5 并明确标注;企微不进入阈值样本池且不得生成调控动作。roi_fission_parameter_release 和 roi_fission_parameter_value;日级 ROI 只从数据库消费 ROI_FISSION_PARAMETER_VERSION 指定且通过内容哈希校验的版本,不能在日常任务中现场重算或静默回退到镜像文件。离线复算只能生成草稿,经恒等式、行数、匹配率和新旧结果对账后才能发布。FEISHU_OPERATOR_CHAT_ID 投放审批群;群 ID 相同时必须去重。policy_version;指标版本与策略版本必须同时写入每个运行批次。dynamic_creative_id,不能暂停整个广告;高 ROI 动作只调整广告永久基础出价,默认上调 10%。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;服务启动时必须拒绝这种不完整配置。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 落地计划创建。