Add docs and Pencil UI design

This commit is contained in:
Your Name 2026-02-02 22:34:00 +08:00
commit d7619a4511
10 changed files with 13936 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

712
AIProviderConfig.md Normal file
View File

@ -0,0 +1,712 @@
# AIProviderConfig.md - AI 服务配置架构设计
| 文档类型 | **Technical Design (技术设计文档)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V2.0 |
| **日期** | 2026-02-02 |
| **侧重** | AI 服务动态配置、多租户隔离、模型选择 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V1.0 | 2026-02-02 | Claude | 初稿AI 厂商动态配置架构设计 |
| V2.0 | 2026-02-02 | Claude | 重构:简化为统一提供商+三模型配置方案 |
---
## 1. 设计背景与目标
### 1.1 业务需求
SmartAudit 系统需要调用三类 AI 服务完成视频审核:
| 服务类型 | 用途 | 示例模型 |
| --- | --- | --- |
| **文字处理模型** | Brief 解析、违禁词检测、语义分析、舆情分析 | claude-opus-4-5-20251101, deepseek-chat |
| **视频分析模型** | 画面理解、Logo 检测、产品识别 | Doubao-Seed-1.6-thinking, qwen-vl-max |
| **音频解析模型** | 视频口播转文字 (ASR) | whisper-large-v3, paraformer-v2 |
### 1.2 设计目标
| 目标 | 描述 |
| --- | --- |
| **灵活配置** | 品牌方可在后台自由选择 AI 提供商和模型 |
| **统一接入** | 支持 OneAPI/OpenRouter 中转,一套配置调用多种模型 |
| **直连支持** | 也支持直连 Anthropic、OpenAI、DeepSeek 等厂商 |
| **多租户隔离** | 不同品牌方使用独立的 AI 配置和配额 |
| **动态模型列表** | 根据 API Key 自动获取可用模型 |
| **连接测试** | 保存前可测试三个模型的连通性 |
### 1.3 使用流程
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ AI 配置使用流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 🛡️ 品牌方配置 AI 服务 │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ • 选择 AI 提供商 (OneAPI/Anthropic/OpenAI/...) │ │
│ │ • 填写 Base URL 和 API Key │ │
│ │ • 选择三个模型 (文字处理/视频分析/音频解析) │ │
│ │ • 配置参数 (Temperature/Max Tokens) │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ 自动继承 │
│ ▼ │
│ 👥 代理商 / 👤 达人 │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ 上传视频 → 系统自动调用品牌方配置的 AI 服务 → 获得审核结果 │ │
│ │ (用户无感知,不知道也不需要关心使用的是哪个 AI) │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 2. 系统架构
### 2.1 架构概览
```
┌─────────────────────────────────────────────────────────────────────────┐
│ 品牌方管理后台 (Brand Admin) │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 系统设置 → AI 服务配置 │ │
│ │ • 选择提供商 │ │
│ │ • 配置连接信息 │ │
│ │ • 选择模型 │ │
│ │ • 测试连接 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ API 层 (FastAPI) │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ GET /api/v1/ai-config - 获取当前配置 │ │
│ │ PUT /api/v1/ai-config - 更新配置 │ │
│ │ POST /api/v1/ai-config/models - 获取可用模型列表 │ │
│ │ POST /api/v1/ai-config/test - 测试连接 (三个模型) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ AI 服务路由器 (AIServiceRouter) │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ • 根据租户 ID 获取对应的 AI 配置 │ │
│ │ • 根据任务类型选择对应的模型 │ │
│ │ • 创建 AI 客户端并调用 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 文字处理 │ │ 视频分析 │ │ 音频解析 │
│ Claude │ │ 豆包 VL │ │ Whisper │
└─────────────┘ └─────────────┘ └─────────────┘
```
### 2.2 核心组件
| 组件 | 职责 |
| --- | --- |
| **AIConfig** | 数据模型,存储品牌方的 AI 配置 |
| **AIServiceRouter** | 路由器,根据租户和任务类型选择模型 |
| **AIClientFactory** | 工厂类,创建 OpenAI 兼容客户端 |
| **ModelRegistry** | 模型注册表,缓存可用模型列表 |
| **SecretsManager** | 加密存储和解密 API Key |
---
## 3. 数据模型设计
### 3.1 AI 配置表 (ai_configs)
```sql
CREATE TABLE ai_configs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- 租户
tenant_id UUID NOT NULL UNIQUE, -- 品牌方 ID一个品牌方只有一条配置
-- 提供商
provider VARCHAR(50) NOT NULL, -- 提供商类型
-- 连接配置
base_url VARCHAR(500) NOT NULL, -- API Base URL
api_key_encrypted BYTEA NOT NULL, -- 加密后的 API Key
-- 模型配置
text_model VARCHAR(100) NOT NULL, -- 文字处理模型
vision_model VARCHAR(100) NOT NULL, -- 视频分析模型
audio_model VARCHAR(100) NOT NULL, -- 音频解析模型
-- 参数配置
temperature DECIMAL(3,2) DEFAULT 0.7, -- 温度参数
max_tokens INT DEFAULT 2000, -- 最大 Token 数
-- 缓存的可用模型列表
available_models JSONB DEFAULT '{}', -- {"text": [...], "vision": [...], "audio": [...]}
models_updated_at TIMESTAMPTZ, -- 模型列表更新时间
-- 状态
is_configured BOOLEAN DEFAULT false, -- 是否已完成配置
last_test_at TIMESTAMPTZ, -- 最后测试时间
last_test_result JSONB, -- 最后测试结果
-- 元数据
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
updated_by UUID,
-- 外键
CONSTRAINT fk_tenant FOREIGN KEY (tenant_id) REFERENCES brands(id)
);
-- 索引
CREATE INDEX idx_ai_config_tenant ON ai_configs(tenant_id);
```
### 3.2 提供商类型枚举
```python
from enum import Enum
class AIProvider(str, Enum):
"""支持的 AI 提供商"""
# 中转服务
ONEAPI = "oneapi" # OneAPI 中转
OPENROUTER = "openrouter" # OpenRouter
# 直连厂商 - 国际
ANTHROPIC = "anthropic" # Anthropic Claude
OPENAI = "openai" # OpenAI
# 直连厂商 - 国内
DEEPSEEK = "deepseek" # DeepSeek
QWEN = "qwen" # 阿里云通义千问
DOUBAO = "doubao" # 字节豆包
ZHIPU = "zhipu" # 智谱 GLM
MOONSHOT = "moonshot" # Moonshot (Kimi)
# 提供商默认 Base URL
PROVIDER_DEFAULT_URLS = {
AIProvider.ANTHROPIC: "https://api.anthropic.com/v1",
AIProvider.OPENAI: "https://api.openai.com/v1",
AIProvider.DEEPSEEK: "https://api.deepseek.com/v1",
AIProvider.QWEN: "https://dashscope.aliyuncs.com/compatible-mode/v1",
AIProvider.DOUBAO: "https://ark.cn-beijing.volces.com/api/v3",
AIProvider.ZHIPU: "https://open.bigmodel.cn/api/paas/v4",
AIProvider.MOONSHOT: "https://api.moonshot.cn/v1",
}
```
### 3.3 模型能力分类
```python
class ModelCapability(str, Enum):
"""模型能力类型"""
TEXT = "text" # 文字处理
VISION = "vision" # 视觉理解
AUDIO = "audio" # 音频处理
# 已知模型的能力映射(用于分类显示)
MODEL_CAPABILITIES = {
# 文字处理模型
"claude-opus-4-5-20251101": [ModelCapability.TEXT, ModelCapability.VISION],
"claude-sonnet-4-20250514": [ModelCapability.TEXT, ModelCapability.VISION],
"gpt-4o": [ModelCapability.TEXT, ModelCapability.VISION],
"gpt-4o-mini": [ModelCapability.TEXT, ModelCapability.VISION],
"deepseek-chat": [ModelCapability.TEXT],
"deepseek-reasoner": [ModelCapability.TEXT],
"qwen-max": [ModelCapability.TEXT],
"qwen-plus": [ModelCapability.TEXT],
"glm-4": [ModelCapability.TEXT],
"moonshot-v1-128k": [ModelCapability.TEXT],
# 视觉模型
"qwen-vl-max": [ModelCapability.VISION],
"qwen-vl-plus": [ModelCapability.VISION],
"Doubao-Seed-1.6-thinking": [ModelCapability.VISION],
"doubao-vision-pro": [ModelCapability.VISION],
"glm-4v": [ModelCapability.VISION],
# 音频模型
"whisper-large-v3": [ModelCapability.AUDIO],
"whisper-1": [ModelCapability.AUDIO],
"paraformer-v2": [ModelCapability.AUDIO],
"sensevoice": [ModelCapability.AUDIO],
}
```
---
## 4. API 接口设计
### 4.1 获取当前配置
```
GET /api/v1/ai-config
Authorization: Bearer {token}
```
**响应:**
```json
{
"provider": "oneapi",
"base_url": "https://oneapi.intelligrow.cn",
"api_key_masked": "sk-****...****",
"models": {
"text": "claude-opus-4-5-20251101",
"vision": "Doubao-Seed-1.6-thinking",
"audio": "whisper-large-v3"
},
"parameters": {
"temperature": 0.7,
"max_tokens": 2000
},
"available_models": {
"text": ["claude-opus-4-5-20251101", "deepseek-chat", "gpt-4o", ...],
"vision": ["Doubao-Seed-1.6-thinking", "qwen-vl-max", "gpt-4o", ...],
"audio": ["whisper-large-v3", "paraformer-v2", ...]
},
"is_configured": true,
"last_test_at": "2026-02-02T10:30:00Z",
"last_test_result": {
"text": {"success": true, "latency_ms": 342},
"vision": {"success": true, "latency_ms": 528},
"audio": {"success": true, "latency_ms": 215}
}
}
```
### 4.2 更新配置
```
PUT /api/v1/ai-config
Authorization: Bearer {token}
Content-Type: application/json
{
"provider": "oneapi",
"base_url": "https://oneapi.intelligrow.cn",
"api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxx",
"models": {
"text": "claude-opus-4-5-20251101",
"vision": "Doubao-Seed-1.6-thinking",
"audio": "whisper-large-v3"
},
"parameters": {
"temperature": 0.7,
"max_tokens": 2000
}
}
```
### 4.3 获取可用模型列表
```
POST /api/v1/ai-config/models
Authorization: Bearer {token}
Content-Type: application/json
{
"provider": "oneapi",
"base_url": "https://oneapi.intelligrow.cn",
"api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
}
```
**响应:**
```json
{
"success": true,
"models": {
"text": [
{"id": "claude-opus-4-5-20251101", "name": "Claude Opus 4.5"},
{"id": "deepseek-chat", "name": "DeepSeek Chat"},
{"id": "gpt-4o", "name": "GPT-4o"},
...
],
"vision": [
{"id": "Doubao-Seed-1.6-thinking", "name": "豆包 Seed 1.6"},
{"id": "qwen-vl-max", "name": "通义千问 VL Max"},
{"id": "gpt-4o", "name": "GPT-4o (Vision)"},
...
],
"audio": [
{"id": "whisper-large-v3", "name": "Whisper Large V3"},
{"id": "paraformer-v2", "name": "Paraformer V2"},
...
]
}
}
```
### 4.4 测试连接
```
POST /api/v1/ai-config/test
Authorization: Bearer {token}
Content-Type: application/json
{
"provider": "oneapi",
"base_url": "https://oneapi.intelligrow.cn",
"api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxx",
"models": {
"text": "claude-opus-4-5-20251101",
"vision": "Doubao-Seed-1.6-thinking",
"audio": "whisper-large-v3"
}
}
```
**响应:**
```json
{
"success": false,
"results": {
"text": {
"success": true,
"latency_ms": 342,
"model": "claude-opus-4-5-20251101"
},
"vision": {
"success": true,
"latency_ms": 528,
"model": "Doubao-Seed-1.6-thinking"
},
"audio": {
"success": false,
"error": "Model not found or unauthorized",
"model": "whisper-large-v3"
}
},
"message": "1 个模型连接失败,请检查模型名称或 API 权限"
}
```
---
## 5. 核心代码设计
### 5.1 配置模型 (Pydantic)
```python
# app/models/ai_config.py
from pydantic import BaseModel, Field, SecretStr
from typing import Optional, Dict, List
from decimal import Decimal
from app.models.enums import AIProvider
class AIModelsConfig(BaseModel):
"""三个模型配置"""
text: str = Field(..., description="文字处理模型")
vision: str = Field(..., description="视频分析模型")
audio: str = Field(..., description="音频解析模型")
class AIParametersConfig(BaseModel):
"""参数配置"""
temperature: Decimal = Field(default=Decimal("0.7"), ge=0, le=1)
max_tokens: int = Field(default=2000, ge=100, le=32000)
class AIConfigUpdate(BaseModel):
"""更新 AI 配置请求"""
provider: AIProvider
base_url: str
api_key: SecretStr
models: AIModelsConfig
parameters: AIParametersConfig = AIParametersConfig()
class AIConfigResponse(BaseModel):
"""AI 配置响应"""
provider: AIProvider
base_url: str
api_key_masked: str # 脱敏后的 API Key
models: AIModelsConfig
parameters: AIParametersConfig
available_models: Dict[str, List[dict]]
is_configured: bool
last_test_at: Optional[str]
last_test_result: Optional[dict]
class ModelTestResult(BaseModel):
"""单个模型测试结果"""
success: bool
latency_ms: Optional[int] = None
error: Optional[str] = None
model: str
class TestConnectionResponse(BaseModel):
"""测试连接响应"""
success: bool # 三个都成功才为 True
results: Dict[str, ModelTestResult]
message: str
```
### 5.2 AI 服务路由器
```python
# app/services/ai/router.py
from typing import Optional
from uuid import UUID
from app.models.ai_config import AIModelsConfig, AIParametersConfig
from app.repositories.ai_config_repo import AIConfigRepository
from app.services.ai.client_factory import AIClientFactory
class AIServiceRouter:
"""AI 服务路由器 - 根据租户获取配置并调用对应模型"""
def __init__(
self,
config_repo: AIConfigRepository,
client_factory: AIClientFactory,
):
self.config_repo = config_repo
self.client_factory = client_factory
async def get_config(self, tenant_id: UUID) -> dict:
"""获取租户的 AI 配置"""
config = await self.config_repo.get_by_tenant(tenant_id)
if not config or not config.is_configured:
raise ValueError(f"Tenant {tenant_id} has not configured AI service")
return config
async def chat(
self,
tenant_id: UUID,
messages: list,
model_type: str = "text", # text / vision / audio
**kwargs
) -> dict:
"""统一的对话接口"""
config = await self.get_config(tenant_id)
# 根据类型选择模型
model = getattr(config.models, model_type)
# 获取客户端
client = await self.client_factory.get_client(
base_url=config.base_url,
api_key=config.api_key,
)
# 调用
return await client.chat(
messages=messages,
model=model,
temperature=float(config.parameters.temperature),
max_tokens=config.parameters.max_tokens,
**kwargs
)
async def transcribe(
self,
tenant_id: UUID,
audio_file: bytes,
) -> dict:
"""音频转文字"""
config = await self.get_config(tenant_id)
client = await self.client_factory.get_client(
base_url=config.base_url,
api_key=config.api_key,
)
return await client.transcribe(
audio=audio_file,
model=config.models.audio,
)
```
### 5.3 测试连接服务
```python
# app/services/ai/connection_tester.py
import asyncio
from typing import Dict
from openai import AsyncOpenAI
from app.models.ai_config import ModelTestResult, TestConnectionResponse
class AIConnectionTester:
"""AI 连接测试服务"""
async def test_all_models(
self,
base_url: str,
api_key: str,
models: Dict[str, str], # {"text": "...", "vision": "...", "audio": "..."}
) -> TestConnectionResponse:
"""并行测试三个模型"""
# 并行执行测试
tasks = [
self._test_model(base_url, api_key, model_type, model_id)
for model_type, model_id in models.items()
]
results = await asyncio.gather(*tasks, return_exceptions=True)
# 整理结果
result_dict = {}
all_success = True
failed_count = 0
for model_type, result in zip(models.keys(), results):
if isinstance(result, Exception):
result_dict[model_type] = ModelTestResult(
success=False,
error=str(result),
model=models[model_type]
)
all_success = False
failed_count += 1
else:
result_dict[model_type] = result
if not result.success:
all_success = False
failed_count += 1
# 生成消息
if all_success:
message = "所有模型连接成功"
else:
message = f"{failed_count} 个模型连接失败,请检查模型名称或 API 权限"
return TestConnectionResponse(
success=all_success,
results=result_dict,
message=message
)
async def _test_model(
self,
base_url: str,
api_key: str,
model_type: str,
model_id: str,
) -> ModelTestResult:
"""测试单个模型"""
import time
client = AsyncOpenAI(base_url=base_url, api_key=api_key)
start_time = time.time()
try:
if model_type == "audio":
# ASR 模型测试 - 检查模型是否存在
models = await client.models.list()
model_exists = any(m.id == model_id for m in models.data)
if not model_exists:
return ModelTestResult(
success=False,
error="Model not found",
model=model_id
)
else:
# 文字/视觉模型测试 - 发送简单请求
await client.chat.completions.create(
model=model_id,
messages=[{"role": "user", "content": "Hi"}],
max_tokens=5,
)
latency_ms = int((time.time() - start_time) * 1000)
return ModelTestResult(
success=True,
latency_ms=latency_ms,
model=model_id
)
except Exception as e:
return ModelTestResult(
success=False,
error=str(e),
model=model_id
)
```
---
## 6. 安全设计
### 6.1 API Key 加密存储
- 使用 AES-256 加密存储 API Key
- 主密钥从环境变量或密钥管理服务 (Vault/KMS) 获取
- API 响应中永不返回完整 API Key仅返回脱敏版本
```python
def mask_api_key(api_key: str) -> str:
"""API Key 脱敏"""
if len(api_key) <= 8:
return "****"
return f"{api_key[:4]}...{api_key[-4:]}"
```
### 6.2 权限控制
| 操作 | 系统管理员 | 品牌方管理员 | 代理商 | 达人 |
| --- | :---: | :---: | :---: | :---: |
| 查看 AI 配置 | ✅ (全部) | ✅ (仅自己) | ❌ | ❌ |
| 修改 AI 配置 | ✅ | ✅ (仅自己) | ❌ | ❌ |
| 测试连接 | ✅ | ✅ (仅自己) | ❌ | ❌ |
| 查看完整 API Key | ❌ | ❌ | ❌ | ❌ |
---
## 7. 界面设计
> 详见 UIDesign.md 第 10 章「AI 服务配置界面」
### 7.1 界面入口
品牌方端 → 系统设置 → AI 服务配置
### 7.2 界面结构
1. **提供商选择** - 下拉选择 AI 提供商
2. **连接配置** - Base URL 和 API Key 输入
3. **获取模型按钮** - 点击后从 API 获取可用模型列表
4. **模型配置** - 三个下拉框分别选择文字/视觉/音频模型
5. **参数配置** - Temperature 滑块和 Max Tokens 输入
6. **测试连接按钮** - 并行测试三个模型
7. **保存配置按钮**
---
## 8. 相关文档
| 文档 | 说明 |
| --- | --- |
| UIDesign.md | UI 设计规范(第 10 章 AI 配置界面) |
| User_Role_Interfaces.md | 用户角色与界面规范 |
| tasks.md | 开发任务清单 |
| DevelopmentPlan.md | 开发计划与技术架构 |

