syntax = "proto3"; package next_edu_cloud.core_edu.v1; // CoreEdu service contracts - P3 core teaching domain. // Covers exam management, homework assignment, and grade recording. // Event contracts live in events.proto under next_edu_cloud.events.v1. service ExamService { rpc CreateExam(CreateExamRequest) returns (CreateExamResponse); rpc GetExam(GetExamRequest) returns (Exam); rpc ListExamsByClass(ListExamsByClassRequest) returns (ListExamsResponse); rpc UpdateExam(UpdateExamRequest) returns (UpdateExamResponse); rpc DeleteExam(DeleteExamRequest) returns (DeleteExamResponse); } service HomeworkService { rpc AssignHomework(AssignHomeworkRequest) returns (AssignHomeworkResponse); rpc GetHomework(GetHomeworkRequest) returns (Homework); rpc ListHomeworkByClass(ListHomeworkByClassRequest) returns (ListHomeworkResponse); rpc SubmitHomework(SubmitHomeworkRequest) returns (SubmitHomeworkResponse); } service GradeService { rpc RecordGrade(RecordGradeRequest) returns (RecordGradeResponse); rpc GetGrade(GetGradeRequest) returns (Grade); rpc ListGradesByStudent(ListGradesByStudentRequest) returns (ListGradesResponse); rpc ListGradesByExam(ListGradesByExamRequest) returns (ListGradesResponse); rpc ListGradesByHomework(ListGradesByHomeworkRequest) returns (ListGradesResponse); } message Exam { string id = 1; string class_id = 2; string title = 3; string description = 4; string exam_date = 5; string duration = 6; string total_score = 7; string status = 8; string created_by = 9; string created_at = 10; string updated_at = 11; } message Homework { string id = 1; string class_id = 2; string title = 3; string description = 4; string due_date = 5; string status = 6; string created_by = 7; string created_at = 8; string updated_at = 9; } message Grade { string id = 1; string student_id = 2; string exam_id = 3; string homework_id = 4; string score = 5; string feedback = 6; string graded_by = 7; string created_at = 8; string updated_at = 9; } message CreateExamRequest { string class_id = 1; string title = 2; string description = 3; string exam_date = 4; string duration = 5; string total_score = 6; string created_by = 7; } message CreateExamResponse { string id = 1; } message GetExamRequest { string id = 1; } message ListExamsByClassRequest { string class_id = 1; } message ListExamsResponse { repeated Exam exams = 1; } message UpdateExamRequest { string id = 1; string title = 2; string description = 3; string exam_date = 4; string duration = 5; string total_score = 6; string status = 7; } message UpdateExamResponse { bool success = 1; } message DeleteExamRequest { string id = 1; } message DeleteExamResponse { bool success = 1; } message AssignHomeworkRequest { string class_id = 1; string title = 2; string description = 3; string due_date = 4; string created_by = 5; } message AssignHomeworkResponse { string id = 1; } message GetHomeworkRequest { string id = 1; } message ListHomeworkByClassRequest { string class_id = 1; } message ListHomeworkResponse { repeated Homework homework = 1; } message SubmitHomeworkRequest { string id = 1; } message SubmitHomeworkResponse { bool success = 1; } message RecordGradeRequest { string student_id = 1; string exam_id = 2; string homework_id = 3; string score = 4; string feedback = 5; string graded_by = 6; } message RecordGradeResponse { string id = 1; } message GetGradeRequest { string id = 1; } message ListGradesByStudentRequest { string student_id = 1; } message ListGradesByExamRequest { string exam_id = 1; } message ListGradesByHomeworkRequest { string homework_id = 1; } message ListGradesResponse { repeated Grade grades = 1; }