선생님 대시보드 학년별 카테고리 분류 + 학생 계정 관리 버그 수정

- 실시간 출석 현황을 학년별 섹션으로 묶어서 표시 (백엔드에 grade 필드 추가)
- 학생 계정 추가 폼에 학년 선택 드롭다운 추가
- 학생 계정 생성/삭제가 실제로는 존재하지 않는 엔드포인트를 호출하던
  버그 수정 (/api/users/register-student, /api/users/delete/{id} →
  /api/users/create, /api/users/delete)
- 학생 대시보드(개발자 모드) 카드 그리드가 넓은 화면에서 과도하게
  커지던 레이아웃 버그 수정, 웹은 5열/폰은 2열로 반응형 처리
- 버전 1.2.0+6

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:29:40 +09:00
co-authored by Claude Sonnet 5
parent 9354e2998a
commit d1c59c521b
6 changed files with 278 additions and 152 deletions
@@ -13,11 +13,12 @@ class TeacherStudentManagementController extends ChangeNotifier {
required String studentId,
required String name,
required String password,
int? grade,
}) async {
_isWorking = true;
notifyListeners();
try {
final url = Uri.parse('$baseUrl/api/users/register-student');
final url = Uri.parse('$baseUrl/api/users/create');
final response = await http.post(
url,
headers: {"Content-Type": "application/json"},
@@ -25,6 +26,7 @@ class TeacherStudentManagementController extends ChangeNotifier {
"studentId": studentId,
"name": name,
"password": password,
"grade": grade,
}),
);
final result = jsonDecode(utf8.decode(response.bodyBytes));
@@ -48,9 +50,13 @@ class TeacherStudentManagementController extends ChangeNotifier {
) async {
_isWorking = true;
notifyListeners();
final url = Uri.parse('$baseUrl/api/users/delete/$studentId');
final url = Uri.parse('$baseUrl/api/users/delete');
try {
final response = await http.delete(url);
final response = await http.delete(
url,
headers: {"Content-Type": "application/json"},
body: jsonEncode({"studentId": studentId}),
);
if (response.statusCode == 200) {
final resData = jsonDecode(utf8.decode(response.bodyBytes));
return (true, '✅ ${resData['message']}');