feat: 审核体系全面改造 — 多维度评分 + 卖点优先级 + AI 语义匹配 + 品牌方 AI 状态通知
后端: - 审核结果拆分为 4 个独立维度 (法规合规/平台规则/品牌安全/Brief匹配度) - 卖点优先级从 required:bool 改为三级 (core/recommended/reference) - AI 语义匹配卖点覆盖 + AI 整体 Brief 匹配度分析 - BriefMatchDetail 评分详情 (覆盖率+亮点+问题点) - min_selling_points 代理商可配置最少卖点数 + Alembic 迁移 - AI 语境复核过滤误报 - Brief AI 解析 + 规则 AI 解析 - AI 未配置/异常时通知品牌方 - 种子数据更新 (新格式审核结果+brief_match_detail) 前端: - 三端审核页面展示四维度评分卡片 - 卖点编辑改为三级优先级选择器 - BriefMatchDetail 展示 (覆盖率进度条+亮点+问题) - min_selling_points 配置 UI - AI 配置页未配置时静默处理 - 文件预览/下载/签名 URL 优化 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
0c59797d5b
commit
0ef7650c09
+90
-8
@@ -189,9 +189,10 @@ async def seed_data() -> None:
|
||||
id=BRIEF_ID,
|
||||
project_id=PROJECT_ID,
|
||||
selling_points=[
|
||||
{"content": "SPF50+ PA++++,超强防晒", "required": True},
|
||||
{"content": "轻薄不油腻,适合日常通勤", "required": True},
|
||||
{"content": "添加玻尿酸成分,防晒同时保湿", "required": False},
|
||||
{"content": "SPF50+ PA++++,超强防晒", "priority": "core"},
|
||||
{"content": "轻薄不油腻,适合日常通勤", "priority": "core"},
|
||||
{"content": "添加玻尿酸成分,防晒同时保湿", "priority": "recommended"},
|
||||
{"content": "获得皮肤科医生推荐", "priority": "reference"},
|
||||
],
|
||||
blacklist_words=[
|
||||
{"word": "最好", "reason": "绝对化用语"},
|
||||
@@ -200,6 +201,7 @@ async def seed_data() -> None:
|
||||
],
|
||||
competitors=["安耐晒", "怡思丁", "薇诺娜"],
|
||||
brand_tone="年轻、活力、专业、可信赖",
|
||||
min_selling_points=2,
|
||||
min_duration=30,
|
||||
max_duration=60,
|
||||
other_requirements="请在视频中展示产品实际使用效果,包含户外场景拍摄",
|
||||
@@ -236,8 +238,38 @@ async def seed_data() -> None:
|
||||
script_ai_result={
|
||||
"score": 85,
|
||||
"summary": "脚本整体符合要求,卖点覆盖充分",
|
||||
"issues": [
|
||||
{"type": "soft_warning", "content": "建议增加产品成分说明"},
|
||||
"dimensions": {
|
||||
"legal": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"platform": {"score": 85, "passed": True, "issue_count": 1},
|
||||
"brand_safety": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brief_match": {"score": 80, "passed": True, "issue_count": 1},
|
||||
},
|
||||
"selling_point_matches": [
|
||||
{"content": "SPF50+ PA++++,超强防晒", "priority": "core", "matched": True, "evidence": "脚本中提到了SPF50+防晒参数"},
|
||||
{"content": "轻薄不油腻,适合日常通勤", "priority": "core", "matched": True, "evidence": "提到了轻薄质地不油腻"},
|
||||
{"content": "添加玻尿酸成分,防晒同时保湿", "priority": "recommended", "matched": False, "evidence": "未提及玻尿酸成分"},
|
||||
],
|
||||
"brief_match_detail": {
|
||||
"total_points": 3,
|
||||
"matched_points": 2,
|
||||
"required_points": 2,
|
||||
"coverage_score": 100,
|
||||
"overall_score": 75,
|
||||
"highlights": [
|
||||
"防晒参数描述准确,SPF50+ PA++++完整提及",
|
||||
"产品使用场景贴合Brief要求的日常通勤场景",
|
||||
],
|
||||
"issues": [
|
||||
"缺少玻尿酸保湿成分的说明,建议补充产品成分亮点",
|
||||
"脚本中使用了\"神器\"等夸张用语,需替换为更客观的表述",
|
||||
],
|
||||
"explanation": "脚本覆盖了2/2条要求卖点,核心卖点全部匹配。整体内容方向正确,但部分细节可优化。",
|
||||
},
|
||||
"violations": [
|
||||
{"type": "forbidden_word", "content": "神器", "severity": "medium", "suggestion": "建议替换为\"好物\"", "dimension": "platform"},
|
||||
],
|
||||
"soft_warnings": [
|
||||
{"type": "suggestion", "content": "建议增加产品成分说明", "suggestion": "可提及玻尿酸等核心成分"},
|
||||
],
|
||||
},
|
||||
script_ai_reviewed_at=NOW - timedelta(hours=1),
|
||||
@@ -258,7 +290,33 @@ async def seed_data() -> None:
|
||||
script_ai_result={
|
||||
"score": 92,
|
||||
"summary": "脚本质量优秀,完全符合 Brief 要求",
|
||||
"issues": [],
|
||||
"dimensions": {
|
||||
"legal": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"platform": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brand_safety": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brief_match": {"score": 90, "passed": True, "issue_count": 0},
|
||||
},
|
||||
"selling_point_matches": [
|
||||
{"content": "SPF50+ PA++++,超强防晒", "priority": "core", "matched": True, "evidence": "脚本完整提及防晒参数"},
|
||||
{"content": "轻薄不油腻,适合日常通勤", "priority": "core", "matched": True, "evidence": "详细描述了质地体验"},
|
||||
{"content": "添加玻尿酸成分,防晒同时保湿", "priority": "recommended", "matched": True, "evidence": "提及了玻尿酸保湿功能"},
|
||||
],
|
||||
"brief_match_detail": {
|
||||
"total_points": 3,
|
||||
"matched_points": 3,
|
||||
"required_points": 2,
|
||||
"coverage_score": 100,
|
||||
"overall_score": 90,
|
||||
"highlights": [
|
||||
"所有核心和推荐卖点均完整覆盖",
|
||||
"产品使用场景自然,与Brief要求高度一致",
|
||||
"成分说明准确,玻尿酸保湿功能表述清晰",
|
||||
],
|
||||
"issues": [],
|
||||
"explanation": "脚本覆盖了3/2条要求卖点(超出要求),与Brief整体匹配度优秀。",
|
||||
},
|
||||
"violations": [],
|
||||
"soft_warnings": [],
|
||||
},
|
||||
script_ai_reviewed_at=NOW - timedelta(days=2),
|
||||
script_agency_status=TaskStatus.PASSED,
|
||||
@@ -283,7 +341,19 @@ async def seed_data() -> None:
|
||||
script_file_name="防晒霜种草脚本v4.pdf",
|
||||
script_uploaded_at=NOW - timedelta(days=7),
|
||||
script_ai_score=90,
|
||||
script_ai_result={"score": 90, "summary": "符合要求", "issues": []},
|
||||
script_ai_result={
|
||||
"score": 90,
|
||||
"summary": "符合要求",
|
||||
"dimensions": {
|
||||
"legal": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"platform": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brand_safety": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brief_match": {"score": 85, "passed": True, "issue_count": 0},
|
||||
},
|
||||
"selling_point_matches": [],
|
||||
"violations": [],
|
||||
"soft_warnings": [],
|
||||
},
|
||||
script_ai_reviewed_at=NOW - timedelta(days=7),
|
||||
script_agency_status=TaskStatus.PASSED,
|
||||
script_agency_comment="通过",
|
||||
@@ -298,7 +368,19 @@ async def seed_data() -> None:
|
||||
video_duration=45,
|
||||
video_uploaded_at=NOW - timedelta(days=5),
|
||||
video_ai_score=88,
|
||||
video_ai_result={"score": 88, "summary": "视频质量良好", "issues": []},
|
||||
video_ai_result={
|
||||
"score": 88,
|
||||
"summary": "视频质量良好",
|
||||
"dimensions": {
|
||||
"legal": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"platform": {"score": 100, "passed": True, "issue_count": 0},
|
||||
"brand_safety": {"score": 85, "passed": True, "issue_count": 0},
|
||||
"brief_match": {"score": 80, "passed": True, "issue_count": 0},
|
||||
},
|
||||
"selling_point_matches": [],
|
||||
"violations": [],
|
||||
"soft_warnings": [],
|
||||
},
|
||||
video_ai_reviewed_at=NOW - timedelta(days=5),
|
||||
video_agency_status=TaskStatus.PASSED,
|
||||
video_agency_comment="视频效果好",
|
||||
|
||||
Reference in New Issue
Block a user