上线版: 产品表单统一+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:
@@ -28,16 +28,17 @@ SCORE_WEIGHTS = {
|
||||
"keyword": 20,
|
||||
"compliance": 5,
|
||||
}
|
||||
# ── AI 评委 7 维满分分布(倩倩姐2026-06-15拍板·与 llm_scorer._DIM_MAX/_score_prompt 三处同步)──
|
||||
# 6维AI读分(痛点18+情绪18+买点18+钩子15+标题13+真实感13=95) + 合规5 = 100
|
||||
# "真实感"=富贵"很少提产品/前70%干货后30%植入"原则,替换旧机械维度"产品聚焦一件事(16)"
|
||||
# ── AI 评委 7 维满分分布(倩倩姐2026-06-22拍板补标签精准·与 llm_scorer._DIM_MAX/_score_prompt 三处同步)──
|
||||
# 7维AI读分(痛点16+情绪16+买点16+钩子13+标题13+真实感11+标签精准10=95) + 合规5 = 100
|
||||
# 标签精准度=北哥要害⑤出单命门(精准购买意向埋词),分从原6维各匀出,总分仍95,合格线80不动非降门槛
|
||||
AI_DIM_WEIGHTS = {
|
||||
"痛点人群精准": 18,
|
||||
"情绪张力": 18,
|
||||
"买点转化": 18,
|
||||
"开头钩子": 15,
|
||||
"痛点人群精准": 16,
|
||||
"情绪张力": 16,
|
||||
"买点转化": 16,
|
||||
"开头钩子": 13,
|
||||
"标题点击力": 13,
|
||||
"真实感": 13,
|
||||
"真实感": 11,
|
||||
"标签精准度": 10,
|
||||
"compliance": 5, # 机械硬拦,不进 AI 评委
|
||||
}
|
||||
# 过线分。倩倩姐2026-06-15拍板:80是临时观察值(AI评委给分克制,84文案实为合格)。
|
||||
@@ -54,13 +55,13 @@ DEDUP_TITLE_CONTENT_BODY = 0.72 # 标题+正文联合判重时的正文阈值
|
||||
MAX_OPTIMIZE_ROUNDS = 2 # 最多重生成轮次
|
||||
|
||||
# ── storyboard 分镜角色(枚举不写死数量)────────────────
|
||||
# Q6: 北哥6张套路顺序 ①封面痛点大字 ②单品特写+品牌词 ③成分 ④质地 ⑤上脸对比 ⑥促单
|
||||
# Q6: 北哥6张套路顺序 ①封面痛点大字 ②单品特写+品牌词 ③成分 ④质地 ⑤效果证明(按品类) ⑥促单
|
||||
PAGE_ROLES = [
|
||||
{"role": "hook", "name": "封面痛点大字", "focus": "负责点击:强情绪大字标题压痛点,产品露出,真实生活场景,像用户主动分享,不像广告海报"},
|
||||
{"role": "product_closeup", "name": "单品特写", "focus": "负责种草锚点:单品高清特写+品牌词自然植入,第2/6张都带品牌词,强化记忆"},
|
||||
{"role": "ingredient", "name": "成分拆解", "focus": "负责信任:核心成分信息、作用说明,避免医疗化和绝对化表达,信息清晰可信"},
|
||||
{"role": "texture", "name": "质地展示", "focus": "负责种草:质地近景、涂抹过程、肤感说明,真实手部/桌面/日常光线"},
|
||||
{"role": "applied_proof", "name": "上脸对比", "focus": "负责证明:可感知上脸效果,展示涂抹前后质地变化(不做肤色变白/瑕疵消失等违规暗示),第5张"},
|
||||
{"role": "applied_proof", "name": "效果证明", "focus": "负责证明:可感知的真实使用效果,按品类展示使用过程/状态变化(护肤=上脸肤感/食品=入口口感/家居数码=使用顺手等,不做违规功效暗示),第5张"},
|
||||
{"role": "closer", "name": "促单收尾", "focus": "负责转化:转化句+品牌词,引导搜索品牌词成交,软性收尾不硬广,第6张再带一次品牌词"},
|
||||
# 扩展角色(8张链路用)
|
||||
{"role": "pain_scene", "name": "痛点共鸣", "focus": "负责共鸣:展示目标人群的真实困扰和使用前情境,但不做功效前后对比"},
|
||||
@@ -79,7 +80,7 @@ ROLE_SCENE_PREFERENCE = {
|
||||
"product_closeup": ["primary"], # 单品特写:白底主图
|
||||
"ingredient": ["ingredient", "primary"], # 成分拆解:成分/包装细节
|
||||
"texture": ["texture", "primary"], # 质地展示:质地特写
|
||||
"applied_proof": ["model", "scene", "primary"], # 上脸:上脸图/场景
|
||||
"applied_proof": ["model", "scene", "primary"], # 效果证明:使用场景/上身/上脸图
|
||||
"social_proof": ["scene", "primary"], # 社交背书:场景
|
||||
"closer": ["primary"], # 促单收尾:主图
|
||||
"scenario": ["scene", "primary"],
|
||||
@@ -91,8 +92,8 @@ ROLE_SCENE_PREFERENCE = {
|
||||
# 按 style 参数选小红书风格调性,注入 base_prompt 的"视觉风格"行
|
||||
STYLE_PROMPTS = {
|
||||
"xiaohongshu_cover": "小红书种草风,独立3:4图文海报/素材图,1024×1536构图,明亮干净,真实实拍质感,醒目中文短标题,文字在安全区内",
|
||||
"comparison": "小红书说明对比风,独立3:4图文海报/素材图,1024×1536构图,质地/场景/肤感左右或上下对比,信息层级清晰",
|
||||
"ingredient": "小红书成分科普风,独立3:4图文海报/素材图,1024×1536构图,成分卡片布局,浅色商务美妆风,避免医疗化表达",
|
||||
"comparison": "小红书说明对比风,独立3:4图文海报/素材图,1024×1536构图,质地/场景/使用状态左右或上下对比,信息层级清晰",
|
||||
"ingredient": "小红书信息科普风,独立3:4图文海报/素材图,1024×1536构图,成分/参数卡片布局,浅色干净商务风,避免医疗化表达",
|
||||
}
|
||||
STYLE_DEFAULT = "xiaohongshu_cover"
|
||||
|
||||
@@ -100,8 +101,8 @@ STYLE_DEFAULT = "xiaohongshu_cover"
|
||||
# 按图数告诉模型整组图的种草节奏,让每张各司其职不雷同
|
||||
NARRATIVE_BY_COUNT = {
|
||||
3: "3张极速链路:第1张负责点击,第2张是按品类变化的核心证明页,第3张负责软性转化。",
|
||||
6: "6张标准种草链路:封面点击、单品特写带品牌词、成分信任、质地种草、上脸证明、促单转化,每张画面和文字各司其职不重复。",
|
||||
8: "8张沉浸测评链路:点击、痛点共鸣、单品特写、成分、质地、上脸证明、背书、软性转化。",
|
||||
6: "6张标准种草链路:封面点击、单品特写带品牌词、成分/参数信任、质地/细节种草、按品类的真实效果证明、促单转化,每张画面和文字各司其职不重复。",
|
||||
8: "8张沉浸测评链路:点击、痛点共鸣、单品特写、成分/参数、质地/细节、按品类的真实效果证明、背书、软性转化。",
|
||||
}
|
||||
|
||||
# ── 3套正交叙事策略(倩倩姐2026-06-15起草,北哥过目版)──────────────
|
||||
@@ -109,19 +110,19 @@ NARRATIVE_BY_COUNT = {
|
||||
# 每套叙事链路注入 base_prompt 叙事链路段,替换 NARRATIVE_BY_COUNT 默认值
|
||||
NARRATIVE_BY_STRATEGY = {
|
||||
"A": (
|
||||
'【套A·痛点先行】整组基调:紧迫感、强对比、情绪共鸣,文字短促带感叹号,直戳"脸黄显疲惫""素颜不敢出门"。'
|
||||
'6张链路:①痛点暴击封面(强情绪大字直击暗黄/素颜焦虑)→ ②暗黄脸实拍对比(感叹号+对比词制造紧迫感)'
|
||||
'→ ③单品特写+品牌词 → ④成分为什么能救暗黄(成分拆解+信任) → ⑤上脸提亮实证 → ⑥"别再顶着黄脸早八"软性促单。'
|
||||
'【套A·痛点先行】整组基调:紧迫感、强对比、情绪共鸣,文字短促带感叹号,直戳产品要解决的核心痛点(痛点取自上文产品卖点/人群,不要套用别的品类)。'
|
||||
'6张链路:①痛点暴击封面(强情绪大字直击该产品核心痛点)→ ②痛点实拍对比(感叹号+对比词制造紧迫感)'
|
||||
'→ ③单品特写+品牌词 → ④核心成分为什么能解决该痛点(成分拆解+信任) → ⑤使用效果实证 → ⑥用痛点收束的软性促单。'
|
||||
),
|
||||
"B": (
|
||||
'【套B·场景先行】整组基调:轻松、生活化、代入感,突出"快/省时/伪素颜自由",点到性价比不堆砌。'
|
||||
'6张链路:①"早八来不及"场景封面(生活场景钩子) → ②手忙脚乱通勤场景(代入早八焦虑)'
|
||||
'→ ③一抹搞定单品特写+品牌词 → ④养肤成分让你敢素颜 → ⑤30秒上脸效果 → ⑥"伪素颜自由+平价"软性促单。'
|
||||
'【套B·场景先行】整组基调:轻松、生活化、代入感,突出该产品的真实使用场景与"快/省时/省心"卖点,点到性价比不堆砌。'
|
||||
'6张链路:①真实使用场景封面(取该产品最高频的生活场景做钩子) → ②场景代入(还原用户在该场景里的困扰)'
|
||||
'→ ③单品特写+品牌词 → ④核心成分支撑该场景卖点 → ⑤使用效果展示 → ⑥用场景化卖点收束的软性促单。'
|
||||
),
|
||||
"C": (
|
||||
'【套C·成分背书先行】整组基调:专业、可信、真实测评感,强调成分逻辑+前后对比+像有用户实证背书。'
|
||||
'6张链路:①成分权威封面(核心成分信息锚定信任) → ②核心成分图解(作用说明+清晰可信)'
|
||||
'→ ③单品特写+品牌词 → ④使用前后时间线对比 → ⑤真实上脸细节 → ⑥"成分党闭眼入"软性促单。'
|
||||
'6张链路:①成分权威封面(该产品核心成分信息锚定信任) → ②核心成分图解(作用说明+清晰可信)'
|
||||
'→ ③单品特写+品牌词 → ④使用前后时间线对比 → ⑤真实使用细节 → ⑥用成分可信度收束的软性促单。'
|
||||
),
|
||||
}
|
||||
|
||||
@@ -130,23 +131,37 @@ NARRATIVE_BY_STRATEGY = {
|
||||
# 与 NARRATIVE_BY_STRATEGY(图片侧)同根:套A文案痛点先行↔套A图也痛点先行,同套内文图一致
|
||||
TEXT_NARRATIVE_BY_STRATEGY = {
|
||||
"A": (
|
||||
"【本条叙事主线·痛点先行】开篇直戳用户困扰(脸黄显疲惫/素颜不敢出门/早八顶着黄脸),"
|
||||
"情绪强、句子短促带感叹,痛点贯穿全文到种草,结尾用'别再顶着黄脸早八'这类痛点收束促单。"
|
||||
"基调:紧迫感、强对比、情绪共鸣。"
|
||||
"【本条叙事主线·痛点先行】开篇第一句必须直接说出'使用前的困扰/焦虑情绪'本身"
|
||||
"(取自本产品要解决的那个具体痛点,以及试过很多没用的挫败感),先有情绪再有场景,"
|
||||
"痛点取自上文产品卖点/目标人群、不要套用别品类;情绪强、句子短促带感叹。"
|
||||
"⚠️开篇禁止从'时间/场景'切入(如一天里的某个时刻、赶时间、通勤,那是套B的开法),必须先抛情绪/痛点。"
|
||||
"▶中段背书方式=自己反复挣扎后的转折(试错→死心→偶然回购/被一个生活细节打动),"
|
||||
"靠自己使用前后的真实变化来自证,不要用'闺蜜/同事/家人种草'来背书。"
|
||||
"▶卖点要带着'这个困扰被解决了'的情绪逐个讲,emoji用情绪向(😭🥹💛)。"
|
||||
"▶收尾用该痛点的释然收束('现在不慌了'类),禁止用'被身边人夸/被问起'桥段(那是套B的尾)。"
|
||||
),
|
||||
"B": (
|
||||
"【本条叙事主线·场景先行】用真实生活场景开篇(早八来不及/通勤手忙脚乱/赶时间出门),"
|
||||
"轻松代入感,突出'快/省时/伪素颜自由',点到平价性价比但不堆砌。"
|
||||
"基调:轻松、生活化、像朋友随手分享。"
|
||||
"【本条叙事主线·场景先行】开篇用一个具体的生活使用场景白描切入"
|
||||
"(最真实高频的那个使用时刻,画面感优先),痛点藏在场景里自然带出、不喊口号,"
|
||||
"突出'快/省时/省心'类卖点,点到平价性价比但不堆砌。"
|
||||
"▶中段背书方式=身边人(同事/家人)在场景里的一句随口反馈,轻松不刻意。"
|
||||
"▶成分融在使用场景里一两句带过即可,不要单独列大段成分清单,emoji用场景向(☕🚇✨)。"
|
||||
"▶收尾用场景延续('下次再有人问…我知道怎么答了'类)。"
|
||||
),
|
||||
"C": (
|
||||
"【本条叙事主线·成分背书先行】用成分原理或测评视角开篇(核心成分为什么有用/亲测对比),"
|
||||
"专业可信,带使用前后时间线对比,像真实用户实证背书,结尾用'成分党闭眼入'收束。"
|
||||
"基调:专业、可信、真实测评感。"
|
||||
"【本条叙事主线·专业背书先行】开篇必须从'成分/参数/原理/测评对比'等专业依据切入"
|
||||
"(按本产品品类对应:护肤食品讲成分配方、数码家居讲参数原理、服饰讲材质工艺,"
|
||||
"如翻配料/参数表、对比实验、为什么这个设计/成分有用),先讲可信度再讲使用。"
|
||||
"⚠️开篇禁止从'时间/场景'切入(如赶时间、通勤、被人问起,那是套A/B的开法),必须从专业依据入手。"
|
||||
"▶中段背书方式=理性自证(参数/成分对比/和踩过的雷横向比/前后时间线实测/参考测评博主的拆解分析),"
|
||||
"靠数据和亲测说话,不要用'闺蜜/同事/家人种草'来背书。"
|
||||
"▶专业依据要讲得比A/B更深(为什么这项关键/感知差异/和别家差在哪),是本套的差异优势,"
|
||||
"emoji用理性向(🔍💧🧪),收尾用专业可信度收束。"
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
IMAGE_RETRY_ATTEMPTS = 3 # 生图重试总次数(含首次)
|
||||
IMAGE_RETRY_BACKOFF_BASE = 2.0 # 指数退避底数(秒)
|
||||
IMAGE_SIZE_DEFAULT = "1024x1536"
|
||||
|
||||
@@ -185,6 +200,7 @@ FLYWHEEL_WEIGHTS = {
|
||||
"text_select": 3,
|
||||
"image_select": 3,
|
||||
"text_edit": 5, # 改稿=用户真动手改字=最强真实意图,与approve同级(倩倩姐2026-06-16拍板)
|
||||
"text_import": 8, # 导入=客户实跑验证过的范本,权重最重(倩倩姐2026-06-26拍板),与enums.SIGNAL_WEIGHTS对齐
|
||||
"approve": 5,
|
||||
"reject_with_reason": -3,
|
||||
"regenerate": -1,
|
||||
|
||||
Reference in New Issue
Block a user