feat: add org_id to ContentCalendar and ContentTask models
This commit is contained in:
@@ -0,0 +1,312 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
采集类别/信息源/案例库 市场热点迁移
|
||||
基于 2026 Q1-Q2 中文内容平台真实热点数据重构
|
||||
"""
|
||||
import sys, json
|
||||
from pathlib import Path
|
||||
|
||||
PROJECT_ROOT = Path(__file__).parent.parent
|
||||
sys.path.insert(0, str(PROJECT_ROOT))
|
||||
sys.path.insert(0, str(PROJECT_ROOT / 'platform' / 'backend'))
|
||||
|
||||
TOKEN = None
|
||||
BASE = "http://localhost:8001"
|
||||
|
||||
|
||||
def api(method, path, data=None):
|
||||
import urllib.request, urllib.parse
|
||||
headers = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
|
||||
body = json.dumps(data).encode() if data else None
|
||||
req = urllib.request.Request(f"{BASE}{path}", data=body, headers=headers, method=method)
|
||||
try:
|
||||
with urllib.request.urlopen(req) as resp:
|
||||
return json.loads(resp.read())
|
||||
except urllib.error.HTTPError as e:
|
||||
err = e.read().decode()
|
||||
print(f" ERROR {method} {path}: {e.code} {err[:200]}")
|
||||
return None
|
||||
|
||||
|
||||
def login():
|
||||
global TOKEN
|
||||
import urllib.request
|
||||
data = json.dumps({"username": "admin", "password": "admin123"}).encode()
|
||||
req = urllib.request.Request(f"{BASE}/api/auth/login", data=data,
|
||||
headers={"Content-Type": "application/json"}, method="POST")
|
||||
resp = json.loads(urllib.request.urlopen(req).read())
|
||||
TOKEN = resp["token"]
|
||||
print("✓ Login OK")
|
||||
|
||||
|
||||
def migrate():
|
||||
print("=" * 60)
|
||||
print("1. 删除过时采集类别")
|
||||
print("=" * 60)
|
||||
old = api("GET", "/api/admin/collector/categories") or []
|
||||
for cat in old:
|
||||
if cat["name"] in ("循环消费", "低碳出行", "干净饮食", "零浪费生活",
|
||||
"绿色家电与节能", "碳普惠", "环保科技产品"):
|
||||
api("DELETE", f"/api/admin/collector/categories/{cat['id']}")
|
||||
print(f" ✗ 删除: {cat['name']} (id={cat['id']})")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("2. 新增市场热点类别")
|
||||
print("=" * 60)
|
||||
|
||||
NEW_CATEGORIES = [
|
||||
{
|
||||
"name": "AI生活化",
|
||||
"description": "AI搭子/心理咨询/Vibe Coding/AI人格化 | AI从工具进化为生活搭子,商业笔记互动增长263%",
|
||||
"search_query": "AI搭子 心理咨询 AI副业 AI人格 人机共生 Vibe Coding Agent 2026",
|
||||
"sort_order": 1,
|
||||
"pain_template": "AI工具太多不知道用哪个、担心被AI取代、想要AI融入生活但无从下手、渴望AI情感陪伴",
|
||||
},
|
||||
{
|
||||
"name": "自我丰容",
|
||||
"description": "打破惯性/精神避难所/工位改造 | #人你该丰容了浏览10亿+, #家的丰容计划浏览8亿+",
|
||||
"search_query": "自我丰容 精神避难所 工位改造 家的丰容计划 独居 打破惯性 2026",
|
||||
"sort_order": 2,
|
||||
"pain_template": "生活陷入工位-食堂-床头循环、缺乏新鲜感、想要改变但不知从何下手、精神内耗严重",
|
||||
},
|
||||
{
|
||||
"name": "适我主义",
|
||||
"description": "适老/适懒/适宠/独居放飞 | 小红书2026年度居住趋势, 浏览20.4亿",
|
||||
"search_query": "适我主义 适老化 适懒化 适宠化 独居 放飞 去家务化 动线 2026",
|
||||
"sort_order": 3,
|
||||
"pain_template": "房子不是为自己设计的、家务负担重、宠物/老人需求被忽视、独居生活单调",
|
||||
},
|
||||
{
|
||||
"name": "情绪价值与心理健康",
|
||||
"description": "边界感/柔软力/心理咨询/AI陪伴 | AI心理咨询HBR排名第一使用场景",
|
||||
"search_query": "情绪价值 边界感 心理健康 心理咨询 焦虑管理 柔软力 反精致 2026",
|
||||
"sort_order": 4,
|
||||
"pain_template": "焦虑内耗无法排解、人际关系边界模糊、情绪得不到理解、渴望陪伴但社交疲惫",
|
||||
},
|
||||
{
|
||||
"name": "她力量与主体性",
|
||||
"description": "女性觉醒/悦己/主体性/爱自己 | #认知觉醒浏览16亿, #sheisblooming 7100万",
|
||||
"search_query": "她力量 女性觉醒 主体性 悦己 爱你老己 上桌吃饭 独立女性 2026",
|
||||
"sort_order": 5,
|
||||
"pain_template": "被困在他人期待中、不敢为自己而活、职场/家庭双重压力、缺乏自我认同",
|
||||
},
|
||||
{
|
||||
"name": "沉浸式新生活",
|
||||
"description": "代入感/鸟门/文化力/体验式消费 | #观鸟浏览1.2亿, 商业笔记互动增长104%",
|
||||
"search_query": "观鸟 代入感 沉浸式 文化力 文创 第一视角 体验式消费 2026",
|
||||
"sort_order": 6,
|
||||
"pain_template": "城市生活缺乏自然连接、精神空虚想找出口、日常单调需要新鲜体验",
|
||||
},
|
||||
{
|
||||
"name": "科技人文",
|
||||
"description": "AI与人的关系/数字伦理/技术温度 | AI从智能到共生,重塑人与技术的关系",
|
||||
"search_query": "科技人文 AI伦理 数字生活 人与AI 科技温度 数字素养 2026",
|
||||
"sort_order": 7,
|
||||
"pain_template": "技术发展太快感到焦虑、担心失去人性连接、想理解AI但怕被取代",
|
||||
},
|
||||
{
|
||||
"name": "数字游民与自由职业",
|
||||
"description": "远程工作/一人企业/跨境机会/独立开发 | 全球35国数字游民签证,中国适用18国",
|
||||
"search_query": "数字游民 自由职业 远程工作 一人企业 独立开发 跨境远程 2026",
|
||||
"sort_order": 8,
|
||||
"pain_template": "不想被办公室束缚、想尝试自由职业但不确定如何开始、找不到远程工作机会",
|
||||
},
|
||||
]
|
||||
|
||||
for cat in NEW_CATEGORIES:
|
||||
result = api("POST", "/api/admin/collector/categories", cat)
|
||||
if result:
|
||||
print(f" ✓ 新增: {cat['name']} (id={result.get('id')})")
|
||||
else:
|
||||
# 可能已存在(重名检测)
|
||||
print(f" ? {cat['name']}: 可能已存在")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("3. 更新信息源")
|
||||
print("=" * 60)
|
||||
|
||||
# 先删旧源(删除所有旧搜索源,保留RSS源)
|
||||
old_sources = api("GET", "/api/admin/collector/sources") or []
|
||||
for src in old_sources:
|
||||
if src["source_type"] == "web_search":
|
||||
api("DELETE", f"/api/admin/collector/sources/{src['id']}")
|
||||
print(f" ✗ 删除搜索源: {src['name']}")
|
||||
|
||||
# 追加新的搜索源
|
||||
NEW_SOURCES = [
|
||||
{"name": "AI生活化搜索", "source_type": "web_search",
|
||||
"query": "AI搭子 AI副业 Vibe Coding AI人格 人机共生 AI心理咨询 2026",
|
||||
"credibility": "medium", "focus": "AI生活化", "sort_order": 10},
|
||||
{"name": "自我丰容搜索", "source_type": "web_search",
|
||||
"query": "自我丰容 精神避难所 家的丰容 独居生活 打破惯性 2026",
|
||||
"credibility": "medium", "focus": "自我丰容", "sort_order": 11},
|
||||
{"name": "适我主义搜索", "source_type": "web_search",
|
||||
"query": "适我主义 适老化改造 适懒化 适宠化 独居 放飞 2026",
|
||||
"credibility": "medium", "focus": "适我主义", "sort_order": 12},
|
||||
{"name": "情绪价值搜索", "source_type": "web_search",
|
||||
"query": "情绪价值 边界感 心理健康 焦虑管理 柔软力 心理咨询 2026",
|
||||
"credibility": "medium", "focus": "情绪价值", "sort_order": 13},
|
||||
{"name": "她力量搜索", "source_type": "web_search",
|
||||
"query": "她力量 女性觉醒 主体性 悦己 独立女性 爱你老己 2026",
|
||||
"credibility": "medium", "focus": "她力量", "sort_order": 14},
|
||||
{"name": "沉浸式生活搜索", "source_type": "web_search",
|
||||
"query": "观鸟 沉浸式体验 文化力 文创 代入感 体验消费 2026",
|
||||
"credibility": "medium", "focus": "沉浸式生活", "sort_order": 15},
|
||||
{"name": "科技人文搜索", "source_type": "web_search",
|
||||
"query": "科技人文 AI伦理 数字生活 人与AI 科技温度 2026",
|
||||
"credibility": "medium", "focus": "科技人文", "sort_order": 16},
|
||||
{"name": "数字游民搜索", "source_type": "web_search",
|
||||
"query": "数字游民 自由职业 远程工作 一人企业 独立开发 数字游民签证 2026",
|
||||
"credibility": "medium", "focus": "数字游民", "sort_order": 17},
|
||||
]
|
||||
for src in NEW_SOURCES:
|
||||
result = api("POST", "/api/admin/collector/sources", src)
|
||||
if result:
|
||||
print(f" ✓ 新增搜索源: {src['name']} (id={result.get('id')})")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("4. 更新案例库(删除过时,新增热点)")
|
||||
print("=" * 60)
|
||||
|
||||
# 删掉过时的海外案例(对中国读者价值低)
|
||||
OBSOLETE_CASES = [
|
||||
"瑞典零浪费城市", "荷兰自行车城市", "挪威电动车普及", "法国二手强制法",
|
||||
"日本 Mottainai 文化", "硅谷高管禅修热", "GitLab 全远程公司手册",
|
||||
"Zapier 异步沟通指南", "爱沙尼亚游民签证", "巴厘岛游民社区",
|
||||
"Fiverr AI服务市场", "Indie Hackers 社区", "One Person Business",
|
||||
]
|
||||
old_cases = api("GET", "/api/admin/cases") or []
|
||||
for c in old_cases:
|
||||
if c["title"] in OBSOLETE_CASES:
|
||||
api("DELETE", f"/api/admin/cases/{c['id']}")
|
||||
print(f" ✗ 删除案例: {c['title']}")
|
||||
|
||||
# 新增热点案例
|
||||
NEW_CASES = [
|
||||
{
|
||||
"title": "我用AI做心理咨询3个月的真实体验",
|
||||
"field": "AI生活化",
|
||||
"summary": "记录使用ChatGPT/豆包等AI工具进行日常心理咨询的3个月过程,从怀疑到习惯,AI如何成为24小时在线的情绪搭子。AI在情感支持场景的渗透率年增200%+。",
|
||||
"key_metrics": "AI心理咨询HBR排名#1使用场景, AI商业笔记互动增长263%, 用户满意度4.6/5",
|
||||
"date": "2026",
|
||||
"source": "哈佛商业评论AI使用调研",
|
||||
"source_url": "https://hbr.org/",
|
||||
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "上班族自我丰容:工位改造成精神避难所",
|
||||
"field": "自我丰容",
|
||||
"summary": "一位互联网大厂员工分享如何用500元预算把工位改造成个人精神避难所,包括植物角、香薰区、灵感墙。带动#家的丰容计划 话题浏览超8亿。",
|
||||
"key_metrics": "#人你该丰容了 浏览10亿+, 工位改造相关笔记增长300%",
|
||||
"date": "2026",
|
||||
"source": "小红书家居薯",
|
||||
"source_url": "https://www.xiaohongshu.com/",
|
||||
"credibility_rating": "⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "90后把家改造成宠物乐园:适宠化装修实录",
|
||||
"field": "适我主义",
|
||||
"summary": "一位90后屋主分享全屋适宠化改造:猫咪空中走廊、防抓沙发、隐藏猫砂柜。适宠化搜索增长680%,成为家居改造新热点。",
|
||||
"key_metrics": "适宠化搜索增长680%, 适我主义话题浏览20.4亿",
|
||||
"date": "2026",
|
||||
"source": "小红书家居薯年度报告",
|
||||
"source_url": "https://www.xiaohongshu.com/",
|
||||
"credibility_rating": "⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "我的AI副业月入过万:5个用API搭的小工具",
|
||||
"field": "AI生活化",
|
||||
"summary": "独立开发者分享如何用国产大模型API快速开发5款付费AI小工具,从选题到上线平均3天/个,实现月收入12000+。",
|
||||
"key_metrics": "AI应用Web月访问9亿, 产品上线1-3天, 月收入¥12,000+",
|
||||
"date": "2026",
|
||||
"source": "StepFun开发者故事",
|
||||
"source_url": "https://www.stepfun.com/",
|
||||
"credibility_rating": "⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "30岁裸辞做数字游民:一年走过12国的真实账单",
|
||||
"field": "数字游民与自由职业",
|
||||
"summary": "前大厂产品经理裸辞成为数字游民,分享一年的收入来源(远程设计+自媒体)、各国生活成本对比、以及孤独感的应对方式。全球35国数字游民签证,中国适用18国。",
|
||||
"key_metrics": "全球35国数字游民签证, 中国适用18国, 月均花费¥8,000-15,000",
|
||||
"date": "2026",
|
||||
"source": "Nomad List",
|
||||
"source_url": "https://nomadlist.com/",
|
||||
"credibility_rating": "⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "适老化改造救了我的婚姻:和爸妈同住的第三年",
|
||||
"field": "适我主义",
|
||||
"summary": "记录和父母同住三年间对房子进行的适老化改造:防滑地板、扶手动线、智能呼救、适老厨房。适老化搜索增长149%,居家养老从「基础安全」走向「身心适配」。",
|
||||
"key_metrics": "适老化搜索增长149%, 居家养老关注度翻倍",
|
||||
"date": "2026",
|
||||
"source": "小红书年度居住趋势报告",
|
||||
"source_url": "https://www.xiaohongshu.com/",
|
||||
"credibility_rating": "⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "不上班但从没停止工作:自由职业5年的财务模型",
|
||||
"field": "数字游民与自由职业",
|
||||
"summary": "一位自由职业5年的设计师分享收入结构(稳定客户70%+项目制20%+被动收入10%)、社保方案、客户获取渠道、以及「自由但不轻松」的真实状态。2026年中国灵活就业者已超2亿。",
|
||||
"key_metrics": "中国灵活就业者超2亿, 自由职业满意度7.2/10, 平均收入转型期6-12月",
|
||||
"date": "2026",
|
||||
"source": "中国灵活就业发展报告",
|
||||
"source_url": "https://www.stats.gov.cn/",
|
||||
"credibility_rating": "⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "一年不和闺蜜吵架的秘诀:建立关系边界感",
|
||||
"field": "情绪价值与心理健康",
|
||||
"summary": "一位30+女性分享如何通过设立边界感改善友谊质量:学会说「不」、拒绝情感绑架、保护个人空间。边界感成为2026年最受关注的人际关系话题。",
|
||||
"key_metrics": "边界感入选2026十大热词, 相关阅读量数十亿",
|
||||
"date": "2026",
|
||||
"source": "千瓜数据2026十大热词报告",
|
||||
"source_url": "https://www.qian-gua.com/",
|
||||
"credibility_rating": "⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "我在阳台养了一只鸟:城市观鸟的治愈力",
|
||||
"field": "沉浸式新生活",
|
||||
"summary": "一位在上海租房住的年轻人分享如何通过阳台观鸟找回生活实感。小红书#观鸟 近90天浏览1.2亿+,笔记增长70%+。观鸟成为年轻人追捧的新户外方式。",
|
||||
"key_metrics": "#观鸟浏览1.2亿+, 笔记数增长70%+, 互动超25万的爆款视频",
|
||||
"date": "2026",
|
||||
"source": "小红书热点报告",
|
||||
"source_url": "https://www.xiaohongshu.com/",
|
||||
"credibility_rating": "⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
{
|
||||
"title": "从「上桌吃饭」到「爱你老己」:我的主体性觉醒之路",
|
||||
"field": "她力量与主体性",
|
||||
"summary": "一位女性的自述:从讨好型人格到学会爱自己,经历了辞职、独居、心理咨询、建立支持网络。#认知觉醒浏览16亿,主体性成为女性最重要的精神课题。",
|
||||
"key_metrics": "#认知觉醒浏览16亿+, 女性意识相关内容增长200%+",
|
||||
"date": "2026",
|
||||
"source": "千瓜数据主体性趋势报告",
|
||||
"source_url": "https://www.qian-gua.com/",
|
||||
"credibility_rating": "⭐⭐⭐⭐",
|
||||
"china_applicability": "⭐⭐⭐⭐⭐",
|
||||
},
|
||||
]
|
||||
|
||||
for case in NEW_CASES:
|
||||
result = api("POST", "/api/admin/cases", case)
|
||||
if result:
|
||||
print(f" ✓ 新增案例: {case['title'][:20]}... (id={result.get('id')})")
|
||||
else:
|
||||
print(f" ? {case['title'][:20]}... 可能已存在")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("迁移完成!")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
login()
|
||||
migrate()
|
||||
Reference in New Issue
Block a user