// Package dto 包含 transcribe 模块的请求/响应数据结构
package dto

import "time"

// AdminTranscribeRequest POST /admin/recordings/:id/transcribe 请求体
type AdminTranscribeRequest struct {
	Force    bool   `json:"force"`    // true=已 ready 时强制重新转写
	Language string `json:"language"` // 可选 ISO-639 语言提示，"" 表示自动检测
}

// AdminTranscriptDTO 转写结果出参（去掉/格式化数据库字段，便于前端消费）
type AdminTranscriptDTO struct {
	ID           int64                 `json:"id"`
	RecordingID  int64                 `json:"recording_id"`
	RoomID       int64                 `json:"room_id"`
	Status       string                `json:"status"`         // pending/running/ready/failed
	StatusLabel  string                `json:"status_label"`   // 中文标签
	Text         string                `json:"text"`
	Segments     []AdminTranscriptSeg  `json:"segments"`       // 解析后的时间轴
	Language     string                `json:"language"`
	DurationSec  int                   `json:"duration_sec"`
	ProviderCode string                `json:"provider_code"`
	ModelCode    string                `json:"model_code"`
	ErrorMsg     string                `json:"error_msg"`
	StartedAt    string                `json:"started_at"`     // YYYY-MM-DD HH:MM:SS，空则 ""
	FinishedAt   string                `json:"finished_at"`
	CreatedAt    string                `json:"created_at"`
	UpdatedAt    string                `json:"updated_at"`
}

// AdminTranscriptSeg 转写的单段时间轴
type AdminTranscriptSeg struct {
	Start float64 `json:"start"`
	End   float64 `json:"end"`
	Text  string  `json:"text"`
}

// FormatTime 工具：time.Time 安全格式化（零值返回 ""）
func FormatTranscriptTime(t time.Time) string {
	if t.IsZero() {
		return ""
	}
	return t.Format("2006-01-02 15:04:05")
}

// FormatTranscriptTimePtr 工具：*time.Time 安全格式化
func FormatTranscriptTimePtr(t *time.Time) string {
	if t == nil || t.IsZero() {
		return ""
	}
	return t.Format("2006-01-02 15:04:05")
}
