""" app/services/ai_engine/fission_prompt.py — 第11环裂变 三档参考度 prompt 裂变=1爆款→N套完整笔记包。参考度档位控制"新套子贴原爆款多紧": high=贴原爆款结构+卖点(最像) / mid=保卖点换叙事角度 / low=只借选题方向(最自由) 🔴 占位规则(倩倩姐2026-06-16:先移植打通再请北哥定档位)。 档位真实措辞待北哥定义后替换 _LEVEL_RULES,引擎链路不动。 """ # 三档占位规则:注入文案引擎 flywheel_context,约束"参考原爆款多少" _LEVEL_RULES = { "high": ( "【裂变参考度=高】请紧贴下面这篇原爆款的正文结构、开头钩子、卖点排布与情绪语气," "近乎仿写——只替换表达措辞做到不查重,骨架与卖点角度都保留。" ), "mid": ( "【裂变参考度=中】请保留下面这篇原爆款的核心卖点,但换一个全新的叙事角度/切入场景重写," "结构可调整,让读者看不出是同一套路。" ), "low": ( "【裂变参考度=低】请只借鉴下面这篇原爆款的选题方向与目标人群," "文案结构、卖点呈现、叙事全部自由发挥,做出明显差异化的新笔记。" ), } def build_fission_context(source_note: dict, reference_level: str) -> str: """ 返回注入 text_variants(flywheel_context=) 的档位规则字符串。 source_note: {title, content, ...} 原爆款笔记内容。 reference_level: high/mid/low,非法值回落 mid。 """ rule = _LEVEL_RULES.get(reference_level, _LEVEL_RULES["mid"]) title = (source_note or {}).get("title", "") content = (source_note or {}).get("content", "") src = f"原爆款标题:{title}\n原爆款正文:{content}".strip() return f"{rule}\n\n--- 原爆款参考 ---\n{src}" def valid_level(level: str | None) -> str: """校验档位,非法回落 mid。""" return level if level in _LEVEL_RULES else "mid"