model

package
v1.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AccountStatusActive         = "active"
	AccountStatusTokenExpired   = "token_expired"
	AccountStatusQuotaExhausted = "quota_exhausted"
)

账号状态

View Source
const (
	TaskStatusQueued     = "queued"
	TaskStatusInProgress = "in_progress"
	TaskStatusCompleted  = "completed"
	TaskStatusFailed     = "failed"
)

任务状态

View Source
const (
	CharacterStatusProcessing = "processing"
	CharacterStatusReady      = "ready"
	CharacterStatusFailed     = "failed"
)

角色状态

View Source
const (
	SettingProxyURL                 = "proxy_url"                  // 字符串
	SettingTokenRefreshInterval     = "token_refresh_interval"     // Duration 字符串
	SettingCreditSyncInterval       = "credit_sync_interval"       // Duration 字符串
	SettingSubscriptionSyncInterval = "subscription_sync_interval" // Duration 字符串
)

配置项 Key 常量

Variables

This section is empty.

Functions

func ExtractEmailFromJWT

func ExtractEmailFromJWT(token string) string

ExtractEmailFromJWT 从 JWT Access Token 的 payload 中提取邮箱 JWT 格式为 header.payload.signature,payload 是 base64url 编码的 JSON

func MaskToken

func MaskToken(token string) string

MaskToken 生成 Token 掩码

func MaskURL

func MaskURL(rawURL string) string

MaskURL 生成 URL 掩码

func SizeToResolution

func SizeToResolution(size, orientation string) string

SizeToResolution 将 size 转为分辨率字符串

Types

type AdminAPIKeyRequest

type AdminAPIKeyRequest struct {
	Name    string `json:"name" binding:"required"`
	Key     string `json:"key"` // 创建时必填,编辑时可选(不传则不修改)
	GroupID *int64 `json:"group_id"`
	Enabled *bool  `json:"enabled"`
}

AdminAPIKeyRequest API Key 创建/编辑请求

type AdminAPIKeyResponse

type AdminAPIKeyResponse struct {
	SoraAPIKey
	KeyHint   string `json:"key_hint"`             // Key 掩码
	GroupName string `json:"group_name,omitempty"` // 所属分组名称
}

AdminAPIKeyResponse API Key 响应(含分组名和 Key 掩码)

type AdminAccountRequest

type AdminAccountRequest struct {
	Name         string `json:"name"`
	AccessToken  string `json:"access_token"`
	RefreshToken string `json:"refresh_token"`
	GroupID      *int64 `json:"group_id"`
	Enabled      *bool  `json:"enabled"`
}

AdminAccountRequest 账号创建/编辑请求

type AdminAccountResponse

type AdminAccountResponse struct {
	SoraAccount
	ATHint    string `json:"at_hint"`              // AT 掩码
	RTHint    string `json:"rt_hint"`              // RT 掩码
	GroupName string `json:"group_name,omitempty"` // 所属分组名称
}

AdminAccountResponse 账号响应(含 Token 掩码)

type AdminBatchImportItemResult added in v1.3.0

type AdminBatchImportItemResult struct {
	Token  string `json:"token"`           // Token 掩码
	Action string `json:"action"`          // "created" / "updated" / "failed"
	Email  string `json:"email,omitempty"` // 识别出的邮箱
	Error  string `json:"error,omitempty"` // 错误信息
}

AdminBatchImportItemResult 单个 Token 导入结果

type AdminBatchImportRequest added in v1.3.0

type AdminBatchImportRequest struct {
	Tokens  []string `json:"tokens" binding:"required"`
	GroupID *int64   `json:"group_id"`
}

AdminBatchImportRequest 批量导入账号请求

type AdminBatchImportResult added in v1.3.0

type AdminBatchImportResult struct {
	Total   int                          `json:"total"`
	Created int                          `json:"created"`
	Updated int                          `json:"updated"`
	Failed  int                          `json:"failed"`
	Details []AdminBatchImportItemResult `json:"details"`
}

AdminBatchImportResult 批量导入汇总结果

type AdminCharacterResponse

type AdminCharacterResponse struct {
	SoraCharacter
	AccountEmail string `json:"account_email,omitempty"` // 关联账号邮箱
}

AdminCharacterResponse 角色管理响应(含关联账号邮箱)

type AdminGroupRequest

type AdminGroupRequest struct {
	Name        string `json:"name" binding:"required"`
	Description string `json:"description"`
	Enabled     *bool  `json:"enabled"`
}