518
DevelopmentPlan.md Normal file
View File

@ -0,0 +1,518 @@
这是一个基于 `RequirementsDoc.md``FeatureSummary.md` (V1.2) 和 `User_Role_Interfaces.md` 编写的开发计划文档。
这份文档旨在指导技术团队进行架构设计、选型和排期,重点在于解决**视频处理的高并发/高延迟**、**多模态 AI 的集成**以及**移动端适配**等工程难点。
文件名:`DevelopmentPlan.md`
---
# DevelopmentPlan.md - 智能视频审核系统开发计划
| 文档类型 | **Development Plan (技术架构与实施计划)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V1.2 |
| **日期** | 2026-02-03 |
| **依据** | FeatureSummary V1.2, PRD V1.0, RequirementsDoc V1.0 |
| **侧重** | 技术选型、架构设计、MVP 范围、开发排期、验收标准 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V1.0 | 2026-02-03 | Gemini | 初稿:技术架构、选型、排期 |
| V1.1 | 2026-02-03 | Claude | 审阅修订:补充 F-05-A/F-45 技术方案、验收标准、数据模型、测试策略 |
| V1.2 | 2026-02-03 | Claude | Reviewer 修正Logo检测改向量检索、Brief解析增VLM、弹性GPU、H5防锁屏、排期调整 |
| V1.2.1 | 2026-02-03 | Claude | 补充多模态时间戳对齐流程图 (Gemini 建议) |
| V1.3 | 2026-02-02 | Claude | **确立 TDD 为项目核心开发规范**,关联 tdd_plan.md |
| V1.4 | 2026-02-02 | Claude | **新增 AI 厂商动态配置架构**,支持数据库配置、运行时热更新、多租户隔离 |
---
## 1. 技术架构设计 (Architecture Design)
### 1.1 系统架构图 (逻辑视图)
采用 **前后端分离** + **AI 微服务化** 的架构,以应对视频处理的高算力需求和长尾延迟。
```mermaid
graph TD
User[用户 (PC/Mobile)] -->|HTTPS| Gateway[API Gateway / Nginx]
subgraph Frontend
Web_PC[PC 审核台 (React/Next.js)]
Web_H5[达人端 H5 (React/Next.js)]
end
subgraph Backend_Core [核心业务服务]
API_Main[主业务 API (FastAPI)]
Auth[认证服务]
Workflow[工作流引擎]
Upload_Svc[文件上传服务 (Tus协议)]
end
subgraph Async_Layer [异步处理层]
Queue[消息队列 (RabbitMQ/Redis)]
Worker_Manager[任务调度器 (Celery)]
Socket_Svc[WebSocket 推送服务]
end
subgraph AI_Engine [AI 引擎集群]
Svc_Parser[Brief 解析服务 (Layout+VLM+LLM)]
Svc_NLP[脚本/语义分析 (LLM)]
Svc_Video[视频多模态流水线]
Svc_Logo[Logo 向量检索服务]
end
subgraph Storage
DB[(PostgreSQL - 业务数据)]
VectorDB[(Milvus/pgvector - 知识库)]
Cache[(Redis - 缓存/进度)]
OSS[对象存储 (视频/图片)]
end
Gateway --> Web_PC
Gateway --> Web_H5
Web_PC --> API_Main
Web_H5 --> API_Main
API_Main --> DB
API_Main --> Queue
Worker_Manager --> Queue
Worker_Manager --> Svc_Parser
Worker_Manager --> Svc_NLP
Worker_Manager --> Svc_Video
Svc_Video --> OSS
Socket_Svc <--> User
```
### 1.2 技术选型 (Tech Stack)
| 模块 | 选型建议 | 理由 (Why) |
| --- | --- | --- |
| **前端框架** | **Next.js (React)** + Tailwind CSS | 统一 PC 和 H5 代码库Next.js 的 SSR 对 SEO 和首屏渲染友好;适合构建复杂的审核 Dashboard。 |
| **移动端** | **Responsive H5 + Wake Lock API** | 达人端无需开发原生 App通过 Next.js 响应式布局覆盖 iOS/Android 浏览器及微信内嵌浏览器。⭐ V1.2 增加防锁屏策略。 |
| **后端 API** | **Python (FastAPI)** | Python 是 AI 原生语言FastAPI 具有极高的并发性能AsyncIO方便集成 AI 模型 SDK。 |
| **异步队列** | **Celery + Redis** | 视频审核是典型长耗时任务3-5分钟必须异步处理。Celery 成熟稳定。 |
| **实时通讯** | **WebSocket (Socket.io)** | 必须实现F-17用于向前端实时推送“正在检测 Logo...”等细粒度进度。 |
| **数据库** | **PostgreSQL** + **pgvector** | PG 处理关系型数据pgvector 插件直接在 PG 中处理向量搜索(竞品库/相似案例),减少架构复杂度。 |
| **文件存储** | **阿里云 OSS / AWS S3** | 视频文件大,必须上云。需配合 CDN 加速预览。 |
| **上传协议** | **Tus Protocol** (Uppy.js) | 解决大文件100MB+)上传不稳定问题,支持**断点续传**,替代 ZIP 上传。 |
### 1.3 AI 模型选型 (Model Selection)
| 任务 | 模型/服务选型 | 备注 |
| --- | --- | --- |
| **通用语义 (NLP)** | **豆包 Pro / Qwen-Max / DeepSeek** | 处理 Brief 解析、反讽识别、情感分析 |
| **视觉理解 (VLM)** | **Qwen-VL / 豆包视觉** | 处理复杂场景理解(如:环境脏乱差、具体动作判定);**Brief 图片解析** |
| **语音识别 (ASR)** | **Paraformer (阿里) / SenseVoice** | 高精度中文语音转写,支持时间戳对齐 |
| **文字识别 (OCR)** | **PaddleOCR v4** | 针对中文视频字幕优化,开源免费,轻量级 |
| **版面分析 (Layout)** | **PaddleOCR Layout / LayoutLMv3** | Brief PDF 版面分析,提取图文混排结构 |
| **竞品 Logo 检测** | **Grounding DINO + Vector DB** | ⭐ V1.2 修正:改为向量检索方案,见下方说明 |
> ⭐ **V1.3 重要更新 - AI 厂商动态配置:**
>
> 本系统采用**商业 SaaS 级别的 AI 厂商动态配置架构**,详见 [AIProviderConfig.md](./AIProviderConfig.md)。
>
> **核心特性:**
> - **数据库存储配置:** AI 厂商的 API Key、Base URL 等配置存储在数据库中,而非环境变量
> - **运行时动态加载:** 管理员可在后台配置 AI 厂商,系统运行时动态读取配置初始化客户端
> - **多租户隔离:** 不同品牌方可配置独立的 AI 厂商和配额
> - **热更新:** 配置变更即时生效,无需重启服务
> - **故障转移:** 主厂商不可用时自动切换到备用厂商
> - **API Key 加密:** 使用 Fernet 对称加密存储敏感信息
>
> **支持的厂商类型:**
> - 国内厂商DeepSeek、通义千问、豆包、智谱、百川、Moonshot
> - 海外厂商OpenAI、Anthropic需注意合规
> - 中转服务OneAPI、OpenRouter
> - 本地部署Ollama、vLLM
> ⚠️ **V1.2 重要修正 - Logo 检测架构变更:**
>
> **废弃方案:** ~~YOLOv8 Fine-tuning~~
>
> **新方案Embedding-based Retrieval (向量检索)**
> ```
> 1. 品牌方上传竞品 Logo 图片
> 2. Grounding DINO 提取 Logo 区域 → CLIP/DINOv2 生成 Embedding
> 3. 存入 Vector DB (pgvector/Milvus)
> 4. 视频帧检测时:提取候选区域 → 生成 Embedding → 向量相似度匹配
> ```
>
> **优势:** 支持 SaaS 模式下品牌**动态添加竞品 Logo**,无需重新训练模型,**即刻生效**。
> ⚠️ **国内数据合规说明:** 根据 PRD 第 10 章"数据本地化"要求,国内客户数据必须存储于中国大陆境内服务器。因此:
> - **生产环境必须使用国内 LLM**(豆包/Qwen/DeepSeek不可调用 GPT-4o/Claude 等海外 API
> - 海外 API 仅用于内部研发测试,不可处理客户真实数据
> - ASR/OCR/CV 均选用国内服务或本地部署模型
---
## 2. 关键技术难点与解决方案
### 2.1 难点:视频上传与解压风险 (F-30)
* **风险:** 传统表单上传大视频会导致超时ZIP 解压消耗大量 CPU。
* **方案:**
1. **废弃 ZIP** 前端采用 Dropzone 实现**多文件并发上传**。
2. **分片上传:** 使用 Tus 协议,将 100MB 视频切分为 5MB 的 chunk 上传,服务端合并。
3. **直传 OSS** 前端获取签名直传云存储,不经过应用服务器,节省带宽。
### 2.1.1 难点H5 移动端上传中断 ⭐ V1.2 新增
* **风险:** iOS Safari 在屏幕锁定或切换后台时会杀死网络请求进程,导致大文件上传中断。
* **方案:**
1. **Wake Lock API** 在上传期间请求屏幕常亮锁,防止系统休眠。
```javascript
const wakeLock = await navigator.wakeLock.request('screen');
```
2. **UI 防锁屏提示:** 上传开始时显示醒目提示:"⚠️ 上传中请保持屏幕常亮,切勿锁屏或切换应用"
3. **断点续传兜底:** Tus 协议支持断点续传,即使中断也可从断点恢复。
4. **兼容性处理:** Wake Lock API 在部分旧浏览器不支持,需做 Feature Detection 并提供降级提示。
### 2.2 难点:长时任务的用户焦虑 (F-17)
* **风险:** 视频分析需 3-5 分钟,用户易关闭页面。
* **方案:** **精细化 WebSocket 推送**
* 后端 Worker 每完成一个子步骤(如 OCR 完成、ASR 完成),即向 Redis 写入状态。
* Socket 服务订阅 Redis推送到前端“✅ 字幕提取完成 (30%)” -> “👁️ Logo 检测中...”。
### 2.3 难点:语境理解与误报控制 (F-09)
* **风险:** 将"最开心"误判为广告法违规。
* **方案:** **两段式 AI 分析**
1. **Segment切片** 先让 AI 判断当前时间段是"剧情"还是"植入"。
2. **Evaluate执法** 如果是"剧情",应用宽松 Prompt如果是"植入",应用严格 Prompt。
### 2.4 难点:时长与频次校验 (F-45) ⭐ 新增
* **场景:** Brief 要求"产品同框 > 5秒"、"口播提及品牌名 ≥ 3次"。
* **技术挑战:** 需要将 ASR/CV 的时间戳信息转化为可统计的结构化数据。
* **方案:**
**频次统计(口播提及):**
1. ASR 输出带时间戳的逐字稀疏文本:`[00:05.2] 这款 [00:05.8] 产品 [00:06.1] 真的很好用`
2. NLP 识别"品牌词/产品词"并统计出现次数
3. 输出:`品牌名提及 4 次 @ [00:05, 00:32, 01:15, 02:08]`
**时长统计(产品同框):**
1. CV 模型逐帧检测"产品出现"采样率2fps 即可)
2. 合并连续出现的帧为"片段"`产品出现 @ [00:10-00:18], [01:05-01:12]`
3. 累加总时长:`产品同框总时长 = 8s + 7s = 15s`
**验收标准:**
- 时长统计误差 ≤ 0.5秒
- 频次统计准确率 ≥ 95%
### 2.5 多模态时间戳对齐流程 ⭐ V1.2 补充
> 这是 Phase 2 延长 1 周的核心原因ASR/OCR/CV 的时间轴需要精确同步。
```mermaid
sequenceDiagram
participant Video as 原始视频
participant ASR as ASR引擎
participant OCR as OCR引擎
participant CV as CV检测
participant Alignment as 对齐算法
participant Rule as 规则引擎
par 并行处理
Video->>ASR: 提取音频
ASR-->>Alignment: 输出: [{text: "品牌", start: 5.2s, end: 5.8s}, ...]
Video->>OCR: 提取关键帧
OCR-->>Alignment: 输出: [{text: "品牌", timestamp: 5.5s}, ...]
Video->>CV: 逐帧扫描
CV-->>Alignment: 输出: [{object: "Product", timestamp: 5.0s}, ...]
end
Alignment->>Alignment: 时间轴归一化 & 模糊匹配
Alignment-->>Rule: 输出结构化时间轴数据
Rule->>Rule: 执行逻辑: if (Logo_Duration > 5s) && (Mention_Count >= 3)
Rule-->>Video: 输出最终审核结论
```
**对齐算法要点:**
1. **时间轴归一化:** 将 ASR (毫秒级) / OCR (帧级) / CV (帧级) 统一为秒级时间戳
2. **模糊匹配窗口:** 允许 ±0.5s 的时间容差,解决各模态时间戳微小偏差
3. **事件合并:** 将同一时间窗口内的多模态事件合并为"复合事件"
---
## 3. MVP (P0) 开发范围定义
基于 `FeatureSummary.md V1.2`MVP 阶段必须包含的功能:
### ✅ MVP 包含 (Must Have) - 共 18 个 P0 功能
基于 `FeatureSummary.md V1.2` 第 4.1 章定义:
| 模块 | 功能编号 | 功能名称 | 备注 |
| --- | --- | --- | --- |
| **Brief 管理** | F-01 | Brief 文档上传与解析 | |
| | F-02 | 在线文档链接导入 | |
| | F-03 | 平台规则库自动加载 | |
| | F-04 | 区域合规规则切换 | |
| | **F-05-A** | **基础黑白名单与竞品库** | ⭐ MVP 必须能防竞品 |
| **脚本预审** | F-07 | 文本脚本提交与预审 | |
| | F-08 | 违规检测与修改建议 | |
| | **F-09** | **语境理解降低误报** | ⭐ P1→P0避免"人工智障" |
| **视频审核** | F-10 | 视频上传 | |
| | F-11 | 多模态联合检测 | ASR/OCR/CV |
| | F-12 | 竞品 Logo 检测 | |
| | F-13 | 违禁词口播检测 | |
| | F-14 | 时间戳风险标注 | |
| | **F-45** | **时长与频次校验** | ⭐ 新增Brief 硬指标 |
| | **F-17** | **审核进度实时展示** | ⭐ P1→P0缓解等待焦虑 |
| **审核台** | F-19 | 风险列表展示 | |
| | F-20 | 确认/驳回操作 | |
| **数据看板** | F-33 | 核心指标卡片 | |
### ❌ MVP 暂不包含 (Post-MVP)
1. 高级豁免规则 (F-05-B)。
2. 版本比对 Diff 视图 (F-28)。
3. 批量操作 (F-30 批量审核/导出)。
4. 舆情监控中心 (F-41)。
5. AI 闭环训练系统 (F-46)。
---
## 4. 开发周期规划 (Roadmap)
假设配置1 PM, 1 UI/UX, 2 Frontend, 2 Backend, 1 AI Engineer, 1 QA。
**总周期:约 11 周 (2.75 个月)** ⭐ V1.2 调整Phase 2 延长 1 周
### Phase 1: 基础设施与 Brief 引擎 (Weeks 1-2)
* **Backend:** 搭建 FastAPI 框架PG 数据库设计,接入 OSS。
* **AI:** 调试 Brief 解析 Prompt (Layout + VLM + LLM),搭建竞品 Logo 向量库。
* **Frontend:** 完成 PC 端框架搭建Brief 上传与解析交互。
* **交付物:** 能够上传 PDF含图片并提取出 JSON 规则。
### Phase 2: 核心 AI 流水线 (Weeks 3-6) ⭐ *攻坚期* (V1.2: 3周→4周)
* **Backend:** 实现 Celery 异步队列,集成 Tus 上传协议,对接弹性 GPU 集群。
* **AI:** 串联 ASR -> OCR -> NLP -> CV 模型;实现 F-09 (语境) 和 F-45 (频次) 逻辑。
* **AI:** 实现 Logo 向量检索流水线 (Grounding DINO + Vector DB)。
* **Frontend:** 开发 WebSocket 进度组件,实现"透明思考"UI。
* **交付物:** 后端可跑通"视频输入 -> 审核报告输出"的完整流程。
> ⚠️ **V1.2 排期调整说明:** Phase 2 从 3 周延长至 4 周,预留充足时间处理**多模态时间戳对齐**的工程难题ASR/OCR/CV 的时间轴需要精确同步)。
### Phase 3: 达人端 H5 与 审核台 (Weeks 7-9)
* **Frontend (H5):** 开发达人手机端上传、查看报告、申诉页面 (响应式适配 + Wake Lock 防锁屏)。
* **Frontend (PC):** 开发复杂的"审核决策台"(视频播放器与时间轴打点的联动)。
* **Backend:** 实现申诉逻辑、审核状态流转 (State Machine)。
* **交付物:** 达人可上传,代理商可审核,流程闭环。
### Phase 4: 联调与验收 (Weeks 10-11)
* **QA:** 全链路测试重点测试大文件上传稳定性、AI 误报率、H5 兼容性。
* **AI:** 根据测试数据微调 Prompt优化"油腻/爹味"提示词。
* **Ops:** 部署生产环境,配置 CDN弹性 GPU 集群压力测试。
* **交付物:** v1.0 上线。
---
## 5. 资源需求清单
| 资源类型 | 规格/服务 | 预估成本 | 备注 |
| --- | --- | --- | --- |
| **应用服务器** | 8C 16G * 2 (Web/API) | Medium | 承载 API 和 Websocket |
| **AI 推理集群** | **弹性 GPU 集群 / Serverless GPU** | High | ⭐ V1.2 修正,见下方说明 |
| **LLM API** | 豆包 Pro / Qwen-Max | 按量计费 | 核心语义分析(国内合规) |
| **ASR 服务** | 阿里云 Paraformer API | 按量计费 | 语音转文字 |
| **存储 (OSS)** | 预留 5TB | Low | 视频与图片存储 |
| **数据库** | RDS PostgreSQL (High Avail) | Medium | 业务数据 + pgvector |
| **缓存** | Redis Cluster | Medium | 队列与实时状态 |
> ⚠️ **V1.2 重要修正 - GPU 资源策略变更:**
>
> **废弃方案:** ~~单一 GPU T4/A10 * 1~~
>
> **新方案:弹性 GPU 集群 / Serverless GPU**
> - **阿里云 PAI-EAS** / **火山引擎 veFaaS** / **AWS SageMaker Serverless**
> - 按推理请求计费,支持自动扩缩容
> - 高峰期自动扩容,空闲时缩容至 0
>
> **理由:** 单个 T4 无法支撑高并发下的视频处理 SLA5分钟内。弹性方案可应对突发流量同时控制成本。
---
## 6. 风险管理 (Risk Management)
| 风险点 | 可能性 | 影响程度 | 缓解措施 |
| --- | --- | --- | --- |
| **AI 误报率过高** | 中 | 高 | 上线前进行不少于 1000 条视频的“红蓝对抗”测试;初期设置较低的阈值(宁缺毋滥)。 |
| **视频处理积压** | 低 | 高 | 监控队列长度,配置**弹性伸缩 (Auto-scaling)**,当队列堆积时自动增加 AI Worker 节点。 |
| **平台规则变更** | 高 | 中 | 建立“配置化规则库”,无需改代码,运营人员在后台通过 JSON 更新违禁词。 |
| **达人 H5 兼容性** | 中 | 中 | 使用 BrowserStack 进行主流机型iOS/Android/微信内置)的兼容性测试。 |
---
## 7. 核心数据模型 (Data Model Overview)
> 详细字段定义见数据字典文档
### 7.1 核心实体关系
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Brand │────<│ Agency │────<│ Creator │
│ (品牌方) │ │ (代理商) │ │ (达人) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
│ ▼ │
│ ┌─────────────┐ │
└───────────>│ Task │<───────────┘
│ (任务) │
└──────┬──────┘
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Brief │ │ Video │ │ Report │
│ (Brief规则) │ │ (视频) │ │ (审核报告) │
└─────────────┘ └─────────────┘ └─────────────┘
```
### 7.2 核心表结构概述
| 表名 | 说明 | 关键字段 |
| --- | --- | --- |
| `brands` | 品牌方 | id, name, settings_json |
| `agencies` | 代理商 | id, brand_id, name |
| `creators` | 达人 | id, agency_id, credit_score, appeal_tokens |
| `tasks` | 审核任务 | id, brand_id, agency_id, creator_id, status, platform |
| `briefs` | Brief 规则 | id, task_id, raw_file_url, parsed_rules_json |
| `videos` | 视频文件 | id, task_id, version, file_url, duration |
| `reports` | 审核报告 | id, video_id, ai_result_json, human_decision, created_at |
| `risk_items` | 风险项 | id, report_id, type, level, timestamp_start, timestamp_end, evidence_json |
| `rule_sets` | 规则库 | id, brand_id, platform, version, rules_json |
| `audit_logs` | 审计日志 | id, task_id, operator_id, action, detail_json, created_at |
---
## 8. 验收标准 (Acceptance Criteria)
引用自 `FeatureSummary.md V1.2` 第 9 章MVP 上线前必须满足:
| 验收项 | 标准 | 测量方式 | 责任方 |
| --- | --- | --- | --- |
| **Brief 解析准确率** | 图文混排 PDF 提取准确率 **> 90%** | 标注测试集评估 | AI 团队 |
| **竞品 Logo 检测** | 遮挡 30% 场景 F1 **≥ 0.85** | 标注测试集评估 | AI 团队 |
| **语义理解误报率** | 广告/非广告语境区分误报率 **≤ 5%** | 样本量 ≥ 1,000 句 | AI 团队 |
| **ASR 字错率** | 普通话+方言 **≤ 10%** | 标注测试集评估 | AI 团队 |
| **OCR 准确率** | 含复杂背景 **≥ 95%** | 标注测试集评估 | AI 团队 |
| **时长统计误差** | **≤ 0.5秒** | 人工核对 | AI 团队 |
| **频次统计准确率** | **≥ 95%** | 人工核对 | AI 团队 |
| **审核报告产出时间** | 100MB 视频 **≤ 5 分钟** | 系统埋点 | 后端 |
| **审计链路完整性** | 每条结论含规则版本、证据、时间戳 | 人工抽查 | QA |
---
## 9. 测试策略 (Testing Strategy)
> ⭐ **核心原则:本项目全程遵循 TDD测试驱动开发**
>
> 详细实施计划参见:[featuredoc/tdd_plan.md](./featuredoc/tdd_plan.md)
### 9.0 TDD 开发规范 (Test-Driven Development)
**本项目强制采用 TDD 开发模式**,所有功能代码必须遵循「红-绿-重构」循环:
```
┌─────────────────────────────────────────────────────────────┐
│ TDD 开发流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 🔴 RED → 先写一个失败的测试 │
│ 2. 🟢 GREEN → 写最少的代码让测试通过 │
│ 3. 🔄 REFACTOR → 重构代码,保持测试通过 │
│ 4. 重复循环 │
│ │
└─────────────────────────────────────────────────────────────┘
```
**TDD 分层策略:**
| 代码类型 | TDD 策略 | 覆盖率要求 |
| --- | --- | --- |
| **业务逻辑/工具函数** | 严格 TDD先写测试 | ≥ 80% |
| **API 接口** | 契约优先(先定义 OpenAPI | ≥ 80% |
| **AI 模型调用** | 标注集验证 | ≥ 70% |
| **前端组件** | 组件级 TDD | ≥ 70% |
| **E2E 流程** | BDD + Playwright | 核心路径 100% |
**CI/CD 门禁:**
- PR 合并前必须通过所有测试
- 覆盖率低于阈值将阻断合并
- AI 模型指标下降将触发告警
### 9.1 测试类型
| 测试类型 | 覆盖范围 | 工具 | 负责人 |
| --- | --- | --- | --- |
| **单元测试** | 后端业务逻辑、工具函数 | pytest | 后端 |
| **集成测试** | API 接口、数据库交互 | pytest + TestContainers | 后端 |
| **E2E 测试** | 核心用户流程 | Playwright | QA |
| **AI 模型测试** | 准确率/召回率/F1 | 标注测试集 + MLflow | AI 团队 |
| **性能测试** | 并发、响应时间、队列积压 | Locust / k6 | 后端 |
| **兼容性测试** | H5 移动端适配 | BrowserStack | 前端 |
### 9.2 AI 模型专项测试
| 测试项 | 测试集规模 | 通过标准 |
| --- | --- | --- |
| 违禁词检测 | ≥ 500 正样本 + 500 负样本 | 召回率 ≥ 95%,误报率 ≤ 5% |
| 竞品 Logo 检测 | ≥ 200 张图片(含遮挡场景) | F1 ≥ 0.85 |
| 语境理解 | ≥ 1,000 句子 | 误报率 ≤ 5% |
| Brief 解析 | ≥ 50 份真实 Brief | 准确率 > 90% |
### 9.3 上线前必须通过
- [ ] 所有 P0 功能通过 E2E 测试
- [ ] AI 模型指标达到验收标准
- [ ] 100 并发压测无异常
- [ ] H5 端在 iOS/Android/微信内置浏览器通过兼容性测试
- [ ] 安全扫描无高危漏洞
---
## 10. 下一步行动 (Next Steps)
1. **架构师:** 确认 `Database Schema` (特别是 Brief 规则与审核报告的 JSON 结构)。
2. **UI 设计师:** 优先输出 **"达人端 H5 上传页"**(含防锁屏提示)和 **"代理商 PC 审核台"** 的高保真原型。
3. **AI 工程师:** 搭建 **Logo 向量检索系统** (Grounding DINO + pgvector),验证相似度匹配效果。
4. **AI 工程师:** 调试 **Brief 解析流水线** (Layout Analysis + VLM),确保能提取 PDF 中的参考图片。
5. **后端工程师:** 搭建 FastAPI 框架骨架,集成 Celery 异步队列,对接弹性 GPU 服务。
6. **前端工程师:** 验证 Wake Lock API 在 iOS Safari / 微信内置浏览器的兼容性。
7. **QA** 准备 AI 模型测试集违禁词、Logo、Brief 样本)。
---
## 11. 相关文档
| 文档 | 说明 |
| --- | --- |
| RequirementsDoc.md | 业务需求文档 |
| PRD.md | 产品需求文档 |
| FeatureSummary.md | 功能清单与优先级 |
| User_Role_Interfaces.md | 界面规范 |
| tasks.md | 开发任务清单 |
| **featuredoc/tdd_plan.md** | **TDD 实施计划(核心规范)** |
| **AIProviderConfig.md** | **AI 厂商动态配置架构设计V1.3 新增)** |
| 数据字典 | 待编写 |
| API 接口规范 | 待编写 |

909
FeatureSummary.md Normal file
View File

@ -0,0 +1,909 @@
# FeatureSummary.md - 产品功能清单
| 文档类型 | **Feature Summary (产品功能文档)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V1.2 |
| **发布日期** | 2026-02-02 |
| **关联文档** | RequirementsDoc.md, PRD.md, User_Role_Interfaces.md |
| **侧重** | 功能清单、优先级、验收标准、界面映射、边界说明 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V1.0 | 2026-02-02 | Claude | 基于 RD/PRD/UI 文档整合产出功能清单 |
| V1.1 | 2026-02-02 | Claude | 根据 Gemini 修订意见调整补充验收标准、Out of Scope、核心痛点细化 |
| V1.2 | 2026-02-02 | Claude | 根据 Gemini 关键改进意见:优先级调整、功能拆分、新增功能、移动端适配 |
| V1.3 | 2026-02-02 | Claude | **新增 AI 厂商动态配置功能模块 (F-47~F-50)**,支持数据库配置、多租户隔离 |
**Gemini 修订意见采纳情况:**
| 意见 | 采纳 | 说明 |
| --- | --- | --- |
| F-09 语境理解 P1→P0 | ✅ | 避免"人工智障"体验,是用户体验底线 |
| F-17 进度展示 P1→P0 | ✅ | 3-5分钟等待无反馈会导致用户流失 |
| F-30 ZIP→多文件拖拽 | ✅ | 降低服务器解压风险,体验更好 |
| F-05 拆分基础/高级 | ✅ | MVP必须能防竞品拆分为 F-05-A (P0) / F-05-B (P1) |
| 新增移动端 H5 适配 | ✅ | 达人工作场景多在移动端 |
| 新增时长/频次校验 | ✅ | 新增 F-45满足 Brief 硬性指标 (如 >5s) |
| 新增 AI 闭环学习 | ✅ | 新增 F-46 (P2),完善产品闭环 |
---
## 1. 产品概述
### 1.1 产品定位
SmartAudit 是一款**基于多模态大模型的 B2B SaaS 审核工具**,定位为**"智能预审员"**,在人工介入前**自动化拦截 80% 的基础错误和合规风险**,将审核流转周期从"天"缩短到"小时"。
### 1.2 核心价值
| 用户角色 | 核心痛点 | 痛点详细描述 | 产品价值 |
| --- | --- | --- | --- |
| **品牌方** | 担心达人内容导致品牌翻车 | 害怕由于达人"口无遮拦"或"价值观不当"导致品牌翻车;人工疲劳导致漏判(如竞品露出、边缘违禁词),极易引发公关危机 | 舆情风险提前预警,证据链完整可追溯 |
| **代理商** | 大量人力浪费在低价值审核工作 | 深陷于"传话筒"困境大量人力浪费在检查错别字、Brief 对齐等低价值工作上;人工审核一条 3 分钟视频+对比 Brief 平均耗时 15-20 分钟,且需反复修改 3-5 轮 | 效率提升 4 倍20分钟→5分钟批量处理 |
| **达人** | 反馈模糊,反复修改 | 痛恨模糊的反馈(如"感觉不对"),希望获得即时、明确的修改指令,以便尽快结算;不同审核员对"品牌调性"理解不同,导致达人无所适从 | 即时明确的修改指令,带时间戳的修改清单 |
### 1.3 成功指标
| 指标 | 目标值 |
| --- | --- |
| 单条视频人工投入时长 | 从 20 分钟降至 ≤ 5 分钟 |
| AI 脚本预审后首次通过率 | 提升 ≥ 30% |
| 违禁词/竞品 Logo 召回率 | ≥ 95% |
| 违禁词/竞品 Logo 误报率 | ≤ 5% |
| 舆情/价值观判断一致性 | ≥ 80% |
| 代理商 NPS | 提升 ≥ 10 分 |
---
## 2. 功能模块总览
```
┌─────────────────────────────────────────────────────────────────┐
│ SmartAudit 功能架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Brief 解析 │ │ 脚本预审 │ │ 视频审核 │ │
│ │ 与规则管理 │ │ (Pre-prod) │ │ (Post-prod) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 审核台 │ │ 申诉与仲裁 │ │ 版本比对 │ │
│ │ 人工复核 │ │ │ │ 批量处理 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 数据看板 │ │ 规则配置 │ │ 审计日志 │ │
│ │ │ │ 舆情预警 │ │ 证据导出 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## 3. 功能清单详解
### 3.1 Brief 解析与规则管理
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-01 | Brief 文档上传与解析 | P0 | US-01 | 代理商 |
| F-02 | 在线文档链接导入 | P0 | US-01 | 代理商 |
| F-03 | 平台规则库自动加载 | P0 | US-02 | 品牌方/代理商 |
| F-04 | 区域合规规则切换 | P0 | US-02 | 品牌方 |
| F-05-A | 基础黑白名单与竞品库 | **P0** | US-10 | 品牌方 |
| F-05-B | 高级豁免规则配置 | P1 | US-10 | 品牌方 |
| F-06 | 规则版本管理与审计 | P1 | US-10 | 品牌方 |
#### F-01 Brief 文档上传与解析
**功能描述:** 支持上传 PDF/Word/Excel/PPT/图片格式的 Brief 文档AI 自动提取核心卖点、禁忌词、品牌调性要求。
**验收标准:**
- 图文混排 Brief 解析准确率 > 90%
- 支持加密 PDF 的解析失败提示与手动输入降级
**界面映射:** 代理商端 → Brief 配置中心 → 全能解析器
---
#### F-02 在线文档链接导入
**功能描述:** 支持导入飞书/Notion 等已授权的在线文档分享链接。
**约束条件:**
- 仅支持用户授权的分享链接
- 不得绕过权限或抓取受限内容
**界面映射:** 代理商端 → Brief 配置中心 → 在线文档链接导入
---
#### F-03 平台规则库自动加载
**功能描述:** 选择投放平台(抖音/小红书/B站等自动加载对应平台的最新违禁词库并校验 Brief 要求与平台规则是否冲突。
**验收标准:**
- 规则冲突提示清晰可追溯
- 平台规则变更后 ≤ 1 工作日内更新
**界面映射:** 代理商端 → Brief 配置中心 → 投放平台选择
---
#### F-04 区域合规规则切换
**功能描述:** 不同地区投放可切换对应法规与平台规则版本(中国大陆/港澳台/海外)。
**界面映射:**
- 代理商端 → Brief 配置中心 → 区域合规切换
- 品牌方端 → 规则配置 → 区域合规配置
---
#### F-05-A 基础黑白名单与竞品库 ⭐ P0
**功能描述:** 品牌方可配置基础私有规则,确保 MVP 具备核心防御能力。
**核心功能:**
- 禁用词库分类管理(广告法/平台规则/品牌私有)
- 竞品 Logo 图库上传,支持相似度阈值设置
- 基础白名单配置
**为什么是 P0** 品牌方购买本系统的核心动力之一是"防竞品"MVP 必须具备此能力。
**界面映射:** 品牌方端 → 规则配置 → 黑白名单管理
---
#### F-05-B 高级豁免规则配置
**功能描述:** 品牌方可配置高级豁免规则,支持复杂的条件逻辑。
**子功能:**
- 特定达人豁免规则
- 特定场景豁免规则
- 条件组合逻辑达人A + 平台B = 豁免规则C
**界面映射:** 品牌方端 → 规则配置 → 高级豁免规则
---
#### F-06 规则版本管理与审计
**功能描述:** 规则变更历史可追溯,支持回滚,变更需审批生效。
**验收标准:**
- 记录变更人、变更时间、变更内容
- 支持回滚到历史版本
**界面映射:** 品牌方端 → 规则配置 → 规则版本管理
---
### 3.2 脚本预审 (Pre-production)
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-07 | 文本脚本提交与预审 | P0 | US-03 | 达人 |
| F-08 | 违规检测与修改建议 | P0 | US-03 | 达人 |
| F-09 | 语境理解降低误报 | **P0** | US-04 | 达人 |
#### F-07 文本脚本提交与预审
**功能描述:** 达人在拍摄前提交文字脚本,系统检查是否遗漏卖点或触犯广告法。
**核心价值:** 避免拍完重拍的巨大沉没成本
**界面映射:** 达人端 → 智能上传页
---
#### F-08 违规检测与修改建议
**功能描述:** 输出违规项、遗漏卖点,并给出具体修改建议。
**输出示例:**
- 错误类型:广告法违禁词
- 原内容:"全网第一"
- AI建议建议改为"深受喜爱"或"销量领先"
**界面映射:** 达人端 → 审核结果页 → 修改清单
---
#### F-09 语境理解降低误报 ⭐ P0
**功能描述:** AI 区分广告语境与日常语境,避免将非广告内容误判为违规。
**示例:** 不将"最开心的一天"误判为广告极限词违规
**验收标准:** 广告极限词与非广告语境的区分误报率 ≤ 5%(样本量 ≥ 1,000 句)
**为什么是 P0** 如果 MVP 版本把"我**最**开心的一天"误判为广告法极限词违规,达人会认为这个 AI 是"人工智障",导致口碑崩盘。这是用户体验的底线。
**界面映射:** 达人端 → 审核结果页
---
### 3.3 视频智能审核 (Post-production)
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-10 | 视频上传 | P0 | US-05 | 达人 |
| F-11 | 多模态联合检测 | P0 | US-05 | 系统 |
| F-12 | 竞品 Logo 检测 | P0 | US-05 | 系统 |
| F-13 | 违禁词口播检测 | P0 | US-05 | 系统 |
| F-14 | 时间戳风险标注 | P0 | US-05 | 系统 |
| F-45 | 时长与频次校验 | **P0** | US-05 | 系统 |
| F-15 | Brand Safety 软性风险提示 | P1 | US-06 | 系统 |
| F-16 | 分区审核规则 | P1 | US-06 | 系统 |
| F-17 | 审核进度实时展示 | **P0** | US-07 | 达人 |
| F-18 | 时间戳修改清单 | P1 | US-07 | 达人 |
#### F-10 视频上传
**功能描述:** 支持视频文件上传
**约束条件:**
- 文件大小 ≤ 100MB
- 分辨率支持 1080p
- 格式支持 MP4/MOV
**界面映射:** 达人端 → 智能上传页
---
#### F-11 多模态联合检测
**功能描述:** ASR语音识别+ OCR字幕识别+ CV画面检测联合检测
**验收标准:**
- ASR 字错率 ≤ 10%(普通话 + 主流方言)
- OCR 准确率 ≥ 95%(含复杂背景)
**技术依赖:** 多模态 LLM、ASR 引擎、OCR 引擎、CV 检测
---
#### F-12 竞品 Logo 检测
**功能描述:** 自动检测视频画面中是否出现竞品 Logo 或不雅背景,精确到秒数标注。
**验收标准:** 竞品 Logo F1 ≥ 0.85(含画面角落遮挡 30% 场景)
**界面映射:** 代理商端 → 审核决策台 → 智能进度条(红点标注)
---
#### F-13 违禁词口播检测
**功能描述:** 通过 ASR 识别口播内容,检测违禁词。
**界面映射:** 代理商端 → 审核决策台 → AI 检查单 → 硬性合规
---
#### F-14 时间戳风险标注
**功能描述:** 输出时间戳级别的风险点(精确到秒数)
**界面映射:**
- 代理商端 → 审核决策台 → 智能进度条
- 达人端 → 审核结果页 → 时间轴跳转
---
#### F-45 时长与频次校验 ⭐ P0 (新增)
**功能描述:** 根据 Brief 中的时序要求,自动校验视频是否满足时长和频次指标。
**典型场景:**
- Brief 要求"产品同框必须 > 5秒"
- Brief 要求"口播提及品牌名 ≥ 3次"
- Brief 要求"产品特写镜头 ≥ 2个"
**输出示例:**
```
⚠️ 时长不足:产品同框仅 3.2秒Brief 要求 > 5秒
✅ 频次达标:品牌名提及 4次Brief 要求 ≥ 3次
```
**验收标准:** 时长统计误差 ≤ 0.5秒,频次统计准确率 ≥ 95%
**界面映射:** 代理商端 → 审核决策台 → AI 检查单 → 时序校验
---
#### F-15 Brand Safety 软性风险提示
**功能描述:** 检测油腻、爹味说教、性别偏见等舆情风险。
**重要约束:** **仅作提示,不强制拦截**,需人工复核确认
**界面映射:** 代理商端 → 审核决策台 → AI 检查单 → 舆情雷达
---
#### F-16 分区审核规则
**功能描述:** 智能区分"广告段"与"剧情段",应用不同审核尺度。
**界面映射:** 代理商端 → 审核决策台
---
#### F-17 审核进度实时展示 ⭐ P0
**功能描述:** 在等待期间显示 AI 处理进度。
**展示示例:**
- 🔍 正在解析 Brief 核心卖点...
- 👁️ 正在逐帧检测竞品 Logo...
- 🧠 正在分析口播情感色彩...
**验收标准:** 报告产出时间 ≤ 5 分钟
**为什么是 P0** 视频上传+审核通常需要 3-5 分钟。如果 MVP 只有一个旋转的"Loading"图标而没有具体的文字进度,用户会以为死机了而关闭页面,导致用户流失。
**界面映射:** 达人端 → 智能上传页 → 透明思考 UI
---
#### F-18 时间戳修改清单
**功能描述:** 审核完成后提供带时间戳的修改清单。
**界面映射:** 达人端 → 审核结果页 → 修改清单
---
### 3.4 审核台与人工复核
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-19 | 风险列表展示 | P0 | US-08 | 代理商 |
| F-20 | 确认/驳回操作 | P0 | US-08 | 代理商 |
| F-21 | 强制通过权 | P1 | US-09 | 品牌方 |
| F-22 | 特例记录与白名单 | P1 | US-09 | 品牌方 |
| F-23 | 规则依据与证据查看 | P1 | US-08 | 代理商/品牌方 |
#### F-19 风险列表展示
**功能描述:** 审核台展示 AI 标记的风险点(红/黄/绿分级)与时间戳。
**风险等级:**
- 🔴 红色:硬性违规,必须处理
- 🟡 黄色:舆情风险,建议检查
- 🟢 绿色:合规/卖点识别
**界面映射:** 代理商端 → 审核决策台 → AI 检查单
---
#### F-20 确认/驳回操作
**功能描述:** 审核员只需点击确认或驳回,无需从头看视频。
**操作说明:**
- 驳回:自动将勾选的问题打包发送给达人
- 通过:流程结束
**界面映射:** 代理商端 → 审核决策台 → 决策栏
---
#### F-21 强制通过权
**功能描述:** 品牌方可手动放行过于保守的误报(如达人玩的新梗)。
**约束条件:**
- 必须填写放行原因
- 记录审批人与操作时间,纳入审计日志
**界面映射:** 代理商端 → 审核决策台 → 决策栏 → [强制通过]
---
#### F-22 特例记录与白名单
**功能描述:** 将当前判断记录为规则白名单/豁免条款。
**约束条件:**
- 需品牌方确认后生效
- 如需用于模型优化,必须确保数据授权与合规评估
**界面映射:**
- 代理商端 → 审核决策台 → 决策栏 → [记录为特例]
- 品牌方端 → 规则配置 → 特例记录
---
#### F-23 规则依据与证据查看
**功能描述:** 可查看每条结论的规则依据与证据片段。
**验收标准:** 每条结论包含规则版本、模型版本、证据截图/片段与时间戳
**界面映射:** 代理商端 → 审核决策台 → AI 检查单(点击展开详情)
---
### 3.5 申诉与仲裁
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-24 | 发起申诉 | P1 | - | 达人 |
| F-25 | 申诉令牌管理 | P1 | - | 系统 |
| F-26 | 人工仲裁 | P1 | - | 代理商 |
| F-27 | 申诉结果通知 | P1 | - | 达人 |
#### F-24 发起申诉
**功能描述:** 达人可对每条报错发起申诉。
**操作要求:**
- 提供理由输入框(必填,≥ 10 字)
- 可上传补充证据(截图、链接等)
- 消耗申诉令牌
**界面映射:** 达人端 → 审核结果页 → [申诉] 按钮
---
#### F-25 申诉令牌管理
**功能描述:** 基于达人信用评分分配令牌配额,申诉成功后令牌返还。
**规则说明:**
- 历史表现越好,配额越高
- 申诉成功后令牌自动返还
**界面映射:** 达人端 → 审核结果页 → 申诉弹窗(显示剩余令牌)
---
#### F-26 人工仲裁
**功能描述:** 代理商对申诉进行仲裁,记录仲裁结论。
**界面映射:** 代理商端 → 工作台 → 申诉待仲裁
---
#### F-27 申诉结果通知
**功能描述:** 申诉结果通过消息中心通知达人。
**通知文案:** "您的申诉已通过AI 已学习您的反馈。"
**界面映射:** 达人端 → 消息通知中心
---
### 3.6 版本比对与批量处理
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-28 | 版本差异报告 | P2 | US-13 | 代理商 |
| F-29 | 双屏同步播放 | P2 | US-13 | 代理商 |
| F-30 | 批量上传 | P2 | US-11 | 代理商 |
| F-31 | 批量审核 | P2 | US-11 | 代理商 |
| F-32 | 批量导出 | P2 | US-11 | 代理商 |
#### F-28 版本差异报告
**功能描述:** AI 明确告知"V1版本中指出的N个违规点有X个已修复Y个未修复"。
**展示示例:**
```
V1 版本指出 3 个违规点:✅ 已修复 2 个 | ❌ 未修复 1 个
```
**界面映射:** 代理商端 → 版本比对视窗 → 顶部统计摘要
---
#### F-29 双屏同步播放
**功能描述:** 左侧 V1右侧 V2 同步播放,点击条目可跳转到对应时间戳。
**界面映射:** 代理商端 → 版本比对视窗 → 双屏模式
---
#### F-30 批量上传
**功能描述:** 支持多文件拖拽上传 (Multi-file Drag & Drop),利用现代浏览器的并发上传能力。
**技术说明:**
- ~~原方案ZIP 压缩包上传~~ (已废弃)
- 新方案:多文件拖拽 + 并发上传
- 废弃原因ZIP 在 Web 端上传会带来带宽压力、超时断连风险及服务器解压算力消耗
**界面映射:** 代理商端 → 批量操作中心
---
#### F-31 批量审核
**功能描述:** 对无问题项批量通过(需二次确认)。
**界面映射:** 代理商端 → 批量操作中心
---
#### F-32 批量导出
**功能描述:** 一键导出选中任务的审核报告。
**导出格式:** Excel/PDF包含完整审核证据链
**界面映射:** 代理商端 → 批量操作中心 / 数据报表
---
### 3.7 数据看板与报表
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-33 | 核心指标卡片 | P0 | - | 品牌方 |
| F-34 | 趋势图表 | P1 | - | 品牌方 |
| F-35 | 风险预警 | P1 | - | 品牌方 |
| F-36 | 代理商绩效对比 | P1 | - | 品牌方 |
| F-37 | 达人排行榜 | P2 | - | 代理商 |
#### F-33 核心指标卡片
**功能描述:** 展示审核总量、初审通过率、硬性召回率、舆情拦截数、平均审核周期。
**界面映射:** 品牌方端 → 数据看板 → 顶部指标卡片
---
#### F-34 趋势图表
**功能描述:**
- 近 30 天审核量与通过率趋势
- 问题分布饼图(违禁词/竞品/舆情/卖点遗漏)
- 问题高发时段热力图
**界面映射:** 品牌方端 → 数据看板 → 可视化图表区
---
#### F-35 风险预警
**功能描述:** 实时预警异常情况。
**预警类型:**
- 🔴 紧急:竞品露出集中爆发
- 🟠 关注:达人连续未通过
- 🟡 舆情:舆情拦截数异常上升
**界面映射:** 品牌方端 → 数据看板 → 风险预警区
---
#### F-36 代理商绩效对比
**功能描述:** 柱状图对比各代理商的审核效率与通过率。
**界面映射:** 品牌方端 → 数据看板 → 代理商对比
---
#### F-37 达人排行榜
**功能描述:** 按通过率、响应速度对达人排名,预警问题达人。
**界面映射:** 代理商端 → 数据报表 → 达人维度
---
### 3.8 审计日志与证据导出
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-38 | 审核记录查询 | P1 | US-12 | 品牌方 |
| F-39 | 完整审核链路查看 | P1 | US-12 | 品牌方 |
| F-40 | 证据链 PDF 导出 | P1 | US-12 | 品牌方/代理商 |
#### F-38 审核记录查询
**功能描述:** 查看所有审核记录,支持高级筛选(时间/代理商/达人/结果)。
**界面映射:** 品牌方端 → 审计日志 → 列表视图
---
#### F-39 完整审核链路查看
**功能描述:** 点击任意记录查看完整审核链路包含原始视频、AI 报告、人工决策、申诉记录。
**界面映射:** 品牌方端 → 审计日志 → 详情页
---
#### F-40 证据链 PDF 导出
**功能描述:** 生成符合法务要求的 PDF 报告。
**报告内容:**
- 时间戳:所有操作的精确时间记录
- 截图AI 报错对应的视频截图
- 规则依据:触发的规则版本与具体条款
- 审核人:操作人身份与电子签名
- 规则版本号、模型版本号
- 完整操作日志(不可篡改)
**界面映射:** 品牌方端 → 审计日志 → 证据链导出
---
### 3.9 舆情预警中心
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-41 | 舆情风险视频监控 | P2 | US-06 | 品牌方 |
| F-42 | 舆情案例库 | P2 | - | 品牌方 |
| F-43 | 舆情阈值设置 | P1 | US-10 | 品牌方 |
#### F-41 舆情风险视频监控
**功能描述:** 近期被 AI 标记为"舆情风险"的视频列表,按风险等级排序。
**界面映射:** 品牌方端 → 舆情预警中心 → 实时监控
---
#### F-42 舆情案例库
**功能描述:** 历史舆情事件归档,作为培训素材供代理商学习。
**界面映射:** 品牌方端 → 舆情预警中心 → 案例库
---
#### F-43 舆情阈值设置
**功能描述:** 调整 AI 对"油腻"、"性感"、"争议话题"的敏感度,支持按平台差异化配置。
**重要约束:** 舆情风险仅作提示,不作为强制拦截依据
**界面映射:** 品牌方端 → 规则配置 → 舆情阈值设置
---
### 3.10 AI 闭环学习 (新增)
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-46 | 负样本清洗与回流 | P2 | - | 系统 |
---
### 3.11 系统管理 - AI 厂商配置 (V1.4 新增)
| 功能编号 | 功能名称 | 优先级 | 用户故事 | 使用角色 |
| --- | --- | --- | --- | --- |
| F-47 | AI 厂商动态配置 | P0 | - | 系统管理员 |
| F-48 | AI 厂商连通性测试 | P0 | - | 系统管理员 |
| F-49 | 多租户 AI 配置隔离 | P1 | - | 系统管理员/品牌方 |
| F-50 | API Key 轮换管理 | P1 | - | 系统管理员 |
#### F-47 AI 厂商动态配置 ⭐ P0
**功能描述:** 系统管理员可在后台配置多个 AI 厂商DeepSeek、OpenAI、通义千问、OneAPI 中转等),配置存储在数据库中,运行时动态加载,无需修改代码或重启服务。
**核心功能:**
- 支持添加、编辑、删除 AI 厂商配置
- 配置 Base URL、API Key加密存储、默认模型
- 为不同使用场景Brief 解析、脚本预审、视频审核)指定不同厂商
- 配置优先级和备用厂商(故障转移)
**为什么是 P0** 这是 AI 服务的基础设施,所有 AI 功能都依赖此配置。
**界面映射:** 系统管理后台 → AI 厂商管理
**技术文档:** 详见 [AIProviderConfig.md](./AIProviderConfig.md)
---
#### F-48 AI 厂商连通性测试
**功能描述:** 配置 AI 厂商后,可测试连通性,验证 API Key 是否有效。
**界面映射:** 系统管理后台 → AI 厂商管理 → [测试连通性]
---
#### F-49 多租户 AI 配置隔离
**功能描述:** 不同品牌方可配置独立的 AI 厂商,实现租户级别的配置隔离和配额管理。
**界面映射:** 品牌方后台 → 系统设置 → AI 配置
---
#### F-50 API Key 轮换管理
**功能描述:** 支持定期轮换 API Key无需重启服务即可生效。
**界面映射:** 系统管理后台 → AI 厂商管理 → [轮换密钥]
#### F-46 负样本清洗与回流 (Feedback Loop)
**功能描述:** 系统自动收集"人工驳回 AI 判定"的案例,清洗为微调数据集,用于后续模型优化。
**工作流程:**
1. 收集:记录所有"人工推翻 AI 判定"的案例
2. 清洗:过滤噪声数据,标注有效负样本
3. 回流:定期将清洗后的数据用于模型微调
4. 验证A/B 测试验证模型效果提升
**数据合规:**
- 需确保数据授权与合规评估
- 品牌方私有数据需单独授权
**界面映射:** 后台管理 → 模型优化 → 负样本管理
> 💡 **说明:** F-22 提到了"特例记录"F-27 提到了"AI 已学习您的反馈",但这只是前端文案。本功能是真正让 AI 变聪明的机制。
---
## 4. 功能优先级汇总
### 4.1 MVP (P0) - 必须实现
| 功能编号 | 功能名称 | 模块 | 备注 |
| --- | --- | --- | --- |
| F-01 | Brief 文档上传与解析 | Brief 管理 | |
| F-02 | 在线文档链接导入 | Brief 管理 | |
| F-03 | 平台规则库自动加载 | Brief 管理 | |
| F-04 | 区域合规规则切换 | Brief 管理 | |
| F-05-A | 基础黑白名单与竞品库 | Brief 管理 | ⭐ 从 F-05 拆分MVP 必须能防竞品 |
| F-07 | 文本脚本提交与预审 | 脚本预审 | |
| F-08 | 违规检测与修改建议 | 脚本预审 | |
| F-09 | 语境理解降低误报 | 脚本预审 | ⭐ P1→P0避免"人工智障"体验 |
| F-10 | 视频上传 | 视频审核 | |
| F-11 | 多模态联合检测 | 视频审核 | |
| F-12 | 竞品 Logo 检测 | 视频审核 | |
| F-13 | 违禁词口播检测 | 视频审核 | |
| F-14 | 时间戳风险标注 | 视频审核 | |
| F-45 | 时长与频次校验 | 视频审核 | ⭐ 新增,满足 Brief 硬性指标 |
| F-17 | 审核进度实时展示 | 视频审核 | ⭐ P1→P0缓解等待焦虑 |
| F-19 | 风险列表展示 | 审核台 | |
| F-20 | 确认/驳回操作 | 审核台 | |
| F-33 | 核心指标卡片 | 数据看板 | |
| F-47 | AI 厂商动态配置 | 系统管理 | ⭐ V1.3 新增AI 基础设施 |
| F-48 | AI 厂商连通性测试 | 系统管理 | ⭐ V1.3 新增 |
### 4.2 V1.1 (P1) - 首版后快速迭代
| 功能编号 | 功能名称 | 模块 | 备注 |
| --- | --- | --- | --- |
| F-05-B | 高级豁免规则配置 | Brief 管理 | 从 F-05 拆分 |
| F-06 | 规则版本管理与审计 | Brief 管理 | |
| F-15 | Brand Safety 软性风险提示 | 视频审核 | |
| F-16 | 分区审核规则 | 视频审核 | |
| F-18 | 时间戳修改清单 | 视频审核 | |
| F-21 | 强制通过权 | 审核台 | |
| F-22 | 特例记录与白名单 | 审核台 | |
| F-23 | 规则依据与证据查看 | 审核台 | |
| F-24~27 | 申诉与仲裁 | 申诉 | |
| F-34~36 | 趋势图表与预警 | 数据看板 | |
| F-38~40 | 审计日志与证据导出 | 审计 | |
| F-43 | 舆情阈值设置 | 舆情 | |
| F-49 | 多租户 AI 配置隔离 | 系统管理 | ⭐ V1.3 新增 |
| F-50 | API Key 轮换管理 | 系统管理 | ⭐ V1.3 新增 |
> ⚠️ **注意:** F-09 (语境理解) 和 F-17 (进度展示) 已提升至 P0
### 4.3 V2 (P2) - 中长期规划
| 功能编号 | 功能名称 | 模块 | 备注 |
| --- | --- | --- | --- |
| F-28~29 | 版本差异报告与双屏播放 | 版本比对 | |
| F-30~32 | 批量上传/审核/导出 | 批量处理 | F-30 改为多文件拖拽 |
| F-37 | 达人排行榜 | 数据报表 | |
| F-41~42 | 舆情监控与案例库 | 舆情 | |
| F-46 | 负样本清洗与回流 | AI 闭环 | ⭐ 新增,让 AI 真正学习 |
---
## 5. 角色-功能映射
| 功能模块 | 达人 | 代理商 | 品牌方 |
| --- | --- | --- | --- |
| Brief 管理 | 查看 | 上传/编辑 | 配置规则 |
| 脚本预审 | ✅ 提交 | 查看 | 查看 |
| 视频审核 | ✅ 上传 | 查看报告 | 查看报告 |
| 审核台 | ❌ | ✅ 初审 | ✅ 终审/强制通过 |
| 申诉 | ✅ 发起 | ✅ 仲裁 | ❌ |
| 版本比对 | ❌ | ✅ | ✅ |
| 批量处理 | ❌ | ✅ | ✅ |
| 数据看板 | 个人进度 | 项目/达人 | 全局 |
| 规则配置 | ❌ | ❌ | ✅ |
| 审计日志 | ❌ | 所管辖 | 全部 |
| 舆情预警 | ❌ | ❌ | ✅ |
---
## 6. 非功能性要求
| 类别 | 要求 |
| --- | --- |
| **可用性** | 月度可用性 ≥ 99.5%,支持灰度发布与快速回滚 |
| **性能** | 1080p、≤ 100MB 视频生成报告 ≤ 5 分钟(排队 ≤ 2 分钟) |
| **安全** | 传输与存储加密;基于角色权限控制;关键操作二次确认 |
| **隐私** | 数据最小化;默认保留 30 天;符合《个保法》与 GDPR |
| **数据本地化** | 国内客户数据存储于中国大陆境内服务器 |
| **审计** | 操作日志可审计且不可篡改 |
| **移动端适配** | **达人端(上传/查看报告)必须适配移动端 H5 竖屏操作** |
> ⚠️ **移动端适配说明:** 达人的工作场景多在拍摄现场(移动端),需要在手机上完成脚本上传、查看审核结果等操作。如果只做 PC 网页版,达人无法在拍摄现场即时使用,产品价值会大打折扣。
---
## 7. 合规约束
| 约束类型 | 说明 |
| --- | --- |
| **规则来源** | 必须基于公开法规、平台官方规则或品牌方授权的 Brief |
| **可解释性** | AI 不做黑盒决策,每条结论必须给出证据与规则依据 |
| **辅助决策** | 系统为"辅助工具",不直接触发平台处罚,最终责任由人工承担 |
| **软性风控边界** | 主观风险(油腻/爹味等)仅作提示,不强制拦截 |
| **数据隔离** | 品牌方 Brief 和私有数据严格隔离,不得用于训练通用模型 |
| **在线文档** | 仅支持用户授权的分享链接,不得绕过权限抓取 |
---
## 8. Out of Scope本期不做
为明确产品边界,以下功能**不在本期范围内**
| 序号 | 排除功能 | 说明 |
| --- | --- | --- |
| 1 | **视频剪辑工具** | 不提供在线剪辑功能,仅提供修改意见 |
| 2 | **支付与结算** | 不涉及品牌与达人的资金交易 |
| 3 | **发布后数据监测** | 不负责视频发布后的点赞/评论/转化数据分析 |
| 4 | **自动下架/投诉处理** | 不直接触发平台处罚或下架动作,系统定位为"辅助工具" |
| 5 | **直播流/实时切片审核** | 本期仅支持离线上传视频文件,不支持直播流的实时接入与毫秒级审核 |
---
## 9. 验收标准 (Acceptance Criteria)
产品上线前必须满足以下验收标准:
| 验收项 | 标准 | 测量方式 |
| --- | --- | --- |
| **Brief 解析准确率** | 图文混排 PDF Brief 提取准确率 **> 90%** | 标注测试集评估 |
| **竞品 Logo 检测** | 画面角落遮挡 30% 的竞品 LogoF1 **≥ 0.85** | 标注测试集评估 |
| **语义理解误报率** | 广告极限词与非广告语境区分误报率 **≤ 5%** | 样本量 ≥ 1,000 句 |
| **ASR 字错率** | 普通话 + 主流方言字错率 **≤ 10%** | 标注测试集评估 |
| **OCR 准确率** | 含复杂背景字幕准确率 **≥ 95%** | 标注测试集评估 |
| **审核报告产出时间** | 100MB 以内视频,报告产出时间 **≤ 5 分钟** | 系统埋点统计 |
| **审计链路完整性** | 每条结论包含规则版本、模型版本、证据截图/片段与时间戳 | 人工抽查验证 |
---
## 10. 相关文档
| 文档名称 | 说明 |
| --- | --- |
| RequirementsDoc.md | 业务需求文档(用户故事、成功指标) |
| PRD.md | 产品需求文档(功能需求、技术架构) |
| User_Role_Interfaces.md | 用户角色与界面规范 |
| **AIProviderConfig.md** | **AI 厂商动态配置架构设计V1.3 新增)** |
| 技术设计文档 (TDD) | 待编写 |
| API 接口规范 | 待编写 |
| 数据字典 | 待编写 |
| 测试计划 | 待编写 |

