feat: Phase 4 多租户隔离 + 四阶段升级测试 + CSS 统一化
Phase 4: org_id 注入 JWT/API 过滤/组织管理 CRUD/前端组织列 测试: tests/test_phase_upgrades.py 97项全覆盖 CSS: theme-modern.css 共享 mobile-card-list/status-dot/search-bar 等模式 修复: initial_data.py LLM配置 NOT NULL 约束, TopicResponse 含 org_id
This commit is contained in:
+15
-8
@@ -114,6 +114,7 @@ class Writer:
|
||||
### 价值
|
||||
- 回答读者一个具体问题或解决一个困惑
|
||||
- 每个论点配真实案例或数据,不写空话
|
||||
- **所有数据必须使用2025-2026年最新数据**,禁用过时数据
|
||||
- 结束时读者要有「学到了」的感觉
|
||||
|
||||
### 真人感
|
||||
@@ -186,11 +187,12 @@ class Writer:
|
||||
## 改写要求
|
||||
- 用第三人称或「我们」视角,不要用「我」
|
||||
- 不要编个人经历——知乎读者在意的是分析质量
|
||||
- 每个主要观点配1个数据或案例支撑
|
||||
- 每个主要观点配1个数据或案例支撑,**必须使用2025-2026年最新数据**,禁用超过2年的过时数据
|
||||
- 段落之间空行分隔,逻辑递进
|
||||
- 避免「总的来说」「综上所述」「值得注意的是」
|
||||
- 结尾可用引导性提问
|
||||
- 字数:{cfg['max_chars']}字以内
|
||||
- 直接输出改写后的正文,不要输出任何思考过程、解释或额外说明
|
||||
|
||||
## 原文
|
||||
{markdown[:3000]}
|
||||
@@ -211,10 +213,11 @@ class Writer:
|
||||
- 用「你」视角,**通篇不允许出现「我」字**
|
||||
- 把原文中所有「我」改成「你」或「很多人」或「有人」
|
||||
- 结构可完全不同——抓住1-2个痛点打透,不用全面分析
|
||||
- 可删减原文,保留最有力的观点和最打动人的案例
|
||||
- 可删减原文,保留最有力的观点和最打动人的案例,**必须使用2025-2026年最新数据**
|
||||
- 适当加粗核心观点(不要整段加粗)
|
||||
- 避免「综上所述」「值得注意的是」「换言之」
|
||||
- 字数:{cfg['max_chars']}字以内
|
||||
- 直接输出改写后的正文,不要输出任何思考过程、解释或额外说明
|
||||
|
||||
## 原文
|
||||
{markdown[:3000]}
|
||||
@@ -238,7 +241,8 @@ class Writer:
|
||||
- 正文每段1-2句,可完全打乱原文结构
|
||||
- emoji每段最多1个(✨💡✅🔸选1-2个用),不堆砌
|
||||
- 结尾加3-5个#话题标签:1-2个流量大标签+1-2个精准标签
|
||||
- 深度分析全部砍掉,只留最 actionable 的内容
|
||||
- 深度分析全部砍掉,只留最 actionable 的内容,**使用2025-2026年最新数据**
|
||||
- 直接输出笔记正文+标签,不要输出任何思考过程或额外说明
|
||||
|
||||
## 原文
|
||||
{markdown[:3000]}
|
||||
@@ -298,15 +302,15 @@ class Writer:
|
||||
core = self.topic.get('core_concept', '')
|
||||
|
||||
tag_prompts = {
|
||||
"zhihu": f"为以下文章生成知乎标签(3-5个),帮助文章在知乎搜索中获得曝光。包含1-2个宽泛大标签(获取流量)+1-2个精准标签(精准触达)。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。",
|
||||
"wechat": f"为以下文章生成公众号标签(3-5个),帮助文章在微信搜一搜中获得排名。包含1-2个高搜索量标签+1-2个长尾标签。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。",
|
||||
"xiaohongshu": f"为以下文章生成小红书标签(3-5个),帮助笔记在搜索中获得曝光。包含1个流量大标签+2-3个精准场景标签。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。",
|
||||
"zhihu": f"为以下文章生成知乎标签(3-5个)。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。不要输出思考过程。",
|
||||
"wechat": f"为以下文章生成公众号标签(3-5个)。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。不要输出思考过程。",
|
||||
"xiaohongshu": f"为以下文章生成小红书标签(3-5个)。标题:{title} 领域:{field} 核心观点:{core} 每个2-4字。直接输出标签,空格分隔。不要输出思考过程。",
|
||||
}
|
||||
|
||||
if HAVE_LLM:
|
||||
prompt = tag_prompts.get(platform, f"根据文章信息生成适合{platform}的标签。标题:{title} 领域:{field} 核心观点:{core} 直接输出标签,空格分隔。")
|
||||
try:
|
||||
tags_text = call_llm(prompt, temperature=0.2, max_tokens=100)
|
||||
tags_text = call_llm(prompt, temperature=0.2, max_tokens=500)
|
||||
if tags_text:
|
||||
tags = [t.strip('#') for t in tags_text.strip().split() if t.strip('#')]
|
||||
if tags:
|
||||
@@ -358,6 +362,7 @@ class Writer:
|
||||
- 20字以内
|
||||
- 参考知乎真实高赞标题,不要套路句式
|
||||
- 避免「如何…」废句式、「XXX指南/手册/全攻略」
|
||||
- 直接输出3个标题选项,每行一个,不要输出思考过程
|
||||
|
||||
生成 3 个选项,每行一个。""",
|
||||
|
||||
@@ -372,6 +377,7 @@ class Writer:
|
||||
- 口语化,不要书面腔
|
||||
- 不要感叹号堆砌,不要「重磅/震惊/紧急」
|
||||
- 字数15-25字最佳
|
||||
- 直接输出3个标题选项,每行一个,不要输出思考过程
|
||||
|
||||
生成 3 个选项,每行一个。""",
|
||||
|
||||
@@ -388,13 +394,14 @@ class Writer:
|
||||
- 有场景感/结果感
|
||||
- 不要「必看/收藏/码住」
|
||||
- 像真实用户写的,不是运营写的
|
||||
- 直接输出3个标题选项,每行一个,不要输出思考过程
|
||||
|
||||
生成 3 个选项,每行一个。""",
|
||||
}
|
||||
|
||||
prompt = title_templates.get(platform, f"给以下文章改个吸引人的{platform}标题:{original}")
|
||||
try:
|
||||
resp = call_llm(prompt, temperature=0.7, max_tokens=200)
|
||||
resp = call_llm(prompt, temperature=0.7, max_tokens=500)
|
||||
titles = []
|
||||
for line in resp.strip().split('\n'):
|
||||
line = line.strip()
|
||||
|
||||
Reference in New Issue
Block a user