AdminGroupRequest 账号组创建/编辑请求

type CharacterCreateRequest

type CharacterCreateRequest struct {
	VideoURL    string `json:"video_url" binding:"required"` // 角色视频(URL 或 base64 data URI)
	Username    string `json:"username,omitempty"`           // 可选,不传则使用推荐值
	DisplayName string `json:"display_name,omitempty"`       // 可选,不传则使用推荐值
}

CharacterCreateRequest 创建角色请求

type CharacterResponse

type CharacterResponse struct {
	ID          string         `json:"id"`
	Status      string         `json:"status"`
	DisplayName string         `json:"display_name,omitempty"`
	Username    string         `json:"username,omitempty"`
	ProfileURL  string         `json:"profile_url,omitempty"`
	CharacterID string         `json:"character_id,omitempty"` // 定稿后可用于视频生成
	CreatedAt   int64          `json:"created_at"`
	Error       *TaskErrorInfo `json:"error,omitempty"`
}

CharacterResponse 角色响应

type DashboardStats

type DashboardStats struct {
	TotalAccounts        int64 `json:"total_accounts"`
	ActiveAccounts       int64 `json:"active_accounts"`
	ExpiredAccounts      int64 `json:"expired_accounts"`
	ExhaustedAccounts    int64 `json:"exhausted_accounts"`
	TotalTasks           int64 `json:"total_tasks"`
	PendingTasks         int64 `json:"pending_tasks"`
	CompletedTasks       int64 `json:"completed_tasks"`
	FailedTasks          int64 `json:"failed_tasks"`
	TotalCharacters      int64 `json:"total_characters"`
	ReadyCharacters      int64 `json:"ready_characters"`
	ProcessingCharacters int64 `json:"processing_characters"`
	FailedCharacters     int64 `json:"failed_characters"`
}

DashboardStats 概览统计

type EnhancePromptRequest

type EnhancePromptRequest struct {
	Prompt         string `json:"prompt" binding:"required"`
	ExpansionLevel string `json:"expansion_level,omitempty"` // "medium" 或 "long",默认 "medium"
	Duration       int    `json:"duration,omitempty"`        // 5/10/15/25 秒,默认 10
}

EnhancePromptRequest 提示词增强请求

type EnhancePromptResponse

type EnhancePromptResponse struct {
	OriginalPrompt string `json:"original_prompt"`
	EnhancedPrompt string `json:"enhanced_prompt"`
}

EnhancePromptResponse 提示词增强响应

type ImageSubmitRequest

type ImageSubmitRequest struct {
	Prompt         string `json:"prompt" binding:"required"`
	Width          int    `json:"width"`                     // 默认 1792
	Height         int    `json:"height"`                    // 默认 1024
	InputReference string `json:"input_reference,omitempty"` // 图生图参考图(URL 或 base64 data URI)
}

ImageSubmitRequest 创建图片任务请求

type ImageTaskResponse

type ImageTaskResponse struct {
	ID        string         `json:"id"`
	Object    string         `json:"object"` // "image"
	Status    string         `json:"status"`
	Progress  int            `json:"progress"`
	CreatedAt int64          `json:"created_at"`
	Width     int            `json:"width,omitempty"`
	Height    int            `json:"height,omitempty"`
	ImageURL  string         `json:"image_url,omitempty"`
	Error     *TaskErrorInfo `json:"error,omitempty"`
}

ImageTaskResponse 图片任务响应

type ModelParams

type ModelParams struct {
	Orientation string // landscape / portrait
	NFrames     int    // 300=10s / 450=15s / 750=25s
	Model       string // sy_8 / sy_ore
	Size        string // small / large
	Duration    int    // 10 / 15 / 25(秒)
}

ModelParams 解析后的模型参数

func ParseModelName

func ParseModelName(name string) (*ModelParams, error)

ParseModelName 解析模型名称为 Sora 原生参数

支持两种命名格式(K8Ray Creator 使用下划线前缀):

  • sora-2-landscape-10s / sora_video2-landscape-10s
  • sora-2-pro-landscape-hd-10s / sora_video2-pro-landscape-hd-10s

type PostCreateRequest

type PostCreateRequest struct {
	TaskID string `json:"task_id" binding:"required"` // 内部视频任务 ID
}

PostCreateRequest 发布帖子请求

type PostResponse

type PostResponse struct {
	PostID string `json:"post_id"`
}

