Files
my-v0-server/app/prompt/action_rules.py
T
2026-10-01 09:52:43 -07:00

40 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""按动作维护生成说明,字段类型和必填约束放在 schemas/actions"""
from app.prompt.domain import EXISTING_TARGET_RULE
# 新增动作时在这里补充模型需要理解的执行语义
ACTION_RULES: dict[str, str] = {
"update_canvas": """## update_canvas:更新画布属性
将 canvas 范围的 update、resize 或 update_canvas 需求转换为此动作,不填写 target_id
properties 只包含需要修改的画布顶层字段,宽高为最终绝对值,相对变化依据当前画布换算
顶层字段整体替换,未提供的字段保持不变;改变画布尺寸不会自动缩放或移动组件
""",
"delete": f"""## delete:删除已有组件
{EXISTING_TARGET_RULE};只删除需求明确指定的组件,规划中的 remove 对应 delete
每个目标仅删除一次,删除后不能再移动、调整尺寸或更新该目标
不删除共享数据源,不把 keep、modify 或未提及的组件当作删除目标
""",
"move": """## move:移动已有组件
位移单位为 px;需求给出绝对位置时,减去组件当前坐标得到 delta_x / delta_y
例如当前 x=100,目标 x=150,生成 delta_x=50
""",
"resize": """## resize:调整已有组件尺寸
设置绝对宽高;需求给出相对变化时,依据当前尺寸换算
不需要改变的尺寸省略,不改变组件位置
""",
"update": """## update:更新已有组件属性
字段路径的第一段写入 section(name / props / style),其余各段写入 path,数字段写成整数下标;name 的 path 为空列表
例如字段 props.option.title.text 写成 section=props、path=["option", "title", "text"]
layout 字段不用 update:位置用 move,尺寸用 resize
只替换指定字段,不做深度合并;组件中还没有的中间对象由后端补齐
不通过修改属性改变组件类型(如把 series 的 type 改成其他图表类型),组件类型由节点 type 和物料决定
""",
"add": """## add:按物料新增组件
每个 add 规划对应一个新增动作,用 plan_id 关联规划,component_key 选择 component_materials 中的物料
node.id 使用不与已有节点冲突的新 ID(更换类型时沿用原 ID),node.type 必须与物料和规划一致
component_materials 提供物料默认 schema,依据它和设计要求生成 node
后端会用物料默认配置补全 node:对象逐层覆盖,数组整体替换,null 明确覆盖
物料示例数据仅作占位展示,sample_data 由后端依据物料设置,不代表已获取真实数据
""",
}