name: exec_summary_rows
生成用于记录最终输出的每条视频的寻找过程的json
output.json.contents 中出现的 aweme_id 生成 rows;不得输出任何不在 contents 的视频(包括淘汰候选/搜索过程中的视频)。aweme_idtitleauthor_nicknamestrategy_typefrom_case_aweme_idfrom_case_pointfrom_featuresearch_keywordchanneldecision_basisdecision_notesinput_featuresstrategy_type: "case出发策略" / "特征出发策略"channel: "抖音搜索" / "订阅账号" / "榜单" / "其他"decision_basis: "内容画像匹配" / "作者画像匹配" / "需求筛选" / "画像缺失" / "其他"list[str];默认从 output.json.query 按逗号拆分得到(兼容中文逗号)。from_case_aweme_id/from_case_point/from_feature 若无法确定可为空字符串,但不能缺 key。output.json(必须读取并以 contents 为准)
query:用于 input_features 拆分contents[]:每条入选内容,含 aweme_id/title/author_nickname/reason/portrait_data.source 等log.txt:用于判断内容来自哪种策略、来自哪个 case出发/特征出发、搜索词与渠道等对每个 content in output.json.contents:
aweme_id/title/author_nickname 直接来自 content(必须与 contents 一致)decision_notes:优先用 content.reason(入选理由)decision_basis:
content.portrait_data.source == "content_like" → "内容画像匹配"== "account_fans" → "作者画像匹配"== "none" → "画像缺失""其他"strategy_type/channel/search_keyword:
from_case_* / from_feature:能确定就填;不确定可空串。只输出一个 JSON 对象(不要 Markdown、不要解释、不要多余文本):
{"rows":[{...},{...}]}