402
PRD.md Normal file
View File

@ -0,0 +1,402 @@
# PRD.md - 智能视频合规审核系统
| 文档类型 | **PRD (Product Requirement Document)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V1.0 |
| **发布日期** | 2026-01-30 |
| **状态** | 草稿 (Draft) |
| **负责人** | 产品经理 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V0.1 | 2026-01-30 | - | 基于 RequirementsDoc.md 产出首版 PRD |
| V0.2 | 2026-01-30 | ClaudeCode | 根据 RD 审阅修订:补充技术架构、术语定义、用户故事引用、品牌方工作流 |
| V0.3 | 2026-01-30 | Codex | 合规一致性修订:补充一致性定义、软性风控提示边界与特例记录规范 |
| V0.4 | 2026-01-30 | Claude | 审阅调整:补充产品愿景与量化目标、假设与约束章节、细化背景数据 |
| V1.0 | 2026-02-02 | Claude | 新增 AI 厂商动态配置架构引用 |
---
## 1. 背景与目标 (Background & Goals)
### 1.1 背景
品牌短视频投放已成主流,但当前人工审核存在严重瓶颈:
1. **效率低下:** 人工审核一条 3 分钟视频+对比 Brief 平均耗时 15-20 分钟,且需反复修改 3-5 轮
2. **标准不一:** 不同审核员对"品牌调性"理解不同,导致达人无所适从
3. **风险高企:** 人工疲劳导致漏判(如竞品露出、边缘违禁词),极易引发公关危机
### 1.2 产品愿景
打造一款**基于多模态大模型的 B2B SaaS 审核工具**。系统定位为**"智能预审员"**,在人工介入前**自动化拦截 80% 的基础错误和合规风险**,将审核流转周期从"天"缩短到"小时"。
### 1.3 目标
- 建立可复用的多模态审核能力,实现文本、语音、画面一致审核
- 在保持合规的前提下,将审核周期从天级缩短至小时级
- 形成可审计、可申诉、可追溯的审核证据链
### 1.4 非目标 (Non-Goals)
- 不提供视频剪辑或制作工具。
- 不涉及支付与结算。
- 不负责发布后数据监测。
- 不支持直播流实时审核。
- 不自动触发平台处罚或下架动作。
---
## 2. 术语与定义 (Glossary)
| 术语 | 定义 |
| --- | --- |
| Brief | 品牌投放要求文件,包含卖点、禁忌、话术、素材规范等 |
| 违禁词库 | 平台与法律合规要求的规则集合(含极限词、功效词、敏感话题等) |
| 初审通过率 | 仅经过 AI 预审后一次性通过的比例(不进入人工返工) |
| 召回率/误报率 | 在标注测试集中识别到"确实违规"的比例 / 误判为违规的比例 |
| Brand Safety | 涉及价值观、偏见、歧视、舆情争议等非硬性违规风险 |
| 一致性 | 软性风控结论与人工复核结论一致的比例(以人工复核为基准) |
| 版本比对 (Diff) | 针对同一任务的不同版本视频,自动识别修改点和未修改点的能力 |
---
## 3. 成功指标 (Success Metrics)
| 指标类别 | 指标名称 | 目标值 | 测量方式 | 责任方 |
| --- | --- | --- | --- | --- |
| 效率 | 单条视频人工投入时长 | 从 20 分钟降至 ≤ 5 分钟 | 系统埋点统计30 天样本) | 产品经理 |
| 质量 | AI 脚本预审后首次通过率 | 提升 ≥ 30% | 对比上线前 30 天基线 | 算法团队 |
| 硬性召回 | 违禁词/竞品 Logo 召回率 | ≥ 95% | 标注测试集评估 | 算法团队 |
| 硬性误报 | 违禁词/竞品 Logo 误报率 | ≤ 5% | 标注测试集评估 | 算法团队 |
| 软性一致性 | 舆情/价值观判断一致性 | ≥ 80% | 人工复核抽样比对 | 运营团队 |
| 用户满意度 | 代理商 NPS | 提升 ≥ 10 分 | 季度问卷调研 | 客户成功 |
**基线数据采集计划:** 上线前 30 天内完成现有流程的数据埋点,建立各项指标的基线值。
---
## 4. 目标用户与核心场景 (Personas & Key Scenarios)
### 4.1 用户角色
| 角色 | 描述 | 核心动机 | 典型行为 |
| --- | --- | --- | --- |
| **品牌方 MKT (Brand)** | 甲方市场部负责人,对内容安全负最终责任 | **安全第一**:宁可错杀,不可放过 | 下达 Brief抽查视频处理争议 |
| **代理商媒介 (Agency)** | 连接品牌与达人的中间方,系统高频使用者 | **效率至上**:快速过审,减少沟通成本 | 上传 Brief初审任务仲裁 |
| **达人/KOL (Creator)** | 内容创作者,系统的被审核端 | **通过率与结算**:希望反馈明确 | 上传脚本/视频,查看报告,申诉 |
### 4.2 核心场景与优先级
> 引用 RequirementsDoc.md 用户故事编号
**P0MVP 必须实现)**
- Brief 上传解析与规则提取 → [US-01]
- 平台规则库加载 → [US-02]
- 脚本预审 → [US-03]
- 视频自动审核(竞品、违禁词、画面风险) → [US-05]
- 审核台风险打点与确认/驳回 → [US-08]
**P1首版发布后快速迭代**
- 语境理解降低误报 → [US-04]
- Brand Safety 软性风险提示 → [US-06]
- 审核进度展示与时间戳修改清单 → [US-07]
- 强制通过权与特例记录 → [US-09]
- 品牌私有规则管理与版本记录 → [US-10]
- 证据链导出 → [US-12]
**P2中长期规划**
- 批量上传/导出 → [US-11]
- 版本差异报告 → [US-13]
---
## 5. 产品范围 (Scope)
### 5.1 In Scope
- **全能文档解析引擎:** 支持 PDF/Word/Excel/PPT/图片/在线链接 的 Brief 自动解析与规则结构化
- **多模态审核核心:** 包含 NLP (文本/语义)、ASR (语音)、OCR (字幕)、CV (画面/物体) 综合检测能力
- **分区执法逻辑:** 智能区分"广告段"与"剧情段",应用不同审核尺度
- **舆情风控雷达:** 针对"油腻感"、"价值观风险"、"错别字"的专项检测
- **交互式审核台:** 支持时间戳打点、风险高亮、版本比对 (Diff) 的 Web 界面
- **信用与申诉体系:** 包含申诉令牌管理和人工仲裁流程
- **规则库管理与版本控制:** 支持平台规则库更新、品牌私有规则与白名单配置
- **权限与多租户隔离:** 支持品牌/代理/达人不同角色的权限与数据隔离
- **审计日志与报告导出:** 支持导出可追溯的审核证据链
### 5.2 Out of Scope
- 视频剪辑工具:不提供在线剪辑功能,仅提供修改意见
- 支付与结算:不涉及品牌与达人的资金交易
- 发布后数据监测:不负责视频发布后的点赞/评论/转化数据分析
- 自动下架/投诉处理:不直接触发平台处罚或下架动作
- 直播流/实时切片审核:本期仅支持离线上传视频文件
---
## 6. 功能需求 (Functional Requirements)
> 说明:以下以模块划分,标注优先级 (P0/P1/P2),并引用 RD 用户故事编号。
### 6.1 Brief 与规则管理 [US-01, US-02, US-10]
**P0**
- 支持 PDF/Word/Excel/PPT/图片上传与解析
- 支持已授权在线文档链接导入(如飞书/Notion分享链接
- **重要约束**:仅支持用户授权的分享链接;不得绕过权限或抓取受限内容
- 自动提取核心卖点、禁忌词、品牌调性要求
- 平台规则库按投放平台抖音、小红书、B站等自动加载并校验冲突
- **区域合规支持**:不同地区投放需切换对应法规与平台规则版本
**P1**
- 品牌私有规则管理(禁用词、白名单、竞品列表)
- 规则版本管理与变更审计(可追溯的变更记录)
**验收要点**
- 图文混排 Brief 解析准确率 > 90%
- 规则冲突提示清晰可追溯
### 6.2 脚本预审 (Pre-production) [US-03, US-04]
**P0**
- 支持文本脚本提交与预审
- 输出违规项、遗漏卖点、建议修改
- 帮助达人在拍摄前发现问题,避免拍完重拍的沉没成本
**P1**
- 语境理解降低误报(区分广告语境与日常语境)
- 例如:不应将"最开心的一天"误判为广告极限词违规
**验收要点**
- 广告极限词与非广告语境的区分误报率 ≤ 5%(样本量 ≥ 1,000 句)
### 6.3 视频智能审核 (Post-production) [US-05, US-06, US-07]
**P0**
- 支持视频上传(≤ 100MB1080p
- ASR/OCR/CV 联合检测
- 检测竞品 Logo、不雅背景、违禁词口播
- 输出时间戳级别的风险点(精确到秒数)
**P1**
- Brand Safety 软性风险提示(油腻、爹味说教、性别偏见等)
- **仅提示不强制拦截**,需人工复核确认
- 广告段/剧情段分区审核规则
- **审核进度展示**:在等待期间显示 AI 处理进度(如"正在核对口播..."
- 审核完成后提供带时间戳的修改清单
**验收要点**
- 竞品 Logo F1 ≥ 0.85(含画面角落遮挡 30% 场景)
- ASR 字错率 ≤ 10%(普通话 + 主流方言)
- OCR 准确率 ≥ 95%(含复杂背景)
- 报告产出时间 ≤ 5 分钟
### 6.4 审核台与人工复核 [US-08, US-09]
**P0**
- 审核台展示风险列表(红/黄/绿分级)与时间戳
- 支持确认/驳回操作,无需从头看视频
**P1**
- 品牌方"强制通过权":可手动放行过于保守的误报(需记录原因与审批人)
- 支持将特例记录为规则白名单/豁免条款(需品牌方确认)
- 如需用于模型优化,必须确保数据授权与合规评估
- 可查看规则依据与证据片段
**验收要点**
- 每条结论包含规则版本、模型版本、证据截图/片段与时间戳
### 6.5 申诉与仲裁
**P1**
- 申诉令牌管理与工单流转
- 人工仲裁流程与记录
- 审计日志完整可追溯
### 6.6 版本差异与批量处理 [US-11, US-13]
**P2**
- **新旧版本差异报告**AI 明确告知"V1版本中指出的N个违规点有X个已修复Y个未修复"
- 批量上传与批量导出审核报告
---
## 7. 关键流程 (Key User Flows)
### 7.1 品牌方工作流
1. 制定并下达 Brief 投放要求
2. 配置品牌私有规则(禁用词、竞品列表、白名单)
3. 抽查最终视频审核报告
4. 处理严重争议与风险决策
5. 行使"强制通过权"处理误报
6. 导出审核证据链用于合规归档
### 7.2 代理商工作流
1. 创建任务并上传 Brief
2. 系统解析 Brief 并生成规则集
3. 创建达人任务并发起脚本预审
4. 达人上传视频,系统自动审核
5. 审核员在审核台确认/驳回(基于红/黄/绿风险标记)
6. 进行人工仲裁(如有争议)
7. 导出报告与证据链
### 7.3 达人工作流
1. 上传脚本进行预审
2. 根据建议修改并提交视频
3. 查看 AI 审核进度(如"正在核对口播..."
4. 收到带时间戳的修改清单
5. 触发申诉或修改再提交
---
## 8. 权限与多租户 (Permissions)
| 角色 | 可见范围 | 关键权限 |
| --- | --- | --- |
| 品牌方 | 品牌内任务与规则 | 强制通过、规则管理、报告导出、私有规则配置 |
| 代理商 | 代理商管理范围 | 任务创建、审核确认/驳回、批量处理、人工仲裁 |
| 达人 | 自己的任务 | 上传脚本/视频、查看报告、申诉 |
---
## 9. 数据与审计 (Data & Audit)
### 9.1 核心对象
- **任务**:品牌、代理、达人、投放平台、版本号
- **Brief**:原始文件、解析结构化内容
- **规则集**:平台规则 + 品牌私有规则 + 白名单 + 规则版本记录
- **审核记录**:风险项、时间戳、证据片段、风险等级(红/黄/绿)
- **人工决策**:确认/驳回/强制通过 + 操作人 + 操作时间
- **申诉记录**:申诉原因、仲裁结论、令牌消耗
### 9.2 审计要求 [US-12]
- 全流程日志可追溯、不可篡改
- 导出报告包含规则版本、模型版本、证据截图/片段与时间戳
- 支持争议场景下完整审核证据链导出
---
## 10. 非功能性需求 (NFR)
- **可用性**:月度可用性 ≥ 99.5%,支持灰度发布与快速回滚
- **性能**1080p、≤ 100MB 视频生成报告 ≤ 5 分钟(排队时间不超过 2 分钟)
- **安全**:传输与存储加密;基于角色的权限控制;关键操作二次确认
- **隐私**:数据最小化访问;默认保留原始视频/报告 30 天,可按品牌配置延长或缩短
- **合规**:符合《个人信息保护法》与 GDPR支持数据导出/删除;明确告知数据用途
- **数据本地化**:国内客户数据存储于中国大陆境内服务器;跨境传输需用户明示同意并符合监管要求
- **操作日志**:可审计且不可篡改
---
## 11. 假设与约束 (Assumptions & Constraints)
- **技术约束:** 视频处理极其消耗算力,需接受"非实时"反馈(深度审核需 1-3 分钟延迟)
- **数据隐私:** 品牌方的 Brief 和私有数据必须严格隔离,不得用于训练通用模型
- **平台依赖:** 若抖音/小红书的审核规则发生重大变更,系统需在一个工作日内更新规则库
- **规则来源:** 具体合规规则由品牌/法务提供并确认,平台规则以官方公告为准
- **在线文档接入:** 仅支持用户授权的分享链接;不得绕过权限或抓取受限内容
- **区域合规:** 不同地区投放需切换对应法规与平台规则版本
---
## 12. 合规原则与风控 (Compliance)
- **规则来源合法**:所有审核标准均需基于公开法律法规、平台官方规则或品牌方授权的私有 Brief不得未经授权抓取或绕过登录限制
- **可解释与可申诉**AI 不做黑盒决策,每条结论必须给出证据片段与规则依据,并支持申诉与人工仲裁
- **数据授权与最小化**:训练与评测数据需确保授权合规;默认最小化留存,过期自动清理
- **辅助决策定位**:系统明确定义为"辅助工具",不直接触发下架、投诉或平台处罚动作,最终责任由人工操作员承担
- **偏见与歧视控制**:涉及主观评价的模型需经过偏见评估与定期复核,确保结论可解释且可追溯
- **软性风控边界**:主观风险仅作提示,不作为强制拦截依据
---
## 13. 技术架构概述 (Technical Architecture Overview)
> 详细架构见技术设计文档
```
┌─────────────────────────────────────────────────────────────────┐
│ 用户接入层 │
│ Web Dashboard │ API Gateway │ 飞书/企微机器人 │ SDK │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ 业务服务层 │
│ Brief 解析服务 │ 脚本预审服务 │ 视频审核服务 │ 规则管理服务 │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ AI 能力层 │
│ 多模态 LLM │ ASR 引擎 │ OCR 引擎 │ CV 检测 │ 向量检索 │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ 数据与存储层 │
│ 对象存储 (视频/图片) │ 关系数据库 │ 向量数据库 │ 消息队列 │
└─────────────────────────────────────────────────────────────────┘
```
**核心技术依赖:**
- **多模态大模型**用于语义理解、Brief 解析、舆情判断
- **ASR/OCR**:支持普通话及主流方言的语音识别,支持复杂背景字幕识别
- **计算机视觉**Logo 检测、物体识别、场景分类
- **消息队列**:异步处理视频审核任务,支持优先级调度
- **AI 厂商动态配置**:支持在数据库中配置多个 AI 厂商DeepSeek/OpenAI/OneAPI 等),运行时动态加载,支持多租户隔离和故障转移(详见 AIProviderConfig.md
---
## 14. 里程碑与发布计划 (Milestones)
- **MVP (P0)**Brief 解析、规则加载、脚本预审、视频审核、审核台
- **V1.1 (P1)**Brand Safety 提示、规则版本、证据链导出、强制通过权、审核进度展示
- **V2 (P2)**:批量处理、版本差异报告
---
## 15. 风险与开放问题 (Open Questions)
| 问题 | 详细描述 | 建议解决方向 | 决策责任人 |
| --- | --- | --- | --- |
| 规则迭代频率 | 平台规则变更频繁,如何确保及时同步? | 建立官方公告订阅 + 人工值班巡检SLA ≤ 1 工作日 | 运营负责人 |
| 训练数据来源 | 标注成本高、数据授权复杂、敏感数据脱敏 | 优先使用品牌方授权的历史审核数据,建立数据脱敏 Pipeline | 算法 + 法务 |
| 舆情判断边界 | "油腻/爹味"等主观标签由谁最终定义? | 建立"品牌方确认"机制,软性风控仅作提示,不作为强制拦截 | 产品经理 |
| 多语言支持 | 海外投放需支持英语、日语等 | 本期仅支持中文(普通话 + 主流方言),多语言作为 V2 规划 | 产品经理 |
| 模型幻觉风险 | LLM 可能产生不准确的审核结论 | 关键判断必须提供证据片段,人工复核覆盖高风险内容 | 算法团队 |
| 定价与商业模式 | 按视频条数、时长还是座席收费? | 待商业化团队确定,技术架构需支持多种计费维度 | 商业化负责人 |
---
## 16. 相关文档 (References)
- RequirementsDoc.md - 业务需求文档
- **AIProviderConfig.md - AI 厂商动态配置架构设计**
- 技术设计文档 (TDD) - 待编写
- API 接口规范 - 待编写
- 数据字典 - 待编写
- 测试计划 - 待编写
---
## 17. 缩略语 (Abbreviations)
| 缩略语 | 全称 | 说明 |
| --- | --- | --- |
| ASR | Automatic Speech Recognition | 自动语音识别 |
| OCR | Optical Character Recognition | 光学字符识别 |
| CV | Computer Vision | 计算机视觉 |
| NLP | Natural Language Processing | 自然语言处理 |
| LLM | Large Language Model | 大语言模型 |
| NPS | Net Promoter Score | 净推荐值 |
| SLA | Service Level Agreement | 服务级别协议 |
| GDPR | General Data Protection Regulation | 通用数据保护条例(欧盟) |

261
RequirementsDoc.md Normal file
View File

@ -0,0 +1,261 @@
# RequirementsDoc.md - 智能视频合规审核系统
| 文档类型 | **RD (Requirements Document)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V1.0 |
| **发布日期** | 2026-01-30 |
| **状态** | **修订 (Revised)** |
| **侧重** | 商业背景、用户价值、用户故事、成功指标 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V0.1 | 2026-01-30 | - | 初稿创建 |
| V0.2 | 2026-01-30 | Gemini | 修订用户故事、成功指标 |
| V0.3 | 2026-01-30 | Codex | 优化合规建议 |
| V1.0 | 2026-01-30 | Claude | 综合审核:增加优先级、技术架构、合规细化 |
---
## 1. 业务背景与市场机会 (Business Context)
### 1.1 市场现状
随着短视频营销TikTok, 小红书, B站成为品牌投放的主流阵地品牌方每年需要审核数千甚至数万条达人视频。目前的审核流程存在严重瓶颈
1. **效率低下:** 人工审核一条 3 分钟视频+对比 Brief 平均耗时 15-20 分钟,且需反复修改 3-5 轮。
2. **标准不一:** 不同审核员对“品牌调性”理解不同,导致达人无所适从。
3. **风险高企:** 人工疲劳导致漏判(如竞品露出、边缘违禁词),极易引发公关危机。
### 1.2 核心痛点
* **对于品牌方:** 害怕由于达人“口无遮拦”或“价值观不当”导致品牌翻车。
* **对于代理商:** 深陷于“传话筒”困境大量人力浪费在检查错别字、Brief 对齐等低价值工作上。
* **对于达人:** 痛恨模糊的反馈(如“感觉不对”),希望获得即时、明确的修改指令,以便尽快结算。
### 1.3 产品愿景
打造一款**基于多模态大模型的 B2B SaaS 审核工具**。它不是要取代人工,而是作为**“智能预审员”**,在人工介入前自动化拦截 80% 的基础错误和合规风险,将审核流转周期从“天”缩短到“小时”。
---
## 2. 术语与定义 (Glossary)
* **Brief** 品牌投放要求文件,包含卖点、禁忌、话术、素材规范等。
* **违禁词库:** 平台与法律合规要求的规则集合(含极限词、功效词、敏感话题等)。
* **初审通过率:** 仅经过 AI 预审后一次性通过的比例(不进入人工返工)。
* **召回率/误报率:** 在标注测试集中,系统识别到“确实违规”的比例 / 误判为违规的比例。
* **Brand Safety** 涉及价值观、偏见、歧视、舆情争议等非硬性违规风险。
* **一致性:** 软性风控结论与人工复核结论一致的比例(以人工复核为基准)。
* **版本比对 (Diff)** 针对同一任务的不同版本视频,自动识别修改点和未修改点的能力。
---
## 3. 用户角色 (Personas)
| 角色 | 描述 | 核心动机 (Motivation) | 典型行为 |
| --- | --- | --- | --- |
| **品牌方 MKT (Brand)** | 甲方市场部负责人,对内容安全负最终责任。 | **安全第一**。宁可错杀,不可放过;维护品牌高端形象。 | 下达 Brief抽查最终视频处理严重争议。 |
| **代理商媒介 (Agency)** | 连接品牌与达人的中间方,系统的高频使用者。 | **效率至上**。希望快速过审,减少沟通成本,同时管理上百个达人。 | 上传 Brief初审达人作业进行仲裁。 |
| **达人/KOL (Creator)** | 内容创作者,系统的被审核端。 | **通过率与结算**。希望反馈明确,不要反复折腾。 | 上传脚本/视频,查看报错,申诉,修改。 |
---
## 4. 用户故事 (User Stories)
我们将需求拆解为具体的场景故事,以确保功能设计满足真实业务流。
### 4.1 场景一:任务启动与规则定义
* **[US-01] [P0]** 作为 **代理商**,我希望能够直接上传各种格式的原始 BriefPDF扫描件、Excel分镜表、Word文档**以及已授权的在线文档链接(如飞书/Notion分享链接**,让系统自动提取出"核心卖点"和"禁忌词",无需手动录入。
* **[US-02] [P0]** 作为 **品牌方**,我希望系统能自动根据投放平台(如抖音、小红书)加载最新的平台违禁词库,确保 Brief 的要求不违反平台底线。
### 4.2 场景二:脚本预审 (Pre-production)
* **[US-03] [P0]** 作为 **达人**,我希望在拍摄前先提交文字脚本进行预审,让系统帮我检查是否遗漏了卖点或触犯了广告法,避免拍完重拍的巨大沉没成本。
* **[US-04] [P1]** 作为 **达人**,我希望审核系统能"读懂上下文",不要因为我在讲故事时说了"最开心的一天"就报"广告极限词违规",减少对创作的干扰。
### 4.3 场景三:视频智能审核 (Post-production)
* **[US-05] [P0]** 作为 **代理商**,我希望系统能自动检测视频画面中是否出现了"竞品Logo"或"不雅背景",并精确到秒数标出来,因为人工肉眼看视频很容易走神漏掉。
* **[US-06] [P1]** 作为 **品牌方**,我希望系统具备"舆情敏感度",能提示达人视频中是否存在"油腻"、"爹味说教"或"性别偏见"的内容帮助我规避潜在的公关风险Brand Safety
* **[US-07] [P1]** 作为 **达人**,我希望在视频上传后的等待期间能看到 AI 的处理进度(如"正在核对口播..."),并在审核完成后收到一份带时间戳的修改清单。
### 4.4 场景四:人工复核与决策
* **[US-08] [P0]** 作为 **代理商审核员**,我希望在审核台看到 AI 已经标记好的风险点(红/黄/绿),我只需要点击确认或驳回,而不是从头把视频看一遍。
* **[US-09] [P1]** 作为 **品牌方**,我希望拥有"强制通过权",当 AI 因为过于保守而报错(例如达人玩了一个很新的梗)时,我可以手动放行,并让系统记住这个特例。
### 4.5 场景五:规则运营与审计
* **[US-10] [P1]** 作为 **品牌方合规/法务**,我希望能配置"品牌私有规则"(如禁用词、竞品列表、白名单),并且对规则版本做可追溯的变更记录。
* **[US-11] [P2]** 作为 **代理商**,我希望支持批量上传与批量导出审核报告,便于一次处理多条达人任务。
* **[US-12] [P1]** 作为 **品牌方**,我希望在争议发生时能导出完整的审核证据链(时间戳、截图、规则依据、审核人)。
### 4.6 场景六:版本迭代与比对
* **[US-13] [P2]** 作为 **代理商**,当达人上传修改版视频 (V2) 时,我希望看到 **"新旧版本差异报告"**AI 明确告知"V1版本中指出的3个违规点有2个已修复1个未修复",从而极大缩短复审时间。
> **优先级说明:** P0 = MVP必须实现P1 = 首版发布后快速迭代P2 = 中长期规划
---
## 5. 成功指标 (Success Metrics / KPIs)
如果项目上线后达到以下指标,视为成功:
| 指标类别 | 指标名称 | 目标值 | 测量方式 | 责任方 |
| --- | --- | --- | --- | --- |
| **效率 (Efficiency)** | 单条视频人工投入时长 | 从 20 分钟降至 **≤ 5 分钟** | 系统埋点统计30 天样本) | 产品经理 |
| **质量 (Quality)** | AI 脚本预审后首次通过率 | 提升 **≥ 30%** | 对比上线前 30 天基线 | 算法团队 |
| **硬性召回 (Hard Rules)** | 违禁词/竞品 Logo 召回率 | **≥ 95%** | 标注测试集评估 | 算法团队 |
| **硬性误报 (Hard Rules)** | 违禁词/竞品 Logo 误报率 | **≤ 5%** | 标注测试集评估 | 算法团队 |
| **软性一致性 (Soft Sentiment)** | 舆情/价值观判断一致性 | **≥ 80%** | 人工复核抽样比对 | 运营团队 |
| **用户满意度 (NPS)** | 代理商 NPS | 提升 **≥ 10 分** | 季度问卷调研 | 客户成功 |
**基线数据采集计划:** 上线前 30 天内完成现有流程的数据埋点,建立各项指标的基线值。
---
## 6. 高层功能列表 (High-Level Features)
### ✅ In Scope (核心功能)
1. **全能文档解析引擎:** 支持 PDF/Word/Excel/PPT/图片/在线链接 的 Brief 自动解析与规则结构化。
2. **多模态审核核心:** 包含 NLP (文本/语义)、ASR (语音)、OCR (字幕)、CV (画面/物体) 综合检测能力。
3. **分区执法逻辑:** 智能区分“广告段”与“剧情段”,应用不同的审核尺度。
4. **舆情风控雷达:** 针对“油腻感”、“价值观风险”、“错别字”的专项检测模型。
5. **交互式审核台:** 支持时间戳打点、风险高亮、版本比对 (Diff) 的 Web 界面。
6. **信用与申诉体系:** 包含申诉令牌管理和人工仲裁流程。
7. **规则库管理与版本控制:** 支持平台规则库更新、品牌私有规则与白名单配置。
8. **权限与多租户隔离:** 支持品牌/代理/达人不同角色的权限与数据隔离。
9. **审计日志与报告导出:** 支持导出可追溯的审核证据链。
### ❌ Out of Scope (本期不做)
1. **视频剪辑工具:** 不提供在线剪辑功能,仅提供修改意见。
2. **支付与结算:** 不涉及品牌与达人的资金交易。
3. **发布后数据监测:** 不负责视频发布后的点赞/评论/转化数据分析。
4. **自动下架/投诉处理:** 不直接触发平台处罚或下架动作。
5. **直播流/实时切片审核:** 本期仅支持离线上传视频文件,不支持直播流的实时接入与毫秒级审核。
---
## 7. 假设与约束 (Assumptions & Constraints)
* **技术约束:** 视频处理极其消耗算力,需接受“非实时”反馈(深度审核需 1-3 分钟延迟)。
* **数据隐私:** 品牌方的 Brief 和私有数据必须严格隔离,不得用于训练通用模型。
* **平台依赖:** 若抖音/小红书的审核规则发生重大变更,系统需在一个工作日内更新规则库。
* **规则来源:** 具体合规规则由品牌/法务提供并确认,平台规则以官方公告为准。
* **在线文档接入:** 仅支持用户授权的分享链接;不得绕过权限或抓取受限内容。
* **区域合规:** 不同地区投放需切换对应法规与平台规则版本。
---
## 7.1 技术架构概述 (Technical Architecture Overview)
本节仅为高层技术选型参考,详细架构见技术设计文档。
```
┌─────────────────────────────────────────────────────────────────┐
│ 用户接入层 │
│ Web Dashboard │ API Gateway │ 飞书/企微机器人 │ SDK │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ 业务服务层 │
│ Brief 解析服务 │ 脚本预审服务 │ 视频审核服务 │ 规则管理服务 │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ AI 能力层 │
│ 多模态 LLM │ ASR 引擎 │ OCR 引擎 │ CV 检测 │ 向量检索 │
└────────────────────────────┬────────────────────────────────────┘
┌────────────────────────────▼────────────────────────────────────┐
│ 数据与存储层 │
│ 对象存储 (视频/图片) │ 关系数据库 │ 向量数据库 │ 消息队列 │
└─────────────────────────────────────────────────────────────────┘
```
**核心技术依赖:**
* **多模态大模型:** 用于语义理解、Brief 解析、舆情判断
* **ASR/OCR** 支持普通话及主流方言的语音识别,支持复杂背景字幕识别
* **计算机视觉:** Logo 检测、物体识别、场景分类
* **消息队列:** 异步处理视频审核任务,支持优先级调度
* **AI 厂商动态配置:** 支持在数据库中配置多个 AI 厂商DeepSeek/OpenAI/OneAPI 等),运行时动态加载,支持多租户隔离和故障转移(详见 AIProviderConfig.md
---
## 8. 非功能性需求 (Non-Functional Requirements)
* **可用性:** 月度可用性 ≥ 99.5%,支持灰度发布与快速回滚。
* **性能:** 1080p、≤ 100MB 视频生成报告 ≤ 5 分钟(排队时间不超过 2 分钟)。
* **安全:** 传输与存储加密;基于角色的权限控制;关键操作二次确认。
* **数据保留:** 默认保留原始视频/报告 30 天,可按品牌配置延长或缩短。
* **合规与隐私:** 支持数据脱敏与最小化访问;操作日志可审计且不可篡改。
* **个人信息保护:** 符合《个人信息保护法》及 GDPR 要求;用户数据可导出、可删除;明确告知数据用途。
* **数据本地化:** 国内客户数据存储于中国大陆境内服务器;跨境传输需用户明示同意并符合监管要求。
---
## 9. 验收标准 (Acceptance Criteria)
* **Brief 解析:** 能够正确解析包含图文混排的 PDF Brief提取准确率 > 90%。
* **多模态检测:** 在标注测试集中,系统能识别画面角落里遮挡 30% 的竞品 LogoF1 ≥ 0.85。
* **语义理解:** 对广告极限词与非广告语境的区分误报率 ≤ 5%(样本量 ≥ 1,000 句)。
* **ASR/OCR:** 普通话 ASR 字错率 ≤ 10%,字幕 OCR 字准确率 ≥ 95%(含复杂背景)。
* **性能:** 100MB 以内的视频上传后AI 预审报告产出时间不超过 5 分钟。
* **审计链路:** 每条结论包含规则版本、模型版本、证据截图/片段与时间戳。
---
## 10. 风险与合规原则 (Risks & Compliance Principles)
### 10.1 系统合规性原则
* **规则来源合法:** 所有审核标准均需基于公开法律法规、平台官方规则或品牌方授权的私有 Brief不得未经授权抓取或绕过登录限制。
* **可解释与可申诉:** AI 不做黑盒决策,每条结论必须给出证据片段与规则依据,并支持申诉与人工仲裁。
* **数据授权与最小化:** 训练与评测数据需确保授权合规;默认最小化留存,过期自动清理。
* **辅助决策定位:** 系统明确定义为“辅助工具”,不直接触发下架、投诉或平台处罚动作,最终责任由人工操作员承担。
* **偏见与歧视控制:** 涉及主观评价的模型需经过偏见评估与定期复核,确保结论可解释且可追溯。
### 10.2 开放问题 (Open Questions)
| 问题 | 详细描述 | 建议解决方向 | 决策责任人 |
| --- | --- | --- | --- |
| **规则迭代频率** | 平台规则变更频繁,如何确保及时同步? | 建立官方公告订阅 + 人工值班巡检SLA ≤ 1 工作日 | 运营负责人 |
| **训练数据来源** | 标注成本高、数据授权复杂、敏感数据脱敏 | 优先使用品牌方授权的历史审核数据,建立数据脱敏 Pipeline | 算法 + 法务 |
| **舆情判断边界** | "油腻/爹味"等主观标签由谁最终定义? | 建立"品牌方确认"机制,软性风控仅作提示,不作为强制拦截 | 产品经理 |
| **多语言支持** | 海外投放需支持英语、日语等 | 本期仅支持中文(普通话 + 主流方言),多语言作为 V2 规划 | 产品经理 |
| **模型幻觉风险** | LLM 可能产生不准确的审核结论 | 关键判断必须提供证据片段,人工复核覆盖高风险内容 | 算法团队 |
| **定价与商业模式** | 按视频条数、时长还是座席收费? | 待商业化团队确定,技术架构需支持多种计费维度 | 商业化负责人 |
---
## 11. 附录 (Appendix)
### 11.1 相关文档
* 技术设计文档 (TDD) - 待编写
* **AIProviderConfig.md - AI 厂商动态配置架构设计**
* API 接口规范 - 待编写
* 数据字典 - 待编写
* 测试计划 - 待编写
### 11.2 缩略语
| 缩略语 | 全称 | 说明 |
| --- | --- | --- |
| ASR | Automatic Speech Recognition | 自动语音识别 |
| OCR | Optical Character Recognition | 光学字符识别 |
| CV | Computer Vision | 计算机视觉 |
| NLP | Natural Language Processing | 自然语言处理 |
| LLM | Large Language Model | 大语言模型 |
| NPS | Net Promoter Score | 净推荐值 |
| SLA | Service Level Agreement | 服务级别协议 |
| GDPR | General Data Protection Regulation | 通用数据保护条例(欧盟) |

1434
UIDesign.md Normal file

File diff suppressed because it is too large Load Diff

924
User_Role_Interfaces.md Normal file
View File

@ -0,0 +1,924 @@
# User_Role_Interfaces.md - 用户角色与界面规范
| 文档类型 | **UI/UX Spec (Interface Definitions)** |
| --- | --- |
| **项目名称** | SmartAudit (AI 营销内容合规审核平台) |
| **版本号** | V1.0 |
| **发布日期** | 2026-01-30 |
| **关联文档** | RequirementsDoc.md (RD), PRD.md |
| **侧重** | 角色权限、核心页面布局、交互逻辑 |
---
## 版本历史 (Version History)
| 版本 | 日期 | 作者 | 变更说明 |
| --- | --- | --- | --- |
| V0.1 | 2026-01-30 | Gemini | 初稿:角色权限、三端界面设计 |
| V1.0 | 2026-02-02 | Claude | 审阅补充:导航结构、数据看板、响应式/无障碍设计、错误处理规范 |
| V1.1 | 2026-02-02 | Claude | 与 RD/PRD 对齐:补充用户故事引用、区域合规、特例记录规范、证据链权限 |
| V1.2 | 2026-02-02 | Claude | 新增代理商端和品牌方端移动端 UI 设计(工作台、快捷审核、预警、审批) |
| V1.3 | 2026-02-02 | Claude | 新增 AI 服务配置章节4.6),品牌方专属功能 |
---
## 1. 角色权限矩阵 (Role-Permission Matrix)
在进入界面细节前,先明确各角色在系统中的能力边界。
> 对应 PRD 第8章、RequirementsDoc 第3章
| 功能模块 | 👤 达人 (Creator) | 👥 代理商 (Agency) | 🛡️ 品牌方 (Brand) |
| --- | --- | --- | --- |
| **终端设备** | **Mobile (主) / Desktop** | **Desktop (主) / Mobile (辅)** | **Desktop (主) / Mobile (辅)** |
| **Brief 管理** | 查看任务详情 | ✅ 上传/解析/编辑 Brief | ✅ 全局规则配置 |
| **脚本/视频提交** | ✅ 上传 & 修改 [US-03] | ❌ 不可提交 | ❌ 不可提交 |
| **查看 AI 报告** | ✅ 仅查看自己的 [US-07] | ✅ 查看所管辖达人的 | ✅ 查看所有 |
| **审核决策** | ❌ 无权 | ✅ 初审 (驳回/通过) [US-08] | ✅ 终审 / 强制通过 [US-09] |
| **申诉功能** | ✅ 发起申诉 (消耗令牌) | ✅ 仲裁申诉 | ❌ 无需申诉 |
| **证据链导出** | ❌ 无权 | ✅ 导出所管辖任务 | ✅ 导出全部 [US-12] |
| **数据看板** | 仅看个人任务进度 | 整体进度 / 达人排名 | 全局合规率 / 舆情风控 |
| **系统配置** | ❌ 无权 | ❌ 无权 | ✅ 规则库/阈值/白名单/区域合规 [US-10] |
| **AI 服务配置** | ❌ 无权 | ❌ 无权(继承品牌方配置) | ✅ 配置 AI 提供商/模型/参数 |
| **用户管理** | ❌ 无权 | ✅ 管理所属达人 | ✅ 管理代理商与达人 |
---
## 1.1 各端导航结构 (Navigation Structure)
### 达人端 (Mobile-First)
```
┌─────────────────────────────────────┐
│ 底部导航栏 (Tab Bar) │
├─────────┬─────────┬─────────┬───────┤
│ 🏠 │ 📤 │ 🔔 │ 👤 │
│ 任务 │ 上传 │ 消息 │ 我的 │
└─────────┴─────────┴─────────┴───────┘
```
### 代理商端 (Desktop Sidebar)
```
┌──────────────────────────────────────────────┐
│ 📊 工作台 (Dashboard) │
│ 📋 Brief 管理 │
│ ✅ 审核台 (Review) │
│ 👥 达人管理 │
│ 📈 数据报表 │
│ ⚙️ 设置 │
└──────────────────────────────────────────────┘
```
### 代理商端 (Mobile Tab Bar) 📱
```
┌─────────────────────────────────────────────┐
│ 底部导航栏 (Tab Bar) │
├─────────┬─────────┬─────────┬─────────┬─────┤
│ 🏠 │ ✅ │ 📋 │ 🔔 │ 👤 │
│ 工作台 │ 审核 │ 任务 │ 消息 │ 我的│
└─────────┴─────────┴─────────┴─────────┴─────┘
```
> 📱 **移动端定位:** 外出场景下的紧急审核处理、进度查看、消息通知,复杂配置操作引导至桌面端完成
### 品牌方端 (Desktop Sidebar)
```
┌──────────────────────────────────────────────┐
│ 📊 数据看板 (Analytics) │
│ 🛡️ 规则配置 (Rule Engine) │
│ 📋 审计日志 (Audit Log) │
│ 👥 代理商管理 │
│ 🔔 舆情预警 │
│ ⚙️ 系统设置 │
│ └ 🤖 AI 服务配置 │
└──────────────────────────────────────────────┘
```
### 品牌方端 (Mobile Tab Bar) 📱
```
┌─────────────────────────────────────────────┐
│ 底部导航栏 (Tab Bar) │
├─────────┬─────────┬─────────┬─────────┬─────┤
│ 📊 │ 🔔 │ ✅ │ 📋 │ 👤 │
│ 看板 │ 预警 │ 审批 │ 日志 │ 我的│
└─────────┴─────────┴─────────┴─────────┴─────┘
```
> 📱 **移动端定位:** 关键指标查看、舆情预警响应、强制通过审批,规则配置等复杂操作引导至桌面端完成
---
## 2. 界面详解:达人端 (The Creator Portal)
**设计目标:** 极简、透明、减少焦虑。让达人像发朋友圈一样简单地完成合规检查。
**核心设备:** 手机浏览器 (Mobile Web) / 小程序。
### 2.1 任务列表页 (Task List)
* **状态概览:** 卡片式布局显示当前任务状态待提交、AI审核中、需修改、已通过
* **行动号召 (CTA):** 针对不同状态显示醒目按钮,如 `[上传脚本]``[查看修改意见]`
### 2.2 智能上传与扫描页 (The Magic Scanner) [US-03, US-07]
这是达人等待 AI 结果的页面必须缓解等待焦虑Wait-time Anxiety
* **文件支持:** 支持粘贴文本、上传文档、上传视频文件(≤ 100MB1080p
* **透明思考 UI** 实时显示 AI 处理进度
* 屏幕中央显示 AI 正在扫描的动态波纹
* **进度指示器:** 显示当前处理阶段和预估剩余时间
* **滚动日志 (Rolling Log):** 实时显示 AI 动作,例如:
> 🔍 *正在解析 Brief 核心卖点...*
> 👁️ *正在逐帧检测竞品 Logo...*
> 🧠 *正在分析口播情感色彩...*
> ✅ *口播检测完成,正在核对卖点覆盖...*
* **离开提示:** 深度审核约需 1-3 分钟,可选择离开并通过微信通知结果
### 2.3 审核结果反馈页 (Audit Report)
当 AI 发现问题时,不能直接把 JSON 扔给达人,要翻译成“人话”。
* **结果横幅:**
* 🔴 **未通过 (Blocked):** 存在硬性违规,必须修改。
* 🟡 **建议修改 (Warning):** 存在舆情风险或卖点遗漏,建议优化。
* 🟢 **AI 初审通过:** 已自动转交人工复核。
* **修改清单 (Action Items):**
* **时间轴跳转:** 点击报错条目,视频自动跳转到对应秒数(例如 00:15
* **错误详情:**
* *错误类型:* 广告法违禁词
* *原内容:* “全网第一”
* *AI建议* 建议改为“深受喜爱”或“销量领先”。
* **申诉入口:**
* 在每一条报错旁边提供 `[ 申诉 ]` 按钮
* **申诉弹窗:**
* 显示剩余令牌数量(如:剩余 2 次)
* 令牌配额基于达人信用评分(历史表现越好,配额越高)
* 提供理由输入框(必填,≥ 10 字)
* 可上传补充证据(截图、链接等)
* **申诉流程:** 提交 → 代理商仲裁 → 结果通知
* **令牌返还:** 申诉成功后令牌自动返还
### 2.4 消息通知中心 (Notification Center)
达人需要及时获知任务状态变化,避免反复主动查询。
* **通知类型:**
* 🔔 **任务分配:** "您有一个新任务【XX品牌618推广】请在 3 天内提交脚本"
* ✅ **审核通过:** "恭喜!您的视频已通过审核,可安排发布"
* ❌ **需要修改:** "您的视频有 2 处需修改,点击查看详情"
* 💬 **申诉结果:** "您的申诉已通过AI 已学习您的反馈"
* **通知渠道:**
* App 内消息中心(必选)
* 微信服务号推送(可选)
* 短信提醒(仅紧急/超时)
### 2.5 历史记录页 (History)
* **任务归档:** 按品牌/时间筛选已完成的任务
* **数据统计:**
* 累计完成任务数
* 一次通过率(个人)
* 平均修改轮次
* **证书导出:** 支持导出"合规达人"认证徽章(达到一定通过率后解锁)
---
## 3. 界面详解:代理商端 (The Agency Console)
**设计目标:** 高效、批量、上帝视角。
**核心设备:** 桌面端 (Desktop Web) 为主,移动端 (Mobile) 为辅。
### 3.1 工作台 (Dashboard)
* **待办事项:** 醒目显示 `待人工复核 (12)``申诉待仲裁 (3)`
* **项目概览:** 显示当前 Brief 下的所有达人提交进度条。
### 3.2 Brief 配置中心 (Brief Setup) [US-01, US-02]
* **全能解析器:** 巨大的拖拽上传区域
* 支持 PDF/Word/Excel/PPT/图片上传
* **在线文档链接导入:** 支持飞书/Notion 等已授权分享链接
* ⚠️ **重要约束:** 仅支持用户授权的分享链接;不得绕过权限或抓取受限内容
* **投放平台选择:** 选择目标平台(抖音/小红书/B站等自动加载对应平台规则库
* **区域合规切换:** 不同地区投放可切换对应法规与平台规则版本
* **规则确认区 (Split View):**
* 左侧:原始 PDF/文档预览
* 右侧AI 提取出的**结构化规则表单**(可编辑)
* *必含词:* [美白] [淡斑] (支持手动增删)
* *禁忌词:* [药用] [治疗]
* *语义卖点:* [产品核心功效] [使用场景] (支持手动增删AI 基于语义理解而非关键词匹配)
* *调性标签:* [年轻活力] [专业可信] (支持手动选择/自定义)
* *时序要求:* [产品同框 > 5秒] [品牌名提及 ≥ 3次] (支持手动配置)
* *参考图:* (显示 AI 从 Brief 提取的参考图,支持增删)
* **规则冲突提示:** 若 Brief 要求与平台规则冲突,高亮显示并给出建议
> 💡 **软广/种草内容审核说明:** 软性植入内容通常没有明确的关键词,系统通过**语义理解**而非关键词匹配来检测卖点覆盖情况。例如,"产品核心功效"是一个语义概念AI 会理解达人是否表达了产品的功效,而不是简单搜索某个具体词汇。
### 3.3 核心审核决策台 (The Review Cockpit) ✨ *核心功能* [US-05, US-08]
这是系统最复杂的界面,用于人工复核 AI 的结果。
**布局结构:**
* **左侧:视频播放器**
* **智能进度条:** 进度条上打满 colored dots
* 🔴 红点:硬伤(点击跳转)
* 🟠 橙点:油腻/舆情风险
* 🟢 绿点成功识别到的卖点High-light
* **画中画参考:** 播放器角落可悬浮 Brief 中的参考图,方便对比(如对比手持产品的手势)
* **右侧AI 检查单 (The Checklist)**
* **分区一:硬性合规 (Hard Rules)** — 必须处理
* [✅] 违禁词检测
* [✅] 竞品 Logo 检测
* **分区二Brief 完成度 (Brief Compliance)**
* [❌] 卖点:未提及"24小时持妆" (AI 提示:全程未检测到相关语义)
* **分区三:舆情雷达 (Sentiment Radar)** [US-06]
* [⚠️] **00:42 油腻预警:** 达人表情过于夸张,建议检查
* ⚠️ **重要说明:** 软性风险(油腻/爹味/性别偏见等)**仅作提示,不强制拦截**,需人工复核确认
* **底部:决策栏 (Action Bar)**
* `[ 驳回 ]`:点击后,自动将勾选的问题打包发送给达人
* `[ 强制通过 ]` [US-09]:忽略 AI 的黄色警告,强制放行
* **必须填写放行原因**(如"达人玩的新梗,品牌方认可"
* **记录审批人**与操作时间,纳入审计日志
* `[ 记录为特例 ]`:将当前判断记录为规则白名单/豁免条款
* 需品牌方确认后生效
* 如需用于模型优化,必须确保数据授权与合规评估
* `[ 通过 ]`:流程结束
### 3.4 版本比对视窗 (Diff View) [US-13]
当达人提交 V2 版本时触发。
* **顶部统计摘要:**
```
┌─────────────────────────────────────────────────────┐
│ 📊 版本差异报告 │
│ V1 版本指出 3 个违规点:✅ 已修复 2 个 | ❌ 未修复 1 个 │
└─────────────────────────────────────────────────────┘
```
* **双屏模式:** 左侧 V1右侧 V2同步播放
* **差异高亮:**
* 右侧列表仅显示 **"V1 报错点"** 的修复情况
* 状态:`已修复 ✅``未修复 ❌`
* 点击条目可跳转到对应时间戳V1/V2 同步定位
* **快速决策:** 若所有违规点均已修复,提供"快速通过"按钮
### 3.5 达人管理 (Creator Management)
* **达人列表:**
* 显示所有关联达人的基本信息、信用评分、历史通过率
* 支持按平台(抖音/小红书/B站、状态活跃/休眠)筛选
* **达人画像卡片:**
* 基本信息:昵称、平台账号、粉丝量级
* 合作数据:累计任务数、一次通过率、平均响应时长
* 信用评分:基于历史表现的信用分(影响申诉令牌配额)
* **批量操作:**
* 批量分配任务
* 批量发送催促通知
* 批量导出达人数据
### 3.6 数据报表 (Analytics Reports)
* **项目维度:**
* 当前项目进度:已提交 / 审核中 / 已通过 / 待修改
* 平均审核周期(从提交到最终通过)
* 修改轮次分布图
* **达人维度:**
* 达人排行榜(按通过率、响应速度)
* 问题达人预警(连续多次未通过)
* **问题类型分析:**
* 高频违规词 TOP 10
* 常见遗漏卖点统计
* 舆情风险分布
* **导出功能:**
* 支持导出 Excel/PDF 格式
* 支持定时邮件订阅周报
### 3.7 批量操作中心 (Batch Operations) [US-11]
* **批量上传:** 支持 ZIP 压缩包批量上传多个视频
* **批量审核:** 对无问题项批量通过(需二次确认)
* **批量导出:** 一键导出选中任务的审核报告
* 支持 Excel/PDF 格式
* 包含完整审核证据链
### 3.8 移动端界面 (Mobile Portal) 📱
**设计目标:** 外出场景下的紧急审核处理、进度监控、即时通知响应。
**核心设备:** 手机浏览器 / 小程序 / App。
**定位:** 桌面端的轻量补充,复杂操作引导至桌面端完成。
#### 3.8.1 移动端工作台 (Mobile Dashboard)
```
┌─────────────────────────────────────────────┐
│ 📊 代理商工作台 [头像] │
├─────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 🔴 待审核 │ │ ⚠️ 待仲裁 │ │
│ │ 12 │ │ 3 │ │
│ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ ✅ 今日通过 │ │ 📋 进行中 │ │
│ │ 28 │ │ 45 │ │
│ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────┤
│ 📌 紧急待办 │
│ ├─ 🔴 达人A视频 - 竞品露出 (2小时前) │
│ ├─ 🟠 达人B申诉 - 待仲裁 (30分钟前) │
│ └─ 🟡 达人C视频 - AI审核完成 │
├─────────────────────────────────────────────┤
│ 🏠 ✅ 📋 🔔 👤 │
│ 工作台 审核 任务 消息 我的 │
└─────────────────────────────────────────────┘
```
#### 3.8.2 移动端快捷审核 (Quick Review)
**场景:** 外出时收到紧急审核通知,需快速处理。
```
┌─────────────────────────────────────────────┐
│ ← 返回 快捷审核 ⋮ 更多 │
├─────────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐ │
│ │ │ │
│ │ 📹 视频播放器 │ │
│ │ (支持横屏全屏) │ │
│ │ │ │
│ │ advancement bar with colored dots │ │
│ │ 🔴──🟠────────🟢────────────────── │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 🔴 硬性问题 (1) 展开 ▼│
│ ├─ 00:15 竞品Logo露出 [点击跳转] │
├─────────────────────────────────────────────┤
│ 🟠 舆情提示 (1) 展开 ▼│
│ ├─ 00:42 油腻风险 (仅提示) │
├─────────────────────────────────────────────┤
│ 🟢 卖点覆盖 (3/4) 展开 ▼│
├─────────────────────────────────────────────┤
│ │
│ [ 驳回 ] [ 通过 ] [强制通过▼] │
│ │
└─────────────────────────────────────────────┘
```
**交互说明:**
* 点击问题条目自动跳转到视频对应时间点
* 横屏模式下视频全屏播放,问题列表收起为浮层
* "强制通过"需输入原因,记录审批人
* 复杂编辑(如修改 Brief提示"请在电脑端操作"
#### 3.8.3 移动端任务列表 (Task List)
```
┌─────────────────────────────────────────────┐
│ 📋 任务列表 🔍 筛选 ▼ │
├─────────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐ │
│ │ 🔴 XX品牌618推广 - 达人A │ │
│ │ 竞品露出 · 待审核 · 2小时前 │ │
│ │ [查看详情] │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ 🟡 XX品牌618推广 - 达人B │ │
│ │ AI审核完成 · 待确认 · 1小时前 │ │
│ │ [快捷审核] │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ ✅ XX品牌618推广 - 达人C │ │
│ │ 已通过 · 今天 14:30 │ │
│ │ [查看报告] │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 🏠 ✅ 📋 🔔 👤 │
└─────────────────────────────────────────────┘
```
#### 3.8.4 移动端消息中心 (Notifications)
* **通知类型:**
* 🔴 **紧急:** 硬性违规视频需处理
* 🟠 **申诉:** 达人申诉待仲裁
* 🟢 **完成:** 达人提交新版本 / 审核通过
* 📊 **日报:** 每日审核数据汇总(可配置推送时间)
* **快捷操作:**
* 通知卡片支持左滑"标记已读"
* 点击直接跳转对应任务
* 支持按类型筛选
---
## 4. 界面详解:品牌方端 (The Brand Admin)
**设计目标:** 监管、配置、数据沉淀、风险预警。
**核心设备:** 桌面端 (Desktop Web) 为主,移动端 (Mobile) 为辅。
### 4.1 数据看板 (Executive Dashboard) ✨ *核心功能*
品牌方需要一目了然地掌握整体合规状况。
> 对应 PRD 成功指标:人工投入时长、初审通过率、召回率/误报率、舆情一致性
**顶部指标卡片:**
```
┌─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐
│ 📊 本月 │ ✅ 初审 │ 🎯 硬性 │ ⚠️ 舆情 │ ⏱️ 平均 │
│ 审核总量 │ 通过率 │ 召回率 │ 拦截数 │ 审核周期 │
│ 1,234 │ 78.5% │ 96.2% │ 23 │ 4.2 小时 │
│ ↑12% │ ↑5.2% │ 目标≥95% │ ↓18% │ 目标≤5分钟 │
└─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘
```
**可视化图表区:**
* **趋势图:** 近 30 天审核量与通过率趋势
* **问题分布:** 饼图展示违规类型占比(违禁词 / 竞品 / 舆情 / 卖点遗漏)
* **代理商对比:** 柱状图对比各代理商的审核效率与通过率
* **热力图:** 问题高发时段分布(帮助优化审核资源配置)
* **舆情一致性:** 软性风控判断与人工复核的一致率(目标 ≥ 80%
**风险预警区:**
* 🔴 **紧急:** "代理商A在过去24小时内有5条视频触发'竞品露出',请关注"
* 🟠 **关注:** "达人B连续3次提交未通过建议沟通"
* 🟡 **舆情:** "本周舆情风险拦截数异常上升,建议检查阈值设置"
### 4.2 全局规则配置 (Rule Engine) [US-10]
* **黑白名单管理:**
* **禁用词库:** 支持分类管理(广告法 / 平台规则 / 品牌私有)
* **竞品列表:** 上传竞品 Logo 图库,支持相似度阈值设置
* **白名单:** 允许特定达人/场景豁免某些规则
* **特例记录:** 查看从审核台记录的豁免条款,支持确认/撤销
* **区域合规配置:**
* 支持按投放地区切换法规版本(中国大陆 / 港澳台 / 海外)
* 不同地区规则库独立管理
* 切换时自动校验现有 Brief 与新规则的兼容性
* **舆情阈值设置:**
* 调整 AI 对"油腻"、"性感"、"争议话题"的敏感度
* 支持 High / Medium / Low 三档
* 支持按平台差异化配置(抖音 vs 小红书)
* ⚠️ **提示:** 舆情风险仅作提示,不作为强制拦截依据
* **规则版本管理:**
* 规则变更历史可追溯(含变更人、变更时间、变更内容)
* 支持回滚到历史版本
* 变更需审批生效(防止误操作)
* **平台规则同步:** 抖音/小红书规则变更时,系统在 1 工作日内更新并通知
### 4.3 代理商管理 (Agency Management)
* **代理商列表:**
* 显示合作代理商及其绑定的品牌项目
* 数据指标:管理达人数、审核量、通过率、平均周期
* **权限配置:**
* 可见的 Brief 范围
* 是否允许"强制通过"
* 申诉仲裁权限
* **绩效评估:**
* 代理商月度评分卡
* 问题率对比排名
### 4.4 审计日志 (Audit Log) [US-12]
* **列表视图:** 查看所有审核记录,支持高级筛选
* 按时间范围 / 代理商 / 达人 / 审核结果筛选
* 关键词搜索(搜索视频标题、报错内容)
* **详情页:** 点击任意记录查看完整审核链路
* 原始视频(带时间戳标注)
* AI 检测报告全文
* 人工决策记录(谁在什么时间做了什么操作)
* 申诉记录(如有)
* **证据链导出:** 生成符合法务要求的 PDF 报告,包含:
* **时间戳:** 所有操作的精确时间记录
* **截图:** AI 报错对应的视频截图
* **规则依据:** 触发的规则版本与具体条款
* **审核人:** 操作人身份与电子签名
* **规则版本号:** 审核时使用的规则库版本
* **模型版本号:** AI 检测时使用的模型版本
* 完整操作日志(不可篡改)
### 4.5 舆情预警中心 (Brand Safety Center)
* **实时监控:**
* 近期被 AI 标记为"舆情风险"的视频列表
* 按风险等级排序(高 / 中 / 低)
* **案例库:**
* 历史舆情事件归档
* 作为培训素材供代理商学习
* **预警规则:**
* 配置自动通知规则(如:高风险视频自动 @品牌方
### 4.6 AI 服务配置 (AI Configuration) 🤖
**入口位置:** 系统设置 → AI 服务配置
**权限控制:** 仅品牌管理员可配置,代理商和达人自动继承品牌方配置
#### 4.6.1 配置界面
```
┌─────────────────────────────────────────────────────────────────┐
│ 🤖 AI 服务配置 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AI 提供商 │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ OneAPI 中转服务 ▼ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ 💡 支持 OneAPI、Anthropic Claude、OpenAI、DeepSeek 等 │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ 模型配置 │
│ │
│ 文字处理模型 (LLM) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ claude-opus-4-5-20251101 ▼ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ 用于 Brief 解析、语义分析、报告生成 │
│ │
│ 视频分析模型 (Vision) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ doubao-seed-1.6-thinking-vision ▼ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ 用于 Logo 检测、画面分析、竞品识别 │
│ │
│ 音频解析模型 (ASR) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ whisper-large-v3 ▼ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ 用于语音转文字、口播内容提取 │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ 连接配置 │
│ │
│ Base URL │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ https://oneapi.intelligrow.cn │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ API Key │
│ ┌───────────────────────────────────────────────────┐ ┌────┐ │
│ │ sk-•••••••••••••••••••••••••••••• │ │ 👁️ │ │
│ └───────────────────────────────────────────────────┘ └────┘ │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ 生成参数 │
│ │
│ Temperature: 0.7 Max Tokens: 2000 │
│ ├────────●───────┤ ┌─────────────────┐ │
│ 0 1.0 │ 2000 │ │
│ └─────────────────┘ │
│ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ 测试连接 │ │ 保存 │ │
│ └───────────────┘ └───────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
#### 4.6.2 功能说明
| 功能 | 说明 |
| --- | --- |
| **AI 提供商选择** | 下拉选择OneAPI / Anthropic / OpenAI / DeepSeek / 自定义 |
| **模型动态获取** | 输入 Base URL 和 API Key 后,调用 `/v1/models` 接口获取可用模型列表 |
| **三类模型配置** | 分别配置文字处理LLM、视频分析Vision、音频解析ASR模型 |
| **测试连接** | 并行测试三个模型的连通性,弹窗显示每个模型的测试结果 |
| **配置继承** | 品牌方配置后,所属代理商和达人自动使用此配置,无需单独设置 |
#### 4.6.3 配置继承关系
```
┌─────────────────────────────────────────────────────────────────┐
│ 配置继承模型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ 🛡️ 品牌方 │ ← 唯一配置入口 │
│ │ AI 服务配置 │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 👥 代理商A │ │ 👥 代理商B │ ← 自动继承,只读查看 │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ ┌─────┴─────┐ ┌─────┴─────┐ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │👤达人1│ │👤达人2│ │👤达人3│ │👤达人4│ ← 自动继承,无感知 │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
#### 4.6.4 安全说明
* **API Key 加密存储:** 使用 AES-256-GCM 加密,密钥与数据分离存储
* **传输安全:** 所有 API 请求强制 HTTPS
* **权限隔离:** 仅品牌管理员可查看/修改 AI 配置
* **审计日志:** 配置变更记录操作人、时间、变更内容
### 4.7 移动端界面 (Mobile Portal) 📱
**设计目标:** 随时掌握关键指标、即时响应舆情预警、紧急审批处理。
**核心设备:** 手机浏览器 / 小程序 / App。
**定位:** 数据查看与紧急响应,规则配置等复杂操作引导至桌面端完成。
#### 4.7.1 移动端数据看板 (Mobile Dashboard)
```
┌─────────────────────────────────────────────┐
│ 📊 品牌看板 2026-02-02 ▼ │
├─────────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐ │
│ │ 本月审核总量 初审通过率 │ │
│ │ 1,234 78.5% │ │
│ │ ↑12% ↑5.2% │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ 硬性召回率 平均审核周期 │ │
│ │ 96.2% 4.2 小时 │ │
│ │ 目标≥95% ✅ 目标≤5分钟 ✅ │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 📈 趋势图 (近7天) [查看详情 >]│
│ ┌─────────────────────────────────────┐ │
│ │ ╱╲ ╱╲ │ │
│ │ ╲╱ ╲ ← 通过率趋势 │ │
│ │ ╲ │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 📊 🔔 ✅ 📋 👤 │
│ 看板 预警 审批 日志 我的 │
└─────────────────────────────────────────────┘
```
#### 4.7.2 移动端舆情预警 (Alert Center)
**场景:** 收到舆情预警推送,需快速查看并决策。
```
┌─────────────────────────────────────────────┐
│ 🔔 舆情预警 全部已读 │
├─────────────────────────────────────────────┤
│ 🔴 紧急预警 (2) │
│ ┌─────────────────────────────────────┐ │
│ │ ⚠️ 代理商A - 竞品露出集中爆发 │ │
│ │ 过去24小时内5条视频触发 │ │
│ │ 10分钟前 [查看 >] │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ ⚠️ 达人B - 高风险舆情内容 │ │
│ │ 疑似性别偏见言论 │ │
│ │ 30分钟前 [查看 >] │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 🟠 关注事项 (3) │
│ ┌─────────────────────────────────────┐ │
│ │ 📋 达人C连续3次提交未通过 │ │
│ │ 建议与代理商沟通 │ │
│ │ 2小时前 [详情 >] │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 📊 🔔 ✅ 📋 👤 │
└─────────────────────────────────────────────┘
```
#### 4.7.3 移动端审批中心 (Approval Center)
**场景:** 代理商申请"强制通过",品牌方需审批。
```
┌─────────────────────────────────────────────┐
│ ✅ 待审批 筛选 ▼ │
├─────────────────────────────────────────────┤
│ 待处理 (3) │
│ ┌─────────────────────────────────────┐ │
│ │ 🟡 强制通过申请 │ │
│ │ 达人:@小美美 │ │
│ │ 申请人代理商A - 张三 │ │
│ │ 原因:达人玩的新梗,品牌方认可 │ │
│ │ ┌─────────────────────────────┐ │ │
│ │ │ 📹 点击查看视频片段 │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ AI报错00:42 油腻风险 │ │
│ │ │ │
│ │ [ 拒绝 ] [ 批准 ] │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 已处理 (12) [查看 >] │
├─────────────────────────────────────────────┤
│ 📊 🔔 ✅ 📋 👤 │
└─────────────────────────────────────────────┘
```
**交互说明:**
* 点击视频片段可预览关键时间点
* 批准/拒绝需二次确认
* 批准后自动通知代理商和达人
* 审批记录同步至审计日志
#### 4.7.4 移动端审计日志 (Audit Quick View)
```
┌─────────────────────────────────────────────┐
│ 📋 审计日志 🔍 搜索 │
├─────────────────────────────────────────────┤
│ 筛选:全部 ▼ 代理商 ▼ 时间 ▼ │
├─────────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐ │
│ │ ✅ XX品牌618推广 - 达人A │ │
│ │ 状态:已通过(强制) │ │
│ │ 审批人:李四 · 今天 14:30 │ │
│ │ [查看详情] [导出证据链] │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ ❌ XX品牌618推广 - 达人B │ │
│ │ 状态:已驳回 │ │
│ │ 原因竞品Logo露出 │ │
│ │ [查看详情] │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 📊 🔔 ✅ 📋 👤 │
└─────────────────────────────────────────────┘
```
**移动端功能边界:**
* ✅ 支持:数据查看、预警响应、审批处理、日志查询、证据链导出
* ❌ 不支持(引导至桌面端):规则配置、阈值调整、代理商权限管理、复杂报表分析
---
## 5. 交互状态与反馈规范 (UX States)
为保证体验流畅,需定义以下关键交互状态:
| 状态 (State) | 界面反馈 (UI Behavior) | 文案示例 (Micro-copy) |
| --- | --- | --- |
| **上传中** | 进度条 + 剩余时间预估 | "正在上传视频 (35%)... 请勿关闭页面" |
| **排队中** | 队列位置提示 | "前面还有 3 个任务AI 马上就到..." |
| **处理中 (长时)** | 允许离开提示 | "深度审核约需 3 分钟。您可以先去喝杯咖啡,结果将通过微信通知您。" |
| **解析失败** | 错误引导 + 手动兜底 | "无法读取此 PDF 内容。请检查文件是否加密,或[切换到文本输入模式]。" |
| **申诉成功** | 激励动效 (Confetti) | "申诉生效令牌已返还。AI 正在学习您的反馈。" |
---
## 6. 设计风格指导 (Design Guidelines)
* **色调 (Palette):**
* **科技蓝 (Tech Blue):** 用于 AI 正在思考、扫描的状态。
* **警示红 (Alert Red):** 用于硬性阻断。
* **风险橙 (Risk Orange):** 用于舆情/油腻提示。
* **安全绿 (Safe Green):** 用于通过、合规项。
* **字体 (Typography):** 清晰的无衬线字体,确保在视频播放器旁的密集文字依然易读。
* **动效 (Motion):** 仅在"AI 处理中"使用微动效(波纹、扫描光效),强调系统的智能化属性;审核台保持静态高效。
---
## 7. 响应式设计规范 (Responsive Design)
### 7.1 断点定义 (Breakpoints)
| 设备类型 | 断点范围 | 适用角色 |
| --- | --- | --- |
| **Mobile** | < 768px | 达人端主要 |
| **Tablet** | 768px - 1024px | 达人端(辅助)、代理商外出场景 |
| **Desktop** | > 1024px | 代理商端、品牌方端(主要) |
### 7.2 各端适配策略
* **达人端 (Mobile-First):**
* 单列布局,卡片式信息展示
* 底部固定导航栏
* 视频播放器全屏优先
* 手势操作支持(左滑删除、下拉刷新)
* **代理商端 (Desktop-First):**
* 侧边栏导航(可折叠)
* 多列布局,支持分屏操作
* Tablet 下侧边栏自动收起为图标模式
* **品牌方端 (Desktop-Only):**
* 数据看板响应式网格布局
* 图表自适应容器宽度
* 最小支持宽度 1280px
---
## 8. 无障碍设计 (Accessibility / a11y)
### 8.1 基本要求
* **WCAG 2.1 AA 级合规**
* **颜色对比度:** 文字与背景对比度 ≥ 4.5:1
* **键盘导航:** 所有交互元素可通过 Tab 键访问
* **屏幕阅读器:** 关键元素提供 ARIA 标签
### 8.2 具体实现
| 场景 | 无障碍要求 |
| --- | --- |
| **颜色标识** | 红/黄/绿状态不仅用颜色,同时用图标和文字区分 |
| **视频播放器** | 提供字幕轨道、支持键盘控制播放/暂停/跳转 |
| **表单** | 所有输入框有明确的 label 关联 |
| **错误提示** | 错误信息同时通过颜色、图标、文字三种方式呈现 |
| **动效** | 提供"减少动态效果"选项,尊重系统偏好设置 |
---
## 9. 错误处理与边界情况 (Error Handling)
### 9.1 错误类型与处理策略
| 错误类型 | 触发场景 | 用户提示 | 技术处理 |
| --- | --- | --- | --- |
| **网络错误** | 请求超时/断网 | "网络不给力,请检查连接后重试" | 自动重试 3 次,指数退避 |
| **上传失败** | 文件过大/格式不支持 | "文件格式不支持,请上传 MP4/MOV 格式" | 前端预校验 + 后端双重验证 |
| **解析失败** | Brief PDF 加密/损坏 | "无法读取此文件,请检查是否加密" | 提供手动输入降级方案 |
| **AI 服务异常** | 模型超时/不可用 | "AI 正在休息,请稍后重试" | 自动进入队列,恢复后继续处理 |
| **权限不足** | 越权操作 | "您没有权限执行此操作" | 记录日志,通知管理员 |
| **并发冲突** | 多人同时编辑 | "其他用户正在编辑,请刷新后重试" | 乐观锁 + 版本号校验 |
### 9.2 空状态设计 (Empty States)
| 页面 | 空状态提示 | 引导动作 |
| --- | --- | --- |
| **任务列表** | "暂无任务,等待品牌方分配" | 显示品牌方联系方式 |
| **审核队列** | "太棒了!所有任务都已处理完毕" | 显示历史数据入口 |
| **搜索结果** | "未找到匹配结果" | 建议调整筛选条件 |
| **数据看板** | "暂无数据,审核开始后将自动生成" | 显示示例数据 |
### 9.3 加载状态规范 (Loading States)
* **骨架屏 (Skeleton):** 列表页、卡片区域使用骨架屏占位
* **进度条:** 文件上传显示精确进度百分比
* **Spinner** 短时操作(< 3s使用旋转加载图标
* **进度提示:** 长时操作显示预计剩余时间和当前步骤
---
## 10. 附录
### 10.1 页面清单 (Page Inventory)
| 角色 | 页面名称 | 优先级 | 备注 |
| --- | --- | --- | --- |
| **达人** | 任务列表 | P0 | MVP |
| | 智能上传页 | P0 | MVP |
| | 审核结果页 | P0 | MVP |
| | 消息中心 | P1 | |
| | 历史记录 | P2 | |
| **代理商** | 工作台 | P0 | MVP |
| | Brief 配置 | P0 | MVP |
| | 审核决策台 | P0 | MVP |
| | 版本比对 | P1 | |
| | 达人管理 | P1 | |
| | 数据报表 | P2 | |
| **品牌方** | 数据看板 | P0 | MVP |
| | 规则配置 | P0 | MVP |
| | AI 服务配置 | P0 | MVP - 品牌方专属 |
| | 审计日志 | P1 | |
| | 代理商管理 | P1 | |
| | 舆情预警 | P2 | |
### 10.2 设计资源
* 设计稿 (Figma): [待补充]
* 组件库 (Design System): [待补充]
* 图标库 (Icon Set): [待补充]

6901
pencil-new.pen Normal file

File diff suppressed because it is too large Load Diff

1875
tasks.md Normal file

File diff suppressed because it is too large Load Diff