上线版: 产品表单统一+form嵌套修复+用户管理+部署+三套叙事
- 产品编辑入口统一走 ProductFormFull(卖点/风格/人群/品牌词全字段); 修复开任务页 <form> 套 <form> 致"编辑产品"报错、改不了、跳回首个产品 - dashboard 入口卡片对齐实际路由: 系统管理(/config) 与 工作配置(/settings) 分开; settings ?tab=products 直达改用挂载后读 URL, 消除 hydration mismatch - 新增用户管理(users API/admin service/改密页) + alembic 022/023/024 - 上线部署: Dockerfile / docker-compose.prod+https / nginx https / .env.example - A8 三套正交叙事(痛点/场景/成分背书) + beige 调色去AI化 + 飞轮 text_import 高权重信号 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -137,7 +137,13 @@ def build_fission_prompt(
|
||||
source_note: dict, product: dict, reference_level: str,
|
||||
note_count: int, image_count: int, dimensions: list[str] | None = None,
|
||||
) -> str:
|
||||
"""组装裂变 user prompt(对齐上线版 handleContentSplit 的 prompt 变量拼装)。"""
|
||||
"""组装裂变 user prompt(对齐上线版 handleContentSplit 的 prompt 变量拼装)。
|
||||
|
||||
D3修复:给每套分配正交叙事主线(复用 TEXT_NARRATIVE_BY_STRATEGY A/B/C),
|
||||
套数超过3时按顺序循环(套4=A/套5=B),让各套开篇/背书/收尾正交拉开。
|
||||
"""
|
||||
from app.services.ai_engine.constants import TEXT_NARRATIVE_BY_STRATEGY
|
||||
|
||||
src = source_note or {}
|
||||
prod = product or {}
|
||||
dims = dimensions or DEFAULT_DIMENSIONS
|
||||
@@ -149,9 +155,24 @@ def build_fission_prompt(
|
||||
points = prod.get("selling_points", []) or []
|
||||
audience = prod.get("target_audience", "") or "未提供"
|
||||
keywords = prod.get("keywords", []) or []
|
||||
kw_line = "、".join(keywords) if keywords else "、".join(
|
||||
[x for x in [name, audience, "真实测评", "好物分享"] if x and x != "未提供"]
|
||||
)
|
||||
# D2修复:去掉"真实测评/好物分享"泛词兜底(评分prompt明确泛词占≥50%最高6分,自打自)
|
||||
# 改用产品真实信息提炼精准词;实在无keywords也不塞流量泛词
|
||||
if keywords:
|
||||
kw_line = "、".join(keywords)
|
||||
else:
|
||||
# 从产品卖点/人群/名称里取实质性词,不拼平台泛词
|
||||
sp_words = [str(s).strip() for s in (points[:2] if points else []) if str(s).strip()]
|
||||
kw_parts = [x for x in ([name] + sp_words + ([audience] if audience != "未提供" else [])) if x and x != "未提供"]
|
||||
kw_line = "、".join(kw_parts) if kw_parts else ""
|
||||
|
||||
# D3修复:按套序循环分配 A/B/C 叙事主线
|
||||
narrative_keys = list(TEXT_NARRATIVE_BY_STRATEGY.keys()) # ["A","B","C"]
|
||||
narrative_lines = []
|
||||
for i in range(note_count):
|
||||
key = narrative_keys[i % len(narrative_keys)]
|
||||
narrative_lines.append(f"第{i+1}套叙事主线:{TEXT_NARRATIVE_BY_STRATEGY[key]}")
|
||||
narrative_block = "\n".join(narrative_lines)
|
||||
|
||||
return f"""爆款参考:
|
||||
标题:{title}
|
||||
正文:{content}
|
||||
@@ -166,7 +187,11 @@ def build_fission_prompt(
|
||||
生成数量:{note_count}套
|
||||
每套图片数量:{image_count}张
|
||||
|
||||
【各套正交叙事主线——必须严格执行,这是本次裂变不同质的关键】
|
||||
{narrative_block}
|
||||
|
||||
请生成{note_count}套完整小红书图文笔记包。每套都必须含标题、正文、标签、点击钩子标题、{image_count}张图的imagePlan。
|
||||
每套必须严格按其指定叙事主线展开开篇/背书/收尾,不同套之间叙事结构必须正交、不重复。
|
||||
imagePlan必须按叙事链路逐张递进。3张版第2张必须是按当前品类变化的核心证明页,不能和第1张重复构图,不得让第2张重复第1张标题。
|
||||
正文必须像真实小红书种草笔记一样自然带2-5个emoji;不要把图片规划/配图建议/内部审核建议写进正文。"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user