视频会议保存
This commit is contained in:
@@ -140,3 +140,99 @@ type ActiveGroupItem struct {
|
||||
Name string `json:"name"` // 群名称
|
||||
Count int64 `json:"count"` // 消息数
|
||||
}
|
||||
|
||||
// ====== 管理端会议管理 DTO(Phase B 扩展) ======
|
||||
|
||||
// AdminMeetingListRequest 管理端会议列表查询请求
|
||||
//
|
||||
// 与消息列表保持一致的分页/筛选风格:
|
||||
// - Keyword:模糊匹配 title 或 room_code,方便客服按客户描述定位
|
||||
// - Status:0=未开始 / 1=进行中 / 2=已结束(与 meeting_rooms.status 一一对应)
|
||||
// - HasRecording:true=仅返回有录制记录的会议,便于"录制审计"场景
|
||||
// - StartTime / EndTime:按 created_at 过滤,YYYY-MM-DD 闭区间
|
||||
type AdminMeetingListRequest struct {
|
||||
Keyword string `form:"keyword"` // 模糊匹配 title / room_code
|
||||
Status *int `form:"status"` // 0=未开始 1=进行中 2=已结束
|
||||
HostID *int64 `form:"host_id"` // 主持人 ID 精确匹配
|
||||
HasRecording *bool `form:"has_recording"` // true=仅含录制的会议
|
||||
StartTime string `form:"start_time"` // YYYY-MM-DD
|
||||
EndTime string `form:"end_time"` // YYYY-MM-DD
|
||||
Page int `form:"page"`
|
||||
PageSize int `form:"page_size"`
|
||||
}
|
||||
|
||||
// AdminMeetingDTO 管理端会议条目(列表行)
|
||||
//
|
||||
// 字段选择原则:
|
||||
// - 列表场景:会议号 / 标题 / 主持人 / 状态 / 时间 / 参与人数 / 录制数
|
||||
// - 详情字段(参与者明细、录制列表)放到 GetMeetingDetail 单独返回,避免列表过宽
|
||||
type AdminMeetingDTO struct {
|
||||
ID int64 `json:"id"`
|
||||
RoomCode string `json:"room_code"`
|
||||
Title string `json:"title"`
|
||||
Type int `json:"type"` // 1=即时 2=预约
|
||||
TypeLabel string `json:"type_label"` // "即时会议" / "预约会议"
|
||||
Status int `json:"status"` // 0/1/2
|
||||
StatusLabel string `json:"status_label"` // "未开始" / "进行中" / "已结束"
|
||||
HostID int64 `json:"host_id"`
|
||||
HostNickname string `json:"host_nickname"`
|
||||
HostAvatar string `json:"host_avatar"`
|
||||
MaxMembers int `json:"max_members"`
|
||||
ParticipantCount int `json:"participant_count"` // 历史累计入会人数(去重)
|
||||
RecordingCount int `json:"recording_count"` // 该会议的录制条数
|
||||
DurationSec int `json:"duration_sec"` // 会议时长(秒);结束前用 now-started_at,结束后用 ended_at-started_at
|
||||
ScheduledAt string `json:"scheduled_at"` // 预约会议开始时间,空表示即时会议
|
||||
StartedAt string `json:"started_at"` // 实际开始
|
||||
EndedAt string `json:"ended_at"` // 实际结束
|
||||
EndedReason string `json:"ended_reason"` // host_ended / empty_ttl / admin_force / system_error
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
|
||||
// AdminMeetingListResponse 管理端会议列表响应(含统计摘要)
|
||||
type AdminMeetingListResponse struct {
|
||||
Total int64 `json:"total"`
|
||||
List []AdminMeetingDTO `json:"list"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
|
||||
// AdminMeetingParticipantDTO 会议详情中的参与者条目
|
||||
type AdminMeetingParticipantDTO struct {
|
||||
UserID int64 `json:"user_id"`
|
||||
Nickname string `json:"nickname"`
|
||||
Avatar string `json:"avatar"`
|
||||
Role int `json:"role"` // 0=普通 1=主持人 2=联合主持人
|
||||
RoleLabel string `json:"role_label"`
|
||||
JoinedAt string `json:"joined_at"`
|
||||
LeftAt string `json:"left_at"` // 空表示仍在会议中
|
||||
LeftReason string `json:"left_reason"` // self / kicked / host_end / empty_ttl / disconnect
|
||||
Duration int `json:"duration"` // 秒
|
||||
}
|
||||
|
||||
// AdminMeetingRecordingDTO 会议详情中的录制条目
|
||||
type AdminMeetingRecordingDTO struct {
|
||||
ID int64 `json:"id"`
|
||||
StartedBy int64 `json:"started_by"`
|
||||
Status string `json:"status"` // recording / uploading / ready / failed
|
||||
FileURL string `json:"file_url"`
|
||||
SizeBytes int64 `json:"size_bytes"`
|
||||
DurationSec int `json:"duration_sec"`
|
||||
FailureReason string `json:"failure_reason"` // 仅 failed 时返回
|
||||
StartedAt string `json:"started_at"`
|
||||
StoppedAt string `json:"stopped_at"`
|
||||
}
|
||||
|
||||
// AdminMeetingDetailResponse 会议详情(含参与者列表 + 录制列表)
|
||||
type AdminMeetingDetailResponse struct {
|
||||
AdminMeetingDTO
|
||||
Participants []AdminMeetingParticipantDTO `json:"participants"`
|
||||
Recordings []AdminMeetingRecordingDTO `json:"recordings"`
|
||||
}
|
||||
|
||||
// AdminMeetingStatsResponse 会议管理摘要统计(顶栏卡片)
|
||||
type AdminMeetingStatsResponse struct {
|
||||
TotalCount int64 `json:"total_count"` // 历史会议总数
|
||||
ActiveCount int64 `json:"active_count"` // 当前进行中
|
||||
TodayCount int64 `json:"today_count"` // 今日创建的会议
|
||||
RecordingCount int64 `json:"recording_count"` // 录制总数
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user