- 新增审核卡片和确认卡片模型,支持Agent推送审核任务和用户确认 - 实现审核卡片API服务,支持创建、更新、批准、驳回等操作 - 扩展审核维度配置,新增角色一致性、剧情连贯性等维度 - 优化前端审核配置页面,修复API路径错误和状态枚举问题 - 改进剧集创作平台布局,新增左侧边栏用于剧集管理和上下文查看 - 增强Skill管理,支持从审核系统跳转创建/编辑Skill - 修复episodes.json数据问题,清理聊天历史记录 - 更新Agent提示词,明确Skill引用加载流程 - 统一前端主题配置,优化整体UI体验
104 lines
4.0 KiB
Python
104 lines
4.0 KiB
Python
"""
|
||
Review Card Model
|
||
|
||
审核卡片模型 - 持久化存储的审核任务卡片
|
||
|
||
与ReviewTask的关系:
|
||
- ReviewCard是用户可见的卡片,包含审核任务的所有信息
|
||
- ReviewTask是系统内部的审核任务,可能不持久化
|
||
- 一个ReviewCard可能包含多个ReviewTask(如多集审核)
|
||
- 过程中审核完成后转换为ReviewCard持久化存储
|
||
"""
|
||
from pydantic import BaseModel, Field
|
||
from typing import Dict, List, Optional, Any
|
||
from datetime import datetime
|
||
from enum import Enum
|
||
|
||
|
||
class ReviewCardType(str, Enum):
|
||
"""审核卡片类型"""
|
||
PROCESS_AUTO = "process_auto" # 过程中Agent自主识别
|
||
POST_CREATION_AUTO = "post_creation_auto" # 生成后自动审核
|
||
USER_REQUEST_EPISODE = "user_episode" # 用户请求单集审核
|
||
USER_REQUEST_MULTIPLE = "user_multiple" # 用户请求多集审核
|
||
USER_REQUEST_ALL = "user_all" # 用户请求全集审核
|
||
|
||
|
||
class ReviewCardStatus(str, Enum):
|
||
"""审核卡片状态"""
|
||
PENDING = "pending" # 待处理
|
||
AWAITING_USER = "awaiting_user" # 待确认
|
||
APPROVED = "approved" # 已通过
|
||
REJECTED = "rejected" # 已驳回
|
||
|
||
|
||
class ReviewCard(BaseModel):
|
||
"""
|
||
审核卡片 - 持久化存储
|
||
"""
|
||
# 基础信息
|
||
id: str = Field(..., description="卡片ID")
|
||
project_id: str = Field(..., description="项目ID")
|
||
episode_id: Optional[str] = Field(None, description="剧集ID(单集审核)")
|
||
episode_numbers: List[int] = Field(default_factory=list, description="涉及集数列表(多集审核)")
|
||
|
||
# 卡片类型和来源
|
||
card_type: ReviewCardType = Field(..., description="卡片类型")
|
||
trigger_source: str = Field(..., description="触发来源: agent_auto/user_configured/manual")
|
||
|
||
# 审核内容
|
||
episode_outline: Optional[str] = Field(None, description="剧集大纲")
|
||
episode_content: Optional[str] = Field(None, description="剧集内容")
|
||
review_reason: str = Field(..., description="审核原因")
|
||
|
||
# 审核结果
|
||
issues: List[Dict[str, Any]] = Field(default_factory=list, description="问题列表")
|
||
overall_score: Optional[float] = Field(None, description="总体分数")
|
||
severity: str = Field("medium", description="严重程度: low/medium/high")
|
||
|
||
# 审核配置
|
||
review_config_id: Optional[str] = Field(None, description="使用的审核配置ID")
|
||
applied_skills: List[str] = Field(default_factory=list, description="应用的Skills")
|
||
applied_rules: List[str] = Field(default_factory=list, description="应用的规则")
|
||
|
||
# 用户操作
|
||
status: ReviewCardStatus = Field(default=ReviewCardStatus.PENDING, description="卡片状态")
|
||
user_comment: Optional[str] = Field(None, description="用户评论")
|
||
modified_content: Optional[str] = Field(None, description="修改后的内容")
|
||
|
||
# 时间戳
|
||
created_at: datetime = Field(default_factory=datetime.now, description="创建时间")
|
||
updated_at: datetime = Field(default_factory=datetime.now, description="更新时间")
|
||
completed_at: Optional[datetime] = Field(None, description="完成时间")
|
||
|
||
# 附加信息
|
||
metadata: Dict[str, Any] = Field(default_factory=dict, description="附加元数据")
|
||
|
||
class Config:
|
||
use_enum_values = False
|
||
|
||
|
||
class ReviewCardCreate(BaseModel):
|
||
"""创建审核卡片请求"""
|
||
project_id: str
|
||
episode_id: Optional[str] = None
|
||
episode_numbers: List[int] = Field(default_factory=list)
|
||
card_type: ReviewCardType
|
||
trigger_source: str
|
||
review_reason: str
|
||
episode_outline: Optional[str] = None
|
||
episode_content: Optional[str] = None
|
||
review_config_id: Optional[str] = None
|
||
severity: str = "medium"
|
||
issues: List[Dict[str, Any]] = Field(default_factory=list)
|
||
overall_score: Optional[float] = None
|
||
|
||
|
||
class ReviewCardUpdate(BaseModel):
|
||
"""更新审核卡片请求"""
|
||
status: Optional[ReviewCardStatus] = None
|
||
user_comment: Optional[str] = None
|
||
modified_content: Optional[str] = None
|
||
issues: Optional[List[Dict[str, Any]]] = None
|
||
overall_score: Optional[float] = None
|