PostResponse 帖子响应

type RemixSubmitRequest

type RemixSubmitRequest struct {
	Model       string `json:"model" binding:"required"`
	Prompt      string `json:"prompt" binding:"required"`
	RemixTarget string `json:"remix_target" binding:"required"` // Sora 分享链接或 s_xxx 格式 ID
	Style       string `json:"style,omitempty"`
}

RemixSubmitRequest Remix 视频请求

type SoraAPIKey

type SoraAPIKey struct {
	ID         int64      `json:"id" gorm:"primaryKey;autoIncrement"`
	Name       string     `json:"name" gorm:"size:128;not null"`
	Key        string     `json:"key" gorm:"size:256;not null;uniqueIndex"`
	GroupID    *int64     `json:"group_id" gorm:"index"`
	Enabled    bool       `json:"enabled" gorm:"not null;default:true"`
	UsageCount int64      `json:"usage_count" gorm:"default:0"`
	LastUsedAt *time.Time `json:"last_used_at"`
	CreatedAt  time.Time  `json:"created_at" gorm:"autoCreateTime"`
	UpdatedAt  time.Time  `json:"updated_at" gorm:"autoUpdateTime"`
}

SoraAPIKey API 密钥(独立管理,可绑定分组)

func (SoraAPIKey) TableName

func (SoraAPIKey) TableName() string

type SoraAccount

type SoraAccount struct {
	ID                int64      `json:"id" gorm:"primaryKey;autoIncrement"`
	GroupID           *int64     `json:"group_id" gorm:"index"`
	Name              string     `json:"name" gorm:"size:128"`
	Email             string     `json:"email" gorm:"size:256"`       // 从 JWT 自动提取
	AccessToken       string     `json:"-" gorm:"type:text;not null"` // 不对外暴露
	RefreshToken      string     `json:"-" gorm:"type:text"`          // 不对外暴露
	TokenExpiresAt    *time.Time `json:"token_expires_at"`
	PlanTitle         string     `json:"plan_title" gorm:"size:64"`
	PlanExpiresAt     *time.Time `json:"plan_expires_at"`
	RemainingCount    int        `json:"remaining_count" gorm:"default:-1"` // -1=未知
	RateLimitReached  bool       `json:"rate_limit_reached" gorm:"default:false"`
	RateLimitResetsAt *time.Time `json:"rate_limit_resets_at"`
	Enabled           bool       `json:"enabled" gorm:"not null;default:true"`
	Status            string     `json:"status" gorm:"size:32;default:active"` // active/token_expired/quota_exhausted
	LastUsedAt        *time.Time `json:"last_used_at"`
	LastError         string     `json:"last_error" gorm:"type:text"`
	LastSyncAt        *time.Time `json:"last_sync_at"`
	CreatedAt         time.Time  `json:"created_at" gorm:"autoCreateTime"`
	UpdatedAt         time.Time  `json:"updated_at" gorm:"autoUpdateTime"`
}

SoraAccount Sora 账号

func (SoraAccount) TableName

func (SoraAccount) TableName() string

type SoraAccountGroup

type SoraAccountGroup struct {
	ID          int64     `json:"id" gorm:"primaryKey;autoIncrement"`
	Name        string    `json:"name" gorm:"size:128;not null;uniqueIndex"`
	Description string    `json:"description" gorm:"size:512"`
	Enabled     bool      `json:"enabled" gorm:"not null;default:true"`
	CreatedAt   time.Time `json:"created_at" gorm:"autoCreateTime"`
	UpdatedAt   time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}

SoraAccountGroup 账号组

func (SoraAccountGroup) TableName

func (SoraAccountGroup) TableName() string

type SoraCharacter

type SoraCharacter struct {
	ID           string     `json:"id" gorm:"primaryKey;size:64"` // 内部 ID: char_xxxxxxxx
	AccountID    int64      `json:"account_id" gorm:"not null;index"`
	CameoID      string     `json:"cameo_id" gorm:"size:128;index"`                    // Sora cameo ID
	CharacterID  string     `json:"character_id" gorm:"size:128;index"`                // 定稿后的 character ID
	Status       string     `json:"status" gorm:"size:32;not null;default:processing"` // processing/ready/failed
	DisplayName  string     `json:"display_name" gorm:"size:128"`
	Username     string     `json:"username" gorm:"size:128"`
	ProfileURL   string     `json:"profile_url" gorm:"size:1024"`
	ProfileImage []byte     `json:"-" gorm:"type:bytea"`            // 头像图片二进制数据(不对外暴露)
	IsPublic     bool       `json:"is_public" gorm:"default:false"` // 是否公开
	ErrorMessage string     `json:"error_message,omitempty" gorm:"type:text"`
	CreatedAt    time.Time  `json:"created_at" gorm:"autoCreateTime"`
	UpdatedAt    time.Time  `json:"updated_at" gorm:"autoUpdateTime"`
	CompletedAt  *time.Time `json:"completed_at,omitempty"`
}

