/** * ============================================================================== * SAQEL TEACHER STUDIO - DATA MODELS * ============================================================================== * * نماذج البيانات الخاصة باستوديو المعلم: * - نتائج فحص الجودة الإدراكي والأكاديمي (Quality Gate & MIT 20-25 Min Limit) * - بيانات التسييل المالي وحسابات الحصص (55% المعلم / 15% المديرية / 30% المنصة) * - أوراق العمل والواجبات المدرسية المصححة آلياً * - استفسارات وأسئلة الطلبة الميدانية (غرفة الشكوك) والردود السقراطية المسجلة. */ class TeacherLessonAuditModel { final String lessonTitle; final String subject; final double durationMinutes; final bool durationGatePassed; final String? durationWarning; final int qualityScore; final String approvalStatus; final String curriculumAlignment; final String audioClarity; final int socraticStopsCount; final String decision; const TeacherLessonAuditModel({ required this.lessonTitle, required this.subject, required this.durationMinutes, required this.durationGatePassed, this.durationWarning, required this.qualityScore, required this.approvalStatus, required this.curriculumAlignment, required this.audioClarity, required this.socraticStopsCount, required this.decision, }); factory TeacherLessonAuditModel.fromJson(Map json) { return TeacherLessonAuditModel( lessonTitle: json['lesson_title'] ?? '', subject: json['subject'] ?? 'الفيزياء', durationMinutes: (json['duration_minutes'] as num?)?.toDouble() ?? 22.5, durationGatePassed: json['duration_gate_passed'] ?? true, durationWarning: json['duration_warning'], qualityScore: json['quality_score'] ?? 92, approvalStatus: json['approval_status'] ?? 'approved_for_broadcast', curriculumAlignment: json['curriculum_alignment'] ?? '96% تطابق مع مخرجات المنهاج الوزاري', audioClarity: json['audio_clarity'] ?? '95% نقاء صوتي ممتاز', socraticStopsCount: json['socratic_stops_count'] ?? 3, decision: json['decision'] ?? 'الحصة معتمدة ومؤهلة للبث المشفر والعرض للبيع خارج الثقافة العسكرية 🚀', ); } } class TeacherHomeworkModel { final String id; final String title; final String className; final String submitted; final String dueDate; final String averageScore; final String status; // 'active', 'completed' const TeacherHomeworkModel({ required this.id, required this.title, required this.className, required this.submitted, required this.dueDate, required this.averageScore, required this.status, }); } class StudentDoubtModel { final String id; final String studentName; final String className; final String question; final String time; final bool replied; final bool voiceReply; const StudentDoubtModel({ required this.id, required this.studentName, required this.className, required this.question, required this.time, required this.replied, required this.voiceReply, }); StudentDoubtModel copyWith({ bool? replied, bool? voiceReply, }) { return StudentDoubtModel( id: id, studentName: studentName, className: className, question: question, time: time, replied: replied ?? this.replied, voiceReply: voiceReply ?? this.voiceReply, ); } } class TeacherCourseModel { final String id; final String title; final String grade; final int totalLessons; final int militaryStudents; final int externalSubscribers; final double priceJod; final double netRevenueJod; const TeacherCourseModel({ required this.id, required this.title, required this.grade, required this.totalLessons, required this.militaryStudents, required this.externalSubscribers, required this.priceJod, required this.netRevenueJod, }); } class TeacherPayoutRequestModel { final String cliqAlias; final double amountJod; final String requestedAt; final String status; // 'queued', 'approved', 'completed' const TeacherPayoutRequestModel({ required this.cliqAlias, required this.amountJod, required this.requestedAt, required this.status, }); }