解决已发现问题
This commit is contained in:
@@ -8,6 +8,14 @@ key 必须是同一个中文名(会话建的时候原样存进 CreationConversat
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
CLICK_SWAP_PRESETS = frozenset({"点击换款", "点触换款", "多色商品换款"})
|
||||
_CLICK_SWAP_GUIDANCE = (
|
||||
"固定机位的商品点击换款短片。必须先确认要展示的颜色/款式/SKU 及顺序,"
|
||||
"画面只围绕同一件商品的逐款切换:商品始终居中、大小与角度不变,背景、灯光、机位不变。"
|
||||
"每次画面中的手指点击/轻触商品后,下一款在原位立即完成干净的 match cut 切换。"
|
||||
"禁止改成口播、剧情、使用教程、多场景展示、换人或商品飞舞变形;最后才用同一构图做全款式收束。"
|
||||
)
|
||||
|
||||
VIDEO_PRESETS: dict[str, str] = {
|
||||
"痛点解决演示": (
|
||||
"真实问题解决型短片。按「具体痛点 → 商品自然登场 → 正常使用步骤 → 可见结果 → 轻行动引导」推进。"
|
||||
@@ -47,15 +55,10 @@ VIDEO_PRESETS: dict[str, str] = {
|
||||
"鱼眼/广角近距离透视,连续换装节奏。**人物面部和身形必须全程一致**,"
|
||||
"只有服装在变。每次换装用一个明确动作触发。"
|
||||
),
|
||||
"多色商品换款": (
|
||||
"先识别并整理不同颜色、款式或 SKU,确保每款的比例、位置、外观与顺序清楚。"
|
||||
"统一构图和机位,用点击/触碰或一个明确动作触发换款;背景、光线、机位全程稳定,最后用全家福镜头覆盖全部款式。"
|
||||
),
|
||||
"点击换款": _CLICK_SWAP_GUIDANCE,
|
||||
"多色商品换款": _CLICK_SWAP_GUIDANCE,
|
||||
# 旧会话仍会保存「点触换款」,保留同一拍法约束以支持历史继续创作。
|
||||
"点触换款": (
|
||||
"先识别并整理不同颜色、款式或 SKU,确保每款的比例、位置、外观与顺序清楚。"
|
||||
"统一构图和机位,用点击/触碰或一个明确动作触发换款;背景、光线、机位全程稳定,最后用全家福镜头覆盖全部款式。"
|
||||
),
|
||||
"点触换款": _CLICK_SWAP_GUIDANCE,
|
||||
"探店漫游": (
|
||||
"以空间动线串联:入口 → 环境 → 关键细节 → 服务/主推项目。"
|
||||
"镜头连续移动有路线感,不要碎切。"
|
||||
@@ -181,8 +184,9 @@ VIDEO_PRESET_WORKFLOWS: dict[str, str] = {
|
||||
"达人口播种草": "优先确认达人/人物、真实体验和主卖点;生成前核对口播字数能在时长内说完,每个卖点都有画面证明。",
|
||||
"商品图一键成片": "优先从商品参考图锁定外观;自动补场景和动作,但不替换或改变用户商品图里的结构、颜色和包装。",
|
||||
"鱼眼换装": "优先确认人物参考、服装套数和展示顺序;生成前核对脸、身形、场景稳定,只有服装随动作切换。",
|
||||
"多色商品换款": "优先识别每个颜色或款式及其顺序;生成前核对所有 SKU 都已进入时间轴,比例、位置和机位保持一致。",
|
||||
"点触换款": "优先识别每个颜色或款式及其顺序;生成前核对所有 SKU 都已进入时间轴,比例、位置和机位保持一致。",
|
||||
"点击换款": "先让用户确认颜色/款式/SKU 和切换顺序;脚本只能是固定机位下手指逐次点击、商品原位换款,禁止转成剧情或口播。",
|
||||
"多色商品换款": "先让用户确认颜色/款式/SKU 和切换顺序;脚本只能是固定机位下手指逐次点击、商品原位换款,禁止转成剧情或口播。",
|
||||
"点触换款": "先让用户确认颜色/款式/SKU 和切换顺序;脚本只能是固定机位下手指逐次点击、商品原位换款,禁止转成剧情或口播。",
|
||||
"探店漫游": "优先确认门店动线与主推项目;用连续移动串联入口、环境、细节和服务,不做碎片化硬切。",
|
||||
"品牌质感大片": "优先确认品牌气质、材质和商品主卖点;由 Agent 决定光线和镜头,不把专业选择反复抛给用户。",
|
||||
"前后对比实测": "优先确认同一对象的前、中、后素材或可比较条件;生成前核对对比不夸大且没有缺失关键阶段。",
|
||||
@@ -224,13 +228,26 @@ VIDEO_PRESET_DELIVERY_CONTRACTS: dict[str, str] = {
|
||||
"【预设执行层·鱼眼换装】使用近距离鱼眼/广角透视和稳定的同一机位;人物脸、身形、发型、场景、光线连续一致。"
|
||||
"每一套服装由一个清晰的身体动作触发切换,按用户提供顺序完整展示;镜头的变化来自动作和节奏,不额外编复杂营销剧情。"
|
||||
),
|
||||
"点击换款": (
|
||||
"【预设执行层·点击换款·强制】这不是口播片、剧情片或普通商品展示片。"
|
||||
"使用单一固定机位和同一背景,商品全程处于完全相同的中心位置、尺寸、角度与透视。"
|
||||
"每个切换节点都必须清楚拍到一根手指轻触/点击商品,接触瞬间通过原位 match cut 换成下一款;"
|
||||
"不改场景、不改机位、不运镜、不说话、不出现完整人物、不演剧情、不演示使用步骤。"
|
||||
"各款必须按用户确认的顺序逐一出现,不自行发明颜色或款式;结尾停在干净的全款式总览。"
|
||||
),
|
||||
"多色商品换款": (
|
||||
"【预设执行层·多色商品换款】先建立统一构图、比例、机位和光线,再以点击、触碰、转动或同一连续动作逐款切换。"
|
||||
"每个颜色/SKU 都要清晰出现且顺序可辨,商品尺寸和位置不得漂移;最后给出全部款式同框总览。"
|
||||
"【预设执行层·点击换款·强制】这不是口播片、剧情片或普通商品展示片。"
|
||||
"使用单一固定机位和同一背景,商品全程处于完全相同的中心位置、尺寸、角度与透视。"
|
||||
"每个切换节点都必须清楚拍到一根手指轻触/点击商品,接触瞬间通过原位 match cut 换成下一款;"
|
||||
"不改场景、不改机位、不运镜、不说话、不出现完整人物、不演剧情、不演示使用步骤。"
|
||||
"各款必须按用户确认的顺序逐一出现,不自行发明颜色或款式;结尾停在干净的全款式总览。"
|
||||
),
|
||||
"点触换款": (
|
||||
"【预设执行层·点触换款】先建立统一构图、比例、机位和光线,再以点击、触碰、转动或同一连续动作逐款切换。"
|
||||
"每个颜色/SKU 都要清晰出现且顺序可辨,商品尺寸和位置不得漂移;最后给出全部款式同框总览。"
|
||||
"【预设执行层·点击换款·强制】这不是口播片、剧情片或普通商品展示片。"
|
||||
"使用单一固定机位和同一背景,商品全程处于完全相同的中心位置、尺寸、角度与透视。"
|
||||
"每个切换节点都必须清楚拍到一根手指轻触/点击商品,接触瞬间通过原位 match cut 换成下一款;"
|
||||
"不改场景、不改机位、不运镜、不说话、不出现完整人物、不演剧情、不演示使用步骤。"
|
||||
"各款必须按用户确认的顺序逐一出现,不自行发明颜色或款式;结尾停在干净的全款式总览。"
|
||||
),
|
||||
"探店漫游": (
|
||||
"【预设执行层·探店漫游】用一条连续空间动线讲清入口、环境、关键细节和主推服务/商品。"
|
||||
@@ -293,6 +310,10 @@ def video_preset_delivery_contract(name: str) -> str:
|
||||
return VIDEO_PRESET_DELIVERY_CONTRACTS.get((name or "").strip(), "")
|
||||
|
||||
|
||||
def is_click_swap_preset(name: str) -> bool:
|
||||
return (name or "").strip() in CLICK_SWAP_PRESETS
|
||||
|
||||
|
||||
def apply_video_preset_prompt(name: str, prompt: str) -> str:
|
||||
"""把视频预设确定性并入最终出片指令,避免只依赖对话模型主动复述。"""
|
||||
base = str(prompt or "").strip()
|
||||
@@ -303,6 +324,17 @@ def apply_video_preset_prompt(name: str, prompt: str) -> str:
|
||||
marker = f"【视频预设】{preset}"
|
||||
if marker in base:
|
||||
return base
|
||||
if is_click_swap_preset(preset):
|
||||
# 换款是镜头结构,不是可有可无的风格词。把强制执行层放在前面,
|
||||
# 原始 Agent Prompt 只作为商品/SKU 事实来源;其中若有口播、剧情、运镜或换场景等拍法,不得执行。
|
||||
return (
|
||||
f"{marker}\n{contract}\n\n"
|
||||
"【原始商品与 SKU 信息】仅提取下文中的商品外观、颜色、款式和顺序事实;"
|
||||
"下文任何与「固定机位、手指点击、商品原位换款」冲突的拍法一律忽略。\n"
|
||||
f"{base}\n\n"
|
||||
"【最终执行检查】每一次换款都必须由画面内手指的一次清晰点击触发,"
|
||||
"切换前后商品中心点、尺寸、角度、背景、光线和机位不变。"
|
||||
)
|
||||
return f"{base}\n\n{marker}\n{contract}"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user