class VoiceSession { final String id; final String userId; final String? title; final String status; final int messageCount; final DateTime createdAt; final DateTime updatedAt; VoiceSession({ required this.id, required this.userId, this.title, required this.status, this.messageCount = 0, required this.createdAt, required this.updatedAt, }); factory VoiceSession.fromJson(Map json) => VoiceSession( id: json['id'] as String, userId: json['user_id'] as String, title: json['title'] as String?, status: json['status'] as String? ?? 'active', messageCount: json['message_count'] as int? ?? 0, createdAt: DateTime.parse(json['created_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String), ); } class VoiceCommand { final String id; final String sessionId; final String command; final String? result; final DateTime createdAt; VoiceCommand({ required this.id, required this.sessionId, required this.command, this.result, required this.createdAt, }); factory VoiceCommand.fromJson(Map json) => VoiceCommand( id: json['id'] as String, sessionId: json['session_id'] as String, command: json['command'] as String, result: json['result'] as String?, createdAt: DateTime.parse(json['created_at'] as String), ); } class TranscribeRequest { final String audioBase64; final String? sessionId; TranscribeRequest({required this.audioBase64, this.sessionId}); Map toJson() => { 'audio_base64': audioBase64, if (sessionId != null) 'session_id': sessionId, }; } class TranscribeResponse { final String text; final String? sessionId; TranscribeResponse({required this.text, this.sessionId}); factory TranscribeResponse.fromJson(Map json) => TranscribeResponse( text: json['text'] as String, sessionId: json['session_id'] as String?, ); }