Update Saqel Platform: 2026-09-04 21:26:55

This commit is contained in:
Hamza-Ayed
2026-09-04 21:26:55 +03:00
parent 24f6b5a589
commit ae00aa943e
36 changed files with 5621 additions and 1617 deletions
@@ -0,0 +1,78 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../data/models/teacher_models.dart';
import '../../data/repositories/teacher_repository.dart';
/**
* ==============================================================================
* SAQEL TEACHER STUDIO - STUDIO UPLOAD CUBIT
* ==============================================================================
*
* إدارة حالة استوديو رفع الحصص وفحص الجودة الإدراكي:
* - التحقق من معيار معهد ماساتشوستس (20 - 25 دقيقة)
* - استدعاء التدقيق الآلي للدرس ومخرجات المنهاج الوزاري.
*/
class TeacherStudioState {
final String lessonTitle;
final double durationMinutes;
final bool isAuditing;
final TeacherLessonAuditModel? auditResult;
const TeacherStudioState({
required this.lessonTitle,
required this.durationMinutes,
required this.isAuditing,
this.auditResult,
});
TeacherStudioState copyWith({
String? lessonTitle,
double? durationMinutes,
bool? isAuditing,
TeacherLessonAuditModel? auditResult,
}) {
return TeacherStudioState(
lessonTitle: lessonTitle ?? this.lessonTitle,
durationMinutes: durationMinutes ?? this.durationMinutes,
isAuditing: isAuditing ?? this.isAuditing,
auditResult: auditResult ?? this.auditResult,
);
}
}
class TeacherStudioCubit extends Cubit<TeacherStudioState> {
final TeacherRepository repository;
TeacherStudioCubit({required this.repository})
: super(const TeacherStudioState(
lessonTitle: 'شرح قاعدة لنتز والحث الكهرومغناطيسي — فيزياء 2008',
durationMinutes: 22.5,
isAuditing: false,
auditResult: null,
));
void updateLessonTitle(String title) {
emit(state.copyWith(lessonTitle: title));
}
void updateDuration(double duration) {
emit(state.copyWith(durationMinutes: duration));
}
Future<void> runQualityGate() async {
emit(state.copyWith(isAuditing: true));
try {
final result = await repository.auditStudioVideo(
title: state.lessonTitle,
durationMinutes: state.durationMinutes,
subject: 'الفيزياء',
);
emit(state.copyWith(
isAuditing: false,
auditResult: result,
));
} catch (_) {
emit(state.copyWith(isAuditing: false));
}
}
}