SoraCharacter 角色记录

func (SoraCharacter) TableName

func (SoraCharacter) TableName() string

type SoraSetting

type SoraSetting struct {
	Key       string    `json:"key" gorm:"primaryKey;size:64"`
	Value     string    `json:"value" gorm:"type:text;not null"`
	UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}

SoraSetting KV 配置项(存储动态配置)

func (SoraSetting) TableName

func (SoraSetting) TableName() string

type SoraTask

type SoraTask struct {
	ID           string     `json:"id" gorm:"primaryKey;size:64"`
	SoraTaskID   string     `json:"sora_task_id" gorm:"size:128;not null;index"`
	AccountID    int64      `json:"account_id" gorm:"not null;index"`
	APIKeyID     int64      `json:"api_key_id" gorm:"index;default:0"`          // 创建该任务的 API Key ID(0 表示未知)
	Type         string     `json:"type" gorm:"size:32;not null;default:video"` // video/image
	Model        string     `json:"model" gorm:"size:128"`
	Prompt       string     `json:"prompt" gorm:"type:text"`
	Status       string     `json:"status" gorm:"size:32;not null;index;default:queued"` // queued/in_progress/completed/failed
	Progress     int        `json:"progress" gorm:"default:0"`
	ErrorMessage string     `json:"error_message,omitempty" gorm:"type:text"`
	DownloadURL  string     `json:"-" gorm:"size:1024"`                   // 完成后的下载链接(内部使用)
	ImageURL     string     `json:"image_url,omitempty" gorm:"size:1024"` // 图片任务结果
	CreatedAt    time.Time  `json:"created_at" gorm:"autoCreateTime"`
	UpdatedAt    time.Time  `json:"updated_at" gorm:"autoUpdateTime"`
	CompletedAt  *time.Time `json:"completed_at,omitempty"`
}

SoraTask 内部任务记录

func (SoraTask) TableName

func (SoraTask) TableName() string

type StoryboardSubmitRequest

type StoryboardSubmitRequest struct {
	Model          string `json:"model" binding:"required"`
	Prompt         string `json:"prompt" binding:"required"` // 分镜格式: [5.0s]场景1 [5.0s]场景2
	InputReference string `json:"input_reference,omitempty"` // 参考图(URL 或 base64 data URI)
	Style          string `json:"style,omitempty"`
}

StoryboardSubmitRequest 分镜视频请求

type TaskErrorInfo

type TaskErrorInfo struct {
	Message string `json:"message"`
}

TaskErrorInfo 任务错误信息

type VideoSubmitRequest

type VideoSubmitRequest struct {
	Model          string `json:"model" binding:"required"`
	Prompt         string `json:"prompt" binding:"required"`
	Duration       int    `json:"duration"`
	InputReference string `json:"input_reference,omitempty"` // 图生视频参考图(URL 或 base64 data URI)
	Style          string `json:"style,omitempty"`           // 视频风格(如 anime, retro 等)
}

VideoSubmitRequest 创建视频任务请求

type VideoTaskResponse

type VideoTaskResponse struct {
	ID        string         `json:"id"`
	Object    string         `json:"object"`
	Model     string         `json:"model"`
	Status    string         `json:"status"`
	Progress  int            `json:"progress"`
	CreatedAt int64          `json:"created_at"`
	Size      string         `json:"size,omitempty"`
	Error     *TaskErrorInfo `json:"error,omitempty"`
}

VideoTaskResponse 任务响应(兼容 K8Ray Creator 的 SoraTaskResponse)

type WatermarkFreeRequest

type WatermarkFreeRequest struct {
	VideoID string `json:"video_id" binding:"required"` // Sora 分享链接或视频 ID
}

WatermarkFreeRequest 无水印下载请求

type WatermarkFreeResponse

type WatermarkFreeResponse struct {
	URL string `json:"url"`
}

WatermarkFreeResponse 无水印下载响应

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL