视频会议保存

This commit is contained in:
duoaohui
2026-05-18 21:23:00 +08:00
parent fb965cc8c4
commit 5a5706c236
20 changed files with 1211 additions and 1 deletions

View File

@@ -0,0 +1,53 @@
// 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")
}