Update Saqel Platform: 2026-09-09 00:12:31
This commit is contained in:
@@ -42,6 +42,12 @@ class TeacherLessonAuditModel {
|
||||
final readiness = (json['pedagogical_readiness_score'] as num?)?.toInt();
|
||||
final visual = (json['visual_clarity_score'] as num?)?.toInt();
|
||||
final decisionValue = json['decision']?.toString() ?? 'pending';
|
||||
|
||||
final ai = json['ai_analysis'] is Map ? Map<String, dynamic>.from(json['ai_analysis'] as Map) : null;
|
||||
final qa = ai != null && ai['quality_assessment'] is Map ? Map<String, dynamic>.from(ai['quality_assessment'] as Map) : null;
|
||||
final cpCount = (ai?['checkpoints_count'] as num?)?.toInt() ?? (json['socratic_stops_count'] as num?)?.toInt() ?? 0;
|
||||
final alignScore = (qa?['alignment_score'] as num?)?.toInt();
|
||||
|
||||
return TeacherLessonAuditModel(
|
||||
lessonTitle: json['lesson_title'] ?? '',
|
||||
subject: json['subject'] ?? '',
|
||||
@@ -50,15 +56,16 @@ class TeacherLessonAuditModel {
|
||||
durationGatePassed: json['duration_gate_passed'] ??
|
||||
(durationSeconds > 0 && durationSeconds <= 1500),
|
||||
durationWarning: json['duration_warning'],
|
||||
qualityScore: (json['quality_score'] as num?)?.toInt() ?? readiness ?? 0,
|
||||
approvalStatus: json['approval_status'] ?? decisionValue,
|
||||
curriculumAlignment:
|
||||
json['curriculum_alignment'] ?? 'بانتظار تحليل الملف الفعلي',
|
||||
qualityScore: (qa?['clarity_score'] as num?)?.toInt() ?? (json['quality_score'] as num?)?.toInt() ?? readiness ?? 0,
|
||||
approvalStatus: qa?['status']?.toString() ?? json['approval_status'] ?? decisionValue,
|
||||
curriculumAlignment: alignScore != null
|
||||
? 'تطابق معتمد بنسبة $alignScore% مع المنهاج الرسمي'
|
||||
: (json['curriculum_alignment'] ?? 'بانتظار تحليل الملف الفعلي'),
|
||||
audioClarity: json['audio_clarity'] ??
|
||||
(visual == null
|
||||
? 'تم التحقق من وجود مسار صوت فعلي'
|
||||
: 'وضوح الصورة $visual%، وتم التحقق من وجود الصوت'),
|
||||
socraticStopsCount: (json['socratic_stops_count'] as num?)?.toInt() ?? 0,
|
||||
socraticStopsCount: cpCount,
|
||||
decision: json['report'] ?? json['reason'] ?? decisionValue,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -321,8 +321,12 @@ class TeacherStudioCubit extends Cubit<TeacherStudioState> {
|
||||
final report = data['preflight_report'] is Map
|
||||
? Map<String, dynamic>.from(data['preflight_report'] as Map)
|
||||
: <String, dynamic>{};
|
||||
final aiAnalysis = data['ai_analysis'] is Map
|
||||
? Map<String, dynamic>.from(data['ai_analysis'] as Map)
|
||||
: <String, dynamic>{};
|
||||
final result = TeacherLessonAuditModel.fromJson({
|
||||
...report,
|
||||
'ai_analysis': aiAnalysis,
|
||||
'lesson_title': state.lessonTitle,
|
||||
'subject': selectedSubjectName
|
||||
});
|
||||
|
||||
@@ -551,7 +551,9 @@ class _TeacherStudioUploadTabState extends State<TeacherStudioUploadTab> {
|
||||
const SizedBox(width: 8),
|
||||
Text(
|
||||
isApproved
|
||||
? 'جاهزة لرفع الملف والتحليل'
|
||||
? (state.isUploaded
|
||||
? 'تم اعتماد ونشر الحصة بنجاح 🎖️'
|
||||
: 'جاهزة لرفع الملف والتحليل')
|
||||
: 'بيانات الحصة بحاجة للمراجعة',
|
||||
style: TextStyle(
|
||||
fontSize: 15,
|
||||
|
||||
Reference in New Issue
Block a user