Files
meijiaka-zy/python-api/app/schemas/segment.py
T
小鱼开发 04e467e433 feat(points): 积分系统收尾 + 充值弹窗改造 + 命名统一
后端:
- 微信回调 db.commit 失败仍返回 SUCCESS,避免无限重试
- recharge() 加 order_id 幂等保护,防重复充值
- time_expire 使用北京时间(UTC+8),修复时区 bug
- 充值档位后端配置化(points-config.yaml + /recharge-options API)
- 代码审查 20 项修复(认证加固、扣费顺序、错误响应、状态同步等)

前端:
- 充值弹窗:自动轮询 + 【我已支付】手动兜底
- 二维码倒计时显示,过期后遮罩 + 刷新按钮
- 充值档位从后端动态加载
- 去掉 select/qrcode 弹窗标题,金额红色突出显示
- 全项目命名统一(视频生成/压制成片/配音合成/声音复刻等)
- Modal 关闭按钮独立于 title 显示
2026-05-09 21:29:35 +08:00

47 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
分镜(Segment)统一 Schema
==========================
业务层唯一分镜模型,取代以下历史重复定义:
- ScriptShotscript.py
- ShotDataapi/v1/video.py
- ShotUnitscheduler/models.py
"""
from typing import Literal
from pydantic import BaseModel, Field
from app.schemas.enums import SegmentStatus
class Segment(BaseModel):
"""视频分镜/镜头定义
术语说明:
- segment: 分镜
- empty_shot: 空镜
"""
id: str = Field(..., description="分镜ID")
type: Literal["segment", "empty_shot"] = Field(
default="segment", description="分镜类型: segment(分镜) 或 empty_shot(空镜)"
)
scene: str = Field(default="", description="场景描述/画面描述")
voiceover: str = Field(default="", description="配音文本(空镜可为空)")
duration: int | None = Field(default=None, description="时长(秒)")
voice_id: str | None = Field(default=None, description="音色ID(空镜时使用)")
status: SegmentStatus = Field(default=SegmentStatus.PENDING)
provider_task_id: str | None = Field(
default=None, description="供应商任务ID"
)
video_url: str | None = Field(default=None, description="生成后的视频URL")
local_path: str | None = Field(default=None, description="本地视频路径")
qiniu_url: str | None = Field(default=None, description="七牛云URL")
error_message: str | None = Field(default=None, description="错误信息")
stage: str | None = Field(
default=None, description="内部处理阶段(如 image_generating / video_processing"
)
image_task_id: str | None = Field(default=None, description="空镜文生图任务ID(内部使用)")
query_fail_count: int = Field(default=0, description="查询失